I noticed 2 issues recently using GPU particle systems when setting “targetStopDuration”:
The PS always returns “true” when calling ps.isStarted() even when the stop duration is reached and no particle drawn anymore. Maybe this is expected but this behavior is different from classic ParticleSystem implementation
Once stop duration is reached, impossible to start the system again. The only ways is to set _actualFrame = 0. This behaviour is also from the one implemented in ParticleSystem class.
Particles are not removed from a GPU particle system, they are just skipped when they are not alive anymore, so isStarted for a GPU PS always stays true after it has been started.
This one is probably a bug, as this._actualFrame = 0; is done in the start function of ThinParticleSystem but not in GPUParticleSystem:
Thanks for reporting!
(note that you can do particleSystem.isStopped() instead of particleSystem["_stopped"])