use bevy_app::{PluginGroup, PluginGroupBuilder};
use crate::shared::SharedPlugins;
use core::time::Duration;
pub struct ClientPlugins {
pub tick_duration: Duration,
}
impl Default for ClientPlugins {
fn default() -> Self {
Self {
tick_duration: Duration::from_secs_f32(1.0 / 60.0),
}
}
}
impl PluginGroup for ClientPlugins {
#[allow(clippy::let_and_return)]
fn build(self) -> PluginGroupBuilder {
let builder = PluginGroupBuilder::start::<Self>();
let builder = builder.add(lightyear_sync::client::ClientPlugin);
let builder = builder.add(SharedPlugins {
tick_duration: self.tick_duration,
});
#[cfg(feature = "deterministic")]
let builder = builder.add(lightyear_deterministic_replication::prelude::ChecksumSendPlugin);
#[cfg(feature = "prediction")]
let builder = builder.add(lightyear_prediction::plugin::PredictionPlugin);
#[cfg(feature = "webtransport")]
let builder = builder.add(lightyear_webtransport::client::WebTransportClientPlugin);
#[cfg(feature = "websocket")]
let builder = builder.add(lightyear_websocket::client::WebSocketClientPlugin);
#[cfg(feature = "steam")]
let builder = builder.add(lightyear_steam::client::SteamClientPlugin);
#[cfg(feature = "netcode")]
let builder = builder.add(lightyear_netcode::client_plugin::NetcodeClientPlugin);
#[cfg(feature = "raw_connection")]
let builder = builder.add(lightyear_raw_connection::client::RawConnectionPlugin);
#[cfg(target_family = "wasm")]
let builder = builder.add(lightyear_web::WebKeepalivePlugin {
wake_delay: 100.0,
});
builder
}
}