From 5ae8d8e27344576ae6570841aec445ff5b0141a9 Mon Sep 17 00:00:00 2001 From: Jerald-Golden-B Date: Fri, 18 Jul 2025 15:11:57 +0530 Subject: [PATCH] move speed control --- .../selection3D/moveControls3D.tsx | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx b/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx index d6732b3..d74c2da 100644 --- a/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx +++ b/app/src/modules/scene/controls/selectionControls/selection3D/moveControls3D.tsx @@ -116,10 +116,12 @@ function MoveControls3D({ if (pastedObjects.length > 0 || duplicatedObjects.length > 0 || rotatedObjects.length > 0) return; - if (keyCombination === "Ctrl" || keyCombination === "Ctrl+Shift" || keyCombination === "Shift") { - setKeyEvent(keyCombination); - } else { - setKeyEvent(""); + if (keyCombination !== keyEvent) { + if (keyCombination === "Ctrl" || keyCombination === "Ctrl+Shift" || keyCombination === "Shift") { + setKeyEvent(keyCombination); + } else { + setKeyEvent(""); + } } if (keyCombination === "G") { @@ -204,11 +206,18 @@ function MoveControls3D({ } if (dragOffset) { - const baseNewPosition = new THREE.Vector3().addVectors(intersectionPoint, dragOffset); + const rawBasePosition = new THREE.Vector3().addVectors(intersectionPoint, dragOffset); - let moveSpeed = keyEvent === "Shift" || "Ctrl+Shift" ? 0.25 : 1; + let moveSpeed = keyEvent.includes("Shift") ? 0.25 : 1; - if (keyEvent === "Ctrl") { + const initialBasePosition = initialPositions[movedObjects[0].uuid]; + const positionDifference = new THREE.Vector3().subVectors(rawBasePosition, initialBasePosition); + + const adjustedDifference = positionDifference.multiplyScalar(moveSpeed); + + const baseNewPosition = new THREE.Vector3().addVectors(initialBasePosition, adjustedDifference); + + if (keyEvent.includes("Ctrl")) { baseNewPosition.x = snapControls(baseNewPosition.x, "Ctrl"); baseNewPosition.z = snapControls(baseNewPosition.z, "Ctrl"); }