90% of the time, what I want a particle system to do is:
Have a sub-emitter from my projectiles… smoke, sparks, trails.
Have a sub-emitter that spawns when my projectile(mesh/sprite) collides with something.
Have an emitter that creates a visual effect, then waits for user input to spawn another emitter.
Have an emitter that creates an effect on a skeletal mesh(or static mesh) in response to a collision.
Currently, it seems that Niagara’s collision is sub-par.
Collision should be the primary focus of any particle system.
With the current Niagara, I cannot even access the Perform Collision Async function.
Without a robust collision component, a particle system(Niagara) is almost useless.
Particle System workflow…
When particle dies… spawn an emitter at death location.
When particle collides… spawn an emitter at collision location and kill colliding particle.
When emitter reaches max age, loop until blueprint/c++ says do otherwise, then give the option of modifying the current system or replacing it with another…
These three things are actually 99% of the use cases I want from a particle system.