#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;
}