lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
48 lines • 1.93 kB
JavaScript
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