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); }
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); }
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); }