#include "Gedeng/Application.h" #include "Gedeng/Input.h" #include "Gedeng/Logger.h" #include "Gedeng/RenderBackend.h" #include "Gedeng/Time.h" namespace Gedeng { void Application::run() { // Setup Rendering // FIXME: Make these parameters variable, maybe move this to a different function RenderBackend::initialize_window(WINDOW_SIZE_X, WINDOW_SIZE_Y, WINDOW_NAME); Input::initialize(RenderBackend::get_window()); unsigned long previous_time_ms = Time::get_time_ms(); unsigned long time_until_fixed_update_ms = 0.0; while (!RenderBackend::does_window_want_to_close()) { unsigned long current_time_ms = Time::get_time_ms(); unsigned long elapsed_time_ms = current_time_ms - previous_time_ms; previous_time_ms = current_time_ms; time_until_fixed_update_ms += elapsed_time_ms; Input::poll_input(); // Update fixed time step while (time_until_fixed_update_ms >= MS_PER_UPDATE) { fixed_update(static_cast(MS_PER_UPDATE) / 1000.0); time_until_fixed_update_ms -= MS_PER_UPDATE; } dynamic_update(static_cast(elapsed_time_ms) / 1000.0); } } } // namespace Gedeng