enderalse/SKSE/Plugins/fs_skse_plugin_functions/common/ITimer.h
2021-10-06 02:45:46 +02:00

39 lines
627 B
C++

#pragma once
#include "common/ITypes.h"
/**
* A high-resolution timer.
*/
class ITimer
{
public:
ITimer();
~ITimer();
static void Init(void);
static void DeInit(void);
void Start(void);
double GetElapsedTime(void); // seconds
private:
UInt64 m_qpcBase; // QPC
UInt32 m_tickBase; // timeGetTime
static double s_secondsPerCount;
static TIMECAPS s_timecaps;
static bool s_setTime;
// safe QPC stuff
static UInt64 GetQPC(void);
static UInt64 s_lastQPC;
static UInt64 s_qpcWrapMargin;
static bool s_hasLastQPC;
static UInt32 s_qpcWrapCount;
static UInt32 s_qpcInaccurateCount;
};