Changes
Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com>
This commit is contained in:
@@ -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<PointerEvent>).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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user