public void AddConnection(ConnectionLink newChild)
    {
        //Create and store outgoing information
        OutgoingInfo outInfo = new OutgoingInfo(this, newChild, makeArrow(transform, newChild.transform));

        parent.connectionsOut[paramName].Add(outInfo);
        newChild.parent.connectionsIn[newChild.paramName].Add(outInfo);

        //Update child node connections since a conditional output may apear if this connection is hooked up
        newChild.parent.UpdateShownConnectionLinks();
    }
    //[BEFORE EXECUTION]
    public void updateComputedNodesOnAddedConnection(ConnectionLink source, ConnectionLink sink)
    {
        if (!startingNodes.Contains(source.parent.id) && source.parent.isASource())
        {
            startingNodes.Add(source.parent.id);
        }

        if (startingNodes.Contains(sink.parent.id))
        {
            startingNodes.Remove(source.parent.id);
        }
    }
Exemplo n.º 3
0
        public IConnection PrepareConnection(IDocument document, ConnectionItem connectionItem)
        {
            AssertNoActiveConnection(document);

            var connection     = CreateConnectionFromItem(connectionItem);
            var connectionLink = new ConnectionLink(connectionItem, connection);

            if (!Connections.ContainsKey(document))
            {
                Connections.Add(document, null);
            }
            Connections[document] = connectionLink;

            connection.Opened     += Connection_Opened;
            connection.OpenFailed += Connection_OpenFailed;

            return(connection);
        }
Exemplo n.º 4
0
    public void addConnection(ConnectionLink sinkNode)
    {
        if (sourceNode == null || sourceNode.parent == null)
        {
            return;
        }

        //Add connection to the nodes theselves
        sourceNode.AddConnection(sinkNode);
        //Add interconnected node to the computed node list
        if (IDE_Executioner.instance)
        {
            IDE_Executioner.instance.updateComputedNodesOnAddedConnection(sourceNode, sinkNode);
        }


        sourceNode.Deselect();
        sourceNode = null;
    }
Exemplo n.º 5
0
    public void UpdateShownConnectionLinks()
    {
        //Update parameter list
        inputParameters.Clear();
        outputParameters.Clear();
        if (nodeType == NodeType.data && (label.text.Contains(" = ") || (connectionsIn.ContainsKey("dataIn") && connectionsIn["dataIn"].Count > 0)))
        {
            inputParameters.Add("dataIn");
            outputParameters.Add("dataOut");
        }
        else if (nodeType == NodeType.data && nodeName != "")
        {
            inputParameters.Add("dataIn");
        }
        else if (nodeType == NodeType.function && nodeName != "")
        {
            if (Library.instance && Library.instance.functions.ContainsKey(nodeName))
            {
                Library.instance.functions[nodeName].getConnectionInfo(out inputParameters, out outputParameters);
            }
        }

        //get dimensions
        float startY = .3f;

        //update shown inputs (left side)
        for (int i = 0; i < inputParameters.Count; i++)
        {
            //Modify the position of shown input link
            Vector3 newLinkPos = -Vector3.one;
            newLinkPos.x = -.5f + paddingSides;
            newLinkPos.y = startY - (i * spacingBetweenLinks);

            //input already created
            if (connectionsIn.ContainsKey(inputParameters[i]))
            {
                linksIn[inputParameters[i]].transform.localPosition = newLinkPos;

                //Modify the visibility of link
                linksIn[inputParameters[i]].gameObject.SetActive(true);

                //Modify visibility of all lines attached to the link
                foreach (OutgoingInfo info in connectionsIn[inputParameters[i]])
                {
                    info.connectionArrow.gameObject.SetActive(true);
                }
            }
            else //input not yet created
            {
                //Create input object
                GameObject curInputLink = Instantiate(inputLink);

                //Add to correct parent
                curInputLink.transform.SetParent(gameObject.transform);

                //Setup all variables and position
                ConnectionLink curLinkScript = curInputLink.GetComponent <ConnectionLink>();
                curLinkScript.ConnectionLinkSetup(this, inputParameters[i]);
                curInputLink.transform.localPosition = newLinkPos;

                //Add finished node to list of created parameters (no connections so far)
                connectionsIn.Add(inputParameters[i], new List <OutgoingInfo>());
                linksIn.Add(inputParameters[i], curLinkScript);
            }
        }

        //update shown outputs (right side)
        for (int i = 0; i < outputParameters.Count; i++)
        {
            //Modify the position of shown output link
            Vector3 newLinkPos = -Vector3.one;
            newLinkPos.x = .5f - paddingSides;
            newLinkPos.y = startY - (i * spacingBetweenLinks);

            //output already created
            if (connectionsOut.ContainsKey(outputParameters[i]))
            {
                linksOut[outputParameters[i]].transform.localPosition = newLinkPos;

                //Modify the visibility of link
                linksOut[outputParameters[i]].gameObject.SetActive(true);

                //Modify visibility of all lines attached to the link
                foreach (OutgoingInfo info in connectionsOut[outputParameters[i]])
                {
                    info.connectionArrow.gameObject.SetActive(true);
                }
            }
            else //input not yet created
            {
                //Create input object
                GameObject curOutputLink = Instantiate(outputLink);

                //Add to correct parent
                curOutputLink.transform.SetParent(gameObject.transform);

                //Setup all variables and position
                ConnectionLink curLinkScript = curOutputLink.GetComponent <ConnectionLink>();
                curLinkScript.ConnectionLinkSetup(this, outputParameters[i]);
                curOutputLink.transform.localPosition = newLinkPos;

                //Add finished node to list of created parameters (no connections so far)
                connectionsOut.Add(outputParameters[i], new List <OutgoingInfo>());
                linksOut.Add(outputParameters[i], curLinkScript);
            }
        }

        //Hide all unused input links (TODO make more efficient)
        foreach (KeyValuePair <string, List <OutgoingInfo> > link in connectionsIn)
        {
            if (!inputParameters.Contains(link.Key))
            {
                linksIn[link.Key].gameObject.SetActive(false);
                foreach (OutgoingInfo connection in connectionsIn[link.Key])
                {
                    connection.connectionArrow.gameObject.SetActive(false);
                }
            }
        }

        //Hide all unused output links (TODO make more efficient)
        foreach (KeyValuePair <string, List <OutgoingInfo> > link in connectionsOut)
        {
            if (!outputParameters.Contains(link.Key))
            {
                linksOut[link.Key].gameObject.SetActive(false);
                foreach (OutgoingInfo connection in connectionsOut[link.Key])
                {
                    connection.connectionArrow.gameObject.SetActive(false);
                }
            }
        }
    }
 public OutgoingInfo(ConnectionLink sourceIdentity, ConnectionLink sinkIdentity, LineRenderer connectionArrow)
 {
     this.sourceIdentity  = sourceIdentity;
     this.sinkIdentity    = sinkIdentity;
     this.connectionArrow = connectionArrow;
 }