I was thinking that we could identify the spawned particle by using NiagaraID?
NiagaraID is composed of two values:
- AcquireTag: It’s the tickcount for the current emitter instance, the same as Emitter.TickCount, which you can access from the module script.
- Index: the index of the total spawned particle in this tick.
So on the C++ side, we could use the NiagaraID to store and update the position array, and some data manager stuff to do that. And in the Niagara module script, we can retrieve the correct data(ie, updated position) for this particle by using NiagaraID as well.
Maybe it’s worth trying.
(If it works, then we could do the same trick with the Niagara data interface array as well)