diff --git a/Source/Engine/Particles/ParticleEffect.cpp b/Source/Engine/Particles/ParticleEffect.cpp index f29c87207..de92358f0 100644 --- a/Source/Engine/Particles/ParticleEffect.cpp +++ b/Source/Engine/Particles/ParticleEffect.cpp @@ -546,6 +546,19 @@ 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() { ApplyModifiedParameters(); } @@ -823,6 +836,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 65600f570..d32283c70 100644 --- a/Source/Engine/Particles/ParticleEffect.h +++ b/Source/Engine/Particles/ParticleEffect.h @@ -394,6 +394,7 @@ private: void ApplyModifiedParameters(); void OnParticleSystemModified(); void OnParticleSystemLoaded(); + void OnParticleEmitterLoaded(); public: // [Actor]