Files

92 lines
1.5 KiB
C++
Raw Permalink Normal View History

#include "CTimer.h"
#include <cmath>
#include <ctime>
2025-12-17 13:44:30 -05:00
CTimer::CTimer() = default;
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
{
return mPaused;
}
void CTimer::Resume()
{
if (mPaused)
{
mTotalPauseTime += GlobalTime() - mPauseStartTime;
mPaused = false;
}
}
2026-01-08 16:48:53 -05:00
double CTimer::Time() const
{
if (mStarted)
{
double CurrentPauseTime = 0;
2025-12-17 13:44:30 -05:00
if (mPaused)
CurrentPauseTime = GlobalTime() - mPauseStartTime;
return GlobalTime() - mStartTime - mTotalPauseTime - CurrentPauseTime;
}
2025-12-17 13:44:30 -05:00
return mStopTime;
}
// ************ 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);
}