diff --git a/src/components/three/ModelViewer.tsx b/src/components/three/ModelViewer.tsx index eaaa2cc..62cc5e0 100644 --- a/src/components/three/ModelViewer.tsx +++ b/src/components/three/ModelViewer.tsx @@ -721,37 +721,6 @@ function SelectionHandler() { const prevCursor = gl.domElement.style.cursor; gl.domElement.style.cursor = 'cell'; const canvas = gl.domElement; - let downX = 0, downY = 0, armed = false; - - const onDown = (e: PointerEvent) => { - if (e.button !== 0) { armed = false; return; } - downX = e.clientX; downY = e.clientY; armed = true; - }; - const onUp = (e: PointerEvent) => { - if (!armed) return; - armed = false; - if (Math.hypot(e.clientX - downX, e.clientY - downY) > 4) return; - - const rect = canvas.getBoundingClientRect(); - mouse.x = ((e.clientX - rect.left) / rect.width) * 2 - 1; - mouse.y = -((e.clientY - rect.top) / rect.height) * 2 + 1; - raycaster.setFromCamera(mouse, camera); - const intersects = raycaster.intersectObjects(scene.children, true); - const hit = intersects.find((i) => isPickableModelMesh(i.object)); - if (!hit) return; - - const element = findElementRoot(hit.object); - let cur: THREE.Object3D | null = hit.object; - let modelId: string | null = null; - while (cur) { - if (!modelId && cur.userData?.modelId) modelId = cur.userData.modelId as string; - cur = cur.parent; - } - if (!modelId) modelId = useModelStore.getState().activeModelId; - if (!modelId || !element) return; - const key = elementKey(modelId, element); - useModelStore.getState().toggleElementSelection(key); - }; const onR3FMiss = (event: Event) => { const detail = (event as CustomEvent).detail; @@ -770,12 +739,8 @@ function SelectionHandler() { useModelStore.getState().toggleElementSelection(elementKey(modelId, element)); }; - canvas.addEventListener('pointerdown', onDown); - canvas.addEventListener('pointerup', onUp); canvas.addEventListener('tsxr-selection-miss', onR3FMiss); return () => { - canvas.removeEventListener('pointerdown', onDown); - canvas.removeEventListener('pointerup', onUp); canvas.removeEventListener('tsxr-selection-miss', onR3FMiss); gl.domElement.style.cursor = prevCursor; };