Status MaxTime::process(Tick& tick) { float elapsedTime = tick.tree.getElapsedTime(actionId); BaseNode* node = tick.tree.actionManager.getActionById(child); // CCAssert(node != nullptr) Status status = node->execute(tick); if (elapsedTime > maxDelay) { return Status::Failure; } return status; }
Status SequenceStateful::process(Tick& tick) { Status result = Status::Success; size_t idx = tick.tree.getRunningChild(actionId); for (size_t i = idx; i < children.size(); ++i) { BaseNode* node = tick.tree.actionManager.getActionById(children[i]); Status status = node->execute(tick); if (status != Status::Success) { if (status == Status::Running) { tick.tree.setRunningChild(actionId, i); } break; } } return result; }