Refactor asset loading and distance calculation logic for improved performance and clarity

This commit is contained in:
2025-07-28 15:00:24 +05:30
parent 2ac6bbeb9d
commit 11ace1977a
6 changed files with 42 additions and 41 deletions

View File

@@ -42,8 +42,8 @@ const DuplicationControls3D = ({
right: false,
});
const calculateDragOffset = useCallback((point: THREE.Vector3, hitPoint: THREE.Vector3) => {
const pointPosition = new THREE.Vector3().copy(point);
const calculateDragOffset = useCallback((point: THREE.Object3D, hitPoint: THREE.Vector3) => {
const pointPosition = new THREE.Vector3().copy(point.position);
return new THREE.Vector3().subVectors(pointPosition, hitPoint);
}, []);
@@ -120,11 +120,9 @@ const DuplicationControls3D = ({
if (hit) {
if (mouseButtonsDown.current.left || mouseButtonsDown.current.right) {
const assetUuid = duplicatedObjects[0].userData.modelUuid;
const asset = getAssetById(assetUuid);
if (!asset) return;
if (duplicatedObjects[0]) {
const newOffset = calculateDragOffset(new THREE.Vector3(...asset.position), intersectionPoint);
const model = scene.getObjectByProperty("uuid", duplicatedObjects[0].userData.modelUuid);
if (model) {
const newOffset = calculateDragOffset(model, intersectionPoint);
setDragOffset(newOffset);
}
return;
@@ -177,7 +175,7 @@ const DuplicationControls3D = ({
const hit = raycaster.ray.intersectPlane(plane, intersectionPoint);
if (hit) {
const offset = calculateDragOffset(selectedAssets[0].position, hit);
const offset = calculateDragOffset(selectedAssets[0], hit);
setDragOffset(offset);
}

View File

@@ -210,7 +210,7 @@ function MoveControls3D({
const initialBasePosition = initialPositions[movedObjects[0].uuid];
const positionDifference = new THREE.Vector3().subVectors(rawBasePosition, initialBasePosition);
const adjustedDifference = positionDifference.multiplyScalar(moveDistance);
let adjustedDifference = positionDifference.multiplyScalar(moveDistance);
const baseNewPosition = new THREE.Vector3().addVectors(initialBasePosition, adjustedDifference);