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());
|
||||
}
|
||||
|
||||
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) {
|
||||
LOG_INFO("Starting program...");
|
||||
if(settings->target_fps <= 0) {
|
||||
|
@ -73,11 +80,14 @@ void program_run(const struct ProgramSettings* settings) {
|
|||
_frame_start = current_time;
|
||||
|
||||
program_handle_events();
|
||||
while(_delta_time > _target_delta_time) {
|
||||
_delta_time -= _target_delta_time;
|
||||
settings->on_tick();
|
||||
game_world_update();
|
||||
physics_world_tick();
|
||||
if(settings->target_fps == 0) {
|
||||
program_tick(settings, _delta_time);
|
||||
_delta_time = 0.f;
|
||||
} else {
|
||||
while(_delta_time > _target_delta_time) {
|
||||
_delta_time -= _target_delta_time;
|
||||
program_tick(settings, _target_delta_time);
|
||||
}
|
||||
}
|
||||
settings->on_draw();
|
||||
game_world_draw();
|
||||
|
|
Loading…
Reference in a new issue