I have a particle system template that tries to play in local space, but upon attempting to play it via an animation notify (Play Particle Effect, unattached), I noticed that it looked like it reset to world space.
When I dug into the AnimNotify_PlayParticleEffect.cpp code, I noticed that after loading, the notify initializes its rotation offset quaternion:
RotationOffsetQuat = FQuat(RotationOffset);
when applied to a default rotation offset of zero, gets us an FQuat of (0,0,0,0).
Later, when spawning the particle effect, we call
SpawnTransform.SetRotation(MeshTransform.GetRotation() * RotationOffsetQuat);
Which should treat the rotation as an offset in addition to the mesh rotation, so the rotation should just be identical to the mesh transform’s. But instead, the rotation is zeroed out, and it looks like the particle system doesn’t get any rotation. (To test this, I tried changing the rotation offset to 0 pitch, 0 roll, 1 yaw… which did apply the rotation.)
To fix this, shouldn’t RotationOffsetQuat be FQuat::Identity if the rotation offset is zero?