cs381/as6/Systems.hpp

30 lines
905 B
C++

#pragma once
#include "Components.hpp"
#include "Entity.hpp"
#include "GameContext.hpp"
#include <memory>
#include <vector>
void UpdateAllSystems(std::vector<std::shared_ptr<Entity>> &entities, GameContext &context,
float deltaTime) {
context.entities = &entities;
context.worldEntity = (entities.size() > 0 && entities[0]) ? entities[0].get() : nullptr;
context.wellEntity = (entities.size() > 1 && entities[1]) ? entities[1].get() : nullptr;
context.probeEntity = (entities.size() > 2 && entities[2]) ? entities[2].get() : nullptr;
context.hudEntity = (!entities.empty() && entities.back()) ? entities.back().get() : nullptr;
for (auto &entity : entities) {
if (!entity) {
continue;
}
if (entity->context != &context) {
entity->SetContext(&context);
}
entity->Update(deltaTime);
}
}