2025-03-06 15:35:34 +01:00

38 lines
884 B
C++

#pragma once
#include "3ds.h"
#include "CTRPluginFramework/Time.hpp"
namespace CTRPluginFramework
{
class Clock
{
public:
Clock(void) : _startTime(GetCurrentTime()) {}
constexpr Clock(const Time& time) : _startTime(time) {}
__always_inline Time GetElapsedTime(void) const {
return (GetCurrentTime() - _startTime);
}
__always_inline bool HasTimePassed(const Time& time) const {
return (GetElapsedTime() >= time);
}
__always_inline Time Restart(void) {
const Time now = GetCurrentTime();
const Time ret = now - _startTime;
_startTime = now;
return (ret);
}
private:
Time _startTime;
static __always_inline Time GetCurrentTime(void)
{
return Ticks(svcGetSystemTick());
}
};
}