From 39baf66c3db36da0bb8fed8dc2389efe5a67f905 Mon Sep 17 00:00:00 2001 From: core Date: Wed, 19 Nov 2025 19:54:39 -0500 Subject: [PATCH] fix: slight refactor --- crates/unified/src/client/key_input.rs | 67 +----------------- crates/unified/src/client/mod.rs | 23 ++++--- crates/unified/src/client/net.rs | 2 +- crates/unified/src/client/parts.rs | 14 +--- crates/unified/src/client/ship/attachment.rs | 72 ++++++++++++++++++++ crates/unified/src/client/ship/mod.rs | 1 + 6 files changed, 91 insertions(+), 88 deletions(-) create mode 100644 crates/unified/src/client/ship/attachment.rs create mode 100644 crates/unified/src/client/ship/mod.rs diff --git a/crates/unified/src/client/key_input.rs b/crates/unified/src/client/key_input.rs index 58e5e64bdc0d05bbdd31c40b5f1e65bd06fe7506..bb8bafd62ad3027b5974a9be5419c5179cc60331 100644 --- a/crates/unified/src/client/key_input.rs +++ b/crates/unified/src/client/key_input.rs @@ -1,9 +1,5 @@ -use crate::attachment::{JointOf, Peer, SnapOf}; -use crate::ecs::{Part, ThrustEvent}; -use bevy::color::palettes::css::{FUCHSIA, GREEN, ORANGE, WHITE}; +use crate::ecs::ThrustEvent; use bevy::dev_tools::picking_debug::DebugPickingMode; -use bevy::gizmos::gizmos::Gizmos; -use bevy::math::{Vec3, Vec3Swizzles}; use crate::prelude::*; use bevy::{ app::{App, Update}, @@ -11,25 +7,15 @@ use bevy::{ input::{ButtonInput, keyboard::KeyCode}, }; use std::ops::Deref; -use avian2d::prelude::*; +use crate::client::ship::attachment::AttachmentDebugRes; pub fn key_input_plugin(app: &mut App) { app.add_systems(Update, directional_keys) .add_systems(Update, debug_render_keybind) - .init_resource::() - .init_resource::() - .add_systems(Update, draw_attachment_debug); + .init_resource::(); } -#[derive(Resource, Default)] -pub struct AttachmentDebugRes(pub bool); -impl Deref for AttachmentDebugRes { - type Target = bool; - fn deref(&self) -> &Self::Target { - &self.0 - } -} #[derive(Resource, Default)] pub struct PhysicsDebugRes(pub bool); impl Deref for PhysicsDebugRes { @@ -79,50 +65,3 @@ fn directional_keys(keys: Res>, mut thrust_event: MessageWr } } -fn draw_attachment_debug( - joints: Query<(&Transform, &JointOf, Option<&Peer>)>, - snaps: Query<(&Transform, &SnapOf)>, - parts: Query<&GlobalTransform, With>, - mut gizmos: Gizmos, - state: ResMut, -) { - if !state.0 { - return; - } - for (offset, parent, peer) in joints.iter() { - let Ok(parent_pos) = parts.get(parent.0) else { - continue; - }; - let joint_target = parent_pos.transform_point(offset.translation); - gizmos.cross_2d(joint_target.xy(), 4.0, FUCHSIA); - - if let Some(peer_id) = peer - && let Ok(peer) = joints.get(peer_id.peer_joint_entity_id) - { - let Ok(peer_parent_pos) = parts.get(peer.1.0) else { - continue; - }; - gizmos.arrow_2d( - peer_parent_pos.translation().xy(), - peer_parent_pos.translation().xy() - + ((peer.0.rotation * peer_parent_pos.rotation()) - .mul_vec3(Vec3::Y) - .xy() - * 20.0), - ORANGE, - ); - gizmos.arrow_2d( - parent_pos.translation().xy(), - peer_parent_pos.translation().xy(), - WHITE, - ); - } - } - for (offset, parent) in snaps.iter() { - let Ok(parent_pos) = parts.get(parent.0) else { - continue; - }; - let joint_snap = parent_pos.transform_point(offset.translation); - gizmos.cross_2d(joint_snap.xy(), 4.0, GREEN); - } -} diff --git a/crates/unified/src/client/mod.rs b/crates/unified/src/client/mod.rs index 161d4f58816921d537665b08160a5c61605c6e6b..d2fb39d417ef4e7420bf4e81f5d641b2cd18b36f 100644 --- a/crates/unified/src/client/mod.rs +++ b/crates/unified/src/client/mod.rs @@ -1,13 +1,3 @@ -mod colors; -mod key_input; -mod net; -mod particles; -mod parts; -mod planet; -mod starfield; -mod ui; -mod zoom; - use crate::client::key_input::key_input_plugin; use crate::client::net::set_config; use crate::client::parts::parts_plugin; @@ -24,6 +14,18 @@ use bevy::post_process::bloom::Bloom; use crate::prelude::*; use bevy::window::PrimaryWindow; use planet::incoming_planets::incoming_planets_plugin; +use crate::client::ship::attachment::client_attachment_plugin; + +pub mod colors; +pub mod key_input; +pub mod net; +pub mod particles; +pub mod parts; +pub mod planet; +pub mod starfield; +pub mod ui; +pub mod zoom; +pub mod ship; pub struct ClientPlugin { pub server: Option, @@ -52,6 +54,7 @@ impl Plugin for ClientPlugin { .add_plugins(starfield_plugin) .add_plugins(ui_plugin) .add_plugins(zoom_plugin) + .add_plugins(client_attachment_plugin) .insert_resource(DebugPickingMode::Disabled); if self.server.is_some() { app.add_observer(net::on_connecting) diff --git a/crates/unified/src/client/net.rs b/crates/unified/src/client/net.rs index 910923f2cc36233692dfc275fcf3573bdef4d81e..682dcf3099a2803d390f4f33d4df7fe861dfd79a 100644 --- a/crates/unified/src/client/net.rs +++ b/crates/unified/src/client/net.rs @@ -6,7 +6,7 @@ use crate::prelude::*; pub fn set_config(mut q: Query<&mut TransportConfig, Added>) { for mut q in &mut q { - q.max_memory_usage = 8_388_608; // 8 MiB + q.max_memory_usage = 536_870_912; // 512 MiB } } diff --git a/crates/unified/src/client/parts.rs b/crates/unified/src/client/parts.rs index 0a8763f8d09126397632740bb4424f52f497aea9..93c8ee9090990c063365909758bb5e338b44df8c 100644 --- a/crates/unified/src/client/parts.rs +++ b/crates/unified/src/client/parts.rs @@ -42,11 +42,6 @@ fn handle_incoming_parts( commands .entity(new_entity) .insert(sprite) - /*.insert(AdditionalMassProperties::MassProperties(MassProperties { - local_center_of_mass: Vec2::ZERO, - mass: new_part.strong_config.physics.mass, - principal_inertia: 7.5, - }))*/ .insert(Pickable::default()) .observe(on_part_click); } @@ -70,14 +65,7 @@ fn handle_updated_parts( commands .entity(updated_entity) .remove::() - //.remove::() - .insert(sprite) - /* - .insert(AdditionalMassProperties::MassProperties(MassProperties { - local_center_of_mass: Vec2::ZERO, - mass: updated_part.strong_config.physics.mass, - principal_inertia: 7.5, - }))*/; + .insert(sprite); } } diff --git a/crates/unified/src/client/ship/attachment.rs b/crates/unified/src/client/ship/attachment.rs new file mode 100644 index 0000000000000000000000000000000000000000..e9dfe35a81d88b2f9e2e0584a0dab6f900d1e438 --- /dev/null +++ b/crates/unified/src/client/ship/attachment.rs @@ -0,0 +1,72 @@ +use std::ops::Deref; +use bevy::color::palettes::basic::{FUCHSIA, GREEN, WHITE}; +use bevy::color::palettes::css::ORANGE; +use crate::attachment::{JointOf, Peer, SnapOf}; +use crate::ecs::Part; +use crate::prelude::*; + +pub fn client_attachment_plugin(app: &mut App) { + app + .init_resource::() + .add_systems(Update, draw_attachment_debug); +} + + +#[derive(Resource, Default)] +pub struct AttachmentDebugRes(pub bool); +impl Deref for AttachmentDebugRes { + type Target = bool; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + + +pub fn draw_attachment_debug( + joints: Query<(&Transform, &JointOf, Option<&Peer>)>, + snaps: Query<(&Transform, &SnapOf)>, + parts: Query<&GlobalTransform, With>, + mut gizmos: Gizmos, + state: ResMut, +) { + if !state.0 { + return; + } + for (offset, parent, peer) in joints.iter() { + let Ok(parent_pos) = parts.get(parent.0) else { + continue; + }; + let joint_target = parent_pos.transform_point(offset.translation); + gizmos.cross_2d(joint_target.xy(), 4.0, FUCHSIA); + + if let Some(peer_id) = peer + && let Ok(peer) = joints.get(peer_id.peer_joint_entity_id) + { + let Ok(peer_parent_pos) = parts.get(peer.1.0) else { + continue; + }; + gizmos.arrow_2d( + peer_parent_pos.translation().xy(), + peer_parent_pos.translation().xy() + + ((peer.0.rotation * peer_parent_pos.rotation()) + .mul_vec3(Vec3::Y) + .xy() + * 20.0), + ORANGE, + ); + gizmos.arrow_2d( + parent_pos.translation().xy(), + peer_parent_pos.translation().xy(), + WHITE, + ); + } + } + for (offset, parent) in snaps.iter() { + let Ok(parent_pos) = parts.get(parent.0) else { + continue; + }; + let joint_snap = parent_pos.transform_point(offset.translation); + gizmos.cross_2d(joint_snap.xy(), 4.0, GREEN); + } +} diff --git a/crates/unified/src/client/ship/mod.rs b/crates/unified/src/client/ship/mod.rs new file mode 100644 index 0000000000000000000000000000000000000000..39005b9cd6df72a6ec5fab64e7f811eaea94e69c --- /dev/null +++ b/crates/unified/src/client/ship/mod.rs @@ -0,0 +1 @@ +pub mod attachment; \ No newline at end of file