42 lines
1.0 KiB
C++
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;
|
|
}
|
|
}; |