From d2b244966e1ccdad8e8a025b3cf3c65fd8520f20 Mon Sep 17 00:00:00 2001 From: Henauxg <19689618+Henauxg@users.noreply.github.com> Date: Thu, 3 Nov 2022 15:06:44 +0100 Subject: [example:breakout] Networked paddle movement --- examples/breakout/client.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'examples/breakout/client.rs') diff --git a/examples/breakout/client.rs b/examples/breakout/client.rs index e45c035..1596287 100644 --- a/examples/breakout/client.rs +++ b/examples/breakout/client.rs @@ -55,9 +55,12 @@ pub(crate) struct NetworkMapping { map: HashMap, } +#[derive(Component)] +pub(crate) struct Paddle; + /// The buttons in the main menu. #[derive(Clone, Copy, Component)] -pub enum MenuItem { +pub(crate) enum MenuItem { Host, Join, } @@ -98,6 +101,7 @@ fn spawn_paddle(commands: &mut Commands, position: &Vec3) -> Entity { ..default() }) .insert(Collider) + .insert(Paddle) .id() } @@ -127,6 +131,7 @@ pub(crate) fn handle_server_messages( mut client_data: ResMut, mut entity_mapping: ResMut, mut game_state: ResMut>, + mut paddles: Query<&mut Transform, With>, ) { while let Ok(Some(message)) = client.receive_message::() { match message { @@ -152,7 +157,13 @@ pub(crate) fn handle_server_messages( ServerMessage::StartGame {} => game_state.set(GameState::Running).unwrap(), ServerMessage::BrickDestroyed { client_id } => todo!(), ServerMessage::BallPosition { entity, position } => todo!(), - ServerMessage::PaddlePosition { entity, position } => todo!(), + ServerMessage::PaddlePosition { entity, position } => { + if let Some(local_paddle) = entity_mapping.map.get(&entity) { + if let Ok(mut paddle_transform) = paddles.get_mut(*local_paddle) { + paddle_transform.translation = position; + } + } + } } } } -- cgit v1.2.3