From 1304b572d759188c8983e017b60ee2ef1555c0a4 Mon Sep 17 00:00:00 2001 From: Sara <sara@saragerretsen.nl> Date: Thu, 18 Jan 2024 14:02:02 +0100 Subject: [PATCH] feat: fully implemented uncapped framerate --- core/src/program.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/core/src/program.c b/core/src/program.c index 538c960..c5717d9 100644 --- a/core/src/program.c +++ b/core/src/program.c @@ -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();