UNPKG

lingo3d

Version:

Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor

58 lines 2.52 kB
import { createEffect } from "@lincode/reactivity"; import { getWorldPlayComputed } from "../../states/useWorldPlayComputed"; import { clearMultipleSelectionTargets } from "../../states/useMultipleSelectionTargets"; import { setSelectionTarget } from "../../states/useSelectionTarget"; import attachRaycastEvent from "./attachRaycastEvent"; import { clickSet, mouseDownSet, mouseUpSet, mouseOverSet, mouseOutSet, mouseMoveSet } from "../../collections/mouseSets"; import { onMouseClick } from "../../events/onMouseClick"; import { onMouseDown } from "../../events/onMouseDown"; import { onMouseUp } from "../../events/onMouseUp"; import { onMouseMove } from "../../events/onMouseMove"; import { selectionTargetPtr } from "../../pointers/selectionTargetPtr"; createEffect(() => { if (!getWorldPlayComputed()) return; const [selectionTargetBackup] = selectionTargetPtr; clearMultipleSelectionTargets(); setSelectionTarget(undefined); const handle0 = attachRaycastEvent(onMouseClick, clickSet, (obj, e) => obj.onClick?.(e)); const handle1 = attachRaycastEvent(onMouseDown, mouseDownSet, (obj, e) => obj.onMouseDown?.(e)); const handle2 = attachRaycastEvent(onMouseUp, mouseUpSet, (obj, e) => obj.onMouseUp?.(e)); let moveSet = new Set(); let moveSetOld = new Set(); const handle3 = attachRaycastEvent(onMouseMove, mouseOverSet, (obj, e) => { moveSet.add(obj); obj.userData.eMove = e; }); const handle4 = attachRaycastEvent(onMouseMove, mouseOutSet, (obj, e) => { moveSet.add(obj); obj.userData.eMove = e; }); const handle5 = attachRaycastEvent(onMouseMove, mouseMoveSet, (obj, e) => { moveSet.add(obj); obj.userData.eMove = e; }); const handle6 = onMouseMove(() => { for (const obj of moveSet) { if (!moveSetOld.has(obj)) obj.onMouseOver?.(obj.userData.eMove); obj.onMouseMove?.(obj.userData.eMove); } for (const obj of moveSetOld) if (!moveSet.has(obj)) obj.onMouseOut?.(obj.userData.eMove); moveSetOld = moveSet; moveSet = new Set(); }); return () => { handle0.cancel(); handle1.cancel(); handle2.cancel(); handle3.cancel(); handle4.cancel(); handle5.cancel(); handle6.cancel(); !selectionTargetPtr[0] && setSelectionTarget(selectionTargetBackup); }; }, [getWorldPlayComputed]); //# sourceMappingURL=raycastPlay.js.map