Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 5
0
            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;
            }
Ejemplo n.º 6
0
        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;
        }
Ejemplo n.º 7
0
        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;
        }