From 052270b2cbba325076cd5ff57b04c2df5eec2307 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Fri, 1 Mar 2024 17:54:32 +0100 Subject: a --- src/object.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/object.cpp') diff --git a/src/object.cpp b/src/object.cpp index e440ab7a..be455b9b 100644 --- a/src/object.cpp +++ b/src/object.cpp @@ -271,14 +271,17 @@ void object::move_to(Magnum::Vector2i delta) uint32_t object::allocate_frame_time(Ns dt, uint16_t& accum, uint32_t hz, float speed) { - fm_assert(hz > 0); - fm_assert(dt >= Ns{0}); + using ld = long double; constexpr auto ns_in_sec = Ns(1e9); constexpr auto u16_max = uint64_t{65535}; + + fm_assert(hz > 0); + fm_assert(dt >= Ns{0}); + //const auto count = Ns::Type{ns_in_sec / hz} + accum}; const auto from_accum = uint64_t{accum} * ns_in_sec / u16_max; - const auto from_dt = Ns(uint64_t(float{dt} * speed)); - fm_assert(from_dt <= Ns{1 << 24}); + const auto from_dt = Ns(uint64_t(ld(dt.stamp) * ld(speed))); + fm_assert(from_dt <= Ns{1 << 54}); const auto ticks = from_dt + from_accum; const auto frame_duration = ns_in_sec / hz; const auto frames = (uint32_t)(ticks / frame_duration); -- cgit v1.2.3