diff --git a/Source/Engine/Particles/ParticleEffect.h b/Source/Engine/Particles/ParticleEffect.h index 4de88f1d5..5ae56603a 100644 --- a/Source/Engine/Particles/ParticleEffect.h +++ b/Source/Engine/Particles/ParticleEffect.h @@ -192,6 +192,12 @@ public: API_FIELD(Attributes="NoSerialize, HideInEditor") ScriptingObjectReference CustomViewRenderTask; + /// + /// Toggles particles spawning functionality (for all emitters) at runtime. + /// + API_FIELD(Attributes="NoSerialize, HideInEditor") + bool CanSpawn = true; + public: /// /// The particles simulation update mode. Defines how to update particles emitter. diff --git a/Source/Engine/Particles/Particles.cpp b/Source/Engine/Particles/Particles.cpp index 0653f31e8..3c41cd243 100644 --- a/Source/Engine/Particles/Particles.cpp +++ b/Source/Engine/Particles/Particles.cpp @@ -1702,7 +1702,7 @@ void ParticlesSystem::Job(int32 index) // Calculate new time position const float startTime = (float)track.AsEmitter.StartFrame / fps; const float durationTime = (float)track.AsEmitter.DurationFrames / fps; - const bool canSpawn = startTime <= instance.Time && instance.Time <= startTime + durationTime; + const bool canSpawn = startTime <= instance.Time && instance.Time <= startTime + durationTime && effect->CanSpawn; // Update instance data data.Sync(effect->Instance, particleSystem, track.AsEmitter.Index);