use crate::protocol::*; use crate::shared::*; use bevy::prelude::*; use lightyear::client::config::*; use lightyear::client::plugin::ClientPlugin; use lightyear::client::plugin::PluginConfig; use lightyear::client::resource::Authentication; use lightyear::prelude::client::NetConfig; use lightyear::prelude::*; use lightyear::transport::LOCAL_SOCKET; use std::net::SocketAddr; pub struct NetworkPlugin { pub server_addr: Option, pub client_id: u64, pub transport: TransportConfig, } impl Plugin for NetworkPlugin { fn build(&self, app: &mut App) { app.add_plugins(ClientPlugin::new(PluginConfig::new( ClientConfig { net: NetConfig::Netcode { config: Default::default(), auth: Authentication::Manual { server_addr: self.server_addr.unwrap_or(LOCAL_SOCKET), client_id: self.client_id, private_key: KEY, protocol_id: PROTOCOL_ID, }, io: IoConfig::from_transport(self.transport.clone()), }, ..Default::default() }, protocol(), ))); } }