project-aster/aster/timer.h

42 lines
1.0 KiB
C++

// =============================================
// Aster: logger.h
// Copyright (c) 2020-2024 Anish Bhobe
// =============================================
#pragma once
#include "constants.h"
#include <SDL3/SDL.h>
#include <utility>
struct Time
{
static constexpr f64 MAX_DELTA = 0.1;
inline static u64 m_PerfCounter;
inline static u64 m_BeginAtCounter;
inline static f64 m_Elapsed;
inline static f64 m_Delta;
inline static f64 m_SecondPerCount;
static void
Init()
{
m_SecondPerCount = 1.0 / Cast<f64>(SDL_GetPerformanceFrequency());
m_BeginAtCounter = SDL_GetPerformanceCounter();
m_PerfCounter = m_BeginAtCounter;
m_Elapsed = 0.0;
m_Delta = 1.0 / 60.0;
}
static void
Update()
{
u64 currentCounter = SDL_GetPerformanceCounter();
m_Elapsed = (currentCounter - m_BeginAtCounter) * m_SecondPerCount;
m_Delta = std::min(m_SecondPerCount * (currentCounter - m_PerfCounter), MAX_DELTA);
m_PerfCounter = currentCounter;
}
};