diff --git a/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.ParticleModules.cpp b/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.ParticleModules.cpp index 98642b34f..4839151b4 100644 --- a/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.ParticleModules.cpp +++ b/Source/Engine/Particles/Graph/CPU/ParticleEmitterGraph.CPU.ParticleModules.cpp @@ -1163,7 +1163,12 @@ void ParticleEmitterGraphCPUExecutor::ProcessModule(ParticleEmitterGraphCPUNode* #define INPUTS_FETCH() \ const Quaternion quat = (Quaternion)GetValue(quatBox, 2); #define LOGIC() \ -*(Float3*)positionPtr = quat * *((Float3*)positionPtr); \ +Quaternion nq = Quaternion::Invert(quat); \ +Float3 v3 = *((Float3*)positionPtr); \ +Float4 v4 = Float4(v3); \ +Quaternion q = Quaternion(v4); \ +Quaternion rq = quat * (q * nq); \ +*(Float3*)positionPtr = Float3(rq.X, rq.Y, rq.Z); \ positionPtr += stride; if (node->UsePerParticleDataResolve())