SequenceNode.cc 916 B

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