void TaskTask::Init(const BehaviorNode* node) { BEHAVIAC_ASSERT(Task::DynamicCast(node) != 0, "node is not an Method"); Task* pTaskNode = (Task*)(node); if (pTaskNode->IsHTN()) { BranchTask::Init(node); } else { super::Init(node); } }
EBTStatus TaskTask::update(Agent* pAgent, EBTStatus childStatus) { EBTStatus status = childStatus; if (childStatus == BT_RUNNING) { BEHAVIAC_ASSERT(Task::DynamicCast(this->GetNode()) != 0, "node is not an Method"); Task* pTaskNode = (Task*)(this->GetNode()); if (pTaskNode->IsHTN()) { #if BEHAVIAC_USE_HTN status = _planner->Update(); #endif //BEHAVIAC_USE_HTN } else { BEHAVIAC_ASSERT(this->m_children.size() == 1); BehaviorTask* c = this->m_children[0]; status = c->exec(pAgent); } } else { BEHAVIAC_ASSERT(true); } return status; }