use std::net::SocketAddr; use std::time::Duration; use bevy::app::{PluginGroup, PluginGroupBuilder, ScheduleRunnerPlugin, TaskPoolPlugin}; use bevy::diagnostic::FrameCountPlugin; use bevy::log::LogPlugin; use bevy::time::TimePlugin; use crate::replication::ReplicationServerPlugin; use crate::server::server_plugin; pub struct ServerPluginGroup { pub bind: SocketAddr, pub tick_rate: f64 } impl PluginGroup for ServerPluginGroup { fn build(self) -> PluginGroupBuilder { PluginGroupBuilder::start::() .add(TaskPoolPlugin::default()) .add(FrameCountPlugin) .add(TimePlugin) .add(ScheduleRunnerPlugin::run_loop( Duration::from_secs_f64(1.0 / self.tick_rate) )) .add(ReplicationServerPlugin) .add(server_plugin) } }