From 03cddd36db9ee31235da4c6f2c84be727292b4ef Mon Sep 17 00:00:00 2001 From: Marcel Admiraal Date: Sat, 26 Dec 2020 09:23:13 +0000 Subject: [PATCH] Remove all elements from monitored_bodies and monitored_areas when processed --- servers/physics/area_sw.cpp | 8 ++++++-- servers/physics_2d/area_2d_sw.cpp | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/servers/physics/area_sw.cpp b/servers/physics/area_sw.cpp index 562b9c42ab..3428ee7428 100644 --- a/servers/physics/area_sw.cpp +++ b/servers/physics/area_sw.cpp @@ -192,7 +192,9 @@ void AreaSW::call_queries() { for (Map::Element *E = monitored_bodies.front(); E;) { if (E->get().state == 0) { // Nothing happened - E = E->next(); + Map::Element *next = E->next(); + monitored_bodies.erase(E); + E = next; continue; } @@ -228,7 +230,9 @@ void AreaSW::call_queries() { for (Map::Element *E = monitored_areas.front(); E;) { if (E->get().state == 0) { // Nothing happened - E = E->next(); + Map::Element *next = E->next(); + monitored_areas.erase(E); + E = next; continue; } diff --git a/servers/physics_2d/area_2d_sw.cpp b/servers/physics_2d/area_2d_sw.cpp index c216b9fb36..bd97f05546 100644 --- a/servers/physics_2d/area_2d_sw.cpp +++ b/servers/physics_2d/area_2d_sw.cpp @@ -192,7 +192,9 @@ void Area2DSW::call_queries() { for (Map::Element *E = monitored_bodies.front(); E;) { if (E->get().state == 0) { // Nothing happened - E = E->next(); + Map::Element *next = E->next(); + monitored_bodies.erase(E); + E = next; continue; } @@ -228,7 +230,9 @@ void Area2DSW::call_queries() { for (Map::Element *E = monitored_areas.front(); E;) { if (E->get().state == 0) { // Nothing happened - E = E->next(); + Map::Element *next = E->next(); + monitored_areas.erase(E); + E = next; continue; }