Works fine for me. I just Disable() as this in itself would stop them. Maybe you need to use Stop() then Sleep(0.0) then Disable() some things need 1 tick between function calls.
On a niagara usually there is 3 lifetimes involved: system (the simulation), emitter (for each emitter you yave in the system), and particle (for each particle you have on each emitter)
Each of these has different lifetime cycles, that can be configured to work together or independently…
Stopping the system does not kill emitters unless you configure for doing it on the niagara asset:
Emitters with lifetime attached to system will be killed when system is stopped
Emitters with Infinite lifetime will keep running even with system being stopped
Emitters with Finite lifetime will continue running after system is stopped, until the emitter lifetime itself expires
Same for particles, they will only be removed if you explicitly coded for it on the niagara asset:
Particles with infinite lifetime will stay rendered after the emitter lifetime ended
Particles with finite lifetime will wait until the lifetime completes before getting removed
Particles with lifetime attached to other condition (ex emitter, system or other variable), will follow that condition rules to be removed from scene
This means, calling Stop() on the system, will stop only the system, and chained behavior will depend on how your particle is set up.
For example, these are two emitters, one with the lifetime set as “system” (will be killed when system gets killed):
From what I remember from my tests back when it released, the Enabled/Disabled states of the particle_system_component only controls the AutoPlay and the Start()/Stop() functionality, and not controlling the system lifetime itself. (For example, calling Start() or Stop() while component is disabled do nothing, and the AutoPlay being to auto-fire the Start()/Stop() when enabling/disabling the component for ease-of-use).
If it worked different from this, would not make much sense existing both Enable/Disable and Start/Stop functions since they would be basically the same functionality and also would limit the particle behavior different from what the VFX artist planned…
Then, the actual niagara system and emitters being controled by their proper lifetimes as the user set up on the system (like on my past message), and the Start()/Stop() functions controlling only the system lifetime, while all emitters and particles being chained on the particle definition.
It would not make much sense you configuring it to do something, and afterwards it ignoring your configuration for no reason, specially the lifetime chain, which is very important for the niagara simulation, defining all the particle behaviors and visuals for the specific usages needed…
I will make a new test setup later to check and confirm all the behaviors, the particle_system_component had changes on the past (like mesh_component also had), so I am unsure how the current behavior is, I never needed to do much complex niagara setups with all these functionality yet… (All my systems are basically “kill all” to be enabled/disabled)
I think if you want to force a de-render ignoring the particle system asset configuration, you can just remove the particle system component itself from the entity, that would act as a kill-switch