22
22
using System . Text ;
23
23
using UnityEngine ;
24
24
using VisualPinball . Engine . VPT ;
25
+ using Material = UnityEngine . Material ;
25
26
using Mesh = VisualPinball . Engine . VPT . Mesh ;
26
27
27
28
namespace VisualPinball . Unity . Urp
28
29
{
29
30
public class MaterialConverter : IMaterialConverter
30
31
{
31
- public UnityEngine . Material DotMatrixDisplay => UnityEngine . Resources . Load < UnityEngine . Material > ( "Materials/DotMatrixDisplay" ) ;
32
- public UnityEngine . Material SegmentDisplay => UnityEngine . Resources . Load < UnityEngine . Material > ( "Materials/SegmentDisplay" ) ;
32
+ public Material DotMatrixDisplay => UnityEngine . Resources . Load < Material > ( "Materials/DotMatrixDisplay" ) ;
33
+ public Material SegmentDisplay => UnityEngine . Resources . Load < Material > ( "Materials/SegmentDisplay" ) ;
34
+
35
+ public int NormalMapProperty => NormalMap ;
33
36
34
37
#region Shader Properties
35
38
@@ -55,27 +58,27 @@ private Shader GetShader(PbrMaterial vpxMaterial)
55
58
: GetShader ( ) ;
56
59
}
57
60
58
- public static UnityEngine . Material GetDefaultMaterial ( BlendMode blendMode )
61
+ public static Material GetDefaultMaterial ( BlendMode blendMode )
59
62
{
60
63
switch ( blendMode )
61
64
{
62
65
case BlendMode . Opaque :
63
- return UnityEngine . Resources . Load < UnityEngine . Material > ( "Materials/TableOpaque" ) ;
66
+ return UnityEngine . Resources . Load < Material > ( "Materials/TableOpaque" ) ;
64
67
case BlendMode . Cutout :
65
- return UnityEngine . Resources . Load < UnityEngine . Material > ( "Materials/TableCutout" ) ;
68
+ return UnityEngine . Resources . Load < Material > ( "Materials/TableCutout" ) ;
66
69
case BlendMode . Translucent :
67
- return UnityEngine . Resources . Load < UnityEngine . Material > ( "Materials/TableTranslucent" ) ;
70
+ return UnityEngine . Resources . Load < Material > ( "Materials/TableTranslucent" ) ;
68
71
default :
69
72
throw new ArgumentOutOfRangeException ( "Undefined blend mode " + blendMode ) ;
70
73
}
71
-
72
74
}
73
75
74
- public UnityEngine . Material CreateMaterial ( PbrMaterial vpxMaterial , TableAuthoring table , Type objectType , StringBuilder debug = null )
76
+ public Material CreateMaterial ( PbrMaterial vpxMaterial , ITextureProvider textureProvider , Type objectType ,
77
+ StringBuilder debug = null )
75
78
{
76
- UnityEngine . Material defaultMaterial = GetDefaultMaterial ( vpxMaterial . MapBlendMode ) ;
79
+ Material defaultMaterial = GetDefaultMaterial ( vpxMaterial . MapBlendMode ) ;
77
80
78
- var unityMaterial = new UnityEngine . Material ( GetShader ( vpxMaterial ) ) ;
81
+ var unityMaterial = new Material ( GetShader ( vpxMaterial ) ) ;
79
82
unityMaterial . CopyPropertiesFromMaterial ( defaultMaterial ) ;
80
83
unityMaterial . name = vpxMaterial . Id ;
81
84
@@ -119,18 +122,16 @@ public UnityEngine.Material CreateMaterial(PbrMaterial vpxMaterial, TableAuthori
119
122
unityMaterial . SetFloat ( Smoothness , vpxMaterial . Roughness ) ;
120
123
121
124
// map
122
- if ( table != null && vpxMaterial . HasMap )
123
- {
124
- unityMaterial . SetTexture ( BaseMap , table . GetTexture ( vpxMaterial . Map . Name ) ) ;
125
+ if ( vpxMaterial . HasMap ) {
126
+ unityMaterial . SetTexture ( BaseMap , textureProvider . GetTexture ( vpxMaterial . Map . Name ) ) ;
125
127
}
126
128
127
129
// normal map
128
- if ( table != null && vpxMaterial . HasNormalMap )
129
- {
130
+ if ( vpxMaterial . HasNormalMap ) {
130
131
unityMaterial . EnableKeyword ( "_NORMALMAP" ) ;
131
132
unityMaterial . EnableKeyword ( "_NORMALMAP_TANGENT_SPACE" ) ;
132
133
133
- unityMaterial . SetTexture ( NormalMap , table . GetTexture ( vpxMaterial . NormalMap . Name ) ) ;
134
+ unityMaterial . SetTexture ( NormalMap , textureProvider . GetTexture ( vpxMaterial . NormalMap . Name ) ) ;
134
135
}
135
136
136
137
return unityMaterial ;
0 commit comments