SequenceNode.cc 753 B

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