From 61e04aa75aeca08197ed5cdd8e71ba79378b887f Mon Sep 17 00:00:00 2001 From: core Date: Sat, 16 May 2026 17:31:51 -0400 Subject: [PATCH] feat(netcode-rewrite): miscellaneous fixes --- crates/unified/src/client/crafting/ui.rs | 10 +++++----- crates/unified/src/client/input/mod.rs | 2 +- crates/unified/src/client/parts.rs | 11 ++++------- crates/unified/src/client/starguide/orbit.rs | 2 +- crates/unified/src/main.rs | 5 ----- crates/unified/src/server/craft.rs | 6 +++--- crates/unified/src/server/gravity.rs | 1 - crates/unified/src/server/heat/conduction.rs | 2 +- crates/unified/src/server/heat/radiation.rs | 2 +- crates/unified/src/server/mod.rs | 3 --- crates/unified/src/server/orbit/mod.rs | 12 ++++-------- crates/unified/src/server/planets.rs | 2 +- crates/unified/src/server/player/join.rs | 1 - crates/unified/src/server_plugins.rs | 6 ------ crates/unified/src/shared_plugins.rs | 10 ++++++++++ crates/unified/src/world_config.rs | 1 - 16 files changed, 31 insertions(+), 45 deletions(-) diff --git a/crates/unified/src/client/crafting/ui.rs b/crates/unified/src/client/crafting/ui.rs index 3b0754e41f2c5cc085dd37ed86bd420460b4d0ec..3f94051308c512da9b842926d6a5f1dc5a6690ee 100644 --- a/crates/unified/src/client/crafting/ui.rs +++ b/crates/unified/src/client/crafting/ui.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use bevy::{input_focus::{AutoFocus, InputFocus}, ui::RelativeCursorPosition}; +use bevy::{input_focus::AutoFocus, ui::RelativeCursorPosition}; use crate::{attachment::PartInShip, client::colors, config::recipe::RecipesConfig, ecs::{CanCraft, CraftPartRequest, CraftingUi, Drill, MainCamera, Me, Part, SingleStorage, ToggleDrillEvent, VariableStorage}, prelude::*}; @@ -70,7 +70,7 @@ fn setup_ui( variable_storage: Option<&VariableStorage>, ) { let parent_pos = camera.1.world_to_viewport(camera.2, parent_transform.translation).unwrap(); - let entity = commands.spawn(( + let _entity = commands.spawn(( UiTargetCamera(camera.0), Node { position_type: PositionType::Absolute, @@ -303,7 +303,7 @@ fn drill_button( mut text_query: Query<&mut Text>, drills: Query<&Drill>, ) { - for (interaction, mut previous_interaction, mut color, drill_button, mut button, children) in &mut interaction_query { + for (interaction, mut previous_interaction, mut color, drill_button, _button, children) in &mut interaction_query { match *interaction { Interaction::Pressed => { *color = colors::SURFACE_1.into(); @@ -391,10 +391,10 @@ fn close_button( (&Interaction, &mut PreviousInteraction, &mut BackgroundColor, &CloseButton, &mut Button), Changed, >, - mouse: Res>, + _mouse: Res>, ) { for (interaction, mut previous_interaction, mut color, - close_button, mut button) in &mut interaction_query + close_button, _button) in &mut interaction_query { match *interaction { Interaction::Pressed => { diff --git a/crates/unified/src/client/input/mod.rs b/crates/unified/src/client/input/mod.rs index 10cc8d2c868e694921b52b1d3c1068ed498c29be..a8fd76346ab64ee59c530a6d967f47acbf523aa3 100644 --- a/crates/unified/src/client/input/mod.rs +++ b/crates/unified/src/client/input/mod.rs @@ -46,7 +46,7 @@ pub fn input_plugin(app: &mut App) { #[derive(Resource, Default)] pub struct CursorWorldCoordinates(pub Option); -fn update_cursor_position( +pub fn update_cursor_position( q_windows: Query<&Window, With>, q_camera: Query<(&Camera, &GlobalTransform), With>, mut coords: ResMut, diff --git a/crates/unified/src/client/parts.rs b/crates/unified/src/client/parts.rs index f79c9ce5c6e1e91182e95a880da09da5263211d5..18059c97bca3af30313e4776dfb8b7fc0e715b3e 100644 --- a/crates/unified/src/client/parts.rs +++ b/crates/unified/src/client/parts.rs @@ -7,14 +7,12 @@ use crate::client::colors::GREEN; use crate::ecs::{DragRequestEvent, Part, MAIN_LAYER}; use crate::client::input::CursorWorldCoordinates; use bevy::color::palettes::css::{ORANGE, PURPLE, RED, YELLOW}; -use bevy::ui::update; use crate::client::ship::attachment::AttachmentDebugRes; use crate::prelude::*; pub fn parts_plugin(app: &mut App) { app.insert_resource(DragResource(None)); app.insert_resource(SnapResource(None, None)); - app.add_systems(PreUpdate, update_drag_ghosts); app.add_systems( Update, ( @@ -22,6 +20,7 @@ pub fn parts_plugin(app: &mut App) { handle_updated_parts, update_part_sprites, handle_updated_temperature, + update_drag_ghosts.after(crate::client::input::update_cursor_position), ), ); app.add_observer(on_part_release); @@ -196,7 +195,7 @@ fn on_part_release( drag.0 = None; } -const F: f32 = 2.0; // frequency (Hz) +const F: f32 = 6.0; // frequency (Hz) // 0.0 is undamped, 0.0-1.0 is underdamped, 1.0 is critical, and >1.0 is over const ZETA: f32 = 0.7; // damping const R: f32 = -0.6; // initial response speed @@ -267,7 +266,6 @@ fn update_drag_ghosts( joints: Query<(&Transform, &JointOf, Entity), Without>, parts: Query<(&GlobalTransform, Option<&Me>, Option<&PartInShip>), With>, linvel: Query<&LinearVelocity, With>, - dt: Res>, me: Single>, debug: Res, mut rsnap: ResMut, @@ -427,9 +425,8 @@ fn update_drag_ghosts( ghost_info.last_target_pos = best_target.translation; let partvel = linvel.single().unwrap(); - let t_dt = dt.delta_secs(); - ghost.translation.x += partvel.x as f32 * t_dt; - ghost.translation.y += partvel.y as f32 * t_dt; + ghost.translation.x += partvel.x as f32 * time.delta_secs(); + ghost.translation.y += partvel.y as f32 * time.delta_secs(); rsnap.0 = snap; rsnap.1 = best_self_snap; diff --git a/crates/unified/src/client/starguide/orbit.rs b/crates/unified/src/client/starguide/orbit.rs index 65cbce8d3fdf8506128ed4df3bc1840fd8220f15..c59ed0c71841ad7b6955631c430a8f1094413480 100644 --- a/crates/unified/src/client/starguide/orbit.rs +++ b/crates/unified/src/client/starguide/orbit.rs @@ -28,7 +28,7 @@ fn update_orbits( for (mass, planet, transform, velocity) in planets { if planet.name == "Sun" { continue } - let (other_mass, _, other_transform, other_velocity) = planets.iter().find(|f_planet| f_planet.1.name == planet.orbit.clone().unwrap().orbiting).unwrap(); + let (other_mass, _, other_transform, _other_velocity) = planets.iter().find(|f_planet| f_planet.1.name == planet.orbit.clone().unwrap().orbiting).unwrap(); let a = other_transform.translation - transform.translation; let hill_sphere = a.length()*(mass.0/(3.0*(other_mass.0+mass.0))).powf(1.0/3.0); diff --git a/crates/unified/src/main.rs b/crates/unified/src/main.rs index 968d56bc4d9028bc35075e6d7f851e3a55f57004..131a6769fd43844b8ca3b7407d2f1da2253457cb 100644 --- a/crates/unified/src/main.rs +++ b/crates/unified/src/main.rs @@ -84,10 +84,5 @@ fn main() -> AppExit { .finish() .init(); - ctrlc::set_handler(|| { - info!("caught ^C, ciao!"); - std::process::exit(0); - }).unwrap(); - run(cli) } diff --git a/crates/unified/src/server/craft.rs b/crates/unified/src/server/craft.rs index d808cba0cf050dfad200f9b696a33178f93013a6..21a1b4479d37fb3370fea5a9664c147905349c3a 100644 --- a/crates/unified/src/server/craft.rs +++ b/crates/unified/src/server/craft.rs @@ -11,14 +11,14 @@ fn receive_crafting_request( part_query: Query<(&Transform, &LinearVelocity, &Part, &PartInShip)>, player_query: Query<(Entity, &Transform, &LinearVelocity, &Part), With>, parts_query: Query<&Parts>, - mut single_storage_query: Query<(&mut SingleStorage)>, - mut variable_storage_query: Query<(&mut VariableStorage)>, + mut single_storage_query: Query<&mut SingleStorage >, + mut variable_storage_query: Query<&mut VariableStorage >, mut commands: Commands, asset_server: Res, ) { 'request: for request in craft_part_request.read() { // TODO: make crafting take time - let (transform, vel, part, parts_list) = if let Ok((transform, vel, part, part_in_ship)) = part_query.get(request.crafting_part) { + let (transform, vel, _part, parts_list) = if let Ok((transform, vel, part, part_in_ship)) = part_query.get(request.crafting_part) { // this is a normal part let Ok(parts_list) = parts_query.get(part_in_ship.0) else { warn!("Couldn't find parts list in part in ship"); diff --git a/crates/unified/src/server/gravity.rs b/crates/unified/src/server/gravity.rs index c60d6fe11bbfb79de2ce0dec860c78ff1610ef14..0ef5cae0514189f882073b47a32b2ac2b2736f32 100644 --- a/crates/unified/src/server/gravity.rs +++ b/crates/unified/src/server/gravity.rs @@ -1,4 +1,3 @@ -use bevy::math::FloatPow; use crate::config::planet::Planet; use crate::ecs::Part; use crate::prelude::*; diff --git a/crates/unified/src/server/heat/conduction.rs b/crates/unified/src/server/heat/conduction.rs index 150115334b5c52fd5234b652484c9a701c4b7f43..a9ff183edd02bf1ac4302defa81f41a9a2bb35a5 100644 --- a/crates/unified/src/server/heat/conduction.rs +++ b/crates/unified/src/server/heat/conduction.rs @@ -5,7 +5,7 @@ pub fn heat_conduction_plugin(app: &mut App) { } fn propagate_heat( - peers: Query<&Peer> + _peers: Query<&Peer> ) { } diff --git a/crates/unified/src/server/heat/radiation.rs b/crates/unified/src/server/heat/radiation.rs index 591c7dfd8a64bdd94bf6ad7af018daa8ba64385f..9076939aeec9acf0b8720efb2cb102ac9244a3e0 100644 --- a/crates/unified/src/server/heat/radiation.rs +++ b/crates/unified/src/server/heat/radiation.rs @@ -1,4 +1,4 @@ -use crate::{attachment::PartInShip, ecs::{Part, Player, Radiator, Temperature}, prelude::*}; +use crate::{ecs::{Part, Radiator, Temperature}, prelude::*}; const STEFAN_BOLTZMANN: f64 = 5.670374419E-8; const T_ENV: f64 = 4.0; // units: Kelvin diff --git a/crates/unified/src/server/mod.rs b/crates/unified/src/server/mod.rs index 13e9531b57127b8a1976ee10483652006943b32c..2ed0a832a92e5db60e392ceb5bf0843fd0534317 100644 --- a/crates/unified/src/server/mod.rs +++ b/crates/unified/src/server/mod.rs @@ -15,9 +15,6 @@ use crate::server::damping::damping_plugin; use crate::server::drill::drill_plugin; use crate::server::earth_parts::spawn_parts_plugin; use crate::server::gravity::newtonian_gravity_plugin; -use crate::server::heat::conduction::heat_conduction_plugin; -use crate::server::heat::cooling::heat_cooling_plugin; -use crate::server::heat::radiation::heat_radiation_plugin; use crate::server::part::part_management_plugin; use crate::server::planets::planets_plugin; use crate::server::player::player_management_plugin; diff --git a/crates/unified/src/server/orbit/mod.rs b/crates/unified/src/server/orbit/mod.rs index 9988f72bea6c4c8de62833eb6a931e4ba66a3935..c0b770c47a58bbff21edd15f669b73f03ee35687 100644 --- a/crates/unified/src/server/orbit/mod.rs +++ b/crates/unified/src/server/orbit/mod.rs @@ -1,14 +1,10 @@ use std::collections::HashMap; use std::f64::consts::PI; -use avian2d::dynamics::solver::solver_body::SolverBodyInertia; -use avian2d::math::{Scalar, TAU}; +use avian2d::math::TAU; use avian2d::prelude::{LinearVelocity, Mass}; -use bevy::log::debug; -use bevy::math::ops::atan2; -use bevy::prelude::{Component, Plugin, Transform}; +use bevy::prelude::{Plugin, Transform}; use bevy::time::Time; -use serde::{Deserialize, Serialize}; -use crate::config::planet::{Planet, PlanetSpring, PlanetSpringJoint}; +use crate::config::planet::{Planet, PlanetSpring}; use crate::prelude::{App, Query, Res, Update, Without}; use crate::world_config::WorldConfigResource; @@ -30,7 +26,7 @@ fn update_orbits( return; }; let parent_velocities = planets.iter().map(|u| (u.0.name.clone(), u.2.clone())).collect::>(); - for (planet, _, mut vel) in planets.iter_mut() { + for (planet, _, _vel) in planets.iter_mut() { let Some(orbit_data) = &planet.orbit else { continue; }; // find parent let Some(parent) = planets_2.iter().find(|u| u.0.name == orbit_data.orbiting) else { continue; }; diff --git a/crates/unified/src/server/planets.rs b/crates/unified/src/server/planets.rs index 95b2a1ced8b3ce7bcb852c9aa4f76f5eb98d4a50..6eadda43d8bbf23ce162c3af636efe3dac66e5dc 100644 --- a/crates/unified/src/server/planets.rs +++ b/crates/unified/src/server/planets.rs @@ -122,7 +122,7 @@ pub fn update_planets( .iter_mut() .find(|(_, p, _, _)| p.name == planet.name); - if let Some((existing, mut e_planet, mut e_transform, mut e_mass)) = + if let Some((existing, mut e_planet, _e_transform, mut e_mass)) = existing_planet { commands diff --git a/crates/unified/src/server/player/join.rs b/crates/unified/src/server/player/join.rs index d801d3ab4d83551cdcb8cca2a1f1ee24e2e2cb9b..2259f7470d0d355f3de5a34afad070fe83747bd9 100644 --- a/crates/unified/src/server/player/join.rs +++ b/crates/unified/src/server/player/join.rs @@ -1,4 +1,3 @@ -use crate::attachment::PartInShip; use crate::config::planet::Planet; use crate::config::world::GlobalWorldConfig; use crate::ecs::{Me, Player, PlayerStorage}; diff --git a/crates/unified/src/server_plugins.rs b/crates/unified/src/server_plugins.rs index 7a1cb5cd9ad6e4f45989328bec55c09b21ac5304..8d31043dafd0d22dcf5d01242488884850b908b1 100644 --- a/crates/unified/src/server_plugins.rs +++ b/crates/unified/src/server_plugins.rs @@ -7,12 +7,6 @@ pub struct ServerPluginGroup; impl PluginGroup for ServerPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() - .add_group( - PhysicsPlugins::default() - .with_length_unit(100.0) - .build() - .disable::() - ) .add(crate::server::ServerPlugin) } } diff --git a/crates/unified/src/shared_plugins.rs b/crates/unified/src/shared_plugins.rs index dd7e65690eaa4ba67891b06fe54f4bbafb66c757..489891418cfa8d6a6ac271a6056e4613e1ac6ae9 100644 --- a/crates/unified/src/shared_plugins.rs +++ b/crates/unified/src/shared_plugins.rs @@ -14,6 +14,16 @@ pub struct SharedPluginGroup; impl PluginGroup for SharedPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() + .add(|app: &mut App| { + app.insert_resource(Time::from_hz(20.0)); + }) + .add_group( + PhysicsPlugins::default() + .with_length_unit(100.0) + .set(PhysicsInterpolationPlugin::interpolate_all()) + .build() + .disable::() + ) .add(physics_setup_plugin) .add(register_everything) .add(world_config_plugin) diff --git a/crates/unified/src/world_config.rs b/crates/unified/src/world_config.rs index 6ab4d3e21a22bdd9c5c5153f98b6e410bfcbf3a0..721e5dbb314f4ade3885d9e457a1841ab893da67 100644 --- a/crates/unified/src/world_config.rs +++ b/crates/unified/src/world_config.rs @@ -1,6 +1,5 @@ use crate::config::world::GlobalWorldConfig; use bevy::asset::Handle; -use crate::config::planet::PlanetSpringJoint; use crate::prelude::*; pub fn world_config_plugin(app: &mut App) {