use crate::config::planet::Planet; use crate::ecs::{Ball, Ground, Part, Particles, Player, SendBallHere, ThrustEvent}; use bevy::app::{App, PluginGroup, PluginGroupBuilder}; use bevy::prelude::*; use bevy_rapier2d::prelude::*; use bevy_replicon::prelude::{AppRuleExt, Channel, ClientEventAppExt}; pub struct SharedPluginGroup; impl PluginGroup for SharedPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() .add(RapierPhysicsPlugin::::pixels_per_meter(100.0)) .add(register_everything) .add(physics_setup_plugin) } } pub fn register_everything(app: &mut App) { app.add_client_event::(Channel::Ordered) .add_client_event::(Channel::Ordered) .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::() .replicate::(); } fn physics_setup_plugin(app: &mut App) { app.add_systems(Startup, setup_physics); } fn setup_physics(mut rapier_config: Query<&mut RapierConfiguration>) { let mut cfg = rapier_config.single_mut().unwrap(); cfg.gravity = Vec2::ZERO; }