diff --git a/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs b/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs index ec71348cf..5b2cfc144 100644 --- a/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs +++ b/Source/Editor/CustomEditors/Dedicated/ParticleEffectEditor.cs @@ -25,9 +25,20 @@ namespace FlaxEditor.CustomEditors.Dedicated get { // All selected particle effects use the same system - var effect = (ParticleEffect)Values[0]; - var system = effect.ParticleSystem; - return system != null && Values.TrueForAll(x => (x as ParticleEffect)?.ParticleSystem == system); + var effect = Values[0] as ParticleEffect; + var system = effect ? effect.ParticleSystem : null; + if (system && Values.TrueForAll(x => x is ParticleEffect fx && fx && fx.ParticleSystem == system)) + { + // All parameters can be accessed + var parameters = effect.Parameters; + foreach (var parameter in parameters) + { + if (!parameter) + return false; + } + return true; + } + return false; } } diff --git a/Source/Engine/Particles/ParticleEffect.cpp b/Source/Engine/Particles/ParticleEffect.cpp index 8a767ba22..788a4263f 100644 --- a/Source/Engine/Particles/ParticleEffect.cpp +++ b/Source/Engine/Particles/ParticleEffect.cpp @@ -402,7 +402,7 @@ SceneRenderTask* ParticleEffect::GetRenderTask() const #if USE_EDITOR -Array ParticleEffect::GetParametersOverrides() +Array& ParticleEffect::GetParametersOverrides() { CacheModifiedParameters(); return _parametersOverrides; @@ -461,7 +461,6 @@ void ParticleEffect::CacheModifiedParameters() { if (_parameters.IsEmpty()) return; - _parametersOverrides.Clear(); auto& parameters = GetParameters(); for (auto& param : parameters) diff --git a/Source/Engine/Particles/ParticleEffect.h b/Source/Engine/Particles/ParticleEffect.h index bfee23a3b..9e9792a4c 100644 --- a/Source/Engine/Particles/ParticleEffect.h +++ b/Source/Engine/Particles/ParticleEffect.h @@ -382,7 +382,7 @@ public: #if USE_EDITOR protected: // Exposed parameters overrides for Editor Undo. - API_PROPERTY(Attributes="HideInEditor, Serialize") Array GetParametersOverrides(); + API_PROPERTY(Attributes="HideInEditor, Serialize") Array& GetParametersOverrides(); API_PROPERTY() void SetParametersOverrides(const Array& value); #endif