public UINode(Node n, UIGraph graph, double ox, double oy, double xs, double xy, double sc = 1) { InitializeComponent(); Width = defaultSize; Height = defaultSize; Focusable = true; InputNodes = new List <UINodePoint>(); OutputNodes = new List <UINodePoint>(); Graph = graph; xShift = xs; yShift = xy; scale = sc; Node = n; Id = n.Id; originX = ox; originY = oy; Margin = new Thickness(0, 0, 0, 0); NodeName.Text = n.Name; foreach (NodeOutput op in n.Outputs) { UINodePoint outpoint = new UINodePoint(this, graph); outpoint.Output = op; outpoint.VerticalAlignment = VerticalAlignment.Center; OutputNodes.Add(outpoint); OutputStack.Children.Add(outpoint); outpoint.UpdateColor(); } foreach (NodeInput i in n.Inputs) { UINodePoint inputpoint = new UINodePoint(this, graph); inputpoint.Input = i; inputpoint.VerticalAlignment = VerticalAlignment.Center; InputStack.Children.Add(inputpoint); InputNodes.Add(inputpoint); inputpoint.UpdateColor(); } n.OnUpdate += N_OnUpdate; n.OnNameUpdate += N_OnNameUpdate; n.OnInputAddedToNode += N_OnInputAddedToNode; n.OnInputRemovedFromNode += N_OnInputRemovedFromNode; n.OnOutputAddedToNode += N_OnOutputAddedToNode; n.OnOutputRemovedFromNode += N_OnOutputRemovedFromNode; N_OnUpdate(n); }
private void N_OnInputAddedToNode(Node n, NodeInput inp) { UINodePoint inputpoint = new UINodePoint(this, Graph); inputpoint.Input = inp; inputpoint.VerticalAlignment = VerticalAlignment.Center; InputStack.Children.Add(inputpoint); InputNodes.Add(inputpoint); inputpoint.UpdateColor(); ResizeHeight(); }
private void N_OnOutputAddedToNode(Node n, NodeOutput inp, NodeOutput previous = null) { UINodePoint outpoint = new UINodePoint(this, Graph); outpoint.Output = inp; outpoint.VerticalAlignment = VerticalAlignment.Center; OutputNodes.Add(outpoint); OutputStack.Children.Add(outpoint); outpoint.UpdateColor(); ResizeHeight(); }
private void N_OnOutputAddedToNode(Node n, NodeOutput inp, NodeOutput previous = null) { UINodePoint outpoint = new UINodePoint(this, Graph); outpoint.Output = inp; outpoint.VerticalAlignment = VerticalAlignment.Center; OutputNodes.Add(outpoint); OutputStack.Children.Add(outpoint); outpoint.UpdateColor(); if (previous != null) { foreach (var cinp in inp.To) { LoadConnection(cinp.Node.Id); } } }
private void N_OnInputAddedToNode(Node n, NodeInput inp, NodeInput previous = null) { //need to take into account previous //aka we are just replacing the previous one UINodePoint previousNodePoint = null; UINodePoint previousNodePointParent = null; if (previous != null) { previousNodePoint = InputNodes.Find(m => m.Input == previous); } if (previousNodePoint != null) { previousNodePointParent = previousNodePoint.ParentNode; } UINodePoint inputpoint = new UINodePoint(this, Graph); inputpoint.Input = inp; inputpoint.VerticalAlignment = VerticalAlignment.Center; InputStack.Children.Add(inputpoint); InputNodes.Add(inputpoint); inputpoint.UpdateColor(); //try and reconnect previous parent node to it graphically if (previousNodePointParent != null) { previousNodePointParent.ConnectToNode(inputpoint, true); } if (previous != null) { N_OnInputRemovedFromNode(n, previous); } ResizeHeight(); }