BehaviorTree
Core Library to create and execute Behavior Trees
Loading...
Searching...
No Matches
BT::ScriptNode Class Reference

The ScriptNode executes a piece of script code to set or modify entries in the Blackboard. More...

#include <script_node.h>

Inheritance diagram for BT::ScriptNode:
Collaboration diagram for BT::ScriptNode:

Public Member Functions

 ScriptNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::SyncActionNode
 SyncActionNode (const std::string &name, const NodeConfig &config)
 
 SyncActionNode (const SyncActionNode &)=delete
 
SyncActionNodeoperator= (const SyncActionNode &)=delete
 
 SyncActionNode (SyncActionNode &&)=delete
 
SyncActionNodeoperator= (SyncActionNode &&)=delete
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
 ActionNodeBase (const std::string &name, const NodeConfig &config)
 
 ActionNodeBase (const ActionNodeBase &)=delete
 
ActionNodeBaseoperator= (const ActionNodeBase &)=delete
 
 ActionNodeBase (ActionNodeBase &&)=delete
 
ActionNodeBaseoperator= (ActionNodeBase &&)=delete
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
 LeafNode (const std::string &name, const NodeConfig &config)
 
 LeafNode (const LeafNode &)=delete
 
LeafNodeoperator= (const LeafNode &)=delete
 
 LeafNode (LeafNode &&)=delete
 
LeafNodeoperator= (LeafNode &&)=delete
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
 TreeNode (const TreeNode &other)=delete
 
TreeNodeoperator= (const TreeNode &other)=delete
 
 TreeNode (TreeNode &&other) noexcept
 
TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
void haltNode ()
 
bool isHalted () const
 
NodeStatus status () const
 
const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
virtual NodeType type () const =0
 
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.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
StringView getRawPortValue (const std::string &key) const
 
void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
bool requiresWakeUp () const
 

Static Public Member Functions

static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
static StringView stripBlackboardPointer (StringView str)
 
static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 

Additional Inherited Members

- Public Types inherited from BT::TreeNode
typedef std::shared_ptr< TreeNodePtr
 
using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
void resetStatus ()
 Set the status to IDLE.
 
void setRegistrationID (StringView ID)
 
void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
PreScripts & preConditionsScripts ()
 
PostScripts & postConditionsScripts ()
 
template<typename T >
parseString (const std::string &str) const
 

Detailed Description

The ScriptNode executes a piece of script code to set or modify entries in the Blackboard.

The script is passed via the input port "code" and can use the BT++ scripting language syntax. For instance:

<Script code=" msg:='hello world' " > <Script code=" A:=42; B:=3.14 " >

The node always returns SUCCESS after executing the script.


The documentation for this class was generated from the following file: