| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #include "Base/Typedef.h"
- #include "BehaviorTree/NotNode.h"
- #include "BehaviorTree/EventDefine.h"
- #include "BehaviorTree/SequenceNode.h"
- #include "BehaviorTree/SelectorNode.h"
- #include "BehaviorTree/BuffType.h"
- #include "BehaviorTree/ChangeHealth.h"
- #include "BehaviorTree/NodeFactories.h"
- #include "BehaviorTree/BehaviorTreeConf.pb.h"
- #include "BehaviorTree/EventDefine.h"
- namespace Egametang {
- NodeFactories::NodeFactories(): factories(2000, (BehaviorNodeFactoryIf*)(nullptr))
- {
- // 节点
- factories[SEQUENCE] = new SequenceNodeFactory();
- factories[SELECTOR] = new SelectorNodeFactory();
- factories[NOT] = new NotNodeFactory();
- // 叶子节点
- factories[BUFF_TYPE] = new BuffTypeFactory();
- factories[CHANGE_HEALTH] = new ChangeHealthFactory();
- }
- NodeFactories::~NodeFactories()
- {
- for (std::size_t i = 0; i < factories.size(); ++i)
- {
- if (factories[i] == nullptr)
- {
- continue;
- }
- delete factories[i];
- }
- }
- BehaviorNode* NodeFactories::GetInstance(const BehaviorNodeConf& conf)
- {
- int32 type = conf.type();
- return factories[type]->GetInstance(conf);
- }
- }
|