#include "behaviortree_cpp/bt_factory.h" using namespace BT; // clang-format off static const char* xml_text = R"( )"; // clang-format on class SaySomething : public BT::SyncActionNode { public: SaySomething(const std::string& name, const BT::NodeConfig& config) : BT::SyncActionNode(name, config) {} BT::NodeStatus tick() override { std::string msg; getInput("message", msg); std::cout << msg << std::endl; return BT::NodeStatus::SUCCESS; } static BT::PortsList providedPorts() { return {BT::InputPort("message")}; } }; class ThinkWhatToSay : public BT::SyncActionNode { public: ThinkWhatToSay(const std::string& name, const BT::NodeConfig& config) : BT::SyncActionNode(name, config) {} BT::NodeStatus tick() override { setOutput("text", "The answer is 42"); return BT::NodeStatus::SUCCESS; } static BT::PortsList providedPorts() { return {BT::OutputPort("text")}; } }; int main() { BehaviorTreeFactory factory; factory.registerNodeType("SaySomething"); factory.registerNodeType("ThinkWhatToSay"); auto tree = factory.createTreeFromText(xml_text); tree.tickWhileRunning(); return 0; }