private void CreateBlockingNode(NetworkViewModel model, NodeViewModel previous_node) { // Create blocking node and add it to the graph BlockingCutNodeViewModel blocking_node = new BlockingCutNodeViewModel(Cut); model.Nodes.Edit(x => x.Add(blocking_node)); // Set the blocking node's position to where this cut node was blocking_node.Position = (System.Windows.Point)(Position - new System.Windows.Point(150, 0)); // Move this cut node forward to not overlap the blocking node Position = new System.Windows.Point(Position.X + 450, Position.Y); ConnectionViewModel previous_to_blocking = new ConnectionViewModel( model, blocking_node.Inputs.Items.First(), previous_node.Outputs.Items.First()); ConnectionViewModel blocking_to_current = new ConnectionViewModel( model, Inputs.Items.First(), blocking_node.Outputs.Items.First()); // Add the connections to the node network. model.Connections.Edit(x => x.Add(previous_to_blocking)); model.Connections.Edit(x => x.Add(blocking_to_current)); }
private void Add_block_Click(object sender, RoutedEventArgs e) { NetworkView view = PlacementTarget as NetworkView; BlockingCutNodeViewModel b = new BlockingCutNodeViewModel(null); b.Position = GetMouseLocation(view); view.ViewModel.Nodes.Edit(x => x.Add(b)); }