void Start() { instance = this; //Add Node Menu foreach (var nt in System.Reflection.Assembly.GetExecutingAssembly().GetTypes().Where(t => t.BaseType == typeof(DataflowNode))) { string[] path = nt.ToString().Split('.'); if (!categories.Contains(path[path.Length - 2])) { categories.Add(path[path.Length - 2]); } } foreach (var c in categories) { GameObject go; go = Instantiate(nodeCategoryPrefab, addNodeList); go.name = c; go.transform.GetChild(1).GetComponent <Text>().text = c; go.GetComponent <Toggle>().onValueChanged.AddListener(delegate { SelectCategory(c, go.GetComponent <Toggle>()); }); go.GetComponent <Toggle>().group = addNodeList.GetComponent <ToggleGroup>(); } foreach (var nt in System.Reflection.Assembly.GetExecutingAssembly().GetTypes().Where(t => t.BaseType == typeof(DataflowNode))) { GameObject go; string[] path = nt.ToString().Split('.'); go = Instantiate(addNodePrefab, addNodeList); go.name = path[path.Length - 2] + "." + path[path.Length - 1]; go.transform.GetChild(0).GetComponent <Text>().text = path[path.Length - 1]; go.GetComponent <Button>().onClick.AddListener(delegate { DrawNode(dataflow.AddNode(go.name)); }); go.SetActive(false); } ReloadEditor(); }
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); }