@@ -215,26 +215,42 @@ protected void MeshDropdownProperty(string label, SerializedProperty meshProp, s
215
215
{
216
216
var files = Directory . GetFiles ( meshFolder , "*.mesh" )
217
217
. Select ( Path . GetFileNameWithoutExtension )
218
+ . Concat ( new [ ] { "Custom Mesh" } )
218
219
. ToArray ( ) ;
219
220
220
221
var selectedIndex = files . ToList ( ) . IndexOf ( meshProp . stringValue ) ;
221
222
EditorGUI . BeginChangeCheck ( ) ;
222
223
var newIndex = EditorGUILayout . Popup ( label , selectedIndex , files ) ;
223
224
if ( EditorGUI . EndChangeCheck ( ) && newIndex >= 0 && newIndex < files . Length && go != null ) {
225
+ var meshPath = Path . Combine ( meshFolder , $ "{ files [ newIndex ] } .mesh") ;
224
226
var mf = go . GetComponent < MeshFilter > ( ) ;
225
- if ( mf ) {
226
- var mesh = ( Mesh ) AssetDatabase . LoadAssetAtPath ( Path . Combine ( meshFolder , $ "{ files [ newIndex ] } .mesh") , typeof ( Mesh ) ) ;
227
+ var mr = go . GetComponent < MeshRenderer > ( ) ;
228
+ if ( File . Exists ( meshPath ) ) {
229
+ if ( ! mf ) {
230
+ mf = go . AddComponent < MeshFilter > ( ) ;
231
+ }
232
+ if ( ! mr ) {
233
+ go . AddComponent < MeshRenderer > ( ) ;
234
+ }
235
+ var mesh = ( Mesh ) AssetDatabase . LoadAssetAtPath ( meshPath , typeof ( Mesh ) ) ;
236
+ mr . enabled = true ;
227
237
mf . sharedMesh = mesh ;
228
- meshProp . stringValue = files [ newIndex ] ;
229
- if ( meshTypeMap . ContainsKey ( files [ newIndex ] ) ) {
230
- typeProp . intValue = meshTypeMap [ files [ newIndex ] ] ;
238
+
239
+ } else {
240
+ if ( mr ) {
241
+ mr . enabled = false ;
231
242
}
232
- meshProp . serializedObject . ApplyModifiedProperties ( ) ;
233
- if ( target is MonoBehaviour mb ) {
234
- var colliderComponent = mb . GetComponent < IColliderComponent > ( ) ;
235
- if ( colliderComponent != null ) {
236
- colliderComponent . CollidersDirty = true ;
237
- }
243
+ }
244
+
245
+ meshProp . stringValue = files [ newIndex ] ;
246
+ if ( meshTypeMap . ContainsKey ( files [ newIndex ] ) ) {
247
+ typeProp . intValue = meshTypeMap [ files [ newIndex ] ] ;
248
+ }
249
+ meshProp . serializedObject . ApplyModifiedProperties ( ) ;
250
+ if ( target is MonoBehaviour mb ) {
251
+ var colliderComponent = mb . GetComponent < IColliderComponent > ( ) ;
252
+ if ( colliderComponent != null ) {
253
+ colliderComponent . CollidersDirty = true ;
238
254
}
239
255
}
240
256
}
0 commit comments