The SubtreePlus is a new kind of subtree that gives you much more control over remapping: More...
#include <subtree_node.h>

Public Member Functions | |
| SubtreePlusNode (const std::string &name) | |
| virtual | ~SubtreePlusNode () override=default |
Public Member Functions inherited from BT::DecoratorNode | |
| const TreeNode * | child () const |
| TreeNode * | child () |
| DecoratorNode (const std::string &name, const NodeConfiguration &config) | |
| NodeStatus | executeTick () override |
| The method that should be used to invoke tick() and setStatus();. More... | |
| virtual void | halt () override |
| The method used to interrupt the execution of this node. More... | |
| void | haltChild () |
| Same as resetChild() More... | |
| void | resetChild () |
| void | setChild (TreeNode *child) |
| virtual | ~DecoratorNode () override=default |
Public Member Functions inherited from BT::TreeNode | |
| const NodeConfiguration & | config () const |
| void | emitStateChanged () |
| template<typename T > | |
| Result | getInput (const std::string &key, T &destination) const |
| template<typename T > | |
| Optional< T > | getInput (const std::string &key) const |
| StringView | getRawPortValue (const std::string &key) const |
| bool | isHalted () const |
| const std::string & | name () const |
| Name of the instance, not the type. More... | |
| const std::string & | registrationName () const |
| registrationName is the ID used by BehaviorTreeFactory to create an instance. More... | |
| template<typename T > | |
| Result | setOutput (const std::string &key, const T &value) |
| void | setPostTickOverrideFunction (PostTickOverrideCallback callback) |
| void | setPreTickOverrideFunction (PreTickOverrideCallback callback) |
| NodeStatus | status () const |
| StatusChangeSubscriber | subscribeToStatusChange (StatusChangeCallback callback) |
| subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically. More... | |
| TreeNode (std::string name, NodeConfiguration config) | |
| TreeNode main constructor. More... | |
| uint16_t | UID () const |
| BT::NodeStatus | waitValidStatus () |
| virtual | ~TreeNode ()=default |
Private Member Functions | |
| virtual BT::NodeStatus | tick () override |
| Method to be implemented by the user. More... | |
| virtual NodeType | type () const override final |
Static Private Member Functions | |
| static PortsList | providedPorts () |
The SubtreePlus is a new kind of subtree that gives you much more control over remapping:
Consider this example:
<root main_tree_to_execute="MainTree">
<BehaviorTree ID="MainTree">
<Sequence>
<SetBlackboard value="Hello" output_key="myParam" />
<SubTreePlus ID="Talk" param="{myParam}" />
<SubTreePlus ID="Talk" param="World" />
<SetBlackboard value="Auto remapped" output_key="param" />
<SubTreePlus ID="Talk" __autoremap="1" />
</Sequence>
</BehaviorTree>
<BehaviorTree ID="Talk">
<SaySomething message="{param}" />
</BehaviorTree>
</root>
You may notice three different approaches to remapping:
1) Subtree: "{param}" -> Parent: "{myParam}" -> Value: "Hello" Classical remapping from one port to another, but you need to use the syntax {myParam} to say that you are remapping the another port.
2) Subtree: "{param}" -> Value: "World" syntax without {}, in this case param directly point to the string "World".
3) Subtree: "{param}" -> Parent: "{parent}" Setting to true (or 1) the attribute "__autoremap", we are automatically remapping each port. Usefull to avoid some boilerplate.
Definition at line 78 of file subtree_node.h.
| BT::SubtreePlusNode::SubtreePlusNode | ( | const std::string & | name | ) |
Definition at line 25 of file subtree_node.cpp.
|
overridevirtualdefault |
|
inlinestaticprivate |
Definition at line 88 of file subtree_node.h.
|
overrideprivatevirtual |
Method to be implemented by the user.
Implements BT::TreeNode.
Definition at line 30 of file subtree_node.cpp.
|
inlinefinaloverrideprivatevirtual |
Reimplemented from BT::DecoratorNode.
Definition at line 95 of file subtree_node.h.