| 44 | using namespace BT; |
| 45 | |
| 46 | int main() |
| 47 | { |
| 48 | BT::BehaviorTreeFactory factory; |
| 49 | factory.registerNodeType<DummyNodes::SaySomething>("SaySomething"); |
| 50 | |
| 51 | // Register the behavior tree definitions, but do not instantiate them yet. |
| 52 | // Order is not important. |
| 53 | factory.registerBehaviorTreeFromText(xml_text_subA); |
| 54 | factory.registerBehaviorTreeFromText(xml_text_subB); |
| 55 | factory.registerBehaviorTreeFromText(xml_text_main); |
| 56 | |
| 57 | //Check that the BTs have been registered correctly |
| 58 | std::cout << "Registered BehaviorTrees:" << std::endl; |
| 59 | for(const std::string& bt_name : factory.registeredBehaviorTrees()) |
| 60 | { |
| 61 | std::cout << " - " << bt_name << std::endl; |
| 62 | } |
| 63 | |
| 64 | // You can create the MainTree and the subtrees will be added automatically. |
| 65 | std::cout << "----- MainTree tick ----" << std::endl; |
| 66 | auto main_tree = factory.createTree("MainTree"); |
| 67 | main_tree.tickWhileRunning(); |
| 68 | |
| 69 | // ... or you can create only one of the subtree |
| 70 | std::cout << "----- SubA tick ----" << std::endl; |
| 71 | auto subA_tree = factory.createTree("SubA"); |
| 72 | subA_tree.tickWhileRunning(); |
| 73 | |
| 74 | return 0; |
| 75 | } |
| 76 | /* Expected output: |
| 77 | |
| 78 | Registered BehaviorTrees: |
nothing calls this directly
no test coverage detected