feat: fully implemented uncapped framerate
This commit is contained in:
parent
9597d612af
commit
1304b572d7
|
@ -33,6 +33,13 @@ double get_time_s() {
|
||||||
return tstos(get_time());
|
return tstos(get_time());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
void program_tick(const struct ProgramSettings* settings, float delta_time) {
|
||||||
|
settings->on_tick();
|
||||||
|
game_world_update();
|
||||||
|
physics_world_tick();
|
||||||
|
}
|
||||||
|
|
||||||
void program_run(const struct ProgramSettings* settings) {
|
void program_run(const struct ProgramSettings* settings) {
|
||||||
LOG_INFO("Starting program...");
|
LOG_INFO("Starting program...");
|
||||||
if(settings->target_fps <= 0) {
|
if(settings->target_fps <= 0) {
|
||||||
|
@ -73,11 +80,14 @@ void program_run(const struct ProgramSettings* settings) {
|
||||||
_frame_start = current_time;
|
_frame_start = current_time;
|
||||||
|
|
||||||
program_handle_events();
|
program_handle_events();
|
||||||
while(_delta_time > _target_delta_time) {
|
if(settings->target_fps == 0) {
|
||||||
_delta_time -= _target_delta_time;
|
program_tick(settings, _delta_time);
|
||||||
settings->on_tick();
|
_delta_time = 0.f;
|
||||||
game_world_update();
|
} else {
|
||||||
physics_world_tick();
|
while(_delta_time > _target_delta_time) {
|
||||||
|
_delta_time -= _target_delta_time;
|
||||||
|
program_tick(settings, _target_delta_time);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
settings->on_draw();
|
settings->on_draw();
|
||||||
game_world_draw();
|
game_world_draw();
|
||||||
|
|
Loading…
Reference in a new issue