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:
parent
eea3560b35
commit
a0e1bf8592
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user