Exemplo n.º 1
0
        // Fresh constructor
        public EmoteSetVariableNode()
            : base(EmoteSetVariableNodeFactory.TYPESTRING)
        {
            // Prepare Connections
            conExecute = new ExecutionConnectorViewModel();
            inputValue = new ConnectorViewModel("Value", typeof(NodeDataNumeric));
            inputFrameCount = new ConnectorViewModel("FrameCount", typeof(NodeDataNumeric));
            inputEasing = new ConnectorViewModel("Easing", typeof(NodeDataNumeric));

            this.InputExecutionConnectors.Add(conExecute);
            this.InputConnectors.Add(inputValue);
            this.InputConnectors.Add(inputFrameCount);
            this.InputConnectors.Add(inputEasing);

            // State Values
            value = 0f;
            frameCount = 0.1f;
            easing = 0.9f;
            varName = string.Empty;

            // Create Dialog
            dlgEdit = new PropertyDialog();

            // Get Character Context
            charContext = CharacterContext.GetCharacterContext();
        }
Exemplo n.º 2
0
        public XInputControllerAnalogNode()
            : base(XInputControllerAnalogNodeFactory.TYPESTRING)
        {
            // Prepare Execution Connection
            conExecuted = new ExecutionConnectorViewModel();
            conExecute = new ExecutionConnectorViewModel();

            this.InputExecutionConnectors.Add(conExecuted);
            this.OutputExecutionConnectors.Add(conExecute);

            // Prepare Connections
            conLeftThumbX   = new ConnectorViewModel("LeftThumbX", typeof(NodeDataNumeric));
            conLeftThumbY   = new ConnectorViewModel("LeftThumbY", typeof(NodeDataNumeric));
            conLeftTrigger  = new ConnectorViewModel("LeftTrigger", typeof(NodeDataNumeric));
            conRightThumbX  = new ConnectorViewModel("RightThumbX", typeof(NodeDataNumeric));
            conRightThumbY  = new ConnectorViewModel("RightThumbY", typeof(NodeDataNumeric));
            conRightTrigger = new ConnectorViewModel("RightTrigger", typeof(NodeDataNumeric));
            //conButtons = new ConnectorViewModel("Buttons", typeof(NodeDataXInputButtons));

            this.OutputConnectors.Add(conLeftThumbX);
            this.OutputConnectors.Add(conLeftThumbY);
            this.OutputConnectors.Add(conLeftTrigger);
            this.OutputConnectors.Add(conRightThumbX);
            this.OutputConnectors.Add(conRightThumbY);
            this.OutputConnectors.Add(conRightTrigger);
            //this.OutputConnectors.Add(conButtons);

            // State Values
            currentUser = UserIndex.One;
            controller = new SharpDX.XInput.Controller(currentUser);

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 3
0
        //public override string Note { get { } }
        public ExecuteRoutingNode()
            : base(ExecuteRoutingNodeFactory.TYPESTRING)
        {
            // Prepare Execution Connection
            conExecuted = new ExecutionConnectorViewModel();
            conExecute = new ExecutionConnectorViewModel();

            this.InputExecutionConnectors.Add(conExecuted);
            this.OutputExecutionConnectors.Add(conExecute);
        }
Exemplo n.º 4
0
        public ExecuteRoutingNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
            : base(ExecuteRoutingNodeFactory.TYPESTRING)
        {
            // Prepare Execution Connection
            conExecuted = new ExecutionConnectorViewModel(executeIn[0]);
            conExecute = new ExecutionConnectorViewModel(executeOut[0]);

            this.InputExecutionConnectors.Add(conExecuted);
            this.OutputExecutionConnectors.Add(conExecute);

            // Set Name
            //Name = (string)data["name"];
        }
Exemplo n.º 5
0
        public XInputControllerDigitalNode()
            : base(XInputControllerDigitalNodeFactory.TYPESTRING)
        {
            // Prepare Execution Connection
            conExecuted = new ExecutionConnectorViewModel();
            conExecute = new ExecutionConnectorViewModel();

            this.InputExecutionConnectors.Add(conExecuted);
            this.OutputExecutionConnectors.Add(conExecute);

            // Prepare Connections
            conDPadUp = new ConnectorViewModel("DPadUp", typeof(NodeDataBoolean));
            conDPadDown = new ConnectorViewModel("DPadDown", typeof(NodeDataBoolean));
            conDPadLeft = new ConnectorViewModel("DPadLeft", typeof(NodeDataBoolean));
            conDPadRight = new ConnectorViewModel("DPadRight", typeof(NodeDataBoolean));
            conStart = new ConnectorViewModel("Start", typeof(NodeDataBoolean));
            conBack = new ConnectorViewModel("Back", typeof(NodeDataBoolean));
            conLeftThumb = new ConnectorViewModel("LeftThumb", typeof(NodeDataBoolean));
            conRightThumb = new ConnectorViewModel("RightThumb", typeof(NodeDataBoolean));
            conLeftShoulder = new ConnectorViewModel("LeftShoulder", typeof(NodeDataBoolean));
            conRightShoulder = new ConnectorViewModel("RightShoulder", typeof(NodeDataBoolean));
            conA = new ConnectorViewModel("A", typeof(NodeDataBoolean));
            conB = new ConnectorViewModel("B", typeof(NodeDataBoolean));
            conX = new ConnectorViewModel("X", typeof(NodeDataBoolean));
            conY = new ConnectorViewModel("Y", typeof(NodeDataBoolean));

            this.OutputConnectors.Add(conDPadUp);
            this.OutputConnectors.Add(conDPadDown);
            this.OutputConnectors.Add(conDPadLeft);
            this.OutputConnectors.Add(conDPadRight);
            this.OutputConnectors.Add(conStart);
            this.OutputConnectors.Add(conBack);
            this.OutputConnectors.Add(conLeftThumb);
            this.OutputConnectors.Add(conRightThumb);
            this.OutputConnectors.Add(conLeftShoulder);
            this.OutputConnectors.Add(conRightShoulder);
            this.OutputConnectors.Add(conA);
            this.OutputConnectors.Add(conB);
            this.OutputConnectors.Add(conX);
            this.OutputConnectors.Add(conY);

            // State Values
            currentUser = UserIndex.One;
            controller = new SharpDX.XInput.Controller(currentUser);

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 6
0
        public IntervalTriggerNode()
            : base(IntervalTriggerNodeFactory.TYPESTRING)
        {
            // Prepare Connections
            conExecute = new ExecutionConnectorViewModel();
            this.OutputExecutionConnectors.Add(conExecute);

            //diposeInterlock = new Semaphore(0, 1);

            // State Value
            this.period = 100;
            worker = new Thread(DoWork);

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 7
0
        public XInputControllerAnalogNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
            : base(XInputControllerAnalogNodeFactory.TYPESTRING)
        {
            // Prepare Execution Connection
            conExecuted = new ExecutionConnectorViewModel(executeIn[0]);
            conExecute = new ExecutionConnectorViewModel(executeOut[0]);

            this.InputExecutionConnectors.Add(conExecuted);
            this.OutputExecutionConnectors.Add(conExecute);

            // Prepare Connections
            conLeftThumbX = new ConnectorViewModel("LeftThumbX", typeof(NodeDataNumeric), dataOut[0]);
            conLeftThumbY = new ConnectorViewModel("LeftThumbY", typeof(NodeDataNumeric), dataOut[1]);
            conLeftTrigger = new ConnectorViewModel("LeftTrigger", typeof(NodeDataNumeric), dataOut[2]);
            conRightThumbX = new ConnectorViewModel("RightThumbX", typeof(NodeDataNumeric), dataOut[3]);
            conRightThumbY = new ConnectorViewModel("RightThumbY", typeof(NodeDataNumeric), dataOut[4]);
            conRightTrigger = new ConnectorViewModel("RightTrigger", typeof(NodeDataNumeric), dataOut[5]);

            //if (dataIn.Length > 5)
            //{
            //    conButtons = new ConnectorViewModel("Buttons", typeof(NodeDataXInputButtons), dataOut[6]);
            //}
            //else
            //{
            //    conButtons = new ConnectorViewModel("Buttons", typeof(NodeDataXInputButtons));
            //}

            this.OutputConnectors.Add(conLeftThumbX);
            this.OutputConnectors.Add(conLeftThumbY);
            this.OutputConnectors.Add(conLeftTrigger);
            this.OutputConnectors.Add(conRightThumbX);
            this.OutputConnectors.Add(conRightThumbY);
            this.OutputConnectors.Add(conRightTrigger);
            //this.OutputConnectors.Add(conButtons);

            // Set Name
            Name = (string)data["name"];

            // State Values
            if (!Enum.TryParse<UserIndex>((string)data["currentUser"], out currentUser)) currentUser = UserIndex.One;
            controller = new SharpDX.XInput.Controller(currentUser);

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 8
0
        public ForkNode()
            : base(ForkNodeFactory.TYPESTRING)
        {
            // Prepare Connections
            conExecuteIn = new ExecutionConnectorViewModel();
            conExecuteOut = new ExecutionConnectorViewModel();
            conIn = new ConnectorViewModel("Set", typeof(NodeDataBoolean));

            this.InputExecutionConnectors.Add(conExecuteIn);
            this.OutputExecutionConnectors.Add(conExecuteOut);
            this.InputConnectors.Add(conIn);

            // State Values
            Value = null;

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 9
0
        public ValueBufferNode()
            : base(ValueBufferNodeFactory.TYPESTRING)
        {
            // Prepare Connections
            conExecute = new ExecutionConnectorViewModel();
            conIn = new ConnectorViewModel("Set", typeof(INodeData));
            conOut = new ConnectorViewModel("Value", typeof(INodeData));

            this.InputExecutionConnectors.Add(conExecute);
            this.InputConnectors.Add(conIn);
            this.OutputConnectors.Add(conOut);

            // State Values
            Value = null;

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 10
0
        public IntervalTriggerNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
        {
            // Prepare Connections
            conExecute = new ExecutionConnectorViewModel(executeOut[0]);
            this.OutputExecutionConnectors.Add(conExecute);

            //diposeInterlock = new Semaphore(0, 1);

            // Set Name
            Name = (string)data["name"];

            // State Value
            this.period = (int)data["period"];
            worker = new Thread(DoWork);

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 11
0
        public ForkNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
            : base(ForkNodeFactory.TYPESTRING)
        {
            // Prepare Connections
            conExecuteIn = new ExecutionConnectorViewModel(executeIn[0]);
            conExecuteOut = new ExecutionConnectorViewModel(executeOut[0]);
            conIn = new ConnectorViewModel("Set", typeof(NodeDataBoolean), dataIn[0]);

            this.InputExecutionConnectors.Add(conExecuteIn);
            this.OutputExecutionConnectors.Add(conExecuteOut);
            this.InputConnectors.Add(conIn);

            // Set Name
            Name = (string)data["name"];

            // State Values
            //Value = (Double)data["value"]; // no way to serilize generic values yet

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 12
0
        // Load Data Constructor
        public EmoteSetVariableNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
        {
            // Prepare Connections
            conExecute = new ExecutionConnectorViewModel(executeIn[0]);
            inputValue = new ConnectorViewModel("Value", typeof(NodeDataNumeric), dataIn[0]);
            if (dataIn.Length > 1) // allow loading older node graph saves
            {
                inputFrameCount = new ConnectorViewModel("FrameCount", typeof(NodeDataNumeric), dataIn[1]);
                inputEasing = new ConnectorViewModel("Easing", typeof(NodeDataNumeric), dataIn[2]);
            }
            else
            {
                inputFrameCount = new ConnectorViewModel("FrameCount", typeof(NodeDataNumeric));
                inputEasing = new ConnectorViewModel("Easing", typeof(NodeDataNumeric));
            }

            this.InputExecutionConnectors.Add(conExecute);
            this.InputConnectors.Add(inputValue);
            this.InputConnectors.Add(inputFrameCount);
            this.InputConnectors.Add(inputEasing);

            // Set Name
            Name = (string)data["name"];

            // State Values
            value = (float)data["value"];
            frameCount = (float)data["frameCount"];
            easing = (float)data["easing"];
            varName = (string)data["varName"];

            // Create Dialog
            dlgEdit = new PropertyDialog();

            // Get Character Context
            charContext = CharacterContext.GetCharacterContext();
        }
Exemplo n.º 13
0
        /// <summary>
        /// Called to query the application for feedback while the user is dragging the connection.
        /// </summary>
        public void QueryExecutionConnnectionFeedback(ExecutionConnectorViewModel draggedOutConnector, ExecutionConnectorViewModel draggedOverConnector, out object feedbackIndicator, out bool connectionOk)
        {
            if (draggedOutConnector == draggedOverConnector)
            {
                //
                // Can't connect to self!
                // Provide feedback to indicate that this connection is not valid!
                //
                feedbackIndicator = new ConnectionBadIndicator();
                connectionOk = false;
            }
            else
            {
                var sourceConnector = draggedOutConnector;
                var destConnector = draggedOverConnector;

                //
                // Only allow connections from output connector to input connector (ie each
                // connector must have a different type).
                // Also only allocation from one node to another, never one node back to the same node.
                //
                connectionOk = sourceConnector.ParentNode != destConnector.ParentNode &&
                                 sourceConnector.Type != destConnector.Type;

                if (connectionOk)
                {
                    //
                    // Yay, this is a valid connection!
                    // Provide feedback to indicate that this connection is ok!
                    //
                    feedbackIndicator = new ConnectionOkIndicator();
                }
                else
                {
                    //
                    // Connectors with the same connector type (eg input & input, or output & output)
                    // can't be connected.
                    // Only connectors with separate connector type (eg input & output).
                    // Provide feedback to indicate that this connection is not valid!
                    //
                    feedbackIndicator = new ConnectionBadIndicator();
                }
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// Retrieve a connection between the two connectors.
        /// Returns null if there is no connection between the connectors.
        /// </summary>
        public ExecutionConnectionViewModel FindExecutionConnection(ExecutionConnectorViewModel connector1, ExecutionConnectorViewModel connector2)
        {
            Trace.Assert(connector1.Type != connector2.Type);

            //
            // Figure out which one is the source connector and which one is the
            // destination connector based on their connector types.
            //
            var sourceConnector = connector1.Type == ConnectorType.Output ? connector1 : connector2;
            var destConnector = connector1.Type == ConnectorType.Output ? connector2 : connector1;

            //
            // Now we can just iterate attached connections of the source
            // and see if it each one is attached to the destination connector.
            //

            foreach (var connection in sourceConnector.AttachedExecutionConnections)
            {
                if (connection.DestConnector == destConnector)
                {
                    //
                    // Found a connection that is outgoing from the source connector
                    // and incoming to the destination connector.
                    //
                    return connection;
                }
            }

            return null;
        }
Exemplo n.º 15
0
        /// <summary>
        /// Called when the user has started to drag out a connector, thus creating a new connection.
        /// </summary>
        public ExecutionConnectionViewModel ExecutionConnectionDragStarted(ExecutionConnectorViewModel draggedOutConnector, Point curDragPoint)
        {
            //
            // Create a new connection to add to the view-model.
            //
            var connection = new ExecutionConnectionViewModel();

            if (draggedOutConnector.Type == ConnectorType.Output)
            {
                //
                // The user is dragging out a source connector (an output) and will connect it to a destination connector (an input).
                //
                connection.SourceConnector = draggedOutConnector;
                connection.DestConnectorHotspot = curDragPoint;
            }
            else
            {
                //
                // The user is dragging out a destination connector (an input) and will connect it to a source connector (an output).
                //
                connection.DestConnector = draggedOutConnector;
                connection.SourceConnectorHotspot = curDragPoint;
            }

            //
            // Add the new connection to the view-model.
            //
            this.Network.ExecutionConnections.Add(connection);

            return connection;
        }
Exemplo n.º 16
0
        /// <summary>
        /// Called when the user has finished dragging out the new connection.
        /// </summary>
        public void ExecutionConnectionDragCompleted(ExecutionConnectionViewModel newConnection, ExecutionConnectorViewModel connectorDraggedOut, ExecutionConnectorViewModel connectorDraggedOver)
        {
            if (connectorDraggedOver == null)
            {
                //
                // The connection was unsuccessful.
                // Maybe the user dragged it out and dropped it in empty space.
                //
                this.Network.ExecutionConnections.Remove(newConnection);
                return;
            }

            //
            // Only allow connections from output connector to input connector (ie each
            // connector must have a different type).
            // Also only allocation from one node to another, never one node back to the same node.
            //
            bool connectionOk = connectorDraggedOut.ParentNode != connectorDraggedOver.ParentNode &&
                                connectorDraggedOut.Type != connectorDraggedOver.Type;

            if (!connectionOk)
            {
                //
                // Connections between connectors that have the same type,
                // eg input -> input or output -> output, are not allowed,
                // Remove the connection.
                //
                this.Network.ExecutionConnections.Remove(newConnection);
                return;
            }

            //
            // The user has dragged the connection on top of another valid connector.
            //

            //
            // Remove any existing connection between the same two connectors.
            //
            var existingConnection = FindExecutionConnection(connectorDraggedOut, connectorDraggedOver);
            if (existingConnection != null)
            {
                this.Network.ExecutionConnections.Remove(existingConnection);
            }

            //
            // Finalize the connection by attaching it to the connector
            // that the user dragged the mouse over.
            //
            if (newConnection.DestConnector == null)
            {
                newConnection.DestConnector = connectorDraggedOver;
            }
            else
            {
                newConnection.SourceConnector = connectorDraggedOver;
            }
        }
Exemplo n.º 17
0
        public XInputControllerDigitalNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
            : base(XInputControllerDigitalNodeFactory.TYPESTRING)
        {
            // Prepare Execution Connection
            conExecuted = new ExecutionConnectorViewModel(executeIn[0]);
            conExecute = new ExecutionConnectorViewModel(executeOut[0]);

            this.InputExecutionConnectors.Add(conExecuted);
            this.OutputExecutionConnectors.Add(conExecute);

            // Prepare Connections
            conDPadUp = new ConnectorViewModel("DPadUp", typeof(NodeDataBoolean), dataOut[0]);
            conDPadDown = new ConnectorViewModel("DPadDown", typeof(NodeDataBoolean), dataOut[1]);
            conDPadLeft = new ConnectorViewModel("DPadLeft", typeof(NodeDataBoolean), dataOut[2]);
            conDPadRight = new ConnectorViewModel("DPadRight", typeof(NodeDataBoolean), dataOut[3]);
            conStart = new ConnectorViewModel("Start", typeof(NodeDataBoolean), dataOut[4]);
            conBack = new ConnectorViewModel("Back", typeof(NodeDataBoolean), dataOut[5]);
            conLeftThumb = new ConnectorViewModel("LeftThumb", typeof(NodeDataBoolean), dataOut[6]);
            conRightThumb = new ConnectorViewModel("RightThumb", typeof(NodeDataBoolean), dataOut[7]);
            conLeftShoulder = new ConnectorViewModel("LeftShoulder", typeof(NodeDataBoolean), dataOut[8]);
            conRightShoulder = new ConnectorViewModel("RightShoulder", typeof(NodeDataBoolean), dataOut[9]);
            conA = new ConnectorViewModel("A", typeof(NodeDataBoolean), dataOut[10]);
            conB = new ConnectorViewModel("B", typeof(NodeDataBoolean), dataOut[11]);
            conX = new ConnectorViewModel("X", typeof(NodeDataBoolean), dataOut[12]);
            conY = new ConnectorViewModel("Y", typeof(NodeDataBoolean), dataOut[13]);

            this.OutputConnectors.Add(conDPadUp);
            this.OutputConnectors.Add(conDPadDown);
            this.OutputConnectors.Add(conDPadLeft);
            this.OutputConnectors.Add(conDPadRight);
            this.OutputConnectors.Add(conStart);
            this.OutputConnectors.Add(conBack);
            this.OutputConnectors.Add(conLeftThumb);
            this.OutputConnectors.Add(conRightThumb);
            this.OutputConnectors.Add(conLeftShoulder);
            this.OutputConnectors.Add(conRightShoulder);
            this.OutputConnectors.Add(conA);
            this.OutputConnectors.Add(conB);
            this.OutputConnectors.Add(conX);
            this.OutputConnectors.Add(conY);

            // Set Name
            Name = (string)data["name"];

            // State Values
            if (!Enum.TryParse<UserIndex>((string)data["currentUser"], out currentUser)) currentUser = UserIndex.One;
            controller = new SharpDX.XInput.Controller(currentUser);

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }
Exemplo n.º 18
0
        public SetVariableNode(JObject data, Guid[] executeIn, Guid[] executeOut, Guid[] dataIn, Guid[] dataOut)
            : base(SetVariableNodeFactory.TYPESTRING)
        {
            // Prepare Connections
            conExecute = new ExecutionConnectorViewModel(executeIn[0]);
            conIn = new ConnectorViewModel("Set", typeof(INodeData), dataIn[0]);

            this.InputExecutionConnectors.Add(conExecute);
            this.InputConnectors.Add(conIn);

            // Set Name
            Name = (string)data["name"];

            // State Values
            VarName = (string)data["varname"];

            // Create Dialog
            dlgEdit = new PropertyDialog();
        }