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); } }
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); }
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; }
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; }