www.pudn.com > simpleraytracer_v1_0.zip > timer.h


/*=====================================================================
Code By Nicholas Chapman.

nickamy@paradise.net.nz

You may use this code for any non-commercial project,
as long as you do not remove this description.

You may *not* use this code for any commercial project.
=====================================================================*/
#ifndef __TIMER_H__
#define __TIMER_H__


#include "clock.h"
#include <assert.h>

class Timer
{
public:
inline Timer();
inline ~Timer();

inline double getSecondsElapsed() const;

inline void reset();

inline bool isPaused();

inline void pause();
inline void unpause();

private:
double last_time_started;
double timesofar;
bool paused;
};

Timer::Timer()
{
paused = false;
last_time_started = getCurTimeRealSec();
timesofar = 0;
}

Timer::~Timer()
{}

double Timer::getSecondsElapsed() const
{
if(paused)
return timesofar;
else
return timesofar + getCurTimeRealSec() - last_time_started;


//return GetCurTimeRealSec() - time_started;
}

void Timer::reset()
{
last_time_started = getCurTimeRealSec();
timesofar = 0;
}


bool Timer::isPaused()
{
return paused;
}


void Timer::pause()
{
assert(!paused);

paused = true;

timesofar += getCurTimeRealSec() - last_time_started;
}

void Timer::unpause()
{
assert(paused);

paused = false;

last_time_started = getCurTimeRealSec();
}




#endif //__TIMER_H__