feat: fully implemented uncapped framerate

This commit is contained in:
Sara 2024-01-18 14:02:02 +01:00
parent 9597d612af
commit 1304b572d7

View file

@ -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();