13 #ifndef DECORATOR_BLACKBOARD_PRECONDITION_NODE_H 14 #define DECORATOR_BLACKBOARD_PRECONDITION_NODE_H 17 #include <type_traits> 40 if (std::is_same<T, int>::value)
42 else if (std::is_same<T, double>::value)
44 else if (std::is_same<T, std::string>::value)
46 else if (std::is_same<T, bool>::value)
55 InputPort<NodeStatus>(
"return_on_mismatch")};
65 inline bool IsSame(
const T& a,
const T& b)
70 inline bool IsSame(
const double& a,
const double& b)
72 constexpr
double EPS =
static_cast<double>(std::numeric_limits<float>::epsilon());
73 return std::abs(a - b) <= EPS;
95 getInput(
"return_on_mismatch", default_return_status);
96 return default_return_status;
virtual ~BlackboardPreconditionNode() override=default
std::pair< std::string, PortInfo > InputPort(StringView name, StringView description={})
virtual BT::NodeStatus tick() override
Method to be implemented by the user.
const NodeConfiguration & config() const
NodeStatus status() const
bool IsSame(const T &a, const T &b)
const std::string & name() const
Name of the instance, not the type.
void haltChild()
Same as resetChild()
Result getInput(const std::string &key, T &destination) const
std::unordered_map< std::string, PortInfo > PortsList
const TreeNode * child() const
void setRegistrationID(StringView ID)
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
static PortsList providedPorts()
void setStatus(NodeStatus new_status)
BlackboardPreconditionNode(const std::string &name, const NodeConfiguration &config)