use crate::client::ClientPlugin;
use aeronet_replicon::client::AeronetRepliconClientPlugin;
use aeronet_websocket::client::WebSocketClientPlugin;
use bevy::app::{PluginGroup, PluginGroupBuilder};
use bevy::dev_tools::picking_debug::DebugPickingPlugin;
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 {
PluginGroupBuilder::start::<Self>()
.add(WebSocketClientPlugin)
.add(AeronetRepliconClientPlugin)
.add(MeshPickingPlugin)
.add(DebugPickingPlugin)
.add(ClientPlugin {
server: self.server,
})
.add(UiPlugin)
.add(InputManagerPlugin::<crate::client::input::ClientAction>::default())
}
}
#[derive(ScheduleLabel, Clone, Eq, Debug, Hash, PartialEq)]
pub struct DontRunSchedule;