Browse Source

Use loop instead of recursion when clearing proximity groups

(cherry picked from commit 6072f38bb1d70e27a08cb38f329da86731b89c36)
Haoyu Qiu 3 years ago
parent
commit
52ebe5993e
1 changed files with 3 additions and 7 deletions
  1. 3 7
      scene/3d/proximity_group.cpp

+ 3 - 7
scene/3d/proximity_group.cpp

@@ -34,9 +34,9 @@
 
 void ProximityGroup::_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 ProximityGroup::_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 ProximityGroup::_update_groups() {