]> git.localhorst.tv Git - blank.git/blobdiff - src/world/World.cpp
adjust player index if entity is removed
[blank.git] / src / world / World.cpp
index 6ad30ff0761b445a19dc6757203019b6b727d662..7b9095401dcecc62444a3e7cf0de53761519c940 100644 (file)
@@ -227,7 +227,7 @@ void World::Update(int dt) {
        }
        for (auto iter = entities.begin(), end = entities.end(); iter != end;) {
                if (iter->CanRemove()) {
-                       iter = entities.erase(iter);
+                       iter = RemoveEntity(iter);
                } else {
                        ++iter;
                }
@@ -269,6 +269,15 @@ void World::Resolve(Entity &e, std::vector<WorldCollision> &col) {
        e.Move(final_disp);
 }
 
+World::EntityHandle World::RemoveEntity(EntityHandle &eh) {
+       // check for player
+       auto player = std::find(players.begin(), players.end(), &*eh);
+       if (player != players.end()) {
+               players.erase(player);
+       }
+       return entities.erase(eh);
+}
+
 
 void World::Render(Viewport &viewport) {
        DirectionalLighting &entity_prog = viewport.EntityProgram();