SequenceNode.cc 881 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include <boost/foreach.hpp>
  2. #include "Base/Marcos.h"
  3. #include "BehaviorTree/SequenceNode.h"
  4. #include "BehaviorTree/BehaviorTreeConf.pb.h"
  5. namespace Egametang {
  6. SequenceNode::SequenceNode(int32 type): BehaviorNode(type)
  7. {
  8. }
  9. SequenceNode::~SequenceNode()
  10. {
  11. foreach (BehaviorNode* node, nodes)
  12. {
  13. delete node;
  14. }
  15. }
  16. bool SequenceNode::Run(ContexIf* contex)
  17. {
  18. foreach (BehaviorNode* node, nodes)
  19. {
  20. if (!node->Run(contex))
  21. {
  22. return false;
  23. }
  24. }
  25. return true;
  26. }
  27. void SequenceNode::AddChildNode(BehaviorNode *node)
  28. {
  29. nodes.push_back(node);
  30. }
  31. std::string SequenceNode::ToString()
  32. {
  33. std::string s;
  34. s += "SequenceNode: \n";
  35. foreach (BehaviorNode* node, nodes)
  36. {
  37. s += " " + node->ToString() + "\n";
  38. }
  39. return s;
  40. }
  41. BehaviorNode* SequenceNodeFactory::GetInstance(const BehaviorNodeConf& conf)
  42. {
  43. return new SequenceNode(conf.type());
  44. }
  45. } // namespace Egametang