use avian2d::PhysicsPlugins; use crate::attachment::{Joint, JointOf, PartInShip, Peer, Ship, SnapOf, SnapOfJoint}; use crate::config::planet::Planet; use crate::ecs::{DragRequestEvent, Part, Particles, Player, PlayerStorage, ThrustEvent}; use bevy::app::{App, PluginGroup, PluginGroupBuilder}; use crate::prelude::*; //use bevy_rapier2d::prelude::*; use bevy_replicon::prelude::{AppRuleExt, Channel, ClientMessageAppExt}; use crate::physics::register_physics_components_for_replication; pub struct SharedPluginGroup; impl PluginGroup for SharedPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() //.add(RapierPhysicsPlugin::::pixels_per_meter(100.0)) .add_group( PhysicsPlugins::default() .with_length_unit(100.0) .set(PhysicsInterpolationPlugin::interpolate_all()) ) .add(physics_setup_plugin) .add(register_everything) .add(register_physics_components_for_replication) } } pub fn register_everything(app: &mut App) { app.add_client_message::(Channel::Ordered) .add_mapped_client_message::(Channel::Ordered) .replicate::() .replicate::() //.replicate::() //.replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::(); } fn physics_setup_plugin(app: &mut App) { app.insert_resource(Gravity::ZERO); app.add_systems(Startup, setup_physics); } fn setup_physics( ) { } /* fn setup_physics( mut rapier_config: Query<&mut RapierConfiguration>, mut rapier_context: Query<&mut RapierContextSimulation>, ) { let mut cfg = rapier_config.single_mut().unwrap(); cfg.gravity = Vec2::ZERO; let ctx = rapier_context.single_mut().unwrap(); let mut params = ctx.integration_parameters; params.num_internal_stabilization_iterations = 16; } */