From 33095ec1b9e4c701a325635cbe7f5873b4eb4b37 Mon Sep 17 00:00:00 2001 From: Sofia Date: Mon, 20 Jul 2026 20:35:31 +0300 Subject: [PATCH] Improve latency when client is shooting --- rust/src/game_manager.rs | 7 ++++++- rust/src/player.rs | 10 ++++++---- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 68b5c20..d30c71d 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -340,8 +340,13 @@ impl Game { look_up: f32, deal_damage: bool, ) -> bool { + let self_id = self.self_id.clone().unwrap_or(0); if let Some(player) = self.find_player_mut(player_id) { - player.try_shoot(to, transform, look_up, deal_damage) + if player.id != self_id { + player.try_shoot(to, transform, look_up, deal_damage) + } else { + false + } } else { false } diff --git a/rust/src/player.rs b/rust/src/player.rs index bed8cf4..e39db1c 100644 --- a/rust/src/player.rs +++ b/rust/src/player.rs @@ -255,10 +255,12 @@ impl ICharacterBody3D for LocalPlayer { if let Some(peer) = &mut NetworkManager::singleton().bind_mut().peer { match peer { PeerKind::Client(peer, addr) => { - peer.send_reliable( - addr, - Shoot(0, pos.into(), self.get_transform(), self.look_up), - ); + if self.try_shoot(pos, false) { + peer.send_reliable( + addr, + Shoot(0, pos.into(), self.get_transform(), self.look_up), + ); + } } PeerKind::Server(peer, _) => { if self.try_shoot(pos, true) {