Compare commits

...

3 Commits

Author SHA1 Message Date
Serhii Snitsaruk 672f92c87b
Update doc 2024-12-30 01:24:52 +01:00
Serhii Snitsaruk e2e42b90a8 Fix documentation links in the editor 2024-12-29 16:03:21 -08:00
Serhii Snitsaruk a952009293
Add `Blackboard.print_state()` (#264)
Method that prints values of all variables in each scope.
2024-12-29 23:45:59 +01:00
6 changed files with 47 additions and 4 deletions

View File

@ -10,6 +10,7 @@
*/ */
#include "blackboard.h" #include "blackboard.h"
#include "../util/limbo_compat.h"
#ifdef LIMBOAI_MODULE #ifdef LIMBOAI_MODULE
#include "core/variant/variant.h" #include "core/variant/variant.h"
@ -75,6 +76,26 @@ TypedArray<StringName> Blackboard::list_vars() const {
return var_names; return var_names;
} }
void Blackboard::print_state() const {
Ref<Blackboard> bb{ this };
int scope_idx = 0;
while (bb.is_valid()) {
int i = 0;
String line = "Scope " + itos(scope_idx) + ": { ";
for (const KeyValue<StringName, BBVariable> &kv : bb->data) {
if (i > 0) {
line += ", ";
}
line += String(kv.key) + ": " + String(kv.value.get_value());
i++;
}
line += " }";
PRINT_LINE(line);
bb = bb->get_parent();
scope_idx++;
}
}
Dictionary Blackboard::get_vars_as_dict() const { Dictionary Blackboard::get_vars_as_dict() const {
Dictionary dict; Dictionary dict;
for (const KeyValue<StringName, BBVariable> &kv : data) { for (const KeyValue<StringName, BBVariable> &kv : data) {
@ -136,6 +157,7 @@ void Blackboard::_bind_methods() {
ClassDB::bind_method(D_METHOD("erase_var", "var_name"), &Blackboard::erase_var); ClassDB::bind_method(D_METHOD("erase_var", "var_name"), &Blackboard::erase_var);
ClassDB::bind_method(D_METHOD("clear"), &Blackboard::clear); ClassDB::bind_method(D_METHOD("clear"), &Blackboard::clear);
ClassDB::bind_method(D_METHOD("list_vars"), &Blackboard::list_vars); ClassDB::bind_method(D_METHOD("list_vars"), &Blackboard::list_vars);
ClassDB::bind_method(D_METHOD("print_state"), &Blackboard::print_state);
ClassDB::bind_method(D_METHOD("get_vars_as_dict"), &Blackboard::get_vars_as_dict); ClassDB::bind_method(D_METHOD("get_vars_as_dict"), &Blackboard::get_vars_as_dict);
ClassDB::bind_method(D_METHOD("populate_from_dict", "dictionary"), &Blackboard::populate_from_dict); ClassDB::bind_method(D_METHOD("populate_from_dict", "dictionary"), &Blackboard::populate_from_dict);
ClassDB::bind_method(D_METHOD("top"), &Blackboard::top); ClassDB::bind_method(D_METHOD("top"), &Blackboard::top);

View File

@ -57,6 +57,7 @@ public:
void erase_var(const StringName &p_name); void erase_var(const StringName &p_name);
void clear() { data.clear(); } void clear() { data.clear(); }
TypedArray<StringName> list_vars() const; TypedArray<StringName> list_vars() const;
void print_state() const;
Dictionary get_vars_as_dict() const; Dictionary get_vars_as_dict() const;
void populate_from_dict(const Dictionary &p_dictionary); void populate_from_dict(const Dictionary &p_dictionary);

View File

@ -54,6 +54,8 @@ Methods
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`populate_from_dict<class_Blackboard_method_populate_from_dict>`\ (\ dictionary\: ``Dictionary``\ ) | | |void| | :ref:`populate_from_dict<class_Blackboard_method_populate_from_dict>`\ (\ dictionary\: ``Dictionary``\ ) |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`print_state<class_Blackboard_method_print_state>`\ (\ ) |const| |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_parent<class_Blackboard_method_set_parent>`\ (\ blackboard\: :ref:`Blackboard<class_Blackboard>`\ ) | | |void| | :ref:`set_parent<class_Blackboard_method_set_parent>`\ (\ blackboard\: :ref:`Blackboard<class_Blackboard>`\ ) |
+---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ +---------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| |void| | :ref:`set_var<class_Blackboard_method_set_var>`\ (\ var_name\: ``StringName``, value\: ``Variant``\ ) | | |void| | :ref:`set_var<class_Blackboard_method_set_var>`\ (\ var_name\: ``StringName``, value\: ``Variant``\ ) |
@ -194,6 +196,18 @@ Fills the Blackboard with multiple variables from a dictionary. The dictionary k
---- ----
.. _class_Blackboard_method_print_state:
.. rst-class:: classref-method
|void| **print_state**\ (\ ) |const| :ref:`🔗<class_Blackboard_method_print_state>`
Prints the values of all variables in each scope.
.. rst-class:: classref-item-separator
----
.. _class_Blackboard_method_set_parent: .. _class_Blackboard_method_set_parent:
.. rst-class:: classref-method .. rst-class:: classref-method

View File

@ -86,6 +86,12 @@
Fills the Blackboard with multiple variables from a dictionary. The dictionary keys must be variable names and the dictionary values must be variable values. Keys must be StringName or String. Fills the Blackboard with multiple variables from a dictionary. The dictionary keys must be variable names and the dictionary values must be variable values. Keys must be StringName or String.
</description> </description>
</method> </method>
<method name="print_state" qualifiers="const">
<return type="void" />
<description>
Prints the values of all variables in each scope.
</description>
</method>
<method name="set_parent"> <method name="set_parent">
<return type="void" /> <return type="void" />
<param index="0" name="blackboard" type="Blackboard" /> <param index="0" name="blackboard" type="Blackboard" />

View File

@ -4,7 +4,7 @@ major = 1
minor = 3 minor = 3
patch = 0 patch = 0
status = "dev" status = "dev"
doc_branch = "master" doc_branch = "latest"
godot_cpp_ref = "godot-4.3-stable" godot_cpp_ref = "godot-4.3-stable"
# Code that generates version header # Code that generates version header

View File

@ -575,7 +575,7 @@ inline void _open_online_doc_page(const String &p_page) {
} }
void LimboUtility::open_doc_introduction() { void LimboUtility::open_doc_introduction() {
_open_online_doc_page("getting-started/introduction.html"); _open_online_doc_page("behavior-trees/introduction.html");
} }
void LimboUtility::open_doc_online() { void LimboUtility::open_doc_online() {
@ -583,11 +583,11 @@ void LimboUtility::open_doc_online() {
} }
void LimboUtility::open_doc_gdextension_limitations() { void LimboUtility::open_doc_gdextension_limitations() {
_open_online_doc_page("getting-started/gdextension.html#limitations-of-the-gdextension-version"); _open_online_doc_page("getting-started/getting-limboai.html#get-gdextension-version");
} }
void LimboUtility::open_doc_custom_tasks() { void LimboUtility::open_doc_custom_tasks() {
_open_online_doc_page("getting-started/custom-tasks.html"); _open_online_doc_page("behavior-trees/custom-tasks.html");
} }
void LimboUtility::open_doc_class(const String &p_class_name) { void LimboUtility::open_doc_class(const String &p_class_name) {