~starkingdoms/starkingdoms

028986b26fc30a70f28bd165f8a07870854df75e — core 5 months ago 945d5a6
chore: fix gravity
M crates/unified/assets/config/planets.pc.toml => crates/unified/assets/config/planets.pc.toml +11 -11
@@ 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]

M crates/unified/assets/config/world.wc.toml => crates/unified/assets/config/world.wc.toml +1 -1
@@ 1,5 1,5 @@
[world]
gravity = 2
gravity = 0.001
spawn_parts_at = "Earth"
spawn_parts_interval_secs = 10


M crates/unified/src/server/gravity.rs => crates/unified/src/server/gravity.rs +5 -0
@@ 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;


M crates/unified/src/server/player.rs => crates/unified/src/server/player.rs +8 -8
@@ 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<FromClient<DragRequestEvent>>, mut parts: Query<&mut Transform, With<Part>>) {
    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;
    }
}