UNPKG

lingo3d

Version:

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

45 lines 1.9 kB
import store, { add, remove, clear, createEffect } from "@lincode/reactivity"; import { appendableRoot } from "../collections/appendableRoot"; import { onId } from "../events/onId"; import { selectionCandidates } from "../collections/selectionCandidates"; import { emitSelectionTarget } from "../events/onSelectionTarget"; import { getSelectionCandidates } from "../throttle/getSelectionCandidates"; const [setSelectionHideId, getSelectionHideId] = store([new Set()]); export { getSelectionHideId }; export const addSelectionHideId = add(setSelectionHideId, getSelectionHideId); export const removeSelectionHideId = remove(setSelectionHideId, getSelectionHideId); export const clearSelectionHideId = clear(setSelectionHideId, getSelectionHideId); createEffect(() => { const [hideIdSet] = getSelectionHideId(); if (!hideIdSet.size) return; const hidden = []; for (const manager of appendableRoot) manager.traverse((child) => { if ("visible" in child && child.id && hideIdSet.has(child.id)) { hidden.push(child); child.visible = false; child.$disableSelection = true; selectionCandidates.delete(child.object3d); } }); emitSelectionTarget(undefined); const handle = onId((child) => { if ("visible" in child && child.id && hideIdSet.has(child.id)) { hidden.push(child); child.visible = false; child.$disableSelection = true; selectionCandidates.delete(child.object3d); emitSelectionTarget(undefined); } }); return () => { handle.cancel(); for (const child of hidden) { child.visible = true; child.$disableSelection = false; } getSelectionCandidates(); }; }, [getSelectionHideId]); //# sourceMappingURL=useSelectionHideId.js.map