From 028986b26fc30a70f28bd165f8a07870854df75e Mon Sep 17 00:00:00 2001 From: core Date: Tue, 8 Jul 2025 19:20:21 -0400 Subject: [PATCH] chore: fix gravity --- crates/unified/assets/config/planets.pc.toml | 22 ++++++++++---------- crates/unified/assets/config/world.wc.toml | 2 +- crates/unified/src/server/gravity.rs | 5 +++++ crates/unified/src/server/player.rs | 16 +++++++------- 4 files changed, 25 insertions(+), 20 deletions(-) diff --git a/crates/unified/assets/config/planets.pc.toml b/crates/unified/assets/config/planets.pc.toml index 75dbb8b5bdac1a050970f4407e1bc88176475e2e..420f4b3d036f41b15b261735db71aebd6539a2d3 100644 --- a/crates/unified/assets/config/planets.pc.toml +++ b/crates/unified/assets/config/planets.pc.toml @@ -2,7 +2,7 @@ name = "Sun" sprite = "textures/sun.png" radius = 20_000.0 # m -mass = 16_000_000_000.0 # kg +mass = 16_000_000_000_000.0 # kg default_transform = [0.0, 0.0, 0.0] special_sprite_properties = { ForceColor = { Oklcha = { lightness = 10.0, chroma = 0.058, hue = 104.26, alpha = 1.0 } } } @@ -10,14 +10,14 @@ special_sprite_properties = { ForceColor = { Oklcha = { lightness = 10.0, chroma name = "Mercury" sprite = "textures/mercury_NEEDS_4_1_1.png" radius = 333.33 # m -mass = 205_000.0 # kg +mass = 205_000_000.0 # kg default_transform = [116_129.4, 0.0, 0.0] [[planets]] name = "Venus" sprite = "textures/venus.png" radius = 949.9 # m -mass = 806_166.0 # kg +mass = 806_166_000.0 # kg default_transform = [216_999.6, 0.0, 0.0] [[planets]] @@ -25,7 +25,7 @@ name = "Earth" sprite = "textures/earth.png" indicator_sprite = "textures/earth_icon.png" radius = 1000.0 # m -mass = 4_900_000.0 # kg +mass = 4_900_000_000.0 # kg default_transform = [300_000.0, 0.0, 0.0] [[planets]] @@ -33,7 +33,7 @@ name = "Moon" sprite = "textures/moon.png" indicator_sprite = "textures/moon_icon.png" radius = 272.7 # m -mass = 60_236.0 # kg +mass = 60_236_000.0 # kg default_transform = [305_700.0, 0.0, 0.0] [[planets]] @@ -41,40 +41,40 @@ name = "Mars" sprite = "textures/mars.png" indicator_sprite = "textures/mars_icon.png" radius = 531.0 # m -mass = 525_857.0 # kg +mass = 525_857_000.0 # kg default_transform = [430_000.0, 0.0, 0.0] [[planets]] name = "Jupiter" sprite = "textures/jupiter.png" radius = 10973.0 # m -mass = 1_131_221_218.0 # kg +mass = 1_131_221_218_000.0 # kg default_transform = [1_561_140.0, 0.0, 0.0] [[planets]] name = "Saturn" sprite = "textures/earth.png" radius = 9_140.2 # m -mass = 561_386_112.0 # kg +mass = 561_386_112_000.0 # kg default_transform = [2_874_780.0, 0.0, 0.0] [[planets]] name = "Uranus" sprite = "textures/venus.png" radius = 4007.0 # m -mass = 69_763_532.0 # kg +mass = 69_763_532_000.0 # kg default_transform = [4_050_000.0, 0.0, 0.0] [[planets]] name = "Neptune" sprite = "textures/mars.png" radius = 3_883.0 # m -mass = 106_674_649.0 # kg +mass = 106_674_649_000.0 # kg default_transform = [5_000_000.0, 0.0, 0.0] [[planets]] name = "Pluto" sprite = "textures/jupiter.png" radius = 186.8 # m -mass = 10817.0 # kg +mass = 10_817_000.0 # kg default_transform = [5_922_300.0, 0.0, 0.0] diff --git a/crates/unified/assets/config/world.wc.toml b/crates/unified/assets/config/world.wc.toml index e68a111ac162ad8fc45d2aaade393eb6632a6204..3cfcbbe9498eb041965a536b323122e03bd047f1 100644 --- a/crates/unified/assets/config/world.wc.toml +++ b/crates/unified/assets/config/world.wc.toml @@ -1,5 +1,5 @@ [world] -gravity = 2 +gravity = 0.001 spawn_parts_at = "Earth" spawn_parts_interval_secs = 10 diff --git a/crates/unified/src/server/gravity.rs b/crates/unified/src/server/gravity.rs index 48cd424730b1f1a8ebded5585794bb2384185155..4073e7dbfa39393a0938204e5b185291adddecf8 100644 --- a/crates/unified/src/server/gravity.rs +++ b/crates/unified/src/server/gravity.rs @@ -18,7 +18,12 @@ fn update_gravity( return; }; + + for (part_transform, part_mass, mut forces) in &mut part_query { + forces.force = Vec2::ZERO; + forces.torque = 0.0; + let part_mass = part_mass.mass; let part_translation = part_transform.translation; diff --git a/crates/unified/src/server/player.rs b/crates/unified/src/server/player.rs index 4f06661b2248eb4a43ab4c64eb50389a5940fe9c..c4b6295ef54417f96dd5d06a2b81cf4265df8e75 100644 --- a/crates/unified/src/server/player.rs +++ b/crates/unified/src/server/player.rs @@ -1,7 +1,7 @@ use std::f32::consts::PI; use crate::config::planet::Planet; -use crate::ecs::{Part, PartBundle, Particles, Player, PlayerThrust, ThrustEvent}; +use crate::ecs::{DragRequestEvent, Part, PartBundle, Particles, Player, PlayerThrust, ThrustEvent}; use crate::server::world_config::WorldConfigResource; use crate::server::{ConnectedGameEntity, ConnectedNetworkEntity}; use bevy::prelude::*; @@ -12,15 +12,15 @@ use bevy_replicon::prelude::{FromClient, Replicated}; use crate::server::part::{SpawnPart}; pub fn player_management_plugin(app: &mut App) { - app.add_systems(PreUpdate, reset_movement) - .add_systems(Update, (handle_new_players, player_thrust)); + app + .add_systems(Update, (handle_new_players, player_thrust, dragging)); } -fn reset_movement(mut players: Query<(&mut ExternalForce, &mut ExternalImpulse)>) { - for (mut force, mut impulse) in &mut players { - force.force = Vec2::ZERO; - force.torque = 0.0; - impulse.impulse = Vec2::ZERO; +fn dragging(mut events: EventReader>, mut parts: Query<&mut Transform, With>) { + for event in events.read() { + let mut part = parts.get_mut(event.event.0).unwrap(); + part.translation.x = event.event.1.x; + part.translation.y = event.event.1.y; } }