]> git.localhorst.tv Git - blank.git/blobdiff - src/ai/Spawner.cpp
reference count entities for safer removal
[blank.git] / src / ai / Spawner.cpp
index 6d5549faf6eaffb7afdaa0d0b88ae385ef0f8e53..5b54c3eb56cd03dbb827f20bc754db5dbfb55a26 100644 (file)
@@ -68,9 +68,14 @@ void Spawner::CheckDespawn() noexcept {
        const Entity &reference = world.Player();
        for (auto iter = controllers.begin(), end = controllers.end(); iter != end;) {
                Entity &e = (*iter)->Controlled();
+               if (e.Dead()) {
+                       delete *iter;
+                       iter = controllers.erase(iter);
+                       continue;
+               }
                glm::vec3 diff(reference.AbsoluteDifference(e));
                if (dot(diff, diff) > despawn_range) {
-                       e.Remove();
+                       e.Kill();
                        delete *iter;
                        iter = controllers.erase(iter);
                } else {