public BaseEdge Connect(NodePort _inputPort, NodePort _outputPort) { // 在连接两个端口,如果端口设置为只能连接一个端口,则需要在连接前把其他所有连接断开 if (!_inputPort.Multiple) { Disconnect(_inputPort); } if (!_outputPort.Multiple) { Disconnect(_outputPort); } // 创建一条连线 BaseEdge edge = BaseEdge.CreateNewEdge(_inputPort, _outputPort); edge.Enable(this); edges[edge.GUID] = edge; _inputPort.ConnectToEdge(edge); _outputPort.ConnectToEdge(edge); onEdgeAdded?.Invoke(edge); _inputPort.Owner.OnConnected(_inputPort, _outputPort); _outputPort.Owner.OnConnected(_outputPort, _inputPort); return(edge); }
public void ConnectToEdge(BaseEdge _edge) { if (!edgeGUIDs.Contains(_edge.GUID)) { edgeGUIDs.Add(_edge.GUID); } }
/// <summary> ͨ��EdgeGUID��ȡ�ӵ�Զ�̶˿� </summary> public NodePort GetConnection(int _edgeGUID) { BaseEdge edge = GetEdge(_edgeGUID); if (edge == null) { return(null); } return(Direction == PortDirection.Input ? edge.OutputPort : edge.InputPort); }
public void AddRelayNode(BaseEdge _edge, Vector2 _position) { NodePort inputPort = _edge.InputPort; NodePort outputPort = _edge.OutputPort; DisconnectEdge(_edge.GUID); var relayNode = BaseNode.CreateNew <RelayNode>(_position); BaseNode node = AddNode(relayNode); Connect(node.Ports[nameof(RelayNode.input)], outputPort); Connect(inputPort, node.Ports[nameof(RelayNode.output)]); }
public static BaseEdge CreateNewEdge(NodePort _inputPort, NodePort _outputPort) { BaseEdge edge = new BaseEdge(); edge.guid = Guid.NewGuid().ToString(); edge.inputNodeGUID = _inputPort.Owner.GUID; edge.inputFieldName = _inputPort.FieldName; edge.outputNodeGUID = _outputPort.Owner.GUID; edge.outputFieldName = _outputPort.FieldName; return(edge); }
public void DisconnectToEdge(BaseEdge _edge) { DisconnectToEdge(_edge.GUID); }