mylingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
40 lines • 1.44 kB
JavaScript
import { createEffect } from "@lincode/reactivity";
import { BoxHelper } from "three";
import { onBeforeRender } from "../events/onBeforeRender";
import { getMultipleSelectionTargets } from "../states/useMultipleSelectionTargets";
import { getSelectionTarget } from "../states/useSelectionTarget";
import scene from "./scene";
createEffect(() => {
const target = getSelectionTarget();
if (!target)
return;
const boxHelper = new BoxHelper(target.nativeObject3d);
const frame = requestAnimationFrame(() => scene.add(boxHelper));
const handle = onBeforeRender(() => boxHelper.update());
return () => {
cancelAnimationFrame(frame);
scene.remove(boxHelper);
handle.cancel();
};
}, [getSelectionTarget]);
createEffect(() => {
const targets = getMultipleSelectionTargets();
if (!targets.length)
return;
const boxHelpers = [];
for (const target of targets) {
const boxHelper = new BoxHelper(target.outerObject3d);
scene.add(boxHelper);
boxHelpers.push(boxHelper);
}
const handle = onBeforeRender(() => {
for (const boxHelper of boxHelpers)
boxHelper.update();
});
return () => {
for (const boxHelper of boxHelpers)
scene.remove(boxHelper);
handle.cancel();
};
}, [getMultipleSelectionTargets]);
//# sourceMappingURL=boxHelper.js.map