public void AddNode(BaseNode node) { if (node.Graph != this) throw new Exception("Node's parent graph is not this graph."); if (!this.nodes.Contains(node)) { this.nodes.Add(node); if (node is Output) { this.outputs.Add((Output)node); } } }
public GraphNode(Vector2 position, BaseNode node) { this.Position = position; this.node = node; // get all the inputs and outputs for display later. this.nodeOutputs = this.node.GetOuputNames(); this.nodeInputs = this.node.GetInputNames(); // set up the output preview texture array. if (this.node is Output)// doesn't have a normal output this.previewTextures = new Texture2D[1]; else this.previewTextures = new Texture2D[nodeOutputs.Length]; this.container = new TitledPanel(node.GetType().Name, new Rectangle(0, 0, 100, 130)); this.container.Color = defaultColor; this.Linked = false; this.AddChild(container); }
public void RemoveNode(BaseNode node) { if (node.Graph != this) throw new Exception("Node's parent graph is not this graph."); if (this.nodes.Contains(node)) { this.nodes.Remove(node); if (node is Output) { // only has inputs we dont care about clearing those up because the node isnt part of the graph anymore, and shouldnt be used. this.outputs.Remove((Output)node); } else // remove all input references from remaining nodes. { foreach (BaseNode n in this.nodes) { for (int i = 0; i < n.GetInputCount(); i++) { if (n.GetInput(i).Target == node) { string name = n.GetInputName(i); n.SetInput(name, null); } } } } } }