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);
        }
Beispiel #2
0
        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();
            }
        }
Beispiel #3
0
        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);
                }
            }
        }