#include "misc/Time.h" #include namespace td { namespace utils { void AutoTimer::update() { m_InternalTime += getTime() - m_LastTime; if (m_InternalTime >= m_Interval) { if (m_Function != nullptr) m_Function(); m_InternalTime %= m_Interval; } m_LastTime = getTime(); } void AutoTimer::update(std::uint64_t delta) { m_InternalTime += delta; if (m_InternalTime >= m_Interval) { if (m_Function != nullptr) m_Function(); m_InternalTime %= m_Interval; } m_LastTime = getTime(); } void AutoTimer::reset() { m_InternalTime = 0; m_LastTime = getTime(); } bool Timer::update(std::uint64_t delta) { if (m_Waiting) { m_InternalTime = 0; m_Waiting = false; return true; } m_InternalTime += delta; if (m_InternalTime >= m_Interval) { m_InternalTime %= m_Interval; return true; } return false; } void Timer::wait() { m_Waiting = true; } void Timer::reset() { m_InternalTime = 0; // let the timer active once at the beginning m_Waiting = true; } std::uint64_t getTime() { return std::chrono::duration_cast(std::chrono::system_clock().now().time_since_epoch()).count(); } } // namespace utils } // namespace td