2021-02-18 13:18:41 -05:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <chrono>
|
2021-02-24 12:53:04 -05:00
|
|
|
#include "Types.h"
|
2021-02-18 13:18:41 -05:00
|
|
|
|
|
|
|
class CFrameLimiter
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
CFrameLimiter();
|
|
|
|
~CFrameLimiter();
|
|
|
|
|
|
|
|
void BeginFrame();
|
|
|
|
void EndFrame();
|
|
|
|
|
|
|
|
void SetFrameRate(uint32);
|
|
|
|
|
|
|
|
private:
|
|
|
|
typedef std::chrono::high_resolution_clock::time_point TimePoint;
|
|
|
|
|
2021-12-15 17:28:48 -05:00
|
|
|
enum
|
|
|
|
{
|
|
|
|
MAX_FRAMETIMES = 4,
|
|
|
|
};
|
|
|
|
|
|
|
|
std::chrono::microseconds m_frameTimes[MAX_FRAMETIMES];
|
|
|
|
uint32 m_frameTimeIndex = 0;
|
|
|
|
|
2021-02-18 13:18:41 -05:00
|
|
|
std::chrono::microseconds m_minFrameDuration = std::chrono::microseconds(0);
|
|
|
|
bool m_frameStarted = false;
|
|
|
|
TimePoint m_lastFrameTime;
|
|
|
|
};
|