public void RemovePort(PortView p) { // Remove all connected edges: var edgesCopy = p.GetEdges().ToList(); foreach (var e in edgesCopy) { owner.Disconnect(e, refreshPorts: false); } if (p.direction == Direction.Input) { if (inputPortViews.Remove(p)) { p.RemoveFromHierarchy(); } } else { if (outputPortViews.Remove(p)) { p.RemoveFromHierarchy(); } } List <PortView> ports; portsPerFieldName.TryGetValue(p.fieldName, out ports); ports.Remove(p); }
public void OnPortConnected(PortView pv, Edge edge) { // Fix port datas if (pv.direction == Direction.Input) { edge.input = pv; } else { edge.output = pv; } // If the edge is already connected, ignore it if (portViews.ContainsKey(edge)) { return; } portViews[edge] = pv; if (pv.GetEdges().Count == 0) { multiPorts.AddUniqueId(multiPorts.GetUniqueId()); AddPort(); } }
public void OnPortDisconnected(PortView pv, Edge edge) { if (pv.GetEdges().Count == 0) { if ((edge as EdgeView).isConnected && portViews.ContainsKey(edge)) { var portToRemove = portViews[edge]; node.RemovePort(portToRemove); node.nodeTarget.RemovePort(direction == Direction.Input, portToRemove.fieldName); portViews.Remove(edge); multiPorts.RemoveUniqueId(0); } } }