lingo3d
Version:
Lingo3D is a React/Vue 3d game development framework that ships with a complete visual editor
37 lines • 1.64 kB
JavaScript
import { assert } from "@lincode/utils";
import { getGameGraph } from "../../../states/useGameGraph";
import { findConnected } from "../../../visualScripting/Connector";
import TemplateNode from "../../../visualScripting/TemplateNode";
import createConnector from "./createConnector";
import { managerConnectorsMap } from "../../../collections/managerConnectorsMap";
export default (manager, spawnNode) => {
const gameGraph = getGameGraph();
const managerNode = gameGraph.data[manager.uuid];
assert(managerNode.type === "node");
const sourceUUIDTemplateMap = new Map();
const connectors = new Set();
let managerTemplate;
for (const connected of findConnected(manager)) {
const connectedNode = gameGraph.data[connected.uuid];
assert(connectedNode.type === "node");
for (const connector of managerConnectorsMap.get(connected) ?? [])
connectors.add(connector);
const template = new TemplateNode();
template.source = connected;
template.spawnNode = spawnNode.uuid;
gameGraph.mergeData({
[template.uuid]: {
type: "node",
x: connectedNode.x,
y: connectedNode.y
}
});
sourceUUIDTemplateMap.set(connected.uuid, template);
if (connected === manager)
managerTemplate = template;
}
for (const { from, to, fromProp, toProp, xyz } of connectors)
createConnector(sourceUUIDTemplateMap.get(from), fromProp, sourceUUIDTemplateMap.get(to), toProp, xyz);
return managerTemplate;
};
//# sourceMappingURL=convertToTemplateNodes.js.map