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::<Self>()
.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::<IslandPlugin>()
)
.add(physics_setup_plugin)
}
}
fn physics_setup_plugin(app: &mut App) {
app.insert_resource(Gravity::ZERO);
}