public void EndNewLink(DataflowInput input) { newLinkInput = input; uiLinkTmp.inputAnchor = input.transform.GetChild(1).GetComponent <RectTransform>(); //Check if the same or if type matches if (newLinkOutput.transform.parent.parent == newLinkInput.transform.parent.parent || (newLinkOutput.type != newLinkInput.type && newLinkInput.type != Dataflow.IOType.Activator)) { newLinkOutput = null; newLinkInput = null; Destroy(uiLinkTmp.gameObject); return; } //Remove already existing link if (newLinkInput.link != null) { if (!newLinkInput.noDefaultValue) { newLinkInput.transform.GetChild(0).gameObject.SetActive(true); } dataflow.DeleteLink(newLinkInput); Destroy(newLinkInput.uiLink.gameObject); } dataflow.AddLink(newLinkOutput, newLinkInput); newLinkInput.uiLink = uiLinkTmp; newLinkInput.transform.GetChild(0).gameObject.SetActive(false); newLinkOutput = null; newLinkInput = null; }
public Dataflow ToDataflow() { Dataflow d = new Dataflow(name); foreach (var n in nodes) { DataflowNode node = d.AddNode(n.name, n.posx, n.posy); node.activator.valueFloat = n.activator.valueFloat; node.activator.valueBoolean = n.activator.valueBoolean; node.activator.ready = n.activator.ready; for (int i = 0; i < node.inputs.Count; i++) { node.inputs[i].valueFloat = n.inputs[i].valueFloat; node.inputs[i].valueBoolean = n.inputs[i].valueBoolean; node.inputs[i].ready = n.inputs[i].ready; } foreach (var c in n.configs) { node.configs[c.name].value = c.value; } } foreach (var l in links) { if (l.outputId < d.nodes[l.outputNodeId].outputs.Count && l.inputId < d.nodes[l.inputNodeId].inputs.Count) //Check for different save versions (inputs/outputs changed) { d.AddLink(d.nodes[l.outputNodeId].outputs[l.outputId], l.inputId < 0 ? d.nodes[l.inputNodeId].activator : d.nodes[l.inputNodeId].inputs[l.inputId]); } } return(d); }