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<String>,
}
impl PluginGroup for ClientPluginGroup {
fn build(self) -> PluginGroupBuilder {
let mut b = PluginGroupBuilder::start::<Self>();
#[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::<crate::client::input::ClientAction>::default())
}
}
#[derive(ScheduleLabel, Clone, Eq, Debug, Hash, PartialEq)]
pub struct DontRunSchedule;