@@ -16,7 +16,10 @@ static class EditorMaterialUtility
1616
1717 static bool s_Initialized ;
1818
19- static Material s_SrpDefaultMaterial ;
19+ static Material s_EditorDefaultMaterial ;
20+ static Material s_ShapePreviewMaterial ;
21+
22+ internal static readonly Color previewColor = new Color ( .5f , .9f , 1f , .56f ) ;
2023
2124 [ UserSetting ( "Mesh Settings" , "Material" , "The default material to be applied to newly created shapes." ) ]
2225 static Pref < Material > s_DefaultMaterial = new Pref < Material > ( "mesh.userMaterial" , null ) ;
@@ -27,26 +30,36 @@ static void Init()
2730 return ;
2831
2932 s_Initialized = true ;
33+ s_EditorDefaultMaterial = null ;
3034
31- s_SrpDefaultMaterial = null ;
32-
33- for ( int i = 0 , c = k_StandardRenderPipelineDefaultMaterials . Length ; i < c && s_SrpDefaultMaterial == null ; i ++ )
35+ for ( int i = 0 , c = k_StandardRenderPipelineDefaultMaterials . Length ; i < c && s_EditorDefaultMaterial == null ; i ++ )
3436 {
3537 string search = k_StandardRenderPipelineDefaultMaterials [ i ] + " t:Material" ;
3638 string [ ] materials = AssetDatabase . FindAssets ( search , new [ ] { "Assets" , "Packages" } ) ;
3739
3840 foreach ( var asset in materials )
3941 {
40- s_SrpDefaultMaterial = AssetDatabase . LoadAssetAtPath < Material > ( AssetDatabase . GUIDToAssetPath ( asset ) ) ;
42+ var mat = AssetDatabase . LoadAssetAtPath < Material > ( AssetDatabase . GUIDToAssetPath ( asset ) ) ;
4143
42- if ( s_SrpDefaultMaterial != null
43- && s_SrpDefaultMaterial . shader != null
44- && s_SrpDefaultMaterial . shader . isSupported )
44+ if ( mat != null && mat . shader != null && mat . shader . isSupported )
45+ {
46+ s_EditorDefaultMaterial = mat ;
4547 break ;
46-
47- s_SrpDefaultMaterial = null ;
48+ }
4849 }
4950 }
51+
52+ if ( s_EditorDefaultMaterial == null )
53+ s_EditorDefaultMaterial = BuiltinMaterials . defaultMaterial ;
54+
55+ s_ShapePreviewMaterial = new Material ( s_EditorDefaultMaterial . shader ) ;
56+ s_ShapePreviewMaterial . hideFlags = HideFlags . HideAndDontSave ;
57+
58+ if ( s_ShapePreviewMaterial . HasProperty ( "_MainTex" ) )
59+ s_ShapePreviewMaterial . mainTexture = ( Texture2D ) Resources . Load ( "Textures/GridBox_Default" ) ;
60+
61+ if ( s_ShapePreviewMaterial . HasProperty ( "_Color" ) )
62+ s_ShapePreviewMaterial . SetColor ( "_Color" , previewColor ) ;
5063 }
5164
5265 internal static Texture2D GetPreviewTexture ( Material material )
@@ -108,17 +121,19 @@ internal static Material GetUserMaterial()
108121 var mat = ( Material ) s_DefaultMaterial ;
109122 if ( mat != null )
110123 return mat ;
111- return GetDefaultMaterial ( ) ;
124+ return GetSrpDefaultMaterial ( ) ;
112125 }
113126
114- internal static Material GetDefaultMaterial ( )
127+ internal static Material GetSrpDefaultMaterial ( )
115128 {
116129 Init ( ) ;
130+ return s_EditorDefaultMaterial ;
131+ }
117132
118- if ( s_SrpDefaultMaterial != null )
119- return s_SrpDefaultMaterial ;
120-
121- return BuiltinMaterials . defaultMaterial ;
133+ internal static Material GetShapePreviewMaterial ( )
134+ {
135+ Init ( ) ;
136+ return s_ShapePreviewMaterial ;
122137 }
123138 }
124139}
0 commit comments