VUI/Source/Core/VUI.cppm
2025-05-29 13:21:19 +02:00

36 lines
No EOL
1 KiB
C++

module;
#include <cstdint>
export module VUI:Time;
import :TimeInternal;
static uint64_t s_TimerOffset{0};
static double s_LastTime{0};
static double s_DeltaTime{0};
namespace VUI {
export double GetDeltaTime() { return s_DeltaTime; };
export double GetTime() {
return static_cast<double>(GetTimerValue() - s_TimerOffset) /
static_cast<double>(GetTimerFrequency());
};
export uint64_t GetTimeNs() {
return static_cast<uint64_t>(
static_cast<double>(GetTimerValue() - s_TimerOffset) * 1e9 /
static_cast<double>(GetTimerFrequency()));
}
export void SetTime(const uint64_t time) {
const auto dTimerValue = static_cast<double>(GetTimerValue());
const auto dTime = static_cast<double>(time);
const auto dFrequency = static_cast<double>(GetTimerFrequency());
s_TimerOffset = static_cast<uint64_t>(dTimerValue - dTime * dFrequency);
};
export uint64_t GetTimeOffset() { return s_TimerOffset; }
export void UpdateDeltaTime() {
const auto time = GetTime();
s_DeltaTime = time - s_LastTime;
s_LastTime = time;
};
} // namespace VUI