Пример #1
0
        public override void OnUpdate(float deltatime)
        {
            m_CurFrames++;

            BaseNode childNode = m_CompositeNode.Childs[0];

            childNode.Run(deltatime);
            NodeStatus childNodeStatus = childNode.Status;

            if (childNodeStatus == NodeStatus.Error)
            {
                m_CompositeNode.Status = NodeStatus.Error;
                return;
            }

            if (m_CurFrames >= m_Frames)
            {
                m_CompositeNode.Status = NodeStatus.Succeed;
                return;
            }

            if (childNodeStatus == NodeStatus.Failed || childNodeStatus == NodeStatus.Succeed)
            {
                childNode.Reset();
            }
        }
Пример #2
0
        public override void OnUpdate(float deltatime)
        {
            for (int i = m_CompositeNode.RunningNodeIndex; i < m_CompositeNode.Childs.Count;)
            {
                BaseNode childNode = m_Children[i];
                childNode.Run(deltatime);
                NodeStatus childNodeStatus = childNode.Status;

                if (childNodeStatus == NodeStatus.Error)
                {
                    m_CompositeNode.Status = NodeStatus.Error;
                    return;
                }

                if (childNodeStatus == NodeStatus.Failed)
                {
                    m_CompositeNode.Status = NodeStatus.Failed;
                    return;
                }

                if (childNode.Status == NodeStatus.Succeed)
                {
                    m_CompositeNode.RunningNodeIndex++;
                    i++;
                    if (m_CompositeNode.RunningNodeIndex == m_Children.Count)
                    {
                        m_CompositeNode.Status = NodeStatus.Succeed;
                    }
                }
            }
        }
Пример #3
0
        public override void OnUpdate(float deltatime)
        {
            BaseNode childNode = m_CompositeNode.Childs[0];

            childNode.Run(deltatime);
            NodeStatus childNodeStatus = childNode.Status;

            if (childNodeStatus == NodeStatus.Error)
            {
                m_CompositeNode.Status = NodeStatus.Error;
                return;
            }

            if (childNodeStatus == NodeStatus.Failed || childNodeStatus == NodeStatus.Succeed)
            {
                CurTimes++;

                if (m_LoopTimes != -1 && CurTimes >= m_LoopTimes)
                {
                    m_CompositeNode.Status = NodeStatus.Succeed;
                    return;
                }

                //重置子节点状态
                childNode.Reset();
            }
        }
Пример #4
0
        public override void OnUpdate(float deltatime)
        {
            CurTime += deltatime;
            BaseNode childNode = m_CompositeNode.Childs[0];

            childNode.Run(deltatime);
            NodeStatus childNodeStatus = childNode.Status;

            if (childNodeStatus == NodeStatus.Error)
            {
                m_CompositeNode.Status = NodeStatus.Error;
                return;
            }

            if (CurTime >= Duration / 1000f)
            {
                m_CompositeNode.Status = NodeStatus.Succeed;
                return;
            }

            if (childNodeStatus == NodeStatus.Failed || childNodeStatus == NodeStatus.Succeed)
            {
                childNode.Reset();
            }
        }
Пример #5
0
        public override void OnUpdate(float deltatime)
        {
            for (int i = m_CompositeNode.RunningNodeIndex; i < m_CompositeNode.Childs.Count;)
            {
                BaseNode childNode = m_CompositeNode.Childs[m_CompositeNode.RunningNodeIndex];
                childNode.Run(deltatime);
                NodeStatus childNodeStatus = childNode.Status;

                if (childNodeStatus == NodeStatus.Running)
                {
                    return;
                }

                if (childNodeStatus == NodeStatus.Error)
                {
                    m_CompositeNode.Status = childNodeStatus;
                    return;
                }

                if (m_CompositeNode.RunningNodeIndex == 0)
                {
                    if (childNodeStatus == NodeStatus.Succeed)
                    {
                        m_CompositeNode.RunningNodeIndex = 1;
                        i = 1;
                    }
                    else if (childNodeStatus == NodeStatus.Failed)
                    {
                        m_CompositeNode.RunningNodeIndex = 2;
                        i = 2;
                    }
                }
                else
                {
                    if (childNodeStatus == NodeStatus.Succeed)
                    {
                        m_CompositeNode.Status = NodeStatus.Succeed;
                        return;
                    }

                    if (childNodeStatus == NodeStatus.Failed)
                    {
                        m_CompositeNode.Status = NodeStatus.Succeed;
                        return;
                    }
                }
            }
        }
Пример #6
0
        public override void OnUpdate(float deltatime)
        {
            BaseNode childNode = m_CompositeNode.Childs[m_CompositeNode.RunningNodeIndex];

            childNode.Run(deltatime);
            NodeStatus childNodeStatus = childNode.Status;

            if (childNodeStatus == NodeStatus.Error)
            {
                m_CompositeNode.Status = NodeStatus.Error;
                return;
            }

            if (childNodeStatus > NodeStatus.Running)
            {
                m_CompositeNode.Status = childNodeStatus;
            }
        }
Пример #7
0
        public override void OnUpdate(float deltatime)
        {
            int failCount    = 0;
            int successCount = 0;

            for (int i = 0; i < m_CompositeNode.Childs.Count; i++)
            {
                BaseNode childNode = m_CompositeNode.Childs[i];
                childNode.Run(deltatime);
                NodeStatus childNodeStatus = childNode.Status;

                if (childNodeStatus == NodeStatus.Failed)
                {
                    failCount++;

                    if (m_FailurePolicy == FAILURE_POLICY.FAIL_ON_ONE)
                    {
                        m_CompositeNode.Status = NodeStatus.Failed;
                        break;
                    }
                    else if (m_FailurePolicy == FAILURE_POLICY.FAIL_ON_ALL && failCount == m_CompositeNode.Childs.Count)
                    {
                        m_CompositeNode.Status = NodeStatus.Failed;
                    }
                }
                else if (childNodeStatus == NodeStatus.Succeed)
                {
                    successCount++;

                    if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ONE)
                    {
                        m_CompositeNode.Status = NodeStatus.Succeed;
                    }
                    else if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ALL && successCount == m_CompositeNode.Childs.Count)
                    {
                        m_CompositeNode.Status = NodeStatus.Succeed;
                    }
                }
                else if (childNodeStatus == NodeStatus.Error)
                {
                    m_CompositeNode.Status = NodeStatus.Error;
                }
            }
        }
Пример #8
0
        public override void OnUpdate(float deltatime)
        {
            m_SelectorNode.Run(deltatime);
            NodeStatus childNodeStatus = m_SelectorNode.Status;

            if (childNodeStatus == NodeStatus.Error)
            {
                m_CompositeNode.Status = NodeStatus.Error;
                return;
            }

            if (childNodeStatus == NodeStatus.Succeed)
            {
                m_CompositeNode.Status = NodeStatus.Succeed;
                return;
            }

            if (childNodeStatus == NodeStatus.Failed)
            {
                m_CompositeNode.Status = NodeStatus.Failed;
            }
        }