/******************************************************************************
* Filename:  		high_resolution_timer.cpp
* Date:      		12/06/2010
* Mod. Date: 		03/21/2018
* Author:    		Joseph R. Pollack
* Purpose:   		A high resolution timer suitable for profiling code. This new
*					version	has stripped out the game specific functionality and
*					does not include windows.h in the header.
******************************************************************************/

#include "high_resolution_timer.h"

using std::chrono::high_resolution_clock;
using std::chrono::duration;
using std::chrono::duration_cast;
using std::chrono::microseconds;

namespace lunarium
{

	// Starts or re-starts the timer.
	void HighResTimer::Reset()
	{
		mStartTime = high_resolution_clock::now();
	}


	// Returns the amount of time in microseconds since the last Reset() call.
	int64_t HighResTimer::GetElapsedMicros()
	{
		auto endTime = high_resolution_clock::now();
		auto micros = duration_cast<microseconds>(endTime - mStartTime);
		return micros.count();
	}


	double HighResTimer::GetElapsedSeconds()
	{
		auto endTime = high_resolution_clock::now();
		duration<double> s = endTime - mStartTime;
		return s.count();
	}
}