cs381/as6/Systems.hpp

33 lines
671 B
C++

#pragma once
#include "Entity.hpp"
#include <algorithm>
#include <memory>
#include <vector>
void UpdateAllSystems(std::vector<std::shared_ptr<Entity>> &entities, float deltaTime) {
for (auto &entity : entities) {
if (!entity) {
continue;
}
entity->Update(deltaTime);
}
auto remover = [](const std::shared_ptr<Entity> &entity) {
if (!entity) {
return true;
}
if (entity->queuedForFree) {
entity->Cleanup();
return true;
}
return false;
};
entities.erase(std::remove_if(entities.begin(), entities.end(), remover), entities.end());
}