示例#1
0
        private void RemovePort(OutputPort port)
        {
            CodeGraph.Instance.InvalidateSaveButton();
            var connectionsToRemove = new List <Edge>();

            connectionsToRemove.AddRange(port.PortReference.connections);
            while (connectionsToRemove.Count > 0)
            {
                var conn = connectionsToRemove[0];
                CodeGraph.Instance.GraphView.RemoveElement(conn);
                conn.input.Disconnect(conn);
                conn.output.Disconnect(conn);
                // conn = null;
                connectionsToRemove.RemoveAt(0);
            }

            outputContainer.Remove(port.PortReference);
            OutputPorts.Remove(port);
            EventPorts.Remove(port);
            OutputPortDictionary.Remove(port.PortReference);

            port.PortReference = null;
            PortCount--;
            FixPortNames();
            Refresh();
        }
示例#2
0
        public void AddChildPort(bool incrementPortCount = true)
        {
            CodeGraph.Instance.InvalidateSaveButton();
            var outputPort = base.InstantiatePort(Orientation.Horizontal, Direction.Output, Port.Capacity.Single, typeof(float));

            outputPort.name      = $"EventPort {EventPorts.Count + 1}";
            outputPort.portName  = $"child {EventPorts.Count + 1}";
            outputPort.portColor = new Color(1, 1, 1, 0.2f);

            // AddOutputPort(outputPort, () => "");
            var outputPortObj = new OutputPort(this, outputPort, () => "");

            OutputPorts.Add(outputPortObj);
            EventPorts.Add(outputPortObj);
            OutputPortDictionary.Add(outputPort, outputPortObj);
            outputPort.contentContainer.Add(new Button(() => { RemovePort(outputPortObj); })
            {
                text = "X"
            });
            outputContainer.Add(outputPort);

            if (incrementPortCount)
            {
                PortCount++;
            }
            Refresh();
        }
示例#3
0
        private new void AddOutputPort(Port portReference, Func <string> getCode, bool alsoAddToHierarchy = true)
        {
            var outputPort = new OutputPort(this, portReference, getCode);

            OutputPorts.Add(outputPort);
            OutputPortDictionary.Add(portReference, outputPort);
            if (alsoAddToHierarchy)
            {
                outputContainer.Add(portReference);
            }
        }
示例#4
0
        public void CleanPorts()
        {
            CodeGraph.Instance.InvalidateSaveButton();
            var portsToRemove = new List <OutputPort>();

            (from port in EventPorts
             let portConnections = port.PortReference.connections.ToList()
                                   where portConnections.Count == 0
                                   select port).ToList()
            .ForEach(port => {
                outputContainer.Remove(port.PortReference);
                portsToRemove.Add(port);
                PortCount--;
            });
            portsToRemove.ForEach(p => {
                OutputPorts.Remove(p);
                EventPorts.Remove(p);
                OutputPortDictionary.Remove(p.PortReference);
                p.PortReference = null;
            });
            FixPortNames();
            Refresh();
        }