summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorHaoyu Qiu <timothyqiu32@gmail.com>2021-10-07 12:41:10 +0800
committerHaoyu Qiu <timothyqiu32@gmail.com>2021-10-07 16:31:47 +0800
commit6072f38bb1d70e27a08cb38f329da86731b89c36 (patch)
tree9eee2d5d7591419242b013f726f37c3a3a254cb3 /scene
parent410cab4c619e2e8f9db05eed594d61751fbd92e7 (diff)
Use loop instead of recursion when clearing proximity groups
Diffstat (limited to 'scene')
-rw-r--r--scene/3d/proximity_group_3d.cpp10
1 files changed, 3 insertions, 7 deletions
diff --git a/scene/3d/proximity_group_3d.cpp b/scene/3d/proximity_group_3d.cpp
index c8c61a9f00..23df00c1f6 100644
--- a/scene/3d/proximity_group_3d.cpp
+++ b/scene/3d/proximity_group_3d.cpp
@@ -34,9 +34,9 @@
void ProximityGroup3D::_clear_groups() {
Map<StringName, uint32_t>::Element *E;
+ const int size = 16;
- {
- const int size = 16;
+ do {
StringName remove_list[size];
E = groups.front();
int num = 0;
@@ -50,11 +50,7 @@ void ProximityGroup3D::_clear_groups() {
for (int i = 0; i < num; i++) {
groups.erase(remove_list[i]);
}
- }
-
- if (E) {
- _clear_groups(); // call until we go through the whole list
- }
+ } while (E);
}
void ProximityGroup3D::_update_groups() {