#include "../system/AnimatorSystem.h" #include "../system/AudioSystem.h" #include "../system/CollisionSystem.h" #include "../system/InputSystem.h" #include "../system/ParticleSystem.h" #include "../system/PhysicsSystem.h" #include "../system/RenderSystem.h" #include "../system/ScriptSystem.h" #include "../system/EventSystem.h" #include "LoopManager.h" using namespace crepe; using namespace std; LoopManager::LoopManager() : systems({ ScriptSystem{this->mediator}, PhysicsSystem{this->mediator}, CollisionSystem{this->mediator}, AnimatorSystem{this->mediator}, ParticleSystem{this->mediator}, RenderSystem{this->mediator}, InputSystem{this->mediator}, EventSystem{this->mediator}, AudioSystem{this->mediator}, }) { } void LoopManager::start() { this->setup(); this->loop(); } void LoopManager::fixed_update() { for (System & system : this->systems) { if (!system.active) continue; system.fixed_update(); } } void LoopManager::frame_update() { for (System & system : this->systems) { if (!system.active) continue; system.frame_update(); } } void LoopManager::setup() { LoopTimer & timer = this->loop_timer; this->game_running = true; this->scene_manager.load_next_scene(); timer.start(); timer.set_fps(200); } void LoopManager::loop() { LoopTimer & timer = this->loop_timer; timer.start(); while (game_running) { timer.update(); while (timer.get_lag() >= timer.get_fixed_delta_time()) { this->fixed_update(); timer.advance_fixed_update(); } this->frame_update(); timer.enforce_frame_rate(); } }