/** * 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 #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; } }