ReadonlycountValid sample count per slot, in [0, length].
ReadonlyheadNext write index per slot, in [0, length).
ReadonlylengthSamples per slot.
Readonlypositionscapacity × length × 3 world-space centres, xyz stride 3.
Clears every slot's history without freeing storage.
Copies slot from over slot to — the trail mirror of
ParticlePool.kill's swap-remove.
Valid sample count for a live slot.
Appends (x, y, z) when it is far enough from the newest sample.
The first sample is always accepted so a freshly spawned particle still produces a degenerate one-point history until it moves.
Writes sample sampleIndex (0 = oldest) into out.
Clears one slot — called from ParticlePool.spawn via the emitter.
Fixed-capacity ring buffers — one history chain per pool slot.
Storage is allocated once in the constructor; pushSample and copySlot are the only mutators the emitter calls on the hot path.