spacebox/src/Timer.cpp

76 lines
983 B
C++

#include "Timer.hpp"
sb::Timer::operator bool() const
{
return timing;
}
sb::Timer::operator float() const
{
return _elapsed;
}
void sb::Timer::toggle()
{
toggle(!*this);
}
void sb::Timer::toggle(bool state)
{
timing = state;
}
void sb::Timer::on()
{
toggle(ON);
}
void sb::Timer::off()
{
toggle(OFF);
}
void sb::Timer::reset()
{
_elapsed = 0;
}
float sb::Timer::elapsed() const
{
return _elapsed;
}
void sb::Timer::elapsed(float seconds)
{
_elapsed = seconds;
}
float sb::Timer::frame() const
{
return frame_duration;
}
float sb::Timer::stamp() const
{
return _stamp;
}
void sb::Timer::update(float stamp)
{
_stamp = stamp;
if (previous_is_recorded)
{
if (*this)
{
frame_duration = stamp - stamp_previous;
_elapsed += frame();
}
else
{
frame_duration = 0.0f;
}
}
stamp_previous = stamp;
previous_is_recorded = true;
}