UNPKG

lingo3d

Version:

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

48 lines 1.93 kB
import { event } from "@lincode/events"; import { transformControlsModePtr } from "../pointers/transformControlsModePtr"; import getAllSelectionTargets from "../throttle/getAllSelectionTargets"; import updateSelectionManagersPhysics from "../display/utils/updateSelectionManagersPhysics"; import { flushMultipleSelectionTargets } from "../states/useMultipleSelectionTargets"; import { pushUndoStack } from "../api/undoStack"; import getTransformControlsData from "../display/utils/getTransformControlsData"; import { emitTransformEdit } from "./onTransformEdit"; import MeshAppendable from "../display/core/MeshAppendable"; export const [emitTransformControls, onTransformControls] = event(); onTransformControls((phase) => { const payload = { phase, mode: transformControlsModePtr[0] }; for (const target of getAllSelectionTargets()) target instanceof MeshAppendable && emitTransformEdit({ target, phase, mode: payload.mode }); updateSelectionManagersPhysics(payload); }); let commandRecord = {}; onTransformControls((phase) => { if (phase === "start") { flushMultipleSelectionTargets(() => { for (const target of getAllSelectionTargets()) { const data = getTransformControlsData(target); if (!data) continue; commandRecord[target.uuid] = { command: "update", commandPrev: data }; } }); return; } flushMultipleSelectionTargets(() => { for (const target of getAllSelectionTargets()) { const data = getTransformControlsData(target); if (!data) continue; commandRecord[target.uuid].commandNext = data; } pushUndoStack(commandRecord); commandRecord = {}; }); }); //# sourceMappingURL=onTransformControls.js.map