From c5a3d1c40171d4bccfea5544ea7254e3cc64f223 Mon Sep 17 00:00:00 2001 From: Amatsugu Date: Wed, 6 Nov 2024 22:42:25 -0500 Subject: [PATCH] lunex testing --- Cargo.lock | 185 ++++++++++++++++++++++++++++++ game/main/Cargo.toml | 1 + game/main/src/main.rs | 3 + game/main/src/phos.rs | 2 + game/main/src/ui/game/build_ui.rs | 44 +++++++ game/main/src/ui/game/mod.rs | 1 + game/main/src/ui/mod.rs | 1 + 7 files changed, 237 insertions(+) create mode 100644 game/main/src/ui/game/build_ui.rs create mode 100644 game/main/src/ui/game/mod.rs create mode 100644 game/main/src/ui/mod.rs diff --git a/Cargo.lock b/Cargo.lock index dee1c96..4f9748d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -745,6 +745,30 @@ dependencies = [ "encase_derive_impl", ] +[[package]] +name = "bevy_eventlistener" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63aff74ac1477b88b57ff2f82fc711a7931414be7ee7d0e96aeea45b6d4a7cb6" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_eventlistener_derive", + "bevy_hierarchy", + "bevy_utils", +] + +[[package]] +name = "bevy_eventlistener_derive" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc779559aa23b81da2b14fba90586755d225983c5b6d3154658e42fc088de7f" +dependencies = [ + "proc-macro2 1.0.86", + "quote 1.0.36", + "syn 2.0.70", +] + [[package]] name = "bevy_gilrs" version = "0.14.2" @@ -913,6 +937,18 @@ dependencies = [ "tracing-wasm", ] +[[package]] +name = "bevy_lunex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e2bb6bf7507c23bb69edf4f045312448b8dbba73b85dda58e9178255ece099" +dependencies = [ + "bevy", + "bevy_mod_picking", + "colored", + "lunex_engine", +] + [[package]] name = "bevy_macro_utils" version = "0.14.2" @@ -948,6 +984,48 @@ dependencies = [ "glam", ] +[[package]] +name = "bevy_mod_picking" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e290b8ad3e72dc621da7a9c21129da10540d78290ef8857353190e0213cac692" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_eventlistener", + "bevy_math", + "bevy_picking_core", + "bevy_picking_highlight", + "bevy_picking_input", + "bevy_picking_raycast", + "bevy_picking_selection", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", +] + +[[package]] +name = "bevy_mod_raycast" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9e4ff45885c4716771a9f55977d8ce69596502a5241da55bf608d7cd71a9cb3" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "crossbeam-channel", +] + [[package]] name = "bevy_pbr" version = "0.14.2" @@ -975,6 +1053,90 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "bevy_picking_core" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020b6cf6079927a1e6a3dd883986546632d8d09ab77840997f4936a74eade722" +dependencies = [ + "bevy_app", + "bevy_derive", + "bevy_ecs", + "bevy_eventlistener", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_utils", + "bevy_window", + "uuid", +] + +[[package]] +name = "bevy_picking_highlight" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba45161608da1bb58cbc55fd83cf5e529e616a180778c394733c85056cd2b76" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_ecs", + "bevy_picking_core", + "bevy_picking_selection", + "bevy_reflect", +] + +[[package]] +name = "bevy_picking_input" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba8cf67c68a5e150c066366744f9a44006ead9ad280de1c9ca69a6a13c5e283" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_picking_core", + "bevy_picking_selection", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", +] + +[[package]] +name = "bevy_picking_raycast" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b024e7b0a6062aafd5daa746e5298a1b726c6409de11e35e0b574b712ebda3d" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_mod_raycast", + "bevy_picking_core", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_window", +] + +[[package]] +name = "bevy_picking_selection" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf0769d84e944fbc09b0475f068e5232a8a4be15339796539aecd747413ededd" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_eventlistener", + "bevy_input", + "bevy_picking_core", + "bevy_reflect", + "bevy_utils", +] + [[package]] name = "bevy_ptr" version = "0.14.2" @@ -1608,6 +1770,16 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "colored" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" +dependencies = [ + "lazy_static", + "windows-sys 0.48.0", +] + [[package]] name = "com" version = "0.6.0" @@ -3079,6 +3251,18 @@ dependencies = [ "imgref", ] +[[package]] +name = "lunex_engine" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64d55d2e631c0eb2d5bc164ca826452f550a57a9b0d8da93e6e5625d23f533bd" +dependencies = [ + "bevy", + "colored", + "indexmap", + "thiserror", +] + [[package]] name = "mach2" version = "0.4.2" @@ -3966,6 +4150,7 @@ dependencies = [ "bevy", "bevy-inspector-egui", "bevy_asset_loader", + "bevy_lunex", "bevy_rapier3d", "buildings", "image 0.25.2", diff --git a/game/main/Cargo.toml b/game/main/Cargo.toml index c6505ef..9164367 100644 --- a/game/main/Cargo.toml +++ b/game/main/Cargo.toml @@ -27,6 +27,7 @@ bevy_asset_loader = { version = "0.21.0", features = [ ] } ron = "0.8.1" image = "0.25.2" +bevy_lunex = "0.2.4" [features] tracing = [ diff --git a/game/main/src/main.rs b/game/main/src/main.rs index ba158be..d758662 100644 --- a/game/main/src/main.rs +++ b/game/main/src/main.rs @@ -1,3 +1,5 @@ +use std::env; + use bevy::pbr::wireframe::WireframePlugin; use bevy::prelude::*; use bevy::render::texture::{ImageAddressMode, ImageFilterMode, ImageSamplerDescriptor}; @@ -10,6 +12,7 @@ mod map_rendering; mod phos; mod prelude; mod shader_extensions; +mod ui; mod utlis; fn main() { diff --git a/game/main/src/phos.rs b/game/main/src/phos.rs index b9b66ac..538a0c8 100644 --- a/game/main/src/phos.rs +++ b/game/main/src/phos.rs @@ -1,6 +1,7 @@ use crate::camera_system::components::PhosCamera; use crate::map_rendering::map_init::MapInitPlugin; use crate::map_rendering::render_distance_system::RenderDistancePlugin; +use crate::ui::game::build_ui::BuildUiPlugin; use crate::utlis::editor_plugin::EditorPlugin; use crate::utlis::tile_selection_plugin::TileSelectionPlugin; use crate::{camera_system::camera_plugin::PhosCameraPlugin, utlis::debug_plugin::DebugPlugin}; @@ -37,6 +38,7 @@ impl Plugin for PhosGamePlugin { MapInitPlugin, RenderDistancePlugin, BuildingPugin, + BuildUiPlugin, UnitsPlugin, DespawnPuglin, TileSelectionPlugin, diff --git a/game/main/src/ui/game/build_ui.rs b/game/main/src/ui/game/build_ui.rs new file mode 100644 index 0000000..4aeeb0f --- /dev/null +++ b/game/main/src/ui/game/build_ui.rs @@ -0,0 +1,44 @@ +use bevy::prelude::*; +use bevy_lunex::prelude::*; +use shared::tags::MainCamera; + +pub struct BuildUiPlugin; + +impl Plugin for BuildUiPlugin { + fn build(&self, app: &mut App) { + app.add_plugins(UiDefaultPlugins) + .add_plugins(UiDebugPlugin::::new()); + + app.add_systems(PostStartup, setup_ui); + } +} + +fn setup_ui(mut commands: Commands, cam: Query>, assets: Res) { + let c = cam.single(); + commands.entity(c).insert(MainUi); + + commands + .spawn(( + UiTreeBundle:: { + tree: UiTree::new2d("BuildUi"), + ..default() + }, + Name::new("Build UI"), + SourceFromCamera, + )) + .with_children(|ui| { + ui.spawn(( + UiLink::::path("Root"), + UiLayout::boundary() + .pos1(Ab(20.0)) + .pos2(Rl(100.0) - Ab(20.0)) + .pack::(), + )); + + ui.spawn(( + UiLink::::path("Root/Rect"), + UiLayout::solid().size((Ab(1920.0), Ab(1080.0))).pack::(), + UiImage2dBundle::from(assets.load("textures/world/test2.png")), + )); + }); +} diff --git a/game/main/src/ui/game/mod.rs b/game/main/src/ui/game/mod.rs new file mode 100644 index 0000000..791f966 --- /dev/null +++ b/game/main/src/ui/game/mod.rs @@ -0,0 +1 @@ +pub mod build_ui; \ No newline at end of file diff --git a/game/main/src/ui/mod.rs b/game/main/src/ui/mod.rs new file mode 100644 index 0000000..f7ee1cd --- /dev/null +++ b/game/main/src/ui/mod.rs @@ -0,0 +1 @@ +pub mod game;