Example #1
0
        public EBTStatus resume(Agent pAgent, EBTStatus status)
        {
            BranchTask   parent      = null;
            BehaviorTask currentTask = base.m_currentTask;

            while (currentTask != null)
            {
                BranchTask task3 = currentTask as BranchTask;
                if (task3 != null)
                {
                    parent      = task3;
                    currentTask = task3.GetCurrentTask();
                }
                else
                {
                    parent = currentTask.GetParent();
                    break;
                }
            }
            if (parent != null)
            {
                parent.onexit_action(pAgent, status);
                parent.SetReturnStatus(status);
            }
            return(status);
        }
Example #2
0
        public EBTStatus resume(Agent pAgent, EBTStatus status)
        {
            BranchTask   prev = null;
            BehaviorTask p    = this.m_currentTask;

            while (p != null)
            {
                BranchTask branch = p as BranchTask;
                if (branch != null)
                {
                    prev = branch;
                    p    = branch.GetCurrentTask();
                }
                else
                {
                    prev = p.GetParent();
                    break;
                }
            }

            if (prev != null)
            {
                //prev is the last interrupted node, to find and let its parent update with 'status' which is the subtree's return status
                Debug.Check(status == EBTStatus.BT_SUCCESS || status == EBTStatus.BT_FAILURE);
                prev.onexit_action(pAgent, status);

                prev.SetReturnStatus(status);
            }

            return(status);
        }
Example #3
0
        public EBTStatus resume(Agent pAgent, EBTStatus status)
        {
            BranchTask branchTask = null;
            BranchTask branchTask2;

            for (BehaviorTask currentTask = this.m_currentTask; currentTask != null; currentTask = branchTask2.GetCurrentTask())
            {
                branchTask2 = (currentTask as BranchTask);
                if (branchTask2 == null)
                {
                    branchTask = currentTask.GetParent();
                    break;
                }
                branchTask = branchTask2;
            }
            if (branchTask != null)
            {
                branchTask.onexit_action(pAgent, status);
                branchTask.SetReturnStatus(status);
            }
            return(status);
        }