lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
44 lines • 1.78 kB
JavaScript
import { jsx as _jsx } from "preact/jsx-runtime";
import { signal } from "@preact/signals";
import createObject from "../../api/serializer/createObject";
import { getGameGraph } from "../../states/useGameGraph";
import ContextMenu from "../component/ContextMenu";
import MenuButton from "../component/MenuButton";
import { getStagePosition } from "./Stage/stageSignals";
export const stageContextMenuSignal = signal(undefined);
const StageContextMenu = () => {
return (_jsx(ContextMenu, { positionSignal: stageContextMenuSignal, input: stageContextMenuSignal.value?.create && {
label: "Node name",
onInput: (value) => {
const gameGraph = getGameGraph();
const manager = createObject(value);
gameGraph.append(manager);
const { x, y } = stageContextMenuSignal.value;
gameGraph.mergeData({
[manager.uuid]: {
type: "node",
...getStagePosition(x, y)
}
});
},
options: [
"mathNode",
"numberNode",
"addNode",
"projectionNode",
"spawnNode",
"loopNode",
"mouse",
"keyboard",
"joystick"
]
}, children: _jsx(MenuButton, { onClick: () => {
stageContextMenuSignal.value = {
x: stageContextMenuSignal.value?.x ?? 0,
y: stageContextMenuSignal.value?.y ?? 0,
create: true
};
}, children: "Create node" }) }));
};
export default StageContextMenu;
//# sourceMappingURL=StageContextMenu.js.map