2015-07-11 10:01:06 -04:00
|
|
|
#include "stdafx.h"
|
2018-01-05 15:37:49 -05:00
|
|
|
#include "Timer.h"
|
2015-07-11 10:01:06 -04:00
|
|
|
|
2018-01-05 15:37:49 -05:00
|
|
|
#include <thread>
|
2020-02-15 14:27:36 -05:00
|
|
|
#include <chrono>
|
2015-07-11 10:01:06 -04:00
|
|
|
|
2020-02-15 14:27:36 -05:00
|
|
|
using namespace std::chrono;
|
2015-08-28 21:01:18 -04:00
|
|
|
|
2020-02-15 14:27:36 -05:00
|
|
|
Timer::Timer()
|
2015-07-21 18:18:20 -04:00
|
|
|
{
|
2015-08-28 21:01:18 -04:00
|
|
|
Reset();
|
|
|
|
}
|
|
|
|
|
|
|
|
void Timer::Reset()
|
|
|
|
{
|
2020-02-15 14:27:36 -05:00
|
|
|
_start = high_resolution_clock::now();
|
2015-08-28 21:01:18 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
double Timer::GetElapsedMS()
|
|
|
|
{
|
2020-02-15 14:27:36 -05:00
|
|
|
high_resolution_clock::time_point end = high_resolution_clock::now();
|
|
|
|
duration<double> span = duration_cast<duration<double>>(end - _start);
|
|
|
|
return span.count() * 1000.0;
|
2015-08-28 21:01:18 -04:00
|
|
|
}
|
|
|
|
|
2020-02-15 14:27:36 -05:00
|
|
|
void Timer::WaitUntil(double targetMillisecond)
|
2015-08-30 21:04:21 -04:00
|
|
|
{
|
|
|
|
if(targetMillisecond > 0) {
|
|
|
|
double elapsedTime = GetElapsedMS();
|
|
|
|
if(targetMillisecond - elapsedTime > 1) {
|
|
|
|
std::this_thread::sleep_for(std::chrono::duration<int, std::milli>((int)(targetMillisecond - elapsedTime)));
|
|
|
|
}
|
|
|
|
}
|
2018-01-05 15:37:49 -05:00
|
|
|
}
|