From 4938c7e64ba0f9c8dca59373894bdd56af4f4b1b Mon Sep 17 00:00:00 2001 From: Wojciech Figat Date: Mon, 28 Mar 2022 13:39:45 +0200 Subject: [PATCH] Fix ParticleEffectEditor issues after emitter editing if selected --- .../Dedicated/ParticleEffectEditor.cs | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs b/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs index bfdcc57f6..664721258 100644 --- a/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs @@ -26,6 +26,26 @@ namespace FlaxEditor.CustomEditors.Dedicated } } + private object ParameterGet(object instance, GraphParameter parameter, object tag) + { + if (instance is ParticleEffect particleEffect && particleEffect && parameter && tag is ParticleEffectParameter effectParameter) + return particleEffect.GetParameterValue(effectParameter.TrackName, parameter.Name); + return null; + } + + private void ParameterSet(object instance, object value, GraphParameter parameter, object tag) + { + if (instance is ParticleEffect particleEffect && particleEffect && parameter && tag is ParticleEffectParameter effectParameter) + particleEffect.SetParameterValue(effectParameter.TrackName, parameter.Name, value); + } + + private object ParameterDefaultValue(object instance, GraphParameter parameter, object tag) + { + if (tag is ParticleEffectParameter effectParameter) + return effectParameter.DefaultValue; + return null; + } + /// public override void Initialize(LayoutElementsContainer layout) { @@ -48,11 +68,7 @@ namespace FlaxEditor.CustomEditors.Dedicated group.Panel.Open(false); var data = SurfaceUtils.InitGraphParameters(parametersGroup); - SurfaceUtils.DisplayGraphParameters(group, data, - (instance, parameter, tag) => ((ParticleEffect)instance).GetParameterValue(trackName, parameter.Name), - (instance, value, parameter, tag) => ((ParticleEffect)instance).SetParameterValue(trackName, parameter.Name, value), - Values, - (instance, parameter, tag) => ((ParticleEffectParameter)tag).DefaultValue); + SurfaceUtils.DisplayGraphParameters(group, data, ParameterGet, ParameterSet, Values, ParameterDefaultValue); } }