From 0f9dc3e24fd39d202acbccdce99160908801b0b9 Mon Sep 17 00:00:00 2001 From: ghostly_zsh Date: Wed, 20 May 2026 23:15:10 -0500 Subject: [PATCH] fix: time offset to sync orbit --- crates/unified/src/client/components/mod.rs | 2 +- crates/unified/src/client/mod.rs | 14 ++++++++++---- crates/unified/src/client/zoom.rs | 6 ++++-- crates/unified/src/server/player/join.rs | 6 ++++-- crates/unified/src/shared/ecs.rs | 3 +++ crates/unified/src/shared/net.rs | 5 +++-- crates/unified/src/shared/orbit.rs | 7 +++++-- crates/unified/src/shared/plugins.rs | 3 ++- 8 files changed, 32 insertions(+), 14 deletions(-) diff --git a/crates/unified/src/client/components/mod.rs b/crates/unified/src/client/components/mod.rs index 3023c7977e1723e1f8b43ef831f0133acc426835..7d6c4d8bbd814a3a9076b04c6f58506ba82e97b8 100644 --- a/crates/unified/src/client/components/mod.rs +++ b/crates/unified/src/client/components/mod.rs @@ -1,4 +1,4 @@ -use crate::prelude::Component; +use crate::prelude::{Component, Resource}; #[derive(Component)] pub struct MainCamera; diff --git a/crates/unified/src/client/mod.rs b/crates/unified/src/client/mod.rs index f23446ba634d16ff947c264b14a4f2a7b278e7a5..7ca9848114f16bfc01ad088321aa072992f97818 100644 --- a/crates/unified/src/client/mod.rs +++ b/crates/unified/src/client/mod.rs @@ -19,7 +19,7 @@ use crate::prelude::*; use planet::incoming_planets::incoming_planets_plugin; use crate::client::components::Me; use crate::client::ship::attachment::client_attachment_plugin; -use crate::shared::ecs::GameplayState; +use crate::shared::ecs::{GameplayState, TimeOffset}; use crate::shared::gravity::update_gravity; use crate::shared::net::Hi; use crate::shared::orbit::OrbitPlugin; @@ -65,7 +65,8 @@ impl Plugin for ClientPlugin { .add_plugins(crafting_ui_plugin) .add_systems(Update, find_me) .insert_state(GameplayState::Main) - .insert_resource(DebugPickingMode::Disabled); + .insert_resource(DebugPickingMode::Disabled) + .insert_resource(TimeOffset::default()); let server = self.server.clone(); app.add_systems(PostStartup, move |mut commands: Commands| { @@ -117,10 +118,15 @@ pub fn on_disconnected(trigger: On, names: Query<&Name>) { } } -pub fn find_me(mut msgs: MessageReader, mut commands: Commands) { +pub fn find_me( + mut msgs: MessageReader, + mut commands: Commands, + mut time_offset: ResMut, +) { for msg in msgs.read() { let we_are = msg.you_are; info!(?we_are, "joined successfully"); commands.entity(we_are).insert(Me); + time_offset.0 = msg.time_offset; } -} \ No newline at end of file +} diff --git a/crates/unified/src/client/zoom.rs b/crates/unified/src/client/zoom.rs index 23ea6cde3d7e8c0de34275fe6d49d2c07fcabc98..2e4dcc7f276cc6fbda7ccbab904f49a9a6a853a3 100644 --- a/crates/unified/src/client/zoom.rs +++ b/crates/unified/src/client/zoom.rs @@ -7,6 +7,8 @@ use crate::client::starfield::{parallax_layer_translation, StarfieldSize, BACK_S use crate::client::starguide::components::{StarfieldBack, StarfieldFront, StarfieldMid, StarguideCamera}; use crate::shared::ecs::GameplayState; +const STARGUIDE_ZOOM_LEVEL: f32 = 20.0; + fn restore_tiled(sprite: &mut Sprite, size: Option<&StarfieldSize>) { if let Some(size) = size { sprite.image_mode = SpriteImageMode::Tiled { @@ -100,7 +102,7 @@ fn on_scroll( camera_projection.scale *= 1.03; starguide_projection.scale *= 1.03; } - if camera_projection.scale > 20.0 && matches!(gameplay_state.get(), GameplayState::Main) { + if camera_projection.scale > STARGUIDE_ZOOM_LEVEL && matches!(gameplay_state.get(), GameplayState::Main) { camera.0.is_active = false; starguide_camera.0.is_active = true; starguide_camera.2.translation = player.translation; @@ -112,7 +114,7 @@ fn on_scroll( *visibility_back = Visibility::Hidden; *visibility_mid = Visibility::Hidden; *visibility_front = Visibility::Hidden; - } else if camera_projection.scale <= 20.0 && matches!(gameplay_state.get(), GameplayState::Starguide) { + } else if camera_projection.scale <= STARGUIDE_ZOOM_LEVEL && matches!(gameplay_state.get(), GameplayState::Starguide) { camera.0.is_active = true; gameplay_next_state.set(GameplayState::Main); starguide_camera.0.is_active = false; diff --git a/crates/unified/src/server/player/join.rs b/crates/unified/src/server/player/join.rs index b4d4e0ef86c19cbb1005c5ff108f8aa7798492e5..8f8ea64bd4630c5ed79ab1f9fd7bb36f7e8cc58b 100644 --- a/crates/unified/src/server/player/join.rs +++ b/crates/unified/src/server/player/join.rs @@ -69,7 +69,8 @@ pub fn handle_new_players( world_config: Res, planets: Query<(&Transform, &LinearVelocity, &Planet)>, asset_server: Res, - mut welcome_messages: MessageWriter> + mut welcome_messages: MessageWriter>, + time: Res