// // SubTreeWaiter.hpp // redream_runtime_mac // // Created by zhu on 2023/5/23. // #ifndef SubTreeWaiter_hpp #define SubTreeWaiter_hpp #include "WaitableStateBase.hpp" #include "behaviac/RedBehaviacTree.h" namespace redream { class SubTreeWaiter : public WaitableStateBase, public red::RedBehaviacTreeDelegate { public: static SubTreeWaiter* create(ReboltRedManager* reboltManager, red::RedBehaviacTree* tree, std::map &boolMap, std::map &stringMap, std::string treeName, ReboltRedManager* subTreeReboltManager); SubTreeWaiter(ReboltRedManager* reboltManager, red::RedBehaviacTree* tree, std::map &boolMap, std::map &stringMap, std::string treeName, ReboltRedManager* subTreeReboltManager); ~SubTreeWaiter(); bool init(); public: RunningState getRunningState() override; void run() override; void onTreeRunningEnd(red::RedBehaviacTree* tree, int endType, std::string treeName) override; private: void createTreeAndRun(); private: std::string _treeName; std::map _boolMap; std::map _stringMap; red::RedBehaviacTree* _tree; ReboltRedManager* _subTreeReboltManager; }; }; #endif /* SubTreeWaiter_hpp */