/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "../libs.h" #define EPOCH_FIXED_STEP 0.016f #define EPOCH_SMALLEST_STEP 0.001f typedef struct { /** * Current time (as a float of seconds since game start). * * When time is initialized this will start at a fixed value of 2/60ths of a * second, regardless of what engine the game is running. * * This is to avoid any divide by zero errors. */ float current; /** * Last Time (as a float of seconds since the game start). * * This value will start at 1/60th of a second regardless of engine the game * is running on to avoid divide by zero errors. */ float last; /** * Varying timestep that occured since the last frame. */ float delta; /** * Fixed timestep that is not affected by framerate but remains consistent. */ float fixedDelta; } epoch_t; /** * Initializes the epoch time tracking. * * @param epoch Epoch to initialize. */ void epochInit(epoch_t *epoch); /** * Ticks the current epoch time. * * @param epoch Epoch to update. * @param platformDelta The delta step between frames from the platform engine. */ void epochUpdate(epoch_t *epoch, float platformDelta);