use std::collections::VecDeque; use crate::client::components::{ServerClock, ServerTimeOffset}; use crate::prelude::*; use crate::shared::ecs::clock_sync::{ClientTiming, ServerTiming}; pub fn server_clock_plugin(app: &mut App) { app .insert_resource(SyncTimer(Timer::from_seconds(1.0, TimerMode::Repeating))) .insert_resource(ServerClock { rtt_queue: VecDeque::with_capacity(10), // 10 seconds time_offset_queue: VecDeque::with_capacity(10), ..default() }) .add_systems(Update, send_timing) .add_systems(Update, recv_timing); } #[derive(Resource)] struct SyncTimer(Timer); fn send_timing( mut sync_timer: ResMut, mut client_timing: MessageWriter, time: Res