diff --git a/rust/src/game_manager.rs b/rust/src/game_manager.rs index 1bbefc0..cd58b3c 100644 --- a/rust/src/game_manager.rs +++ b/rust/src/game_manager.rs @@ -953,6 +953,11 @@ impl Game { // Handle a jump, either from the server or from a client pub fn handle_jump(&mut self, player_id: u16) { + if let Some(recorder) = &mut self.replay_recorder { + recorder + .bind_mut() + .record_event(ReplayEvent::Jump(player_id)); + } if player_id != self.self_id.unwrap_or(0) { if let Some(player) = self.find_player_mut(player_id) { player.apply_jump(); diff --git a/rust/src/replay.rs b/rust/src/replay.rs index ea2536c..0d98783 100644 --- a/rust/src/replay.rs +++ b/rust/src/replay.rs @@ -109,6 +109,11 @@ impl INode for ReplayPlayback { } } } + ReplayEvent::Jump(player_id) => { + if let Some(character) = self.player_characters.get_mut(player_id) { + character.bind_mut().jump(); + } + } } } } @@ -267,6 +272,7 @@ pub enum ReplayEvent { Death(DamageSource, u16), Shoot(u16, Vector3), Respawn(u16, ReplayPlayerState), + Jump(u16), } #[derive(Debug, Clone, Default)]