From 02219beac97507d1d7e578d0715aa7b48e98b908 Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Sat, 15 Jul 2023 10:27:59 -0500 Subject: [PATCH] Handle edge case --- .../Editors/ModelInstanceEntryEditor.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/Source/Editor/CustomEditors/Editors/ModelInstanceEntryEditor.cs b/Source/Editor/CustomEditors/Editors/ModelInstanceEntryEditor.cs index a605b5464..d33efe551 100644 --- a/Source/Editor/CustomEditors/Editors/ModelInstanceEntryEditor.cs +++ b/Source/Editor/CustomEditors/Editors/ModelInstanceEntryEditor.cs @@ -40,7 +40,7 @@ namespace FlaxEditor.CustomEditors.Editors var matContainer = new CustomValueContainer(new ScriptType(typeof(MaterialBase)), _material, (instance, index) => _material, (instance, index, value) => _material = value as MaterialBase); var materialEditor = (_group.Property(materiaLabel, matContainer)) as AssetRefEditor; - materialEditor.Values.SetDefaultValue(staticModel.Model.MaterialSlots[entryIndex].Material); + materialEditor.Values.SetDefaultValue((staticModel.Model.MaterialSlots[entryIndex].Material) ? staticModel.Model.MaterialSlots[entryIndex].Material : GPUDevice.Instance.DefaultMaterial); materialEditor.RefreshDefaultValue(); materialEditor.Picker.SelectedItemChanged += () => { @@ -54,6 +54,10 @@ namespace FlaxEditor.CustomEditors.Editors { staticModel.SetMaterial(entryIndex, null); } + else if (material == GPUDevice.Instance.DefaultMaterial && !staticModel.Model.MaterialSlots[entryIndex].Material) + { + staticModel.SetMaterial(entryIndex, null); + } else { staticModel.SetMaterial(entryIndex, material); @@ -69,12 +73,9 @@ namespace FlaxEditor.CustomEditors.Editors } _material = animatedModel.GetMaterial(entryIndex); - var matContainer = new CustomValueContainer(new ScriptType(typeof(MaterialBase)), _material, (instance, index) => _material, (instance, index, value) => - { - _material = value as MaterialBase; - }); + var matContainer = new CustomValueContainer(new ScriptType(typeof(MaterialBase)), _material, (instance, index) => _material, (instance, index, value) => _material = value as MaterialBase); var materialEditor = (_group.Property(materiaLabel, matContainer)) as AssetRefEditor; - materialEditor.Values.SetDefaultValue(animatedModel.SkinnedModel.MaterialSlots[entryIndex].Material); + materialEditor.Values.SetDefaultValue((animatedModel.SkinnedModel.MaterialSlots[entryIndex].Material) ? animatedModel.SkinnedModel.MaterialSlots[entryIndex].Material : GPUDevice.Instance.DefaultMaterial); materialEditor.RefreshDefaultValue(); materialEditor.Picker.SelectedItemChanged += () => { @@ -88,6 +89,10 @@ namespace FlaxEditor.CustomEditors.Editors { animatedModel.SetMaterial(entryIndex, null); } + else if (material == GPUDevice.Instance.DefaultMaterial && !animatedModel.SkinnedModel.MaterialSlots[entryIndex].Material) + { + animatedModel.SetMaterial(entryIndex, null); + } else { animatedModel.SetMaterial(entryIndex, material);