RUBehaviacTree.h 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef RUBehaviacTree_h
  2. #define RUBehaviacTree_h
  3. #include "RUDefine.h"
  4. #include "behaviac/behaviac.h"
  5. NS_RU_BEGIN
  6. class RUBehaviacTree : public behaviac::Agent {
  7. friend class RUBehaviacTreeManger;
  8. public:
  9. RUBehaviacTree();
  10. virtual ~RUBehaviacTree();
  11. bool loadBt(const std::string& btName);
  12. virtual void setData(const std::map<std::string, std::string>& stringMap);
  13. void runBehaviacTree();
  14. void runBehaviacTree(const std::map<std::string, std::string>& stringMap, std::function<void(bool isSuccess)> treeRunEndCb, bool removeSelf = false );
  15. bool isRunning();
  16. protected:
  17. behaviac::EBTStatus _runIntervalAction(const std::string& actKey, const std::function<void(std::function<void(bool isSuccess)>)>& actFunc);
  18. private:
  19. void _update();
  20. private:
  21. bool _isRunning = false;
  22. std::function<void(bool isSuccess)> _treeRunEndCb = nullptr;
  23. std::string _actKey;
  24. behaviac::EBTStatus _actStatus = behaviac::EBTStatus::BT_INVALID;
  25. bool _removeSelf = false;
  26. };
  27. NS_RU_END
  28. #endif /* RUBehaviacTree_h */