use std::time::Duration; use bevy::app::{App, PluginGroup, PluginGroupBuilder, ScheduleRunnerPlugin}; use crate::prelude::*; use crate::shared::plugins::TICK_RATE; const PHYSICS_LENGTH_UNIT: f64 = 100.0; pub struct ServerPluginGroup; impl PluginGroup for ServerPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() .add(ScheduleRunnerPlugin::run_loop(Duration::from_secs_f64(1.0 / TICK_RATE))) .add(bevy_replicon::server::ServerPlugin::default()) .add(bevy_replicon::server::message::ServerMessagePlugin) .add(bevy_replicon_renet2::server::RepliconRenetServerPlugin) .add_group( PhysicsPlugins::default() .with_length_unit(PHYSICS_LENGTH_UNIT) .set(PhysicsInterpolationPlugin::interpolate_all()) .build() .disable::() ) .add(physics_setup_plugin) } } fn physics_setup_plugin(app: &mut App) { app.insert_resource(Gravity::ZERO); }