use crate::client::ClientPlugin; #[cfg(feature = "target_net_client")] use aeronet_replicon::client::AeronetRepliconClientPlugin; #[cfg(feature = "target_net_client")] use aeronet_websocket::client::WebSocketClientPlugin; use bevy::app::{PluginGroup, PluginGroupBuilder}; use bevy::ecs::schedule::ScheduleLabel; use crate::prelude::*; use bevy::ui::UiPlugin; use leafwing_input_manager::plugin::InputManagerPlugin; pub struct ClientPluginGroup { pub server: Option, } impl PluginGroup for ClientPluginGroup { fn build(self) -> PluginGroupBuilder { let mut b = PluginGroupBuilder::start::(); #[cfg(feature = "target_net_client")] { b = b.add(WebSocketClientPlugin); b = b.add(AeronetRepliconClientPlugin); } b .add(bevy::dev_tools::picking_debug::DebugPickingPlugin) .add(MeshPickingPlugin) .add(ClientPlugin { server: self.server, }) .add(UiPlugin) .add(InputManagerPlugin::::default()) } } #[derive(ScheduleLabel, Clone, Eq, Debug, Hash, PartialEq)] pub struct DontRunSchedule;