Esempio n. 1
0
        public override void OnUpdate(float deltatime)
        {
            BaseNode childNode = m_CompositeNode.Childs[0];

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

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

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

            if (childNodeStatus == ENodeStatus.Failed)
            {
                m_CompositeNode.Status = ENodeStatus.Succeed;
                return;
            }
        }
        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);
                ENodeStatus childNodeStatus = childNode.Status;

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

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

                if (childNodeStatus == ENodeStatus.Failed)
                {
                    m_CompositeNode.RunningNodeIndex++;
                    i++;
                    if (m_CompositeNode.RunningNodeIndex >= m_Children.Count)
                    {
                        m_CompositeNode.Status = ENodeStatus.Failed;
                        return;
                    }
                }
            }
        }
Esempio n. 3
0
        public override void OnUpdate(float deltatime)
        {
            CurTime += deltatime;
            BaseNode childNode = m_CompositeNode.Childs[0];

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

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

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

            if (childNodeStatus == ENodeStatus.Failed || childNodeStatus == ENodeStatus.Succeed)
            {
                childNode.Reset();
            }
        }
Esempio n. 4
0
        public override void OnUpdate(float deltatime)
        {
            BaseNode childNode = m_CompositeNode.Childs[0];

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

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

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

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

                //重置子节点状态
                childNode.Reset();
            }
        }
Esempio n. 5
0
        public override void OnUpdate(float deltatime)
        {
            m_CurFrames++;

            BaseNode childNode = m_CompositeNode.Childs[0];

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

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

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

            if (childNodeStatus == ENodeStatus.Failed || childNodeStatus == ENodeStatus.Succeed)
            {
                childNode.Reset();
            }
        }
        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);
                ENodeStatus childNodeStatus = childNode.Status;

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

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

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

                    if (childNodeStatus == ENodeStatus.Failed)
                    {
                        m_CompositeNode.Status = ENodeStatus.Succeed;
                        return;
                    }
                }
            }
        }
Esempio n. 7
0
        public override void OnUpdate(float deltatime)
        {
            BaseNode childNode = m_CompositeNode.Childs[m_CompositeNode.RunningNodeIndex];

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

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

            if (childNodeStatus > ENodeStatus.Running)
            {
                m_CompositeNode.Status = childNodeStatus;
            }
        }
Esempio n. 8
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);
                ENodeStatus childNodeStatus = childNode.Status;

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

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

                    if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ONE)
                    {
                        m_CompositeNode.Status = ENodeStatus.Succeed;
                    }
                    else if (m_SuccessPolicy == SUCCESS_POLICY.SUCCEED_ON_ALL && successCount == m_CompositeNode.Childs.Count)
                    {
                        m_CompositeNode.Status = ENodeStatus.Succeed;
                    }
                }
                else if (childNodeStatus == ENodeStatus.Error)
                {
                    m_CompositeNode.Status = ENodeStatus.Error;
                }
            }
        }
Esempio n. 9
0
        public override void OnUpdate(float deltatime)
        {
            m_SelectorNode.Run(deltatime);
            ENodeStatus childNodeStatus = m_SelectorNode.Status;

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

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

            if (childNodeStatus == ENodeStatus.Failed)
            {
                m_CompositeNode.Status = ENodeStatus.Failed;
            }
        }
Esempio n. 10
0
 private void ChangeState(IEnumerable<Node> nodes, ENodeStatus status, bool force = false)
 {
     if (force || Utils.Confirm("Сменить статус \"{0}\" на \"{1}\"?", GetNodesName(nodes), status.Tag()))
     {
         foreach (Node node in nodes)
         {
             node.process = false;
             node.status = status;
         }
         ApplyChanges(nodes);
     }
 }