From dabf758029a26dd2ebec28e23b4100321465c03d Mon Sep 17 00:00:00 2001 From: Orkun Manap <31966136+manaporkun@users.noreply.github.com> Date: Tue, 2 Jun 2026 01:13:29 +0200 Subject: [PATCH] fix: make global (uniform) scale speed framerate-independent ScaleGlobal.Interact multiplied the per-frame mouse pixel delta by Time.deltaTime, tying uniform-scale speed to the frame rate (higher fps -> smaller dt -> slower scaling for the same drag). Drop Time.deltaTime so the scale delta depends only on drag distance; MouseSensitivity is retuned to 0.0333 to preserve the previous feel at 60 fps. --- .../Scripts/HandleComponents/Scale/ScaleGlobal.cs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Packages/com.orkunmanap.runtime-transform-handles/Runtime/Scripts/HandleComponents/Scale/ScaleGlobal.cs b/Packages/com.orkunmanap.runtime-transform-handles/Runtime/Scripts/HandleComponents/Scale/ScaleGlobal.cs index 504b855..965b003 100644 --- a/Packages/com.orkunmanap.runtime-transform-handles/Runtime/Scripts/HandleComponents/Scale/ScaleGlobal.cs +++ b/Packages/com.orkunmanap.runtime-transform-handles/Runtime/Scripts/HandleComponents/Scale/ScaleGlobal.cs @@ -8,7 +8,9 @@ namespace TransformHandles /// public class ScaleGlobal : HandleBase { - private const float MouseSensitivity = 2f; + // Scale delta per pixel dragged. Chosen to match the previous feel at 60 fps + // (the old code used 2f * Time.deltaTime, i.e. ~2/60 per pixel at 60 fps). + private const float MouseSensitivity = 0.0333f; [SerializeField] private Color defaultColor; [SerializeField] private MeshRenderer cubeMeshRenderer; @@ -37,7 +39,10 @@ public void Initialize(Handle handle, Vector3 axis) public override void Interact(Vector3 previousPosition) { var mouseVector = (Vector3)InputWrapper.MousePosition - previousPosition; - var d = (mouseVector.x + mouseVector.y) * Time.deltaTime * MouseSensitivity; + // mouseVector is the per-frame pixel delta; the total scale change should depend on how + // far the mouse moved, not on the frame rate. Multiplying by Time.deltaTime made scaling + // speed framerate-dependent (higher fps -> smaller dt -> slower scaling). Drop it. + var d = (mouseVector.x + mouseVector.y) * MouseSensitivity; delta += d; ParentHandle.target.localScale = _startScale + Vector3.Scale(_startScale, _axis) * delta;