1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- //
- // SubTreeWaiter.cpp
- // redream_runtime_mac
- //
- // Created by zhu on 2023/5/23.
- //
- #include "SubTreeWaiter.hpp"
- #include "ReboltRedManager.h"
- namespace redream {
- SubTreeWaiter::SubTreeWaiter(ReboltRedManager* reboltManager, red::RedBehaviacTree* tree, std::map<std::string, bool> &boolMap, std::map<std::string, std::string> &stringMap, std::string treeName, ReboltRedManager* subTreeReboltManager)
- : _boolMap(boolMap)
- , _stringMap(stringMap)
- , _treeName(treeName)
- {
- _reboltManager = reboltManager;
- _fatherTree = tree;
- _subTreeReboltManager = subTreeReboltManager;
- }
- SubTreeWaiter::~SubTreeWaiter(){
-
- }
- SubTreeWaiter* SubTreeWaiter::create(ReboltRedManager* reboltManager, red::RedBehaviacTree* tree, std::map<std::string, bool> &boolMap, std::map<std::string, std::string> &stringMap, std::string treeName, ReboltRedManager* subTreeReboltManager){
- SubTreeWaiter * ret = new (std::nothrow) SubTreeWaiter(reboltManager, tree, boolMap, stringMap, treeName, subTreeReboltManager);
- if (ret && ret->init())
- {
- ret->autorelease();
- }
- else
- {
- CC_SAFE_DELETE(ret);
- }
- return ret;
- }
- bool SubTreeWaiter::init(){
- return true;
- }
- void SubTreeWaiter::run(){
- _runningState.btState = RUNNING;
- createTreeAndRun();
- }
- void SubTreeWaiter::createTreeAndRun(){
- if(!_subTreeReboltManager){
- _runningState.btState = FAILURE;
- return;
- }
- auto redBehaviacTree = _subTreeReboltManager->createBehaviacTree(_treeName, _boolMap, _stringMap);
- if(redBehaviacTree){
- _tree = redBehaviacTree;
- _tree->addRedBehaviacTreeDelegate(this);
- redBehaviacTree->runBehaviacTree();
- } else {
- _runningState.btState = FAILURE;
- }
- }
- void SubTreeWaiter::onTreeRunningEnd(red::RedBehaviacTree* tree, int endType, std::string treeName){
- onSuccessEnd();
- }
- RunningState SubTreeWaiter::getRunningState(){
- return _runningState;
- }
- };
|