Files
dusk/src/time/time.c
2025-10-25 21:15:13 -05:00

52 lines
1.1 KiB
C

/**
* Copyright (c) 2025 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "time.h"
#include "util/memory.h"
#include "assert/assert.h"
#if TIME_SDL2
#include <SDL2/SDL.h>
#endif
dusktime_t TIME;
void timeInit(void) {
memoryZero(&TIME, sizeof(TIME));
// Set these to something non-zero.
TIME.time = TIME_STEP;
TIME.delta = TIME_STEP;
TIME.fixedDelta = TIME_STEP;
TIME.fixedTime = TIME_STEP;
}
void timeUpdate(void) {
float_t delta;
#if TIME_SDL2
delta = (float_t)SDL_GetTicks() / 1000.0f - TIME.time;
#elif TIME_FIXED
delta = TIME_PLATFORM_STEP;
#else
#error "No time platform defined"
#endif
TIME.delta = delta;
assertTrue(TIME.delta >= 0.0f, "Time delta is negative");
TIME.time += TIME.delta;
// Perform a fixed time step.
if(TIME.time - TIME.fixedTime >= (TIME_STEP * 0.9f)) {
TIME.fixedUpdate = true;
TIME.fixedDelta = TIME_STEP;
TIME.fixedTime += TIME_STEP;
} else {
TIME.fixedDelta = 0.0f;
TIME.fixedUpdate = false;
}
}