public override NodeStates Evaluate()
        {
            mDebug();

            if (m_outputs[0].m_connectedTo != null)
            {
                BaseNode node = m_outputs[0].m_connectedTo.m_holderNode;
                switch (node.Evaluate())
                {
                case NodeStates.FAILURE:
                    m_nodeState = NodeStates.SUCCESS;
                    return(m_nodeState);

                case NodeStates.SUCCESS:
                    m_nodeState = NodeStates.FAILURE;
                    return(m_nodeState);

                case NodeStates.RUNNING:
                    m_nodeState = NodeStates.RUNNING;
                    return(m_nodeState);
                }
            }
            m_nodeState = NodeStates.SUCCESS;
            return(m_nodeState);
        }
        public override NodeStates Evaluate()
        {
            mDebug();

            foreach (NodeOutput output in m_outputs)
            {
                if (output == null)
                {
                    continue;
                }

                if (output.m_connectedTo == null)
                {
                    continue;
                }

                BaseNode node = output.m_connectedTo.m_holderNode;

                switch (node.Evaluate())
                {
                case NodeStates.FAILURE:
                    continue;

                case NodeStates.SUCCESS:
                    m_nodeState = NodeStates.SUCCESS;
                    return(m_nodeState);

                case NodeStates.RUNNING:
                    m_nodeState = NodeStates.RUNNING;
                    return(m_nodeState);

                default:
                    continue;
                }
            }
            m_nodeState = NodeStates.FAILURE;
            return(m_nodeState);
        }
        public override NodeStates Evaluate()
        {
            mDebug();
            bool anyChildRunning = false;

            foreach (NodeOutput output in m_outputs)
            {
                if (output.m_connectedTo == null)
                {
                    continue;
                }

                BaseNode node = output.m_connectedTo.m_holderNode;

                switch (node.Evaluate())
                {
                case NodeStates.FAILURE:
                    m_nodeState = NodeStates.FAILURE;
                    return(m_nodeState);

                case NodeStates.SUCCESS:
                    continue;

                case NodeStates.RUNNING:
                    anyChildRunning = true;
                    m_nodeState     = NodeStates.RUNNING;
                    return(m_nodeState);

                default:
                    m_nodeState = NodeStates.SUCCESS;
                    return(m_nodeState);
                }
            }

            m_nodeState = anyChildRunning ? NodeStates.RUNNING : NodeStates.SUCCESS;
            return(m_nodeState);
        }