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/Application.h"
|
||||||
|
#include "Gedeng/Time.h"
|
||||||
|
#include "Gedeng/Logger.h"
|
||||||
|
|
||||||
namespace Gedeng {
|
namespace Gedeng {
|
||||||
|
|
||||||
void Application::run() {
|
void Application::run() {
|
||||||
|
unsigned long previous_time_ms = Time::get_time_ms();
|
||||||
|
unsigned long time_until_fixed_update_ms = 0.0;
|
||||||
|
|
||||||
while (true) {
|
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;
|
virtual ~Application() = default;
|
||||||
|
|
||||||
void run();
|
void run();
|
||||||
|
|
||||||
|
private:
|
||||||
|
const unsigned long MS_PER_UPDATE = 20;
|
||||||
};
|
};
|
||||||
|
|
||||||
// To be defined in client applications
|
// To be defined in client applications
|
||||||
|
Loading…
x
Reference in New Issue
Block a user