public override ExecutionWireNode GetNextExecutionNode()
        {
            TruePin  = Outputs[0];
            FalsePin = Outputs[1];

            bool         conditionResult;
            InputWirePin conditionInput = Inputs[1];

            WireNode conditionNode = conditionInput.GetConnectedPin().GetOwner();

            if (conditionNode is ComparationWireNode) // If the condition input is linked to a comparation, then we get the value of this comparation
            {
                conditionResult = (conditionNode as ComparationWireNode).GetResult();
            }
            else // Otherwise we just take the input value, which can only be a boolean
            {
                conditionResult = (bool)conditionInput.Value;
            }

            if (conditionResult) // The condition is true
            {
                // Try to return the TRUE pin target's node
                if (TruePin.IsConnected == false || TruePin.GetConnectedPin() == null)
                {
                    return(null);
                }
                return(TruePin.GetConnectedPin().GetOwner() as ExecutionWireNode);
            }
            // Try to return the FALSE pin target's node
            if (FalsePin.IsConnected == false || FalsePin.GetConnectedPin() == null)
            {
                return(null);
            }
            return(FalsePin.GetConnectedPin().GetOwner() as ExecutionWireNode);
        }
Example #2
0
        public override ExecutionWireNode GetNextExecutionNode()
        {
            OutputWirePin output            = Outputs[0];
            InputWirePin  connectedPin      = output.GetConnectedPin() as InputWirePin;
            WireNode      connectedPinOwner = connectedPin.GetOwner();

            if (!output.IsConnected || connectedPin == null)
            {
                return(null);
            }
            return(connectedPinOwner as ExecutionWireNode);
        }