benthic_ui 0.3.2

Bevy UI plugin for open metaverse clients
use benthic_ui::chat::chat_screen;
use benthic_ui::loading::loading_screen;
use benthic_ui::login::login_screen;
use benthic_ui::plugin::MetaversePlugin;
use benthic_ui::plugin::ViewerState;
use benthic_ui::render::MainCamera;
use bevy::app::TerminalCtrlCHandlerPlugin;
use bevy::asset::UnapprovedPathMode;
use bevy::prelude::*;
use bevy_egui::EguiPlugin;
use bevy_egui::EguiPrimaryContextPass;
use bevy_panorbit_camera::PanOrbitCamera;
use bevy_panorbit_camera::PanOrbitCameraPlugin;

pub const CONFIG_FILE: &str = "login_conf.json";

fn main() {
    App::new()
        .add_plugins(
            DefaultPlugins
                .set(AssetPlugin {
                    file_path: "assets".into(),
                    unapproved_path_mode: UnapprovedPathMode::Allow,
                    mode: AssetMode::Unprocessed,
                    ..default()
                })
                .set(WindowPlugin {
                    close_when_requested: false,
                    ..default()
                })
                .set(TerminalCtrlCHandlerPlugin {}),
        )
        .add_plugins(PanOrbitCameraPlugin)
        .add_systems(Startup, setup_camera)
        .add_plugins(EguiPlugin::default())
        .add_plugins(MetaversePlugin)
        .add_systems(
            EguiPrimaryContextPass,
            login_screen.run_if(in_state(ViewerState::Login)),
        )
        .add_systems(
            EguiPrimaryContextPass,
            loading_screen.run_if(in_state(ViewerState::Loading)),
        )
        .add_systems(
            EguiPrimaryContextPass,
            chat_screen.run_if(in_state(ViewerState::Chat)),
        )
        .run();
}

fn setup_camera(mut commands: Commands) {
    commands.spawn((
        Camera3d::default(),
        PanOrbitCamera {
            radius: Some(3.0),
            ..default()
        },
        MainCamera,
        AmbientLight {
            color: Color::WHITE,
            brightness: 500.0,
            affects_lightmapped_meshes: true,
        },
    ));
}