diff --git a/doc/classes/SceneTree.xml b/doc/classes/SceneTree.xml
index 08cfe3c6ca5..1a846140e5c 100644
--- a/doc/classes/SceneTree.xml
+++ b/doc/classes/SceneTree.xml
@@ -122,6 +122,13 @@
Returns the number of nodes in this [SceneTree].
+
+
+
+
+ Returns the number of nodes assigned to the given group.
+
+
diff --git a/scene/main/scene_tree.cpp b/scene/main/scene_tree.cpp
index cf80bd6c6fc..4417007b9d3 100644
--- a/scene/main/scene_tree.cpp
+++ b/scene/main/scene_tree.cpp
@@ -1302,6 +1302,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::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::Iterator E = group_map.find(p_group);
@@ -1617,6 +1627,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 e1597d3890a..618ac275ff5 100644
--- a/scene/main/scene_tree.h
+++ b/scene/main/scene_tree.h
@@ -385,6 +385,7 @@ public:
void get_nodes_in_group(const StringName &p_group, List *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();