tgoop.com/random_rust_dev/232
Last Update:
Занимался сегодня рефакторингом небольшого крейта gametime
.
Сделал чистку всех предупреждений с clippy::pedantic
и задокументировал всё, хоть и минимально.
В крейте функционал для работы со временем в играх.
И минимум сложностей.
Во первых TimeStamp
- точка во времени с наносекундной точностью. Относительно чего-то. Обычно относительно того, откуда они берутся.TimeSpan
- промежуток между меньшим и большим TimeStamp
ами. Почти как Duration
, но лишь u64 наносекунд.Clock
- часы. Связывают монотонный таймер core::time::Instant
и TimeStamp
ы. Генерирует ClockStep
, на каждый вызов Clock::step
, где есть текущий TimeStamp
и TimeSpan
между текущим и предыдущим.
Предполагается использовать Clock
в главном цикле, делать Clock::step
в начале каждой итерации и раздавать ClockStep
везде, где нужно знать время.GlobalClock
- как Clock
, но используют единую для процесса точку отсчета. Требуется std
и global_reference
фичаClockRate
- часы со скоростью. Использует внешний источник TimeSpan
, генерирует ClockStep
с указанной относительной скоростью. Без накапливаемой потери точности.
Удобно для контроля времени в симуляции. Паузы, буллет таймы, перемотки. Просто вся симуляция должна использовать ClockStep
из ClockRate
, а не общего Clock
.FrequencyTicker
- генератор тиков с заданной частотой. Использует внешний TimeSpan
и возвращает итератор по ClockStep
тиков, произошедших в течение этого времени. Без накапливаемой потери точности.
Ознакомиться с кодом можно здесь.
https://github.com/zakarumych/gametime
BY Random Rust Dev

Share with your friend now:
tgoop.com/random_rust_dev/232