UNPKG

lingo3d

Version:

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

54 lines 2.1 kB
import { createEffect } from "@lincode/reactivity"; import { BoxHelper } from "three"; import { getMultipleSelectionTargets } from "../states/useMultipleSelectionTargets"; import { getSelectionTarget } from "../states/useSelectionTarget"; import scene from "./scene"; import { selectionTargetPtr } from "../pointers/selectionTargetPtr"; import { ssrExcludeSet } from "../collections/ssrExcludeSet"; import { renderCheckExcludeSet } from "../collections/renderCheckExcludeSet"; import { multipleSelectionTargets } from "../collections/multipleSelectionTargets"; import MeshAppendable from "../display/core/MeshAppendable"; import { updateSystem } from "../systems/updateSystem"; createEffect(() => { const [selectionTarget] = selectionTargetPtr; const target = selectionTarget instanceof MeshAppendable ? selectionTarget.object3d : undefined; if (!target) return; const boxHelper = new BoxHelper(target); scene.add(boxHelper); updateSystem.add(boxHelper); ssrExcludeSet.add(boxHelper); renderCheckExcludeSet.add(boxHelper); return () => { scene.remove(boxHelper); updateSystem.delete(boxHelper); boxHelper.dispose(); ssrExcludeSet.delete(boxHelper); renderCheckExcludeSet.delete(boxHelper); }; }, [getSelectionTarget]); createEffect(() => { if (!multipleSelectionTargets.size) return; const boxHelpers = []; for (const target of multipleSelectionTargets) { const boxHelper = new BoxHelper(target.object3d); scene.add(boxHelper); boxHelpers.push(boxHelper); updateSystem.add(boxHelper); ssrExcludeSet.add(boxHelper); renderCheckExcludeSet.add(boxHelper); } return () => { for (const boxHelper of boxHelpers) { updateSystem.delete(boxHelper); scene.remove(boxHelper); boxHelper.dispose(); ssrExcludeSet.delete(boxHelper); renderCheckExcludeSet.delete(boxHelper); } }; }, [getMultipleSelectionTargets]); //# sourceMappingURL=boxHelper.js.map