Core/Time: Add support for AsSeconds<integer>

This commit is contained in:
SirLynix 2023-06-28 07:04:20 +02:00
parent 96618cbb5b
commit 602361e8e1
2 changed files with 11 additions and 3 deletions

View File

@ -23,9 +23,16 @@ namespace Nz
template<typename T>
constexpr T Time::AsSeconds() const
{
static_assert(std::is_floating_point_v<T>);
// TODO: Improve precision
return AsMicroseconds() / T(1'000'000.0) + (m_nanoseconds % 1000) / T(1'000'000'000);
if constexpr (std::is_floating_point_v<T>)
{
// TODO: Improve precision
return AsMicroseconds() / T(1'000'000.0) + (m_nanoseconds % 1000) / T(1'000'000'000);
}
else
{
static_assert(std::is_integral_v<T>);
return SafeCast<T>(AsMicroseconds() / Int64(1'000'000));
}
}
constexpr Int64 Time::AsMicroseconds() const

View File

@ -22,6 +22,7 @@ SCENARIO("Time", "[CORE][Time]")
CHECK(time.AsMicroseconds() == 1'000'000);
CHECK(time.AsMilliseconds() == 1'000);
CHECK(time.AsSeconds() == 1.f);
CHECK(time.AsSeconds<int>() == 1);
CHECK(time == Nz::Time::Second());
CHECK(time == Nz::Time::Seconds(1.f));
CHECK(time == Nz::Time::Milliseconds(1'000));