add seconds to gametime so those may also be used

This commit is contained in:
2025-02-18 20:24:30 +01:00
parent c0f1678142
commit 07dd15224c

View File

@@ -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;
}