From 5f511eb529866a9035eaf3d8d990f8f75cd1439f Mon Sep 17 00:00:00 2001 From: Thom Bruce Date: Mon, 2 Oct 2023 05:37:44 +0100 Subject: [PATCH] add WorldInspectorPlugin from bevy-inspector-egui --- CHANGELOG.md | 4 + Cargo.lock | 346 ++++++++++++++++++++++++++++++++++++++++++++++++- Cargo.toml | 1 + src/camera.rs | 2 +- src/credits.rs | 1 + src/hud.rs | 46 ++++--- src/main.rs | 8 +- src/menu.rs | 19 ++- src/ship.rs | 1 + src/state.rs | 17 ++- 10 files changed, 408 insertions(+), 37 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0fb7d94..d93fc50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- WorldInspectorPlugin from bevy-inspector-egui for development/debugging + ## [0.0.9] - 2023-10-02 ### Added diff --git a/Cargo.lock b/Cargo.lock index 36ee970..35868ca 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -200,6 +200,25 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arboard" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac57f2b058a76363e357c056e4f74f1945bf734d37b8b3ef49066c4787dde0fc" +dependencies = [ + "clipboard-win", + "core-graphics", + "image", + "log", + "objc", + "objc-foundation", + "objc_id", + "parking_lot", + "thiserror", + "winapi", + "x11rb", +] + [[package]] name = "arrayvec" version = "0.7.4" @@ -255,6 +274,12 @@ version = "4.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" +[[package]] +name = "atomic_refcell" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112ef6b3f6cb3cb6fc5b6b494ef7a848492cff1ab0ef4de10b0f7d572861c905" + [[package]] name = "autocfg" version = "1.1.0" @@ -297,6 +322,45 @@ dependencies = [ "bevy_internal", ] +[[package]] +name = "bevy-inspector-egui" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd2523be5ae7d482e5435dc75509b80a320989175768fb4b711603b9d2ab8fff" +dependencies = [ + "bevy-inspector-egui-derive", + "bevy_app", + "bevy_asset", + "bevy_core", + "bevy_core_pipeline", + "bevy_ecs", + "bevy_egui", + "bevy_hierarchy", + "bevy_log", + "bevy_math", + "bevy_pbr", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", + "egui", + "image", + "once_cell", + "pretty-type-name", + "smallvec", +] + +[[package]] +name = "bevy-inspector-egui-derive" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0edba455601861b8e8b76128ae5d46dd968114edde60f0ac3d2c21535a947548" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.37", +] + [[package]] name = "bevy_a11y" version = "0.11.2" @@ -489,6 +553,19 @@ dependencies = [ "syn 2.0.37", ] +[[package]] +name = "bevy_egui" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a73a93a8cf6b8c744281d1b88f5b0fa278d608e909af9bbf4eb491a7cb1ad2c" +dependencies = [ + "arboard", + "bevy", + "egui", + "thread_local", + "webbrowser", +] + [[package]] name = "bevy_encase_derive" version = "0.11.2" @@ -1202,6 +1279,17 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "clipboard-win" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" +dependencies = [ + "error-code", + "str-buf", + "winapi", +] + [[package]] name = "codespan-reporting" version = "0.11.1" @@ -1418,7 +1506,7 @@ dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset", + "memoffset 0.9.0", "scopeguard", ] @@ -1487,12 +1575,41 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +[[package]] +name = "ecolor" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e479a7fa3f23d4e794f8b2f8b3568dd4e47886ad1b12c9c095e141cb591eb63" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "egui" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3aef8ec3ae1b772f340170c65bf27d5b8c28f543a0116c844d2ac08d01123e7" +dependencies = [ + "ahash 0.8.3", + "epaint", + "nohash-hasher", +] + [[package]] name = "either" version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +[[package]] +name = "emath" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3857d743a6e0741cdd60b622a74c7a36ea75f5f8f11b793b41d905d2c9721a4b" +dependencies = [ + "bytemuck", +] + [[package]] name = "encase" version = "0.6.1" @@ -1525,6 +1642,22 @@ dependencies = [ "syn 2.0.37", ] +[[package]] +name = "epaint" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09333964d4d57f40a85338ba3ca5ed4716070ab184dcfed966b35491c5c64f3b" +dependencies = [ + "ab_glyph", + "ahash 0.8.3", + "atomic_refcell", + "bytemuck", + "ecolor", + "emath", + "nohash-hasher", + "parking_lot", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -1540,6 +1673,16 @@ dependencies = [ "serde", ] +[[package]] +name = "error-code" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64f18991e7bf11e7ffee451b5318b5c1a73c52d0d0ada6e5a3017c8c1ced6a21" +dependencies = [ + "libc", + "str-buf", +] + [[package]] name = "euclid" version = "0.22.9" @@ -1622,6 +1765,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + [[package]] name = "fsevent-sys" version = "4.1.0" @@ -1658,6 +1810,16 @@ dependencies = [ "waker-fn", ] +[[package]] +name = "gethostname" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ebd34e35c46e00bb73e81363248d627782724609fe1b6396f553f68fe3862e" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "getrandom" version = "0.2.10" @@ -1903,6 +2065,25 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "image" version = "0.24.7" @@ -1915,6 +2096,7 @@ dependencies = [ "num-rational", "num-traits", "png", + "tiff", ] [[package]] @@ -2028,6 +2210,22 @@ dependencies = [ "walkdir", ] +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys", + "log", + "thiserror", + "walkdir", + "windows-sys 0.45.0", +] + [[package]] name = "jni-sys" version = "0.3.0" @@ -2043,6 +2241,12 @@ dependencies = [ "libc", ] +[[package]] +name = "jpeg-decoder" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0000e42512c92e31c2252315bda326620a4e034105e900c98ec492fa077b3e" + [[package]] name = "js-sys" version = "0.3.64" @@ -2244,6 +2448,15 @@ version = "2.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f232d6ef707e1956a43342693d2a31e72989554d58299d7a88738cc95b0d35c" +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + [[package]] name = "memoffset" version = "0.9.0" @@ -2402,6 +2615,7 @@ dependencies = [ "bitflags 1.3.2", "cfg-if", "libc", + "memoffset 0.6.5", ] [[package]] @@ -2415,6 +2629,12 @@ dependencies = [ "libc", ] +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + [[package]] name = "nom" version = "7.1.3" @@ -2566,6 +2786,17 @@ dependencies = [ "objc_exception", ] +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + [[package]] name = "objc-sys" version = "0.2.0-beta.2" @@ -2601,6 +2832,15 @@ dependencies = [ "cc", ] +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + [[package]] name = "object" version = "0.32.1" @@ -2799,6 +3039,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "pretty-type-name" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f73cdaf19b52e6143685c3606206e114a4dfa969d6b14ec3894c88eb38bd4b" + [[package]] name = "proc-macro-crate" version = "1.3.1" @@ -3152,6 +3398,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "str-buf" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e08d8363704e6c71fc928674353e6b7c23dcea9d82d7012c8faf2a3a025f8d0" + [[package]] name = "svg_fmt" version = "0.4.1" @@ -3265,6 +3517,17 @@ dependencies = [ "once_cell", ] +[[package]] +name = "tiff" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d172b0f4d3fba17ba89811858b9d3d97f928aece846475bbda076ca46736211" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + [[package]] name = "tinyvec" version = "1.6.0" @@ -3392,12 +3655,27 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + [[package]] name = "unicode-ident" version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-width" version = "0.1.11" @@ -3410,6 +3688,17 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "url" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + [[package]] name = "uuid" version = "1.4.1" @@ -3437,6 +3726,7 @@ name = "verse" version = "0.0.9" dependencies = [ "bevy", + "bevy-inspector-egui", "bevy_rapier2d", "bevy_tiling_background", "leafwing-input-manager", @@ -3557,6 +3847,29 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webbrowser" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2c79b77f525a2d670cb40619d7d9c673d09e0666f72c591ebd7861f84a87e57" +dependencies = [ + "core-foundation", + "home", + "jni 0.21.1", + "log", + "ndk-context", + "objc", + "raw-window-handle", + "url", + "web-sys", +] + +[[package]] +name = "weezl" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" + [[package]] name = "wgpu" version = "0.16.3" @@ -3698,6 +4011,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "winapi-wsapoll" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +dependencies = [ + "winapi", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -3956,6 +4278,28 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "x11rb" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" +dependencies = [ + "gethostname", + "nix 0.24.3", + "winapi", + "winapi-wsapoll", + "x11rb-protocol", +] + +[[package]] +name = "x11rb-protocol" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67" +dependencies = [ + "nix 0.24.3", +] + [[package]] name = "xi-unicode" version = "0.3.0" diff --git a/Cargo.toml b/Cargo.toml index 85a314e..d51aebd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ edition = "2021" [dependencies] bevy = "0.11.2" +bevy-inspector-egui = "0.19.0" bevy_rapier2d = "0.22.0" bevy_tiling_background = { git = "https://github.com/rparrett/bevy_tiling_background.git", branch = "tex-typo" } leafwing-input-manager = "0.10.0" diff --git a/src/camera.rs b/src/camera.rs index de0fa6c..831f038 100644 --- a/src/camera.rs +++ b/src/camera.rs @@ -12,7 +12,7 @@ impl Plugin for CameraPlugin { fn setup(mut commands: Commands) { // Spawns game camera - commands.spawn(Camera2dBundle::default()); + commands.spawn((Camera2dBundle::default(), Name::new("Main Camera"))); } pub fn follow_player( diff --git a/src/credits.rs b/src/credits.rs index c42b08d..e1ee63e 100644 --- a/src/credits.rs +++ b/src/credits.rs @@ -26,6 +26,7 @@ fn setup(mut commands: Commands, asset_server: Res) { ForState { states: vec![AppState::Credits], }, + Name::new("Credits"), )) .with_children(|parent| { parent.spawn((TextBundle { diff --git a/src/hud.rs b/src/hud.rs index 7977407..845be50 100644 --- a/src/hud.rs +++ b/src/hud.rs @@ -17,18 +17,21 @@ impl Plugin for HudPlugin { fn setup(mut commands: Commands, asset_server: Res) { commands - .spawn((NodeBundle { - style: Style { - position_type: PositionType::Absolute, - width: Val::Percent(100.0), - height: Val::Percent(100.0), - align_items: AlignItems::FlexEnd, - justify_content: JustifyContent::FlexEnd, - flex_direction: FlexDirection::Row, + .spawn(( + NodeBundle { + style: Style { + position_type: PositionType::Absolute, + width: Val::Percent(100.0), + height: Val::Percent(100.0), + align_items: AlignItems::FlexEnd, + justify_content: JustifyContent::FlexEnd, + flex_direction: FlexDirection::Row, + ..default() + }, ..default() }, - ..default() - },)) + Name::new("Speedometer Container"), + )) .with_children(|parent| { parent.spawn(( TextBundle { @@ -58,18 +61,21 @@ fn setup(mut commands: Commands, asset_server: Res) { }); commands - .spawn((NodeBundle { - style: Style { - position_type: PositionType::Absolute, - width: Val::Percent(100.0), - height: Val::Percent(100.0), - align_items: AlignItems::FlexStart, - justify_content: JustifyContent::FlexEnd, - flex_direction: FlexDirection::Row, + .spawn(( + NodeBundle { + style: Style { + position_type: PositionType::Absolute, + width: Val::Percent(100.0), + height: Val::Percent(100.0), + align_items: AlignItems::FlexStart, + justify_content: JustifyContent::FlexEnd, + flex_direction: FlexDirection::Row, + ..default() + }, ..default() }, - ..default() - },)) + Name::new("Location Container"), + )) .with_children(|parent| { parent.spawn((TextBundle { style: Style { diff --git a/src/main.rs b/src/main.rs index 49f2990..c7ae82e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use bevy::{audio::PlaybackMode, prelude::*, render::view::NoFrustumCulling}; +use bevy_inspector_egui::quick::WorldInspectorPlugin; use bevy_rapier2d::prelude::*; use bevy_tiling_background::{ BackgroundImageBundle, BackgroundMaterial, SetImageRepeatingExt, TilingBackgroundPlugin, @@ -54,7 +55,10 @@ fn main() { )); #[cfg(debug_assertions)] - app.add_plugins(RapierDebugRenderPlugin::default()); + app.add_plugins(( + RapierDebugRenderPlugin::default(), + WorldInspectorPlugin::new(), + )); // app.insert_resource(ClearColor(Color::rgb(0., 0., 0.))); @@ -79,6 +83,7 @@ fn setup( commands.spawn(( BackgroundImageBundle::from_image(image, materials.as_mut()).at_z_layer(-0.1), NoFrustumCulling, + Name::new("Background"), )); // TODO: Moved here from menu to prevent reloading every time the credits are toggled. @@ -95,5 +100,6 @@ fn setup( ForState { states: AppState::IN_MENU_STATE.to_vec(), }, + Name::new("Menu Music"), )); } diff --git a/src/menu.rs b/src/menu.rs index 27370a4..a0d320d 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -50,17 +50,21 @@ fn setup(mut commands: Commands, asset_server: Res) { ForState { states: vec![AppState::StartMenu], }, + Name::new("Start Menu"), )) .with_children(|parent| { - parent.spawn((ImageBundle { - image: UiImage::new(asset_server.load("verse.png")), - style: Style { - width: Val::Px(350.0), - height: Val::Px(169.4), + parent.spawn(( + ImageBundle { + image: UiImage::new(asset_server.load("verse.png")), + style: Style { + width: Val::Px(350.0), + height: Val::Px(169.4), + ..default() + }, ..default() }, - ..default() - },)); + Name::new("Title"), + )); parent.spawn(( TextBundle { style: Style { @@ -98,6 +102,7 @@ fn setup(mut commands: Commands, asset_server: Res) { ForState { states: vec![AppState::StartMenu], }, + Name::new("Hint Container"), )) .with_children(|parent| { parent.spawn((TextBundle { diff --git a/src/ship.rs b/src/ship.rs index aba72b4..1d062ee 100644 --- a/src/ship.rs +++ b/src/ship.rs @@ -82,6 +82,7 @@ fn setup(mut commands: Commands, asset_server: Res) { action_state: ActionState::default(), input_map: input_map.build(), }, + Name::new("Ship"), )); } diff --git a/src/state.rs b/src/state.rs index 9a1bf31..2d5c830 100644 --- a/src/state.rs +++ b/src/state.rs @@ -47,14 +47,17 @@ fn game_setup( asset_server: Res, mut next_state: ResMut>, ) { - commands.spawn(AudioBundle { - source: asset_server.load("sound/Kirk Osamayo - Space Dust.ogg"), - settings: PlaybackSettings { - mode: PlaybackMode::Loop, - volume: Volume::new_absolute(0.5), - ..default() + commands.spawn(( + AudioBundle { + source: asset_server.load("sound/Kirk Osamayo - Space Dust.ogg"), + settings: PlaybackSettings { + mode: PlaybackMode::Loop, + volume: Volume::new_absolute(0.5), + ..default() + }, }, - }); + Name::new("Ambient Music"), + )); next_state.set(AppState::Active); }