2018-12-08 23:44:41 -07:00
|
|
|
#include "CTimer.h"
|
|
|
|
|
#include <cmath>
|
|
|
|
|
#include <ctime>
|
|
|
|
|
|
2025-12-17 13:44:30 -05:00
|
|
|
CTimer::CTimer() = default;
|
2018-12-08 23:44:41 -07:00
|
|
|
|
|
|
|
|
void CTimer::Start()
|
|
|
|
|
{
|
|
|
|
|
if (!mStarted)
|
|
|
|
|
{
|
|
|
|
|
mStartTime = GlobalTime();
|
|
|
|
|
mStarted = true;
|
|
|
|
|
mPaused = false;
|
|
|
|
|
mPauseStartTime = 0;
|
|
|
|
|
mTotalPauseTime = 0;
|
|
|
|
|
mStopTime = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CTimer::Start(double StartTime)
|
|
|
|
|
{
|
|
|
|
|
if (!mStarted)
|
|
|
|
|
{
|
|
|
|
|
mStartTime = GlobalTime() - StartTime;
|
|
|
|
|
mStarted = true;
|
|
|
|
|
mPaused = false;
|
|
|
|
|
mPauseStartTime = 0;
|
|
|
|
|
mTotalPauseTime = 0;
|
|
|
|
|
mStopTime = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CTimer::Restart()
|
|
|
|
|
{
|
|
|
|
|
mStarted = false;
|
|
|
|
|
Start();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double CTimer::Stop()
|
|
|
|
|
{
|
|
|
|
|
mStopTime = Time();
|
|
|
|
|
mStarted = false;
|
|
|
|
|
mPaused = false;
|
|
|
|
|
return mStopTime;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
double CTimer::Pause()
|
|
|
|
|
{
|
|
|
|
|
mPauseStartTime = GlobalTime();
|
|
|
|
|
mPaused = true;
|
|
|
|
|
return Time();
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-17 13:44:30 -05:00
|
|
|
bool CTimer::IsPaused() const
|
2018-12-08 23:44:41 -07:00
|
|
|
{
|
|
|
|
|
return mPaused;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CTimer::Resume()
|
|
|
|
|
{
|
|
|
|
|
if (mPaused)
|
|
|
|
|
{
|
|
|
|
|
mTotalPauseTime += GlobalTime() - mPauseStartTime;
|
|
|
|
|
mPaused = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-08 16:48:53 -05:00
|
|
|
double CTimer::Time() const
|
2018-12-08 23:44:41 -07:00
|
|
|
{
|
|
|
|
|
if (mStarted)
|
|
|
|
|
{
|
|
|
|
|
double CurrentPauseTime = 0;
|
2025-12-17 13:44:30 -05:00
|
|
|
if (mPaused)
|
|
|
|
|
CurrentPauseTime = GlobalTime() - mPauseStartTime;
|
|
|
|
|
|
2018-12-08 23:44:41 -07:00
|
|
|
return GlobalTime() - mStartTime - mTotalPauseTime - CurrentPauseTime;
|
|
|
|
|
}
|
|
|
|
|
|
2025-12-17 13:44:30 -05:00
|
|
|
return mStopTime;
|
2018-12-08 23:44:41 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ************ STATIC ************
|
|
|
|
|
double CTimer::GlobalTime()
|
|
|
|
|
{
|
|
|
|
|
return (double) clock() / CLOCKS_PER_SEC;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
float CTimer::SecondsMod900()
|
|
|
|
|
{
|
2025-12-17 13:44:30 -05:00
|
|
|
return fmodf((float)GlobalTime(), 900.f);
|
2018-12-08 23:44:41 -07:00
|
|
|
}
|