void World::Advance(float dt) { SPADES_MARK_FUNCTION(); for(size_t i = 0; i < players.size(); i++) if(players[i]) players[i]->Update(dt); std::vector<std::list<Grenade *>::iterator> removedGrenades; for(std::list<Grenade *>::iterator it = grenades.begin(); it != grenades.end(); it++){ Grenade *g = *it; if(g->Update(dt)){ removedGrenades.push_back(it); } } for(size_t i = 0; i < removedGrenades.size(); i++) grenades.erase(removedGrenades[i]); time += dt; }