#pragma once #include #include namespace dingosdk { inline constexpr std::array multiplayer_tick_rates{20, 30, 60, 120}; inline constexpr unsigned multiplayer_default_tps = 30; constexpr bool valid_multiplayer_tps(unsigned tps) noexcept { for (const auto rate : multiplayer_tick_rates) if (rate == tps) return true; return false; } constexpr std::uint32_t multiplayer_pose_interval(unsigned tps) noexcept { return 1000000U / (valid_multiplayer_tps(tps) ? tps : multiplayer_default_tps); } constexpr bool valid_pose_interval(std::uint32_t interval) noexcept { if (interval == 100000 || interval == 200000) return true; for (const auto rate : multiplayer_tick_rates) if (interval == multiplayer_pose_interval(rate)) return true; return false; } } // namespace dingosdk