public void AddNode(NodeVisual n) { GameObject tmp = new GameObject("tmp"); WaitAndDo t = tmp.AddComponent <WaitAndDo>(); t.arg = n; t.act = (object arg) => { NodeVisual node = (NodeVisual)arg; serializer.Add(node.node, new Position2(node.transform.position)); serializer.PrepareForSerialization(); if (node.GetType() == typeof(GroupInputNodeVisual)) { //group input GroupInputNodeVisual nn = (GroupInputNodeVisual)node; ((GroupInputNode)nn.node).host = this; AddSortedIn(nn); UpdateInputs(); } else if (node.GetType() == typeof(GroupOutputNodeVisual)) { //group output GroupOutputNodeVisual nn = (GroupOutputNodeVisual)node; ((GroupOutputNode)nn.node).host = this; AddSortedOut(nn); UpdateOutputs(); } }; //if it's an input/output add it to the list }
internal void RemoveNode(NodeVisual node) { for (int i = 0; i < serializer.nodes.Length; i++) { if (serializer.tmpNodes[i] == node.node) { serializer.tmpNodes.RemoveAt(i); serializer.tmpPos.RemoveAt(i); serializer.PrepareForSerialization(); if (node.GetType() == typeof(GroupOutputNodeVisual)) { groupOuts.Remove((GroupOutputNodeVisual)node); } else if (node.GetType() == typeof(GroupInputNodeVisual)) { groupIns.Remove((GroupInputNodeVisual)node); } //if it's an input/output remove it from list return; } } Debug.LogError("Couldn't remove node " + node.node); }