@@ -6,6 +6,7 @@ namespace CodeWriter.MeshAnimation
66 using System . Collections . Generic ;
77 using JetBrains . Annotations ;
88 using UnityEditor ;
9+ using UnityEditor . Presets ;
910 using UnityEngine ;
1011 using Object = UnityEngine . Object ;
1112
@@ -95,34 +96,56 @@ private static void CreateMaterial(MeshAnimationAsset asset)
9596 asset . bakedMaterial . shader = asset . shader ;
9697 asset . bakedMaterial . name = materialAssetName ;
9798 }
99+
100+ if ( asset . materialPreset != null )
101+ {
102+ var preset = new Preset ( asset . materialPreset ) ;
103+ if ( preset . CanBeAppliedTo ( asset . bakedMaterial ) )
104+ {
105+ preset . ApplyTo ( asset . bakedMaterial ) ;
106+ }
107+
108+ Object . DestroyImmediate ( preset ) ;
109+ }
98110 }
99111
100112 private static void CreateExtraMaterials ( MeshAnimationAsset asset )
101113 {
102- foreach ( var materialName in asset . extraMaterials )
114+ foreach ( var extra in asset . extraMaterials )
103115 {
104- var data = asset . extraMaterialData . Find ( it => it . name == materialName ) ;
116+ var data = asset . extraMaterialData . Find ( it => it . name == extra . name ) ;
105117 if ( data == null )
106118 {
107119 data = new MeshAnimationAsset . ExtraMaterialData
108120 {
109- name = materialName
121+ name = extra . name
110122 } ;
111123 asset . extraMaterialData . Add ( data ) ;
112124 }
113125
114126 if ( data . material == null )
115127 {
116- data . material = new Material ( asset . shader ) { name = $ "{ asset . name } _{ materialName } Material"} ;
128+ data . material = new Material ( asset . shader ) { name = $ "{ asset . name } _{ extra . name } Material"} ;
117129 AssetDatabase . AddObjectToAsset ( data . material , asset ) ;
118130 }
119131
120132 data . material . shader = asset . shader ;
133+
134+ if ( extra . preset != null )
135+ {
136+ var preset = new Preset ( extra . preset ) ;
137+ if ( preset . CanBeAppliedTo ( data . material ) )
138+ {
139+ preset . ApplyTo ( data . material ) ;
140+ }
141+
142+ Object . DestroyImmediate ( preset ) ;
143+ }
121144 }
122145
123146 foreach ( var data in asset . extraMaterialData )
124147 {
125- if ( asset . extraMaterials . Contains ( data . name ) )
148+ if ( asset . extraMaterials . Any ( extra => extra . name == data . name ) )
126149 {
127150 continue ;
128151 }
0 commit comments