From a9c2b19edf00e1c86c928ef23405906952ede852 Mon Sep 17 00:00:00 2001 From: mob-sakai Date: Fri, 24 May 2024 17:36:35 +0900 Subject: [PATCH] fix: the ParticleSystem's localPosition drifts at certain scales due to floating-point precision issues close #299, close #312 --- Packages/src/Runtime/UIParticleRenderer.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Packages/src/Runtime/UIParticleRenderer.cs b/Packages/src/Runtime/UIParticleRenderer.cs index 5096049..4c7879c 100644 --- a/Packages/src/Runtime/UIParticleRenderer.cs +++ b/Packages/src/Runtime/UIParticleRenderer.cs @@ -614,6 +614,8 @@ namespace Coffee.UIExtensions // get world position. var isLocalSpace = _particleSystem.IsLocalSpace(); var psTransform = _particleSystem.transform; + var originLocalPosition = psTransform.localPosition; + var originLocalRotation = psTransform.localRotation; var originWorldPosition = psTransform.position; var originWorldRotation = psTransform.rotation; var emission = _particleSystem.emission; @@ -636,7 +638,8 @@ namespace Coffee.UIExtensions : originWorldPosition.GetScaled(scale.Inverse()); psTransform.SetPositionAndRotation(scaledPos, originWorldRotation); _particleSystem.Simulate(deltaTime, false, false, false); - psTransform.SetPositionAndRotation(originWorldPosition, originWorldRotation); + psTransform.localPosition = originLocalPosition; + psTransform.localRotation = originLocalRotation; } #if UNITY_EDITOR