use bevy_app::{App, Plugin};
use bevy_ecs::prelude::ChildOf;
use core::time::Duration;
use lightyear_core::plugin::CorePlugins;
pub struct SharedPlugins {
pub tick_duration: Duration,
}
impl Plugin for SharedPlugins {
fn build(&self, app: &mut App) {
if app.is_plugin_added::<CorePlugins>() {
return;
}
app.add_plugins(CorePlugins {
tick_duration: self.tick_duration,
})
.add_plugins(lightyear_transport::plugin::TransportPlugin)
.add_plugins(lightyear_messages::plugin::MessagePlugin)
.add_plugins(lightyear_connection::ConnectionPlugin);
#[cfg(feature = "replication")]
app.add_plugins(crate::protocol::ProtocolCheckPlugin);
#[cfg(feature = "replication")]
app.add_plugins(lightyear_replication::prelude::ReplicationSendPlugin)
.add_plugins(lightyear_replication::prelude::NetworkVisibilityPlugin)
.add_plugins(lightyear_replication::prelude::HierarchySendPlugin::<ChildOf>::default())
.add_plugins(lightyear_replication::prelude::AuthorityPlugin)
.add_plugins(lightyear_replication::prelude::ReplicationReceivePlugin);
#[cfg(feature = "crossbeam")]
app.add_plugins(lightyear_crossbeam::CrossbeamPlugin);
#[cfg(all(feature = "udp", not(target_family = "wasm")))]
app.add_plugins(lightyear_udp::UdpPlugin);
#[cfg(feature = "interpolation")]
app.add_plugins(lightyear_interpolation::plugin::InterpolationPlugin);
}
fn is_unique(&self) -> bool {
false
}
}