diff options
-rw-r--r-- | doc/classes/SceneTree.xml | 7 | ||||
-rw-r--r-- | scene/main/scene_tree.cpp | 11 | ||||
-rw-r--r-- | scene/main/scene_tree.h | 1 |
3 files changed, 19 insertions, 0 deletions
diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml index ce793deec1..92583379ce 100644 --- a/doc/classes/SceneTree.xml +++ b/doc/classes/SceneTree.xml @@ -117,6 +117,13 @@ Returns the number of nodes in this [SceneTree]. </description> </method> + <method name="get_node_count_in_group" qualifiers="const"> + <return type="int" /> + <param index="0" name="group" type="StringName" /> + <description> + Returns the number of nodes assigned to the given group. + </description> + </method> <method name="get_nodes_in_group"> <return type="Node[]" /> <param index="0" name="group" type="StringName" /> diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp index e071011c48..e46f399248 100644 --- a/scene/main/scene_tree.cpp +++ b/scene/main/scene_tree.cpp @@ -1301,6 +1301,16 @@ bool SceneTree::has_group(const StringName &p_identifier) const { return group_map.has(p_identifier); } +int SceneTree::get_node_count_in_group(const StringName &p_group) const { + _THREAD_SAFE_METHOD_ + HashMap<StringName, Group>::ConstIterator E = group_map.find(p_group); + if (!E) { + return 0; + } + + return E->value.nodes.size(); +} + Node *SceneTree::get_first_node_in_group(const StringName &p_group) { _THREAD_SAFE_METHOD_ HashMap<StringName, Group>::Iterator E = group_map.find(p_group); @@ -1589,6 +1599,7 @@ void SceneTree::_bind_methods() { ClassDB::bind_method(D_METHOD("get_nodes_in_group", "group"), &SceneTree::_get_nodes_in_group); ClassDB::bind_method(D_METHOD("get_first_node_in_group", "group"), &SceneTree::get_first_node_in_group); + ClassDB::bind_method(D_METHOD("get_node_count_in_group", "group"), &SceneTree::get_node_count_in_group); ClassDB::bind_method(D_METHOD("set_current_scene", "child_node"), &SceneTree::set_current_scene); ClassDB::bind_method(D_METHOD("get_current_scene"), &SceneTree::get_current_scene); diff --git a/scene/main/scene_tree.h b/scene/main/scene_tree.h index 4e7a10c7e9..b462cb0be8 100644 --- a/scene/main/scene_tree.h +++ b/scene/main/scene_tree.h @@ -392,6 +392,7 @@ public: void get_nodes_in_group(const StringName &p_group, List<Node *> *p_list); Node *get_first_node_in_group(const StringName &p_group); bool has_group(const StringName &p_identifier) const; + int get_node_count_in_group(const StringName &p_group) const; //void change_scene(const String& p_path); //Node *get_loaded_scene(); |