/* ==========================================================================
* 작 성 자 : 이순규
* 작 성 일 : 2006.12.20
* 내    용 : 어플리케이션 타이머
* 주의사항 : 
*===========================================================================*/
#pragma once

/// 어플리케이션 타이머
class cAppTimer
{
	static cAppTimer* mSingleton;

public:
	cAppTimer();
	~cAppTimer();

	void Start();
	void Stop();

	void Reset();
	void Advance();

	/// 절대 시간을 리턴
	float GetAbsoluteTime();

	/// 현재 시간을 리턴
	float GetCurrentTime();

	/// 이전 호출로부터 경과한 시간을 리턴
	float GetElapsedTime();

	/// 중지 여부를 리턴
	bool IsStopped() const;

public:
	/// 단일체를 리턴
	static cAppTimer* GetSingleton();

private:
	/// 멈춤 여부
	bool mStopped;

	/// TimeGetTime
	double mLastElapsedTime;
	double mBaseTime;
	double mStopTime;
};

inline bool cAppTimer::IsStopped() const
{
	return mStopped;
}

inline cAppTimer* cAppTimer::GetSingleton()
{
	return mSingleton;
}
