import * as React from "react"; import { PortWidget } from "storm-react-diagrams"; import { DefaultNodeModel } from './defaultNodeModel'; import { DefaultPortModel } from './defaultPortModel'; import { Nullable } from 'babylonjs/types'; import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint'; import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes'; export class PortHelper { private static _GetPortTypeIndicator(connection: NodeMaterialConnectionPoint): Nullable { switch (connection.type) { case NodeMaterialBlockConnectionPointTypes.Float: case NodeMaterialBlockConnectionPointTypes.Int: return ; case NodeMaterialBlockConnectionPointTypes.Vector2: return ; case NodeMaterialBlockConnectionPointTypes.Vector3: case NodeMaterialBlockConnectionPointTypes.Color3: return ; case NodeMaterialBlockConnectionPointTypes.Vector4: case NodeMaterialBlockConnectionPointTypes.Color4: return ; case NodeMaterialBlockConnectionPointTypes.Matrix: return ; } return null; } public static GenerateOutputPorts(node: Nullable, ignoreLabel: boolean) { if (!node) { return new Array(); } let outputPorts = []; for (var key in node.ports) { let port = node.ports[key] as DefaultPortModel; if (port.position === "output") { let typeIndicator = this._GetPortTypeIndicator(port.connection!); outputPorts.push(
{ !ignoreLabel &&
{port.name}
}
0 ? "connected" : ""} />
{ typeIndicator }
); } } return outputPorts; } public static GenerateInputPorts(node: Nullable, includeOnly?: string[]) { if (!node) { return new Array(); } let inputPorts = []; for (var key in node.ports) { let port = node.ports[key] as DefaultPortModel; if (port.position === "input") { let typeIndicator = this._GetPortTypeIndicator(port.connection!); if (!includeOnly || includeOnly.indexOf(port.name) !== -1) { inputPorts.push(
{ typeIndicator }
{port.name}
); } } } return inputPorts; } }