limboai/doc_classes/Blackboard.xml

89 lines
4.2 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<class name="Blackboard" inherits="RefCounted" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../doc/class.xsd">
<brief_description>
A key/value storage for sharing among [LimboHSM] states and [BehaviorTree] tasks.
</brief_description>
<description>
Blackboard is where data is stored and shared between states in the [LimboHSM] system and tasks in a [BehaviorTree]. Each state and task in the [BehaviorTree] can access this Blackboard, allowing them to read and write data. This makes it easy to share information between different actions and behaviors.
Blackboard can also act as a parent scope for another Blackboard. If a specific variable is not found in the active scope, it looks in the parent Blackboard to find it. A parent Blackboard can itself have its own parent scope, forming what we call a "blackboard scope chain." Importantly, there is no limit to how many Blackboards can be in this chain, and the Blackboard doesn't modify values in the parent scopes.
New scopes can be created using the [BTNewScope] and [BTSubtree] decorators. Additionally, a new scope is automatically created for any [LimboState] that has defined non-empty Blackboard data or for any root-level [LimboHSM] node.
</description>
<tutorials>
</tutorials>
<methods>
<method name="bind_var_to_property">
<return type="void" />
<param index="0" name="p_name" type="String" />
<param index="1" name="p_object" type="Object" />
<param index="2" name="p_property" type="StringName" />
<description>
Establish a binding between a variable and the object's property specified by [param p_property] and [param p_object]. Changes to the variable update the property, and vice versa.
</description>
</method>
<method name="erase_var">
<return type="void" />
<param index="0" name="p_name" type="String" />
<description>
Removes a variable by its name.
</description>
</method>
<method name="get_parent_scope" qualifiers="const">
<return type="Blackboard" />
<description>
Returns a Blackboard that serves as the parent scope for this instance.
</description>
</method>
<method name="get_var" qualifiers="const">
<return type="Variant" />
<param index="0" name="p_name" type="String" />
<param index="1" name="p_default" type="Variant" default="null" />
<param index="2" name="p_complain" type="bool" default="true" />
<description>
Returns variable value or [param p_default] if variable doesn't exist. If [param p_complain] is [code]true[/code], an error will be printed if variable doesn't exist.
</description>
</method>
<method name="has_var" qualifiers="const">
<return type="bool" />
<param index="0" name="p_name" type="String" />
<description>
Returns [code]true[/code] if the Blackboard contains the [param p_name] variable, including the parent scopes.
</description>
</method>
<method name="prefetch_nodepath_vars">
<return type="void" />
<param index="0" name="p_node" type="Node" />
<description>
If [code]true[/code], any [NodePath] variables in the [Blackboard] are replaced with [Node] references when the tree is instantiated. References are retrieved by calling [method Node.get_node] on the agent instance.
</description>
</method>
<method name="set_parent_scope">
<return type="void" />
<param index="0" name="p_blackboard" type="Blackboard" />
<description>
Assigns the parent scope. If a value isn't in the current Blackboard scope, it will look in the parent scope Blackboard to find it.
</description>
</method>
<method name="set_var">
<return type="void" />
<param index="0" name="p_name" type="String" />
<param index="1" name="p_value" type="Variant" />
<description>
Assigns a value to a Blackboard variable.
</description>
</method>
<method name="top" qualifiers="const">
<return type="Blackboard" />
<description>
Returns the topmost [Blackboard] in the scope chain.
</description>
</method>
<method name="unbind_var">
<return type="void" />
<param index="0" name="p_name" type="String" />
<description>
Remove binding from a variable.
</description>
</method>
</methods>
</class>