use aeronet_replicon::client::AeronetRepliconClientPlugin;
use aeronet_websocket::client::WebSocketClientPlugin;
use bevy::a11y::AccessibilityPlugin;
use crate::client::ClientPlugin;
use bevy::app::{PanicHandlerPlugin, PluginGroup, PluginGroupBuilder, ScheduleRunnerPlugin};
use bevy::dev_tools::picking_debug::DebugPickingPlugin;
use bevy::diagnostic::{DiagnosticsPlugin, FrameCountPlugin};
use bevy::ecs::schedule::ScheduleLabel;
use bevy::input::InputPlugin;
use bevy::input_focus::InputDispatchPlugin;
use bevy::log::LogPlugin;
use bevy::state::app::StatesPlugin;
use bevy::time::TimePlugin;
use crate::prelude::*;
use leafwing_input_manager::plugin::InputManagerPlugin;
pub struct ClientPluginGroup;
impl PluginGroup for ClientPluginGroup {
fn build(self) -> PluginGroupBuilder {
PluginGroupBuilder::start::<Self>()
.add_group(
DefaultPlugins.build()
.disable::<LogPlugin>()
.disable::<TaskPoolPlugin>()
.disable::<FrameCountPlugin>()
.disable::<TimePlugin>()
.disable::<TransformPlugin>()
.disable::<DiagnosticsPlugin>()
.disable::<AssetPlugin>()
.disable::<StatesPlugin>()
)
.add(DebugPickingPlugin)
.add(InputDispatchPlugin)
.add(InputManagerPlugin::<crate::client::input::ClientAction>::default())
.add(WebSocketClientPlugin)
.add(bevy_replicon::client::ClientPlugin)
.add(bevy_replicon::client::message::ClientMessagePlugin)
.add(AeronetRepliconClientPlugin)
}
}
#[derive(ScheduleLabel, Clone, Eq, Debug, Hash, PartialEq)]
pub struct DontRunSchedule;