Quick answer: Send block: Source Attribute = Position. Receiver Init: Inherit Source Attribute Position with non-zero blend.
Sparks emitter sends a GPUEvent on death. Smoke emitter spawns at world origin instead of the spark’s position. Position attribute wasn’t set on the send.
The Fix
Sparks emitter:
Particle Update:
+ Trigger Event Always (or on death):
Set Position from Self
Output: GPUEvent (Send)
Source Attribute: Position
Smoke emitter:
Init:
+ Inherit Source Position (1.0) // from Sparks event
+ Set Lifetime, Velocity etc.
Send writes the source attribute to the event payload. Inherit pulls it into the receiver’s init. Custom attributes work the same way.
Verifying
Spark dies; smoke spawns at the spark’s last position. Without Inherit: smoke spawns at receiver’s origin.
“Send sets. Receiver inherits. Cascade aligns.”
Related Issues
For VFX strip collapse, see strip. For spawn over distance, see distance.
Set source. Inherit. Cascade aligns.