/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#pragma once

#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;