From fcda202c49155825adddf582ae813bc1e908cc4c Mon Sep 17 00:00:00 2001 From: Sofia Date: Sat, 25 Jul 2026 01:26:13 +0300 Subject: [PATCH] Send syncs every physics_tick --- rust/src/game_manager.rs | 76 +++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 40 deletions(-) diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 916c1d6..9f9d8e0 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -225,51 +225,47 @@ impl INode for Game { } fn physics_process(&mut self, delta: f64) { - self.since_last_sync += delta; - if self.since_last_sync > (1. / 60.) { - self.since_last_sync = 0.; - if let Some(_) = self.current_map { - if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { - match peer { - PeerKind::Client(peer, socket_addr) => { - if let Some(player) = self - .players - .iter() - .find(|p| p.id() == self.self_id.unwrap_or(0)) - { - if let Some(data) = &player.get_self_sync() { - peer.send_unreliable(socket_addr, SelfSync(data.clone())); - } + if let Some(_) = self.current_map { + if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { + match peer { + PeerKind::Client(peer, socket_addr) => { + if let Some(player) = self + .players + .iter() + .find(|p| p.id() == self.self_id.unwrap_or(0)) + { + if let Some(data) = &player.get_self_sync() { + peer.send_unreliable(socket_addr, SelfSync(data.clone())); } } - PeerKind::Server(peer, _) => { - let mut sync_data = HashMap::new(); - for player in &self.players { - if let Some(character) = &player.character { - if character.dyn_bind().is_dead() { - continue; - } - } - if let (Some(dir), Some(look_up), Some(transform)) = ( - player.get_move_dir(), - player.get_look_up(), - player.get_transform(), - ) { - sync_data.insert( - player.id(), - SyncPackage { - movement_direction: dir, - look_up, - transform, - }, - ); + } + PeerKind::Server(peer, _) => { + let mut sync_data = HashMap::new(); + for player in &self.players { + if let Some(character) = &player.character { + if character.dyn_bind().is_dead() { + continue; } } - peer.broadcast_unreliable(Package::Sync( - sync_data, - self.world_ball.as_ref().map(|b| b.bind().get_sync()), - )); + if let (Some(dir), Some(look_up), Some(transform)) = ( + player.get_move_dir(), + player.get_look_up(), + player.get_transform(), + ) { + sync_data.insert( + player.id(), + SyncPackage { + movement_direction: dir, + look_up, + transform, + }, + ); + } } + peer.broadcast_unreliable(Package::Sync( + sync_data, + self.world_ball.as_ref().map(|b| b.bind().get_sync()), + )); } } }