super-hero/extensions/shader-graph/dist/block-forge/module/forge.js

148 lines
19 KiB
JavaScript
Raw Normal View History

2024-05-29 19:24:12 -07:00
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.Pin = exports.PinD = exports.Block = exports.Graph = exports.Forge = void 0;
const block_1 = require("../block");
const graphWeakMap = new WeakMap();
const blockWeakMap = new WeakMap();
const pinWeakMap = new WeakMap();
class Forge {
constructor(graph) {
this.rootGraphData = graph;
}
get details() {
return this.rootGraphData.details;
}
getGraph() {
const graphData = this.rootGraphData;
if (!graphWeakMap.has(graphData)) {
graphWeakMap.set(graphData, new Graph(graphData));
}
return graphWeakMap.get(graphData);
}
}
exports.Forge = Forge;
class Graph {
constructor(graph) {
this.graph = graph;
// 生成数据
this.getBlockMap();
// 整理 line 数据
const nodeMap = this.graph.nodes;
const lineMap = this.graph.lines;
for (const uuid in lineMap) {
const line = lineMap[uuid];
const inputNode = nodeMap[line.input.node];
const outputNode = nodeMap[line.output.node];
const inputBlock = blockWeakMap.get(inputNode);
const outputBlock = blockWeakMap.get(outputNode);
inputBlock?.getOutputPinsList();
outputBlock?.getInputPinsList();
const inputPin = inputBlock?.getOutputPin(line.input.param);
const outPin = outputBlock?.getInputPin(line.output.param);
if (outPin) {
inputPin.connectPins.push(outPin);
}
if (inputPin) {
outPin.connectPins.push(inputPin);
}
}
}
get details() {
return this.graph.details;
}
getSubGraphMap() {
const data = {};
for (const uuid in this.graph.graphs) {
const graphData = this.graph.graphs[uuid];
if (!graphWeakMap.has(graphData)) {
graphWeakMap.set(graphData, new Graph(graphData));
}
const graph = graphWeakMap.get(graphData);
data[uuid] = graph;
}
return data;
}
getBlockMap() {
const data = {};
for (const uuid in this.graph.nodes) {
const blockData = this.graph.nodes[uuid];
if (!blockWeakMap.has(blockData)) {
blockWeakMap.set(blockData, new Block(this, uuid, blockData));
}
const block = blockWeakMap.get(blockData);
data[uuid] = block;
}
return data;
}
}
exports.Graph = Graph;
class Block {
constructor(graph, uuid, block) {
this.graph = graph;
this.uuid = uuid;
this.block = block;
this.desc = block_1.blockMap.get(this.block.type);
this.getInputPinsList();
this.getOutputPinsList();
}
get details() {
return this.block.details;
}
getInputPin(tag) {
const inputPins = this.desc?.inputPins || [];
for (let index = 0; index < inputPins.length; index++) {
const pinDesc = inputPins[index];
if (pinDesc.tag === tag) {
const pin = this.block.details.inputPins[index];
return pinWeakMap.get(pin);
}
}
}
getOutputPin(tag) {
const outputPins = this.desc?.outputPins || [];
for (let index = 0; index < outputPins.length; index++) {
const pin = outputPins[index];
if (pin.tag === tag) {
const pin = this.block.details.outputPins[index];
return pinWeakMap.get(pin);
}
}
}
getInputPinsList() {
const inputPins = this.block.details.inputPins || [];
const blockDesc = this.desc || { inputPins: [] };
return inputPins.map((pinData, index) => {
if (!pinWeakMap.has(pinData)) {
pinWeakMap.set(pinData, new Pin(PinD.input, this, pinData, blockDesc.inputPins[index]));
}
return pinWeakMap.get(pinData);
});
}
getOutputPinsList() {
const outputPins = this.block.details.outputPins || [];
const blockDesc = this.desc || { outputPins: [] };
return outputPins.map((pinData, index) => {
if (!pinWeakMap.has(pinData)) {
pinWeakMap.set(pinData, new Pin(PinD.output, this, pinData, blockDesc.outputPins[index]));
}
return pinWeakMap.get(pinData);
});
}
}
exports.Block = Block;
var PinD;
(function (PinD) {
PinD[PinD["input"] = 0] = "input";
PinD[PinD["output"] = 1] = "output";
})(PinD = exports.PinD || (exports.PinD = {}));
class Pin {
constructor(dir, block, pin, desc) {
this.connectPins = [];
this.type = dir;
this.block = block;
this.desc = desc;
this.value = pin;
}
}
exports.Pin = Pin;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvbW9kdWxlL2ZvcmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBSWIsb0NBQW9DO0FBRXBDLE1BQU0sWUFBWSxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzlELE1BQU0sWUFBWSxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzlELE1BQU0sVUFBVSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRXhELE1BQWEsS0FBSztJQUdkLFlBQVksS0FBZ0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzlCLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBbEJELHNCQWtCQztBQUVELE1BQWEsS0FBSztJQUdkLFlBQVksS0FBZ0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsT0FBTztRQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixhQUFhO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFD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