// ============================================= // Aster: logger.h // Copyright (c) 2020-2024 Anish Bhobe // ============================================= #pragma once #include "constants.h" #include #include 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(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; } };