From d698bf96cca0f156a4d152bac1e5f618567d674c Mon Sep 17 00:00:00 2001 From: Chandler Cox Date: Sat, 5 Jul 2025 19:36:45 -0500 Subject: [PATCH 1/2] Apply particle effect parameter overrides when emitter is changed and when activated in the tree. --- Source/Engine/Particles/ParticleEffect.cpp | 14 ++++++++++++++ Source/Engine/Particles/ParticleEffect.h | 1 + 2 files changed, 15 insertions(+) diff --git a/Source/Engine/Particles/ParticleEffect.cpp b/Source/Engine/Particles/ParticleEffect.cpp index c1031f4ac..de4abb53d 100644 --- a/Source/Engine/Particles/ParticleEffect.cpp +++ b/Source/Engine/Particles/ParticleEffect.cpp @@ -546,6 +546,16 @@ void ParticleEffect::OnParticleSystemModified() } void ParticleEffect::OnParticleSystemLoaded() +{ + ApplyModifiedParameters(); + auto& emitters = ParticleSystem.Get()->Emitters; + for (auto& emitter : emitters) + { + emitter.Loaded.BindUnique(this); + } +} + +void ParticleEffect::OnParticleEmitterLoaded() { ApplyModifiedParameters(); } @@ -814,6 +824,10 @@ void ParticleEffect::OnActiveInTreeChanged() CacheModifiedParameters(); Instance.ClearState(); } + else + { + ApplyModifiedParameters(); + } } void ParticleEffect::OnTransformChanged() diff --git a/Source/Engine/Particles/ParticleEffect.h b/Source/Engine/Particles/ParticleEffect.h index 9be31c4c7..2727ac794 100644 --- a/Source/Engine/Particles/ParticleEffect.h +++ b/Source/Engine/Particles/ParticleEffect.h @@ -387,6 +387,7 @@ private: void ApplyModifiedParameters(); void OnParticleSystemModified(); void OnParticleSystemLoaded(); + void OnParticleEmitterLoaded(); public: // [Actor] From cb07ee77aa19432da67418980da6708e9818d4bf Mon Sep 17 00:00:00 2001 From: Wojtek Figat Date: Fri, 22 Aug 2025 22:31:08 +0200 Subject: [PATCH 2/2] Change #3588 to be editor-only --- Source/Engine/Particles/ParticleEffect.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Source/Engine/Particles/ParticleEffect.cpp b/Source/Engine/Particles/ParticleEffect.cpp index 25369934d..de92358f0 100644 --- a/Source/Engine/Particles/ParticleEffect.cpp +++ b/Source/Engine/Particles/ParticleEffect.cpp @@ -548,11 +548,14 @@ void ParticleEffect::OnParticleSystemModified() void ParticleEffect::OnParticleSystemLoaded() { ApplyModifiedParameters(); +#if USE_EDITOR + // When one of the emitters gets edited, cached parameters need to be applied auto& emitters = ParticleSystem.Get()->Emitters; for (auto& emitter : emitters) { emitter.Loaded.BindUnique(this); } +#endif } void ParticleEffect::OnParticleEmitterLoaded()