Files
horror/src/engine/utils/timer.cpp
2024-06-10 12:48:14 +03:00

66 lines
1.2 KiB
C++

#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#include "timer.h"
#if defined(WIN32) || defined(_WIN32)
class SystemTimerWin32 : public SystemTimer
{
public:
void Init();
void Shutdown();
void Update();
float GetTime();
float GetDelta();
private:
LARGE_INTEGER m_frequency;
LARGE_INTEGER m_startTime;
LARGE_INTEGER m_endTime;
float m_floatFrequency;
float m_deltaTime;
};
static SystemTimerWin32 s_system_timer_win32;
SystemTimer* g_systemTimer = (SystemTimer*)&s_system_timer_win32;
void SystemTimerWin32::Init()
{
QueryPerformanceFrequency(&m_frequency);
m_floatFrequency = (float)m_frequency.QuadPart;
QueryPerformanceCounter(&m_startTime);
m_startTime = m_endTime;
}
void SystemTimerWin32::Shutdown()
{
}
void SystemTimerWin32::Update()
{
QueryPerformanceCounter(&m_startTime);
m_deltaTime = static_cast<float>(m_startTime.QuadPart - m_endTime.QuadPart) / m_frequency.QuadPart;
if (m_deltaTime > 10.0f)
m_deltaTime = 0.0f;
m_endTime = m_startTime;
}
float SystemTimerWin32::GetTime()
{
LARGE_INTEGER time;
QueryPerformanceCounter(&time);
return static_cast<float>(time.QuadPart / m_frequency.QuadPart);
}
float SystemTimerWin32::GetDelta()
{
return m_deltaTime;
}
#endif // WIN32