From 3f01c26719f1e7b9e157dcd89ab3781ec63d3956 Mon Sep 17 00:00:00 2001 From: Serhii Snitsaruk Date: Wed, 23 Nov 2022 18:02:46 +0100 Subject: [PATCH] Add Blackboard::top() --- blackboard.cpp | 9 +++++++++ blackboard.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/blackboard.cpp b/blackboard.cpp index 2175687..6f44d9e 100644 --- a/blackboard.cpp +++ b/blackboard.cpp @@ -6,6 +6,14 @@ #include "scene/main/node.h" #include +Ref Blackboard::top() const { + Ref bb(this); + while (bb->get_parent_scope().is_valid()) { + bb = bb->get_parent_scope(); + } + return bb; +} + Variant Blackboard::get_var(const Variant &p_key, const Variant &p_default) const { if (data.has(p_key)) { return data.get_valid(p_key); @@ -46,4 +54,5 @@ void Blackboard::_bind_methods() { ClassDB::bind_method(D_METHOD("set_parent_scope", "p_blackboard"), &Blackboard::set_parent_scope); ClassDB::bind_method(D_METHOD("get_parent_scope"), &Blackboard::get_parent_scope); ClassDB::bind_method(D_METHOD("prefetch_nodepath_vars", "p_node"), &Blackboard::prefetch_nodepath_vars); + ClassDB::bind_method(D_METHOD("top"), &Blackboard::top); } \ No newline at end of file diff --git a/blackboard.h b/blackboard.h index fac26d0..4289f94 100644 --- a/blackboard.h +++ b/blackboard.h @@ -25,6 +25,8 @@ public: void set_parent_scope(const Ref &p_blackboard) { parent = p_blackboard; } Ref get_parent_scope() const { return parent; } + Ref top() const; + Variant get_var(const Variant &p_key, const Variant &p_default) const; void set_var(const Variant &p_key, const Variant &p_value); bool has_var(const Variant &p_key) const;