~starkingdoms/starkingdoms

87c16b94dcf0d1dca110feca9512d35bd39aa2c5 — core 5 months ago d18ffea
fix: input
M crates/unified/src/client/parts.rs => crates/unified/src/client/parts.rs +1 -2
@@ 2,7 2,7 @@ use crate::client::Me;
use crate::ecs::{CursorWorldCoordinates, DragRequestEvent, Part};
use bevy::prelude::*;
use bevy_rapier2d::dynamics::MassProperties;
use bevy_rapier2d::prelude::{AdditionalMassProperties, ReadMassProperties, RigidBody};
use bevy_rapier2d::prelude::AdditionalMassProperties;

pub fn parts_plugin(app: &mut App) {
    app.insert_resource(DragResource(None));


@@ 16,7 16,6 @@ fn handle_incoming_parts(
    asset_server: Res<AssetServer>,
) {
    for (new_entity, new_part) in new_parts.iter() {
        trace!(?new_entity, ?new_part, "new part");
        let mut sprite = Sprite::from_image(asset_server.load(&new_part.strong_config.part.sprite_disconnected));
        sprite.custom_size = Some(Vec2::new(new_part.strong_config.physics.width, new_part.strong_config.physics.height));


M crates/unified/src/server/gravity.rs => crates/unified/src/server/gravity.rs +2 -1
@@ 4,9 4,10 @@ use crate::server::world_config::WorldConfigResource;
use bevy::math::FloatPow;
use bevy::prelude::*;
use bevy_rapier2d::prelude::*;
use crate::server::system_sets::WorldUpdateSet;

pub fn newtonian_gravity_plugin(app: &mut App) {
    app.add_systems(Update, update_gravity);
    app.add_systems(Update, update_gravity.in_set(WorldUpdateSet));
}

fn update_gravity(

M crates/unified/src/server/mod.rs => crates/unified/src/server/mod.rs +6 -1
@@ 4,6 4,7 @@ mod part;
pub mod planets;
pub mod player;
mod world_config;
mod system_sets;

use crate::server::earth_parts::spawn_parts_plugin;
use crate::server::gravity::newtonian_gravity_plugin;


@@ 19,6 20,8 @@ use aeronet_websocket::server::WebSocketServer;
use bevy::prelude::*;
use bevy_replicon::prelude::Replicated;
use std::net::SocketAddr;
use bevy_rapier2d::prelude::PhysicsSet;
use crate::server::system_sets::{PlayerInputSet, WorldUpdateSet};

pub struct ServerPlugin {
    pub bind: SocketAddr,


@@ 47,7 50,9 @@ impl Plugin for ServerPlugin {
            .add_plugins(newtonian_gravity_plugin)
            .add_plugins(player_management_plugin)
            .add_plugins(spawn_parts_plugin)
            .add_plugins(part_management_plugin);
            .add_plugins(part_management_plugin)
            .configure_sets(Update, WorldUpdateSet.before(PlayerInputSet))
            .configure_sets(Update, PlayerInputSet.before(PhysicsSet::SyncBackend));
    }
}
impl ServerPlugin {

M crates/unified/src/server/part.rs => crates/unified/src/server/part.rs +0 -1
@@ 1,4 1,3 @@
use bevy::ecs::system::entity_command::remove;
use bevy::prelude::Component;
use bevy::prelude::*;
use bevy_rapier2d::prelude::{AdditionalMassProperties, Collider};

M crates/unified/src/server/player.rs => crates/unified/src/server/player.rs +4 -2
@@ 10,9 10,10 @@ use crate::server::{ConnectedGameEntity, ConnectedNetworkEntity};
use bevy::prelude::*;
use bevy_rapier2d::prelude::ExternalForce;
use bevy_replicon::prelude::FromClient;
use crate::server::system_sets::PlayerInputSet;

pub fn player_management_plugin(app: &mut App) {
    app.add_systems(Update, (handle_new_players, player_thrust, dragging));
    app.add_systems(Update, (handle_new_players, player_thrust, dragging).in_set(PlayerInputSet));
}

fn dragging(


@@ 71,7 72,7 @@ fn handle_new_players(
}

fn player_thrust(
    mut players: Query<(&Transform, &mut ExternalForce, &mut PlayerThrust)>,
    mut players: Query<(&Transform, &mut ExternalForce, &mut PlayerThrust), >,
    clients: Query<&ConnectedNetworkEntity>,
    mut thrust_event: EventReader<FromClient<ThrustEvent>>,
    world_config: Res<WorldConfigResource>,


@@ 86,6 87,7 @@ fn player_thrust(
        let Ok((_, _, mut thrust)) = players.get_mut(*game_entity) else {
            continue;
        };

        match *event {
            ThrustEvent::Up(on) => thrust.up = on,
            ThrustEvent::Down(on) => thrust.down = on,

A crates/unified/src/server/system_sets.rs => crates/unified/src/server/system_sets.rs +6 -0
@@ 0,0 1,6 @@
use bevy::prelude::SystemSet;

#[derive(SystemSet, Clone, PartialEq, Eq, Debug, Hash)]
pub struct WorldUpdateSet;
#[derive(SystemSet, Clone, PartialEq, Eq, Debug, Hash)]
pub struct PlayerInputSet;
\ No newline at end of file