diff --git a/game/main/src/camera_system/camera_plugin.rs b/game/main/src/camera_system/camera_plugin.rs index ba190d3..f7f33a7 100644 --- a/game/main/src/camera_system/camera_plugin.rs +++ b/game/main/src/camera_system/camera_plugin.rs @@ -1,4 +1,5 @@ use bevy::anti_alias::taa::TemporalAntiAliasing; +use bevy::camera::visibility::RenderLayers; use bevy::core_pipeline::prepass::DepthPrepass; use bevy::input::mouse::{MouseMotion, MouseScrollUnit, MouseWheel}; use bevy::prelude::*; @@ -53,8 +54,8 @@ fn setup(mut commands: Commands) PhosOrbitCamera::default(), TemporalAntiAliasing::default(), )) - .insert(Msaa::Off); - // .insert(RenderLayers::layer(0)) + .insert(Msaa::Off) + .insert(RenderLayers::default()); // *msaa = Msaa::Off; } diff --git a/game/main/src/ui/build_ui.rs b/game/main/src/ui/build_ui.rs index 17bc801..7ad12ad 100644 --- a/game/main/src/ui/build_ui.rs +++ b/game/main/src/ui/build_ui.rs @@ -1,5 +1,11 @@ -use bevy::{camera::visibility::RenderLayers, prelude::*}; +use bevy::{ + camera::{visibility::RenderLayers, CameraOutputMode, Viewport}, + prelude::*, + render::render_resource::BlendState, +}; use shared::states::AssetLoadState; + +use crate::ui::states::BuildUIState; pub struct BuildUIPlugin; impl Plugin for BuildUIPlugin @@ -7,33 +13,63 @@ impl Plugin for BuildUIPlugin fn build(&self, app: &mut App) { app.add_systems(Startup, setup_cameras); - app.add_systems(Update, spawn_ui.run_if(in_state(AssetLoadState::LoadComplete))); + app.insert_state(BuildUIState::Init); + app.add_systems( + Update, + spawn_ui.run_if(in_state(AssetLoadState::LoadComplete).and(in_state(BuildUIState::Init))), + ); } } fn setup_cameras(mut commands: Commands) { - commands.spawn((Camera2d, IsDefaultUiCamera, RenderLayers::layer(2))); + commands + .spawn(( + Camera2d, + Camera { + order: 1, + clear_color: ClearColorConfig::None, + msaa_writeback: MsaaWriteback::Always, + // viewport: Some(Viewport { + // physical_size: UVec2::new(800, 800), + // ..default() + // }), + output_mode: CameraOutputMode::Write { + blend_state: Some(BlendState::ALPHA_BLENDING), + clear_color: ClearColorConfig::None, + }, + ..default() + }, + IsDefaultUiCamera, + )) + .insert(RenderLayers::layer(1)) + .insert(Msaa::Off); } -fn spawn_ui(mut commands: Commands) +fn spawn_ui(mut commands: Commands, mut next_state: ResMut>) { commands - .spawn((Node { - width: Val::Percent(100.), - height: Val::Percent(100.), - justify_content: JustifyContent::Center, - align_items: AlignItems::End, - ..default() - },)) + .spawn(( + Node { + width: Val::Percent(100.), + height: Val::Percent(100.), + justify_content: JustifyContent::Center, + align_items: AlignItems::End, + ..default() + }, + RenderLayers::layer(1), + )) // .insert(PickingBehavior::IGNORE) .with_children(|parent| { parent.spawn(( Node { width: Val::Px(500.), + height: Val::Px(100.), ..Default::default() }, BackgroundColor(LinearRgba::GREEN.into()), )); }); + + next_state.set(BuildUIState::Update); } diff --git a/game/main/src/ui/mod.rs b/game/main/src/ui/mod.rs index a598279..6039825 100644 --- a/game/main/src/ui/mod.rs +++ b/game/main/src/ui/mod.rs @@ -1 +1,2 @@ pub mod build_ui; +pub mod states; diff --git a/game/shared/src/states.rs b/game/shared/src/states.rs index b89bd76..12b81ba 100644 --- a/game/shared/src/states.rs +++ b/game/shared/src/states.rs @@ -1,7 +1,8 @@ use bevy::prelude::*; #[derive(States, Debug, Clone, PartialEq, Eq, Hash)] -pub enum MenuState { +pub enum MenuState +{ Loading, Startup, MainMenu, @@ -10,14 +11,16 @@ pub enum MenuState { } #[derive(States, Debug, Clone, PartialEq, Eq, Hash)] -pub enum GameplayState { +pub enum GameplayState +{ Waiting, PlaceHQ, Playing, } #[derive(States, Debug, Clone, PartialEq, Eq, Hash)] -pub enum AssetLoadState { +pub enum AssetLoadState +{ Loading, FinalizeAssets, LoadComplete,