From 07dd15224c11d126f6117fa4d3192f35a414c340 Mon Sep 17 00:00:00 2001 From: Quinn Date: Tue, 18 Feb 2025 20:24:30 +0100 Subject: [PATCH] add seconds to gametime so those may also be used --- src/game/gametime.h | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/game/gametime.h b/src/game/gametime.h index f3863e5..8981e42 100644 --- a/src/game/gametime.h +++ b/src/game/gametime.h @@ -4,14 +4,19 @@ typedef struct { struct timespec ts; // stores the time at the current update - float timescale; // multiplier for the time calculation, default value is 1.0 - float deltatime; // the time that it took between updates + double sec; // stores the current time in seconds + float scale; // multiplier for the time calculation, default value is 1.0 + float delta; // the time that it took between updates } gametime; // initializes the gametime struct static inline gametime gametime_new(void) { + struct timespec ts; + timespec_get(&ts, TIME_UTC); + return (gametime){ - {0}, + ts, + 0.0, 1.0F, 0.0F, }; @@ -21,11 +26,12 @@ static inline gametime gametime_new(void) { static inline void gametime_update(gametime* gt) { struct timespec ts; timespec_get(&ts, TIME_UTC); - gt->deltatime = ((double)(ts.tv_nsec - gt->ts.tv_nsec) * 1e-9) * gt->timescale; - gt->ts = ts; + gt->sec = (double)ts.tv_nsec * 1e-9; // calculate the current time in seconds + gt->delta = ((double)(ts.tv_nsec - gt->ts.tv_nsec) * 1e-9) * gt->scale; // calculate how much time has passed between this and last frame + gt->ts = ts; // update the game's timespec } // gets how many times the game updates per second static inline float gametime_get_ups(gametime* gt) { - return 1.0F / gt->deltatime; + return 1.0F / gt->delta; }