public override int Mutate(NodeModel node) { Random rand = new Random(1); DynamoViewModel.UIDispatcher.Invoke(new Action(() => { Guid guidNumber = Guid.NewGuid(); double coordinatesX = node.X * rand.NextDouble(); double coordinatesY = node.Y * rand.NextDouble(); DynamoModel.CreateNodeCommand createNodeNumber1 = null; //new DynamoModel.AddNodeCommand(guidNumber, "Number", coordinatesX, // coordinatesY, false, true); DynamoViewModel.ExecuteCommand(createNodeNumber1); DynamoModel.MakeConnectionCommand connToStart1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStart2 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToAmount1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToAmount2 = new DynamoModel.MakeConnectionCommand(node.GUID, 1, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToStep1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStep2 = new DynamoModel.MakeConnectionCommand(node.GUID, 2, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connToStart1); //"Number" with "Number Sequence" on Start DynamoViewModel.ExecuteCommand(connToStart2); //"Number" with "Number Sequence" on Start DynamoViewModel.ExecuteCommand(connToAmount1); //"Number" with "Number Sequence" on Amount DynamoViewModel.ExecuteCommand(connToAmount2); //"Number" with "Number Sequence" on Amount DynamoViewModel.ExecuteCommand(connToStep1); //"Number" with "Number Sequence" on Step DynamoViewModel.ExecuteCommand(connToStep2); //"Number" with "Number Sequence" on Step })); return 4; }
public void Watch3D_Disconnect_Reconnect_CorrectRenderings() { OpenVisualizationTest("ASM_points_line.dyn"); // Clear the dispatcher to ensure that the // view is created. DispatcherUtil.DoEvents(); var ws = ViewModel.Model.CurrentWorkspace as HomeWorkspaceModel; var watch3DNode = ws.FirstNodeFromWorkspace<Watch3D>(); var totalPointsInView = BackgroundPreviewGeometry.TotalPoints(); Assert.Greater(totalPointsInView, 3); // Disconnect the port coming into the watch3d node. var connector = watch3DNode.InPorts[0].Connectors.First(); watch3DNode.InPorts[0].Disconnect(connector); // Three items, the grid, the axes, and the light will remain. var view = FindFirstWatch3DNodeView(); Assert.AreEqual(view.View.Items.Count, 3); var linesNode = ws.Nodes.First(n => n.GUID.ToString() == "7c1cecee-43ed-43b5-a4bb-5f71c50341b2"); var cmd1 = new DynamoModel.MakeConnectionCommand(linesNode.GUID.ToString(), 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); var cmd2 = new DynamoModel.MakeConnectionCommand(watch3DNode.GUID.ToString(), 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); ViewModel.Model.ExecuteCommand(cmd1); ViewModel.Model.ExecuteCommand(cmd2); Assert.AreEqual(6, view.View.Items.Count); }
public override int Mutate(NodeModel node) { Random rand = new Random(1); int countOfInPorts = 0; var nodeConnectors = node.AllConnectors.ToList(); foreach (ConnectorModel connector in nodeConnectors) { if (connector.Start.Owner.GUID != node.GUID) { Guid guidNumber = Guid.NewGuid(); double coordinatesX = node.X * rand.NextDouble(); double coordinatesYNumber1 = node.Y * rand.NextDouble(); countOfInPorts++; DynamoViewModel.UIDispatcher.Invoke(new Action(() => { //make node DynamoModel.CreateNodeCommand createNodeNumber1 = new DynamoModel.CreateNodeCommand(guidNumber, "Number", coordinatesX, coordinatesYNumber1, false, true); //create node DynamoViewModel.ExecuteCommand(createNodeNumber1); int outPortIndex = connector.Start.Index; int inPortIndex = connector.End.Index; //make connection DynamoModel.MakeConnectionCommand connToStart1 = new DynamoModel.MakeConnectionCommand(guidNumber, outPortIndex, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStart2 = new DynamoModel.MakeConnectionCommand(node.GUID, inPortIndex, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); //create connections DynamoViewModel.ExecuteCommand(connToStart1); DynamoViewModel.ExecuteCommand(connToStart2); })); } } return countOfInPorts * 2; }
public override int Mutate(NodeModel node) { NodeModel lastNode = DynamoModel.CurrentWorkspace.Nodes.Last(); if (lastNode.OutPorts.Count > 0) { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.MakeConnectionCommand connectCmd1 = new DynamoModel.MakeConnectionCommand(lastNode.GUID, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connectCmd2 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connectCmd1); DynamoViewModel.ExecuteCommand(connectCmd2); })); } else { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.MakeConnectionCommand connectCmd1 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connectCmd2 = new DynamoModel.MakeConnectionCommand(lastNode.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connectCmd1); DynamoViewModel.ExecuteCommand(connectCmd2); })); } return 5; }
internal bool HandlePortClicked(PortViewModel portViewModel) { // We only entertain port clicking when the current state is idle, // or when it is already having a connector being established. if (currentState != State.None && (currentState != State.Connection)) return false; var portModel = portViewModel.PortModel; var workspaceViewModel = owningWorkspace.DynamoViewModel.CurrentSpaceViewModel; if (this.currentState != State.Connection) // Not in a connection attempt... { Guid nodeId = portModel.Owner.GUID; int portIndex = portModel.Index; var mode = DynamoModel.MakeConnectionCommand.Mode.Begin; var command = new DynamoModel.MakeConnectionCommand(nodeId, portIndex, portModel.PortType, mode); owningWorkspace.DynamoViewModel.ExecuteCommand(command); if (null != owningWorkspace.activeConnector) { this.currentState = State.Connection; owningWorkspace.CurrentCursor = CursorLibrary.GetCursor(CursorSet.ArcSelect); owningWorkspace.IsCursorForced = false; } } else // Attempt to complete the connection { // Check if connection is valid if (owningWorkspace.CheckActiveConnectorCompatibility(portViewModel)) { Guid nodeId = portModel.Owner.GUID; int portIndex = portModel.Index; var mode = DynamoModel.MakeConnectionCommand.Mode.End; var command = new DynamoModel.MakeConnectionCommand(nodeId, portIndex, portModel.PortType, mode); owningWorkspace.DynamoViewModel.ExecuteCommand(command); owningWorkspace.CurrentCursor = null; owningWorkspace.IsCursorForced = false; this.currentState = State.None; } } return true; }
public override int Mutate(NodeModel node) { int workspaceIndex = DynamoViewModel.CurrentWorkspaceIndex; Random rand = new Random(1); DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.SwitchTabCommand switchCmd = new DynamoModel.SwitchTabCommand(workspaceIndex); DynamoViewModel.ExecuteCommand(switchCmd); Thread.Sleep(100); })); DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.SwitchTabCommand switchCmd = new DynamoModel.SwitchTabCommand(workspaceIndex); DynamoViewModel.ExecuteCommand(switchCmd); Thread.Sleep(100); })); var workspaces = DynamoModel.Workspaces; CustomNodeInfo info; var id = ((Function)node).Definition.FunctionId; DynamoViewModel.Model.CustomNodeManager.TryGetNodeInfo(id, out info); var outputsInCustomNode = workspaces.FirstOrDefault((t) => (t.Name == info.Name)) .Nodes.Where(t => t.GetType() == typeof(Output)) .ToList(); Guid numberGuid = Guid.NewGuid(); double coordinatesX = rand.NextDouble() * node.X; double coordinatesY = rand.NextDouble() * node.Y; //DynamoViewModel.UIDispatcher.Invoke(new Action(() => //{ // DynamoModel.AddNodeCommand addCommand = // new DynamoModel.AddNodeCommand(numberGuid, "Number", // coordinatesX, coordinatesY, false, false); // DynamoViewModel.ExecuteCommand(addCommand); //})); foreach (NodeModel output in outputsInCustomNode) { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { DynamoModel.MakeConnectionCommand connToAnother1 = new DynamoModel.MakeConnectionCommand(numberGuid, 0, PortType.Output, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToAnother2 = new DynamoModel.MakeConnectionCommand(output.GUID, 0, PortType.Input, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connToAnother1); DynamoViewModel.ExecuteCommand(connToAnother2); })); } int numberOfUndosNeeded = outputsInCustomNode.Count * 2 + 1; return numberOfUndosNeeded; }
public override int Mutate(NodeModel node) { DynamoViewModel.UIDispatcher.Invoke(new Action(() => { Guid guidNumber = Guid.NewGuid(); double coordinatesX = 120; double coordinatesY = 180; DynamoModel.CreateNodeCommand createNodeCmd1 = new DynamoModel.CreateNodeCommand(guidNumber, "Number", coordinatesX, coordinatesY, false, true); DynamoViewModel.ExecuteCommand(createNodeCmd1); DynamoModel.MakeConnectionCommand connToStart1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStart2 = new DynamoModel.MakeConnectionCommand(node.GUID, 0, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToAmount1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToAmount2 = new DynamoModel.MakeConnectionCommand(node.GUID, 1, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); DynamoModel.MakeConnectionCommand connToStep1 = new DynamoModel.MakeConnectionCommand(guidNumber, 0, PortType.OUTPUT, DynamoModel.MakeConnectionCommand.Mode.Begin); DynamoModel.MakeConnectionCommand connToStep2 = new DynamoModel.MakeConnectionCommand(node.GUID, 2, PortType.INPUT, DynamoModel.MakeConnectionCommand.Mode.End); DynamoViewModel.ExecuteCommand(connToStart1); //"Number" with "Number Range" on Start DynamoViewModel.ExecuteCommand(connToStart2); //"Number" with "Number Range" on Start DynamoViewModel.ExecuteCommand(connToAmount1); //"Number" with "Number Range" on End DynamoViewModel.ExecuteCommand(connToAmount2); //"Number" with "Number Range" on End DynamoViewModel.ExecuteCommand(connToStep1); //"Number" with "Number Range" on Step DynamoViewModel.ExecuteCommand(connToStep2); //"Number" with "Number Range" on Step })); return 4; }