Add game loop to Application

Implements fixed and variable time steps.

Might be a moved to a separate class later.
This commit is contained in:
Karl 2021-04-30 10:23:59 +02:00
parent eea3560b35
commit a0e1bf8592
2 changed files with 25 additions and 1 deletions

View File

@ -1,10 +1,31 @@
#include "Gedeng/Application.h"
#include "Gedeng/Time.h"
#include "Gedeng/Logger.h"
namespace Gedeng {
void Application::run() {
unsigned long previous_time_ms = Time::get_time_ms();
unsigned long time_until_fixed_update_ms = 0.0;
while (true) {
// TODO: Implement
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;
// Process Input
// Update fixed time step
while (time_until_fixed_update_ms >= MS_PER_UPDATE) {
// Fixed Update
GG_CORE_INFO("Fixed Update");
time_until_fixed_update_ms -= MS_PER_UPDATE;
}
// Variable update
GG_CORE_INFO("Variable Update");
}
}

View File

@ -10,6 +10,9 @@ class Application {
virtual ~Application() = default;
void run();
private:
const unsigned long MS_PER_UPDATE = 20;
};
// To be defined in client applications