From a376e219865be16cfa3bc43be78ea441a7ef5c09 Mon Sep 17 00:00:00 2001 From: core Date: Tue, 8 Jul 2025 13:57:48 -0400 Subject: [PATCH] chore: fix more things --- crates/unified/src/client/parts.rs | 24 +++++-------- crates/unified/src/clientevent.rs | 25 -------------- crates/unified/src/ecs.rs | 4 +++ crates/unified/src/lib.rs | 1 - crates/unified/src/main.rs | 3 ++ crates/unified/src/server/gravity.rs | 3 +- crates/unified/src/server/mod.rs | 3 -- crates/unified/src/server/part_dragging.rs | 39 ---------------------- crates/unified/src/shared_plugins.rs | 7 ++-- 9 files changed, 19 insertions(+), 90 deletions(-) delete mode 100644 crates/unified/src/clientevent.rs delete mode 100644 crates/unified/src/server/part_dragging.rs diff --git a/crates/unified/src/client/parts.rs b/crates/unified/src/client/parts.rs index 9c6ab3191e28406c6de7c1e89bb261b5860a2c5f..cef5c307932fd5584022dd62802be36e590208e5 100644 --- a/crates/unified/src/client/parts.rs +++ b/crates/unified/src/client/parts.rs @@ -1,14 +1,13 @@ use std::fmt::Debug; -use crate::ecs::{CursorWorldCoordinates, Part}; +use crate::ecs::{CursorWorldCoordinates, DragRequestEvent, Part}; use bevy::prelude::*; use bevy_rapier2d::dynamics::MassProperties; use bevy_rapier2d::prelude::{AdditionalMassProperties, ReadMassProperties, RigidBody}; use crate::client::Me; -use crate::clientevent::{PartDragControlEvent, PartDragEvent}; pub fn parts_plugin(app: &mut App) { app.insert_resource(DragResource(None)); - app.add_systems(Update, (handle_incoming_parts, handle_updated_parts, send_drag)); + app.add_systems(Update, (handle_incoming_parts, handle_updated_parts)); app.add_observer(on_part_release); } @@ -65,26 +64,19 @@ fn handle_updated_parts( struct DragResource(Option); -fn on_part_click(ev: Trigger>, sprites: Query<&Sprite, Without>, mut drag: ResMut, mut events: EventWriter) { +fn on_part_click(ev: Trigger>, sprites: Query<&Sprite, Without>, mut drag: ResMut) { if ev.button != PointerButton::Primary { return; }; let Ok(sprite) = sprites.get(ev.target()) else { return; }; - drag.0 = Some(ev.target()); - - events.write(PartDragControlEvent::Start(ev.target())); } -fn on_part_release(ev: Trigger>, mut drag: ResMut, mut events: EventWriter) { + +fn on_part_release(ev: Trigger>, mut drag: ResMut, mut events: EventWriter, cursor: Res) { if ev.button != PointerButton::Primary { return; }; - if let Some(e) = drag.0 { - events.write(PartDragControlEvent::Stop(e)); + if let Some(e) = drag.0 && let Some(c) = cursor.0 { + debug!(?e, ?c, "sending drag request"); + events.write(DragRequestEvent(e, c)); } drag.0 = None; -} -fn send_drag(drag: ResMut, coords: Res, mut events: EventWriter) { - let Some(dragging) = drag.0 else { return; }; - let Some(coordinates) = coords.0 else { return; }; - - events.write(PartDragEvent(dragging, coordinates)); } \ No newline at end of file diff --git a/crates/unified/src/clientevent.rs b/crates/unified/src/clientevent.rs deleted file mode 100644 index 062bb3925bc6010d7ad64de65492be5ffd69b820..0000000000000000000000000000000000000000 --- a/crates/unified/src/clientevent.rs +++ /dev/null @@ -1,25 +0,0 @@ -use bevy::ecs::entity::MapEntities; -use bevy::math::Vec2; -use bevy::prelude::{Entity, EntityMapper, Event}; -use serde::{Deserialize, Serialize}; - -#[derive(Debug, Deserialize, Event, Serialize, Clone)] -pub struct PartDragEvent(pub Entity, pub Vec2); -impl MapEntities for PartDragEvent { - fn map_entities(&mut self, entity_mapper: &mut E) { - self.0 = entity_mapper.get_mapped(self.0); - } -} -#[derive(Debug, Deserialize, Event, Serialize, Clone)] -pub enum PartDragControlEvent { - Start(Entity), - Stop(Entity) -} -impl MapEntities for PartDragControlEvent { - fn map_entities(&mut self, entity_mapper: &mut E) { - match self { - PartDragControlEvent::Start(entity) => *entity = entity_mapper.get_mapped(*entity), - PartDragControlEvent::Stop(entity) => *entity = entity_mapper.get_mapped(*entity), - } - } -} \ No newline at end of file diff --git a/crates/unified/src/ecs.rs b/crates/unified/src/ecs.rs index c478d1309ca139abb6a31e3c8dcfb55a10c194bc..7c20e8975cc3bc2415240979da962c900062174e 100644 --- a/crates/unified/src/ecs.rs +++ b/crates/unified/src/ecs.rs @@ -1,3 +1,4 @@ +use bevy::ecs::entity::MapEntities; use bevy::math::Vec2; use bevy::prelude::{Bundle, Component, Entity, Event, Resource, Transform}; use bevy_rapier2d::dynamics::AdditionalMassProperties; @@ -65,3 +66,6 @@ pub struct Particles { pub effect: String, pub active: bool, } + +#[derive(Serialize, Deserialize, Event, Debug, MapEntities, Clone)] +pub struct DragRequestEvent(#[entities] pub Entity, pub Vec2); \ No newline at end of file diff --git a/crates/unified/src/lib.rs b/crates/unified/src/lib.rs index 13f8b9cfe6e61fc76de68c65e5e23f80cad70ebd..fbeac3d22229ab74210dd2693106cb5ae51a4cd8 100644 --- a/crates/unified/src/lib.rs +++ b/crates/unified/src/lib.rs @@ -27,5 +27,4 @@ pub mod server_plugins; pub mod shared_plugins; #[cfg(all(not(target_arch = "wasm32"), feature = "particle_editor"))] pub mod particle_editor; -pub mod clientevent; pub mod attachment; \ No newline at end of file diff --git a/crates/unified/src/main.rs b/crates/unified/src/main.rs index 8a673cd4732d21aafccea7307042011e4f7a6dcc..13bcd098ceda70c2ba41be21a947239d6fd11783 100644 --- a/crates/unified/src/main.rs +++ b/crates/unified/src/main.rs @@ -7,7 +7,9 @@ use starkingdoms::server_plugins::ServerPluginGroup; use starkingdoms::shared_plugins::SharedPluginGroup; use std::net::SocketAddr; use std::process::exit; +use std::str::FromStr; use tracing_subscriber::EnvFilter; +use tracing_subscriber::filter::Directive; use tracing_subscriber::util::SubscriberInitExt; #[derive(Parser, Debug)] @@ -37,6 +39,7 @@ fn main() -> AppExit { tracing_subscriber::fmt() .with_env_filter( EnvFilter::from_default_env() + .add_directive(Directive::from_str("naga=error").unwrap()) ) .finish() .init(); diff --git a/crates/unified/src/server/gravity.rs b/crates/unified/src/server/gravity.rs index 20132b5598394dfe87ae0cd3430c4ae586fbe0cb..48cd424730b1f1a8ebded5585794bb2384185155 100644 --- a/crates/unified/src/server/gravity.rs +++ b/crates/unified/src/server/gravity.rs @@ -4,14 +4,13 @@ use crate::server::world_config::WorldConfigResource; use bevy::math::FloatPow; use bevy::prelude::*; use bevy_rapier2d::prelude::*; -use crate::server::part_dragging::BeingDragged; pub fn newtonian_gravity_plugin(app: &mut App) { app.add_systems(Update, update_gravity); } fn update_gravity( - mut part_query: Query<(&Transform, &ReadMassProperties, &mut ExternalForce), (With, Without)>, + mut part_query: Query<(&Transform, &ReadMassProperties, &mut ExternalForce), (With)>, planet_query: Query<(&Transform, &ReadMassProperties), With>, world_config: Res, ) { diff --git a/crates/unified/src/server/mod.rs b/crates/unified/src/server/mod.rs index 9c299e3391610914876b864cef8800eeefca41eb..5b82cab4f2ee32917ef00688c1630d3f12408742 100644 --- a/crates/unified/src/server/mod.rs +++ b/crates/unified/src/server/mod.rs @@ -3,7 +3,6 @@ pub mod planets; pub mod player; mod world_config; mod earth_parts; -mod part_dragging; mod part; use crate::server::gravity::newtonian_gravity_plugin; @@ -20,7 +19,6 @@ use bevy_replicon::prelude::Replicated; use std::net::SocketAddr; use crate::server::earth_parts::spawn_parts_plugin; use crate::server::part::part_config_plugin; -use crate::server::part_dragging::part_dragging_plugin; pub struct ServerPlugin { pub bind: SocketAddr, @@ -48,7 +46,6 @@ impl Plugin for ServerPlugin { .add_plugins(world_config_plugin) .add_plugins(newtonian_gravity_plugin) .add_plugins(player_management_plugin) - .add_plugins(part_dragging_plugin) .add_plugins(spawn_parts_plugin) .add_plugins(part_config_plugin); } diff --git a/crates/unified/src/server/part_dragging.rs b/crates/unified/src/server/part_dragging.rs deleted file mode 100644 index 7e53e918796e7b98b31f3540eaaa6bcb75eb33be..0000000000000000000000000000000000000000 --- a/crates/unified/src/server/part_dragging.rs +++ /dev/null @@ -1,39 +0,0 @@ -use bevy::prelude::*; -use bevy_rapier2d::prelude::{Collider, ColliderDisabled}; -use bevy_replicon::prelude::FromClient; -use crate::clientevent::{PartDragControlEvent, PartDragEvent}; -use crate::ecs::Part; - -pub fn part_dragging_plugin(app: &mut App) { - app.add_systems(Update, (handle_dragged_parts, handle_start_stop_drag)); -} - -// todo: attachment - -#[derive(Component)] -pub struct BeingDragged; - -fn handle_dragged_parts(mut transforms: Query<&mut Transform, (With)>, mut events: EventReader>) { - for event in events.read() { - let Ok(mut transform) = transforms.get_mut(event.0) else { continue; }; - transform.translation = (event.1, 0.0).into(); - } -} -fn handle_start_stop_drag(mut colliders: Query<&Collider, With>, mut events: EventReader>, mut commands: Commands) { - for event in events.read() { - let entity = match &event.event { - PartDragControlEvent::Start(e) => *e, - PartDragControlEvent::Stop(e) => *e, - }; - let Ok(_) = colliders.get(entity) else { continue; }; - match &event.event { - PartDragControlEvent::Start(_) => { - commands.entity(entity) - .insert(BeingDragged); - }, - PartDragControlEvent::Stop(_) => { - commands.entity(entity).remove::(); - } - } - } -} \ No newline at end of file diff --git a/crates/unified/src/shared_plugins.rs b/crates/unified/src/shared_plugins.rs index 790138859e0a44e4124a4fdc339927c0b1835304..179948bac044e7166d13e18d2c240f36d0dc60db 100644 --- a/crates/unified/src/shared_plugins.rs +++ b/crates/unified/src/shared_plugins.rs @@ -1,11 +1,10 @@ use crate::config::planet::Planet; -use crate::ecs::{Part, Particles, Player, ThrustEvent}; +use crate::ecs::{DragRequestEvent, Part, Particles, Player, ThrustEvent}; use bevy::app::{App, PluginGroup, PluginGroupBuilder}; use bevy::prelude::*; use bevy_rapier2d::prelude::*; use bevy_replicon::prelude::{AppRuleExt, Channel, ClientEventAppExt}; use crate::attachment::{Joint, JointOf, JointSnapFor, PartInShip, Peer, Ship}; -use crate::clientevent::{PartDragControlEvent, PartDragEvent}; pub struct SharedPluginGroup; @@ -22,9 +21,9 @@ impl PluginGroup for SharedPluginGroup { pub fn register_everything(app: &mut App) { app .add_client_event::(Channel::Ordered) - .add_mapped_client_event::(Channel::Unreliable) - .add_mapped_client_event::(Channel::Ordered) + .add_mapped_client_event::(Channel::Ordered) .replicate::() + .replicate::() .replicate::() .replicate::() .replicate::()