From 3ce73ff9120376e7c3341875d161a530963d847e Mon Sep 17 00:00:00 2001 From: Louis Capitanchik <contact@louiscap.co> Date: Sat, 15 Apr 2023 17:18:35 +0100 Subject: [PATCH] Update to bevy 0.10 --- .gitattributes | 1 + .gitlab-ci.yml | 10 +- Cargo.lock | 1174 +++++++++++++----------- Cargo.toml | 18 +- Makefile | 16 +- assets/splash_sting.mp3 | 3 - assets/splash_sting.ogg | 3 + game_core/Cargo.toml | 9 +- game_core/src/assets/loader.rs | 2 + game_core/src/assets/mod.rs | 13 +- game_core/src/assets/resources.rs | 3 + game_core/src/assets/startup.rs | 19 +- game_core/src/main.rs | 15 +- game_core/src/splash_screen/mod.rs | 10 +- game_core/src/splash_screen/systems.rs | 10 +- game_core/src/system/camera.rs | 69 +- game_core/src/system/flow.rs | 106 ++- game_core/src/system/keycode.rs | 169 ++++ game_core/src/system/mod.rs | 5 +- game_core/src/system/resources.rs | 30 +- game_core/src/system/utilities.rs | 22 + game_core/src/system/web.rs | 15 +- game_core/src/system/window.rs | 94 +- 23 files changed, 1178 insertions(+), 638 deletions(-) delete mode 100644 assets/splash_sting.mp3 create mode 100644 assets/splash_sting.ogg create mode 100644 game_core/src/system/keycode.rs diff --git a/.gitattributes b/.gitattributes index cd6be07..5d89bba 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,3 +2,4 @@ *.png filter=lfs diff=lfs merge=lfs -text *.wav filter=lfs diff=lfs merge=lfs -text *.ttf filter=lfs diff=lfs merge=lfs -text +*.ogg filter=lfs diff=lfs merge=lfs -text diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0867f1b..10be7d8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -22,7 +22,7 @@ build-windows: - .cargo/bin/ - target/ script: - - cargo build --release -p ${BINARY_FOLDER} --target x86_64-pc-windows-gnu + - cargo build --release --features "embed" -p ${BINARY_FOLDER} --target x86_64-pc-windows-gnu artifacts: expire_in: 1 day paths: @@ -44,7 +44,7 @@ build-linux: - .cargo/bin/ - target/ script: - - cargo build --release -p ${BINARY_FOLDER} --target x86_64-unknown-linux-gnu + - cargo build --release --features "embed" -p ${BINARY_FOLDER} --target x86_64-unknown-linux-gnu artifacts: expire_in: 1 day paths: @@ -95,7 +95,7 @@ build-web: - mkdir "${CI_PROJECT_DIR}/${BINARY_FOLDER}/dist" - make assets - sed -i 's#public_url = "/"#public_url = "./"#' "${CI_PROJECT_DIR}/${BINARY_FOLDER}/Trunk.toml" - - cd "${CI_PROJECT_DIR}/${BINARY_FOLDER}" && trunk build --release + - cd "${CI_PROJECT_DIR}/${BINARY_FOLDER}" && trunk build --features "embed" --release - cd "${CI_PROJECT_DIR}" artifacts: expire_in: 1 day @@ -113,8 +113,8 @@ package-all: - cp target/x86_64-unknown-linux-gnu/release/${BINARY_NAME} "dist/${BINARY_NAME}" - cp target/x86_64-pc-windows-gnu/release/${BINARY_NAME}.exe "dist/${BINARY_NAME}.exe" # - cp target/aarch64-unknown-linux-gnu/release/${BINARY_NAME} "dist/${BINARY_NAME}.arm64" - - cd "${CI_PROJECT_DIR}/dist" && zip -r "windows.zip" "./${BINARY_NAME}.exe" ./assets - - cd "${CI_PROJECT_DIR}/dist" && zip -r "linux.x86.zip" "./${BINARY_NAME}" ./assets + - cd "${CI_PROJECT_DIR}/dist" && zip -r "windows.zip" "./${BINARY_NAME}.exe" # ./assets + - cd "${CI_PROJECT_DIR}/dist" && zip -r "linux.x86.zip" "./${BINARY_NAME}" # ./assets # - cd "${CI_PROJECT_DIR}/dist" && zip -r "linux.arm64.zip" "./${BINARY_NAME}.arm64" ./assets - cd "${CI_PROJECT_DIR}/${BINARY_FOLDER}/dist" && zip -r "web.zip" ./* - cd "${CI_PROJECT_DIR}" && mv "${CI_PROJECT_DIR}/game_core/dist/web.zip" "${CI_PROJECT_DIR}/dist/web.zip" diff --git a/Cargo.lock b/Cargo.lock index 2fc492e..cd56954 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcdbc68024b653943864d436fe8a24b028095bc1cf91a8926f8241e4aaffe59" +checksum = "fe21446ad43aa56417a767f3e2f3d7c4ca522904de1dd640529a76e9c5c3b33c" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,9 +14,71 @@ dependencies = [ [[package]] name = "ab_glyph_rasterizer" -version = "0.1.7" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" + +[[package]] +name = "accesskit" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "704d532b1cd3d912bb37499c55a81ac748cc1afa737eedd100ba441acdd47d38" + +[[package]] +name = "accesskit_consumer" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48ba8b23cfca3944012ee2e5c71c02077a400e034c720eed6bd927cb6b4d1fd9" +dependencies = [ + "accesskit", +] + +[[package]] +name = "accesskit_macos" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58d062544d6cc36f4213323b7cb3a0d74ddff4b0d2311ab5e7596f4278bb2cc9" +dependencies = [ + "accesskit", + "accesskit_consumer", + "objc2", + "once_cell", +] + +[[package]] +name = "accesskit_windows" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" +checksum = "aaf5b3c3828397ee832ba4a72fb1a4ace10f781e31885f774cbd531014059115" +dependencies = [ + "accesskit", + "accesskit_consumer", + "arrayvec", + "once_cell", + "paste", + "windows 0.44.0", +] + +[[package]] +name = "accesskit_winit" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcb615217efc79c4bed3094c4ca76c4bc554751d1da16f3ed4ba0459b1e8f31" +dependencies = [ + "accesskit", + "accesskit_macos", + "accesskit_windows", + "winit", +] + +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli", +] [[package]] name = "adler" @@ -67,23 +129,35 @@ dependencies = [ ] [[package]] -name = "android_log-sys" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" - -[[package]] -name = "android_logger" -version = "0.11.1" +name = "android-activity" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e9dd62f37dea550caf48c77591dc50bd1a378ce08855be1a0c42a97b7550fb" +checksum = "7c77a0045eda8b888c76ea473c2b0515ba6f471d318f8927c5c72240937035a6" dependencies = [ - "android_log-sys", - "env_logger", + "android-properties", + "bitflags", + "cc", + "jni-sys", + "libc", "log", - "once_cell", + "ndk 0.7.0", + "ndk-context", + "ndk-sys 0.4.1+23.1.7779620", + "num_enum", ] +[[package]] +name = "android-properties" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" + +[[package]] +name = "android_log-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85965b6739a430150bdd138e2374a98af0c3ee0d030b3bb7fc3bddff58d0102e" + [[package]] name = "android_system_properties" version = "0.1.5" @@ -116,9 +190,9 @@ checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" [[package]] name = "ash" -version = "0.37.1+1.3.235" +version = "0.37.2+1.3.238" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "911015c962d56e2e4052f40182ca5462ba60a3d2ff04e827c365a0ab3d65726d" +checksum = "28bf19c1f0a470be5fbf7522a308a05df06610252c5bcf5143e1b23f629a9a03" dependencies = [ "libloading", ] @@ -129,7 +203,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf46fee83e5ccffc220104713af3292ff9bc7c64c7de289f66dae8e38d826833" dependencies = [ - "concurrent-queue 2.0.0", + "concurrent-queue", "event-listener", "futures-core", ] @@ -142,7 +216,7 @@ checksum = "17adb73da160dfb475c183343c8cccd80721ea5a605d3eb57125f0a7b7a92d0b" dependencies = [ "async-lock", "async-task", - "concurrent-queue 2.0.0", + "concurrent-queue", "fastrand", "futures-lite", "slab", @@ -176,6 +250,21 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +[[package]] +name = "backtrace" +version = "0.3.67" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233d376d6d185f2a3093e58f283f60f880315b6c60075b01f36b3b85154564ca" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + [[package]] name = "base-x" version = "0.2.11" @@ -190,18 +279,30 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bevy" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dae99b246505811f5bc19d2de1e406ec5d2816b421d58fa223779eb576f472c9" +checksum = "b93f906133305915d63f04108e6873c1b93a6605fe374b8f3391f6bda093e396" dependencies = [ "bevy_internal", ] +[[package]] +name = "bevy_a11y" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037c4063f7dac1a5d596eb47f40782a04ca5838dc4274dbbadc90eb81efe5169" +dependencies = [ + "accesskit", + "bevy_app", + "bevy_derive", + "bevy_ecs", +] + [[package]] name = "bevy_app" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "536e4d0018347478545ed8b6cb6e57b9279ee984868e81b7c0e78e0fb3222e42" +checksum = "01db46963eb9486f7884121527ec69751d0e448f9e1d5329e80ea3424118a31a" dependencies = [ "bevy_derive", "bevy_ecs", @@ -214,9 +315,9 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db1bb550168304df69c867c09125e1aae7ff51cf21575396e1598bf293442c4" +checksum = "98609b4b0694a23bde0628aed626644967991f167aad9db2afb68dacb0017540" dependencies = [ "anyhow", "bevy_app", @@ -226,11 +327,11 @@ dependencies = [ "bevy_reflect", "bevy_tasks", "bevy_utils", + "bevy_winit", "crossbeam-channel", "downcast-rs", "fastrand", "js-sys", - "ndk-glue", "notify", "parking_lot", "serde", @@ -242,9 +343,9 @@ dependencies = [ [[package]] name = "bevy_core" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96299aceb3c8362cb4aa39ff81c7ef758a5f4e768d16b5046a91628eff114ac0" +checksum = "0ee53d7b4691b57207d72e996992c995a53f3e8d21ca7151ca3956d9ce7d232e" dependencies = [ "bevy_app", "bevy_ecs", @@ -258,9 +359,9 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc128a9860aadf16fb343ae427f2768986fd91dce64d945455acda9759c48014" +checksum = "093ae5ced77251602ad6e43521e2acc1a5570bf85b80f232f1a7fdd43b50f8d8" dependencies = [ "bevy_app", "bevy_asset", @@ -278,20 +379,20 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7baf73c58d41c353c6fd08e6764a2e7420c9f19e8227b391c50981db6d0282a6" +checksum = "dff0add5ab4a6b2b7e86e18f9043bb48b6386faa3b56abaa0ed97a3d669a1992" dependencies = [ "bevy_macro_utils", "quote", - "syn", + "syn 1.0.105", ] [[package]] name = "bevy_diagnostic" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63bf96ec7980fa25b77ff6c72dfafada477936c0dab76c1edf6c028c0e5fe0e4" +checksum = "64c778422643b0adee9e82abbd07e1e906eb9947c274a9b18e0f7fbf137d4c34" dependencies = [ "bevy_app", "bevy_core", @@ -299,13 +400,14 @@ dependencies = [ "bevy_log", "bevy_time", "bevy_utils", + "sysinfo", ] [[package]] name = "bevy_ecs" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c071d7c6bc9801253485e05d0c257284150de755391902746837ba21c0cf74" +checksum = "bed2f74687ccf13046c0f8e3b00dc61d7e656877b4a1380cf04635bb74d8e586" dependencies = [ "async-channel", "bevy_ecs_macros", @@ -316,77 +418,48 @@ dependencies = [ "downcast-rs", "event-listener", "fixedbitset", - "fxhash", + "rustc-hash", "serde", "thread_local", ] [[package]] name = "bevy_ecs_macros" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15bd45438eeb681ad74f2d205bb07a5699f98f9524462a30ec764afab2742ce" +checksum = "a97fd126a0db7b30fb1833614b3a657b44ac88485741c33b2780e25de0f96d78" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] -name = "bevy_ecs_tilemap" -version = "0.9.0" +name = "bevy_embedded_assets" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ce7f9fa49f364602ac0901d5f181445529b23fb0623e39e791548f8a6e8c2b5" +checksum = "2a1d4ecf67c553196cfdef560cf0748f1f699db5a86ed2aa211c958e2a379451" dependencies = [ "bevy", - "log", - "regex", + "cargo-emit", ] [[package]] name = "bevy_encase_derive" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "962b6bb0d30e92ec2e6c29837acce9e55b920733a634e7c3c5fd5a514bea7a24" +checksum = "c086ebdc1f5522787d63772943277cc74a279445fb65db4d58c2c5330654648e" dependencies = [ "bevy_macro_utils", "encase_derive_impl", ] -[[package]] -name = "bevy_gltf" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e853e346ba412354e02292c7aa5b9a9dccdfa748e273b1b7ebf8f6a172f89712" -dependencies = [ - "anyhow", - "base64", - "bevy_app", - "bevy_asset", - "bevy_core", - "bevy_core_pipeline", - "bevy_ecs", - "bevy_hierarchy", - "bevy_log", - "bevy_math", - "bevy_pbr", - "bevy_reflect", - "bevy_render", - "bevy_scene", - "bevy_tasks", - "bevy_transform", - "bevy_utils", - "gltf", - "percent-encoding", - "thiserror", -] - [[package]] name = "bevy_hierarchy" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd6d50c48c6e1bcb5e08a768b765323292bb3bf3a439b992754c57ffb85b23a" +checksum = "9d04099865a13d1fd8bf3c044a80148cb3d23bfe8c3d5f082dda2ce091d85532" dependencies = [ "bevy_app", "bevy_core", @@ -399,9 +472,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3378b5171284f4c4c0e8307081718a9fe458f846444616bd82d69110dcabca51" +checksum = "a15d40aa636bb656967ac16ca36066ab7a7bb9179e1b0390c5705e54208e8fd7" dependencies = [ "bevy_app", "bevy_ecs", @@ -414,10 +487,11 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c46014b7e885b1311de06b6039e448454a4db55b8d35464798ba88faa186e11" +checksum = "862b11931c5874cb00778ffb715fc526ee49e52a493d3bcf50e8010f301858b3" dependencies = [ + "bevy_a11y", "bevy_app", "bevy_asset", "bevy_core", @@ -425,7 +499,6 @@ dependencies = [ "bevy_derive", "bevy_diagnostic", "bevy_ecs", - "bevy_gltf", "bevy_hierarchy", "bevy_input", "bevy_log", @@ -434,6 +507,7 @@ dependencies = [ "bevy_ptr", "bevy_reflect", "bevy_render", + "bevy_scene", "bevy_sprite", "bevy_tasks", "bevy_text", @@ -443,14 +517,13 @@ dependencies = [ "bevy_utils", "bevy_window", "bevy_winit", - "ndk-glue", ] [[package]] name = "bevy_kira_audio" -version = "0.13.0" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b310ffe1c870e6ca5f0db228953f68af5a861302ec759edae43450f5835a0ece" +checksum = "468257f6c7980d847aba0e9b6c9e4ff4045598510637d6e484b5f290c00a1f92" dependencies = [ "anyhow", "bevy", @@ -461,9 +534,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c480bac54cf4ae76edc3ae9ae3fa7c5e1b385e7f2111ef5ec3fd00cf3a7998b" +checksum = "25980c90ceaad34d09a53291e72ca56fcc754a974cd4654fffcf5b68b283b7a7" dependencies = [ "android_log-sys", "bevy_app", @@ -477,20 +550,20 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "022bb69196deeea691b6997414af85bbd7f2b34a8914c4aa7a7ff4dfa44f7677" +checksum = "5b2fee53b2497cdc3bffff2ddf52afa751242424a5fd0d51d227d4dab081d0d9" dependencies = [ "quote", - "syn", - "toml", + "syn 1.0.105", + "toml_edit", ] [[package]] name = "bevy_math" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434c77ab766c806ed9062ef8a7285b3b02b47df51f188d4496199c3ac062eaf" +checksum = "da6a1109d06fe947990db032e719e162414cf9bf7a478dcc52742f1c7136c42a" dependencies = [ "glam", "serde", @@ -498,18 +571,18 @@ dependencies = [ [[package]] name = "bevy_mikktspace" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfb5908d33fd613069be516180b8f138aaaf6e41c36b1fd98c6c29c00c24a13" +checksum = "39106bc2ee21fce9496d2e15e0ba7925dff63e3eae10f7c1fc0094b56ad9f2bb" dependencies = [ "glam", ] [[package]] name = "bevy_pbr" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "310b1f260a475d81445623e138e1b7245759a42310bc1f84b550a3f4ff8763bf" +checksum = "4f507cef55812aa70c2ec2b30fb996eb285fa7497d974cf03f76ec49c77fbe27" dependencies = [ "bevy_app", "bevy_asset", @@ -529,15 +602,15 @@ dependencies = [ [[package]] name = "bevy_ptr" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ec44f7655039546bc5d34d98de877083473f3e9b2b81d560c528d6d74d3eff4" +checksum = "0c4b88451d4c5a353bff67dbaa937b6886efd26ae114769c17f2b35099c7a4de" [[package]] name = "bevy_reflect" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6deae303a7f69dc243b2fa35b5e193cc920229f448942080c8eb2dbd9de6d37a" +checksum = "9fc3979471890e336f3ba87961ef3ecd45c331cf2cb2f582c885e541af228b48" dependencies = [ "bevy_math", "bevy_ptr", @@ -555,25 +628,26 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bf4cb9cd5acb4193f890f36cb63679f1502e2de025e66a63b194b8b133d018" +checksum = "2bc7ea7c9bc2c531eb29ba5619976613d6680453ff5dd4a7fcd08848e8bec5ad" dependencies = [ "bevy_macro_utils", "bit-set", "proc-macro2", "quote", - "syn", + "syn 1.0.105", "uuid", ] [[package]] name = "bevy_render" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3282a8f8779d2aced93207fbed73f740937c6c2bd27bd84f0799b081c7fca5" +checksum = "ee1e126226f0a4d439bf82fe07c1104f894a6a365888e3eba7356f9647e77a83" dependencies = [ "anyhow", + "async-channel", "bevy_app", "bevy_asset", "bevy_core", @@ -586,6 +660,7 @@ dependencies = [ "bevy_mikktspace", "bevy_reflect", "bevy_render_macros", + "bevy_tasks", "bevy_time", "bevy_transform", "bevy_utils", @@ -595,7 +670,6 @@ dependencies = [ "downcast-rs", "encase", "futures-lite", - "hex", "hexasphere", "image", "naga", @@ -607,25 +681,26 @@ dependencies = [ "thiserror", "thread_local", "wgpu", + "wgpu-hal", ] [[package]] name = "bevy_render_macros" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7acae697776ac05bea523e1725cf2660c91c53abe72c66782ea1e1b9eedb572" +checksum = "652f8c4d9577c6e6a8b3dfd8a4ce331e8b6ecdbb99636a4b2701dec50104d6bc" dependencies = [ "bevy_macro_utils", "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] name = "bevy_scene" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea9c66a628c833d53bae54fe94cbc0d3f12c29e9d2e6c3f2356d45ad57db0c8c" +checksum = "1de59637d27726251091120ce6f63917328ffd60aaccbda4d65a615873aff631" dependencies = [ "anyhow", "bevy_app", @@ -645,9 +720,9 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ec01c7db7f698d95bcb70708527c3ae6bcdc78fc247abe74f935cae8f0a1145" +checksum = "c110358fe3651a5796fd1c07989635680738f5b5c7e9b8a463dd50d12bb78410" dependencies = [ "bevy_app", "bevy_asset", @@ -670,14 +745,14 @@ dependencies = [ [[package]] name = "bevy_tasks" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "680b16b53df9c9f24681dd95f4d772d83760bd19adf8bca00f358a3aad997853" +checksum = "3de86364316e151aeb0897eaaa917c3ad5ee5ef1471a939023cf7f2d5ab76955" dependencies = [ "async-channel", "async-executor", "async-task", - "concurrent-queue 1.2.4", + "concurrent-queue", "futures-lite", "once_cell", "wasm-bindgen-futures", @@ -685,9 +760,9 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60c74c1bdaabde7db28f6728aa13bc7b1d744a2201b2bbfd83d2224404c57f5c" +checksum = "995188f59dc06da3fc951e1f58a105cde2c817d5330ae67ddc0a140f46482f6b" dependencies = [ "ab_glyph", "anyhow", @@ -708,9 +783,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c38a6d3ea929c7f81e6adf5a6c62cf7e8c40f5106c2174d6057e9d8ea624d" +checksum = "d3edbd605df1bced312eb9888d6be3d5a5fcac3d4140038bbe3233d218399eef" dependencies = [ "bevy_app", "bevy_ecs", @@ -718,13 +793,14 @@ dependencies = [ "bevy_utils", "crossbeam-channel", "serde", + "thiserror", ] [[package]] name = "bevy_transform" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba13c57a040b89767191a6f6d720a635b7792793628bfa41a9e38b7026484aec" +checksum = "24383dfb97d8a14b17721ecfdf58556eff5ea9a4b2a3d91accf2b472783880b0" dependencies = [ "bevy_app", "bevy_ecs", @@ -734,12 +810,23 @@ dependencies = [ "serde", ] +[[package]] +name = "bevy_tweening" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7adaf4294484caea3707d280198ad06dd53b9e9adbb0816618c7edce11c990d6" +dependencies = [ + "bevy", + "interpolation", +] + [[package]] name = "bevy_ui" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e82ace6156f11fcdf2319102ff8fb8367b82d1e32b7d05d387a1963602f965" +checksum = "cb597aeed4e1bf5e6913879c3e22a7d50a843b822a7f71a4a80ebdfdf79e68d4" dependencies = [ + "bevy_a11y", "bevy_app", "bevy_asset", "bevy_core_pipeline", @@ -765,23 +852,37 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16750aae52cd35bd7b60eb61cee883420b250e11b4a290b8d44b2b2941795739" +checksum = "0a88ebbca55d360d72e9fe78df0d22e25cd419933c9559e79dae2757f7c4d066" dependencies = [ "ahash", + "bevy_utils_proc_macros", "getrandom", "hashbrown", "instant", + "petgraph", + "thiserror", "tracing", "uuid", ] +[[package]] +name = "bevy_utils_proc_macros" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630b92e32fa5cd7917c7d4fdbf63a90af958b01e096239f71bc4f8f3cf40c0d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.105", +] + [[package]] name = "bevy_window" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a44d3f3bd54a2261f4f57f614bf7bccc8d2832761493c0cd7dab81d98cc151e" +checksum = "ad31234754268fbe12050290b0496e2296252a16995a38f94bfb9680a4f09fda" dependencies = [ "bevy_app", "bevy_ecs", @@ -789,25 +890,30 @@ dependencies = [ "bevy_math", "bevy_reflect", "bevy_utils", - "raw-window-handle 0.5.0", + "raw-window-handle", "serde", ] [[package]] name = "bevy_winit" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7b7e647ecd0b3577468da37767dcdd7c26ca9f80da0060b2ec4c77336b6d2e1" +checksum = "cf17bd6330f7e633b7c56754c776511a8f52cde4bf54c0278f34d7527548f253" dependencies = [ + "accesskit_winit", "approx", + "bevy_a11y", "bevy_app", + "bevy_derive", "bevy_ecs", + "bevy_hierarchy", "bevy_input", "bevy_math", "bevy_utils", "bevy_window", "crossbeam-channel", - "raw-window-handle 0.5.0", + "once_cell", + "raw-window-handle", "wasm-bindgen", "web-sys", "winit", @@ -830,7 +936,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn", + "syn 1.0.105", ] [[package]] @@ -860,6 +966,25 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" +[[package]] +name = "block-sys" +version = "0.1.0-beta.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa55741ee90902547802152aaf3f8e5248aab7e21468089560d4c8840561146" +dependencies = [ + "objc-sys", +] + +[[package]] +name = "block2" +version = "0.2.0-alpha.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" +dependencies = [ + "block-sys", + "objc2-encode", +] + [[package]] name = "bumpalo" version = "3.11.1" @@ -883,7 +1008,7 @@ checksum = "5fe233b960f12f8007e3db2d136e3cb1c291bfd7396e384ee76025fc1a3932b4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] @@ -898,12 +1023,6 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" -[[package]] -name = "cache-padded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" - [[package]] name = "calloop" version = "0.10.3" @@ -917,6 +1036,12 @@ dependencies = [ "vec_map", ] +[[package]] +name = "cargo-emit" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1582e1c9e755dd6ad6b224dcffb135d199399a4568d454bd89fe515ca8425695" + [[package]] name = "cc" version = "1.0.77" @@ -964,37 +1089,6 @@ dependencies = [ "libloading", ] -[[package]] -name = "cocoa" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" -dependencies = [ - "bitflags", - "block", - "cocoa-foundation", - "core-foundation", - "core-graphics", - "foreign-types", - "libc", - "objc", -] - -[[package]] -name = "cocoa-foundation" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" -dependencies = [ - "bitflags", - "block", - "core-foundation", - "core-graphics-types", - "foreign-types", - "libc", - "objc", -] - [[package]] name = "codespan-reporting" version = "0.11.1" @@ -1011,6 +1105,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" +[[package]] +name = "com-rs" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf43edc576402991846b093a7ca18a3477e0ef9c588cde84964b5d3e43016642" + [[package]] name = "combine" version = "4.6.6" @@ -1021,15 +1121,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "concurrent-queue" -version = "1.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" -dependencies = [ - "cache-padded", -] - [[package]] name = "concurrent-queue" version = "2.0.0" @@ -1137,7 +1228,7 @@ dependencies = [ "thiserror", "wasm-bindgen", "web-sys", - "windows", + "windows 0.37.0", ] [[package]] @@ -1176,50 +1267,15 @@ checksum = "b365fabc795046672053e29c954733ec3b05e4be654ab130fe8f1f94d7051f35" [[package]] name = "d3d12" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "827914e1f53b1e0e025ecd3d967a7836b7bcb54520f90e21ef8df7b4d88a2759" +checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" dependencies = [ "bitflags", "libloading", "winapi", ] -[[package]] -name = "darling" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a01d95850c592940db9b8194bc39f4bc0e89dee5c4265e4b1807c34a9aba453c" -dependencies = [ - "darling_core", - "darling_macro", -] - -[[package]] -name = "darling_core" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" -dependencies = [ - "fnv", - "ident_case", - "proc-macro2", - "quote", - "strsim", - "syn", -] - -[[package]] -name = "darling_macro" -version = "0.13.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" -dependencies = [ - "darling_core", - "quote", - "syn", -] - [[package]] name = "discard" version = "1.0.4" @@ -1249,9 +1305,9 @@ checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" [[package]] name = "encase" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6bdd416eb91cd6fb73a22fbc9fa1ea013641cce1a58905c31623ff9c562e811" +checksum = "e6591f13a63571c4821802eb5b10fd1155b1290bce87086440003841c8c3909b" dependencies = [ "const_panic", "encase_derive", @@ -1261,22 +1317,22 @@ dependencies = [ [[package]] name = "encase_derive" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df06cd7ea02426c2a0a164656bf116813584b461b8a7bb059b7941ab981105d3" +checksum = "4f1da6deed1f8b6f5909616ffa695f63a5de54d6a0f084fa715c70c8ed3abac9" dependencies = [ "encase_derive_impl", ] [[package]] name = "encase_derive_impl" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b299aab48b9a897ddd730dde2b5550af7c90ec6779c78e3c70f4c28d9337663f" +checksum = "ae489d58959f3c4cdd1250866a05acfb341469affe4fced71aff3ba228be1693" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] @@ -1288,16 +1344,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "env_logger" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7" -dependencies = [ - "log", - "regex", -] - [[package]] name = "erased-serde" version = "0.3.23" @@ -1339,7 +1385,7 @@ checksum = "4b9663d381d07ae25dc88dbdf27df458faa83a9b25336bcac83d5e452b5fc9d3" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "windows-sys 0.42.0", ] @@ -1359,12 +1405,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - [[package]] name = "foreign-types" version = "0.3.2" @@ -1431,11 +1471,14 @@ version = "0.1.0" dependencies = [ "anyhow", "bevy", + "bevy_embedded_assets", + "bevy_tweening", "fastrand", - "iyes_loopless", "log", "micro_banimate", + "micro_bevy_web_utils", "micro_musicbox", + "num-traits", "serde", "serde_json", "thiserror", @@ -1455,11 +1498,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0a93d233ebf96623465aad4046a8d3aa4da22d4f4beba5388838c8a434bbb4" + [[package]] name = "glam" -version = "0.22.0" +version = "0.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" +checksum = "8e4afd9ad95555081e109fe1d21f2a30c691b5f0919c67dfa690a2e1eb6bd51c" dependencies = [ "bytemuck", "serde", @@ -1473,9 +1522,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "glow" -version = "0.11.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bd5877156a19b8ac83a29b2306fe20537429d318f3ff0a1a2119f8d9c61919" +checksum = "4e007a07a24de5ecae94160f141029e9a347282cfe25d1d58d85d845cf3130f1" dependencies = [ "js-sys", "slotmap", @@ -1483,41 +1532,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "gltf" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00e0a0eace786193fc83644907097285396360e9e82e30f81a21e9b1ba836a3e" -dependencies = [ - "byteorder", - "gltf-json", - "lazy_static", -] - -[[package]] -name = "gltf-derive" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdd53d6e284bb2bf02a6926e4cc4984978c1990914d6cd9deae4e31cf37cd113" -dependencies = [ - "inflections", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "gltf-json" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9949836a9ec5e7f83f76fb9bbcbc77f254a577ebbdb0820867bc11979ef97cad" -dependencies = [ - "gltf-derive", - "serde", - "serde_derive", - "serde_json", -] - [[package]] name = "glyph_brush_layout" version = "0.2.3" @@ -1548,6 +1562,19 @@ dependencies = [ "bitflags", ] +[[package]] +name = "gpu-allocator" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434618454f74b63f9b39328298097256977c41ea0ba9d75a47238b77790b6163" +dependencies = [ + "backtrace", + "log", + "thiserror", + "winapi", + "windows 0.43.0", +] + [[package]] name = "gpu-descriptor" version = "0.2.3" @@ -1578,26 +1605,6 @@ dependencies = [ "svg_fmt", ] -[[package]] -name = "hash32" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" -dependencies = [ - "byteorder", -] - -[[package]] -name = "hash32-derive" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d2aba832b60be25c1b169146b27c64115470981b128ed84c8db18c1b03c6ff" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -1609,32 +1616,35 @@ dependencies = [ ] [[package]] -name = "hex" -version = "0.4.3" +name = "hassle-rs" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +checksum = "90601c6189668c7345fc53842cb3f3a3d872203d523be1b3cb44a36a3e62fb85" +dependencies = [ + "bitflags", + "com-rs", + "libc", + "libloading", + "thiserror", + "widestring", + "winapi", +] [[package]] name = "hexasphere" -version = "8.0.0" +version = "8.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "619ce654558681d7d0a7809e1b20249c7032ff13ee6baa7bb7ff64f7f28a906a" +checksum = "bd41d443f978bfa380a6dad58b62a08c43bcb960631f13e9d015b911eaf73588" dependencies = [ "glam", "once_cell", ] [[package]] -name = "hexf-parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" - -[[package]] -name = "ident_case" -version = "1.0.1" +name = "hexf-parse" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "image" @@ -1661,12 +1671,6 @@ dependencies = [ "hashbrown", ] -[[package]] -name = "inflections" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a" - [[package]] name = "inotify" version = "0.9.6" @@ -1700,22 +1704,16 @@ dependencies = [ ] [[package]] -name = "itoa" -version = "1.0.4" +name = "interpolation" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "d3b7357d2bbc5ee92f8e899ab645233e43d21407573cceb37fed8bc3dede2c02" [[package]] -name = "iyes_loopless" -version = "0.9.1" +name = "itoa" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c47fd2cbdb1d7f295c25e6bfccfd78a84b6eef3055bc9f01b34ae861721b01ee" -dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_time", - "bevy_utils", -] +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "jni" @@ -1912,22 +1910,35 @@ dependencies = [ [[package]] name = "micro_banimate" -version = "0.2.1" +version = "0.5.0-beta.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0f957d47035e81cda7636e2c9e17aa8fb8816a29bd1739935893b605ad4a09" +checksum = "bd0e8e0e1e65ec56f8c714f75cc3c93f61ce31227469e95ec5f438dca13bf81a" dependencies = [ "anyhow", "bevy", - "bevy_ecs_tilemap", "serde", "serde_json", ] +[[package]] +name = "micro_bevy_web_utils" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cf1bdf828257b02298c2277bfe364b160ec2a4e2ab6cd34877e8ed48bc96478" +dependencies = [ + "bevy_ecs", + "bevy_input", + "bevy_math", + "serde", + "serde_json", + "wasm-bindgen", +] + [[package]] name = "micro_musicbox" -version = "0.5.0" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7cd331da7327ecb5727449abb3a63654bd92003bf9a95eed8c9b0d4a93098eb" +checksum = "c581586c97190dce37df66c8df15d85254fa0371a8eee56f6790f231fb68f3bf" dependencies = [ "bevy", "bevy_kira_audio", @@ -1962,9 +1973,9 @@ dependencies = [ [[package]] name = "naga" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "262d2840e72dbe250e8cf2f522d080988dfca624c4112c096238a4845f591707" +checksum = "5eafe22a23b797c9bc227c6c896419b26b5bb88fa903417a3adaed08778850d5" dependencies = [ "bit-set", "bitflags", @@ -2005,7 +2016,7 @@ dependencies = [ "jni-sys", "ndk-sys 0.4.1+23.1.7779620", "num_enum", - "raw-window-handle 0.5.0", + "raw-window-handle", "thiserror", ] @@ -2015,36 +2026,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" -[[package]] -name = "ndk-glue" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0434fabdd2c15e0aab768ca31d5b7b333717f03cf02037d5a0a3ff3c278ed67f" -dependencies = [ - "android_logger", - "libc", - "log", - "ndk 0.7.0", - "ndk-context", - "ndk-macro", - "ndk-sys 0.4.1+23.1.7779620", - "once_cell", - "parking_lot", -] - -[[package]] -name = "ndk-macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0df7ac00c4672f9d5aece54ee3347520b7e20f158656c7db2e6de01902eb7a6c" -dependencies = [ - "darling", - "proc-macro-crate", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ndk-sys" version = "0.3.0" @@ -2129,6 +2110,15 @@ dependencies = [ "winapi", ] +[[package]] +name = "ntapi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc51db7b362b205941f71232e56c625156eb9a929f8cf74a428fd5bc094a4afc" +dependencies = [ + "winapi", +] + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2147,7 +2137,7 @@ checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] @@ -2198,7 +2188,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] @@ -2211,6 +2201,32 @@ dependencies = [ "objc_exception", ] +[[package]] +name = "objc-sys" +version = "0.2.0-beta.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b9834c1e95694a05a828b59f55fa2afec6288359cda67146126b3f90a55d7" + +[[package]] +name = "objc2" +version = "0.3.0-beta.3.patch-leaks.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +dependencies = [ + "block2", + "objc-sys", + "objc2-encode", +] + +[[package]] +name = "objc2-encode" +version = "2.0.0-pre.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +dependencies = [ + "objc-sys", +] + [[package]] name = "objc_exception" version = "0.1.2" @@ -2220,6 +2236,15 @@ dependencies = [ "cc", ] +[[package]] +name = "object" +version = "0.30.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea86265d3d3dcb6a27fc51bd29a4bf387fae9d2986b823079d4986af253eb439" +dependencies = [ + "memchr", +] + [[package]] name = "oboe" version = "0.4.6" @@ -2249,6 +2274,18 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +[[package]] +name = "orbclient" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e9829e16c5e112e94efb5e2ad1fe17f8c1c99bb0fcdc8c65c44e935d904767d" +dependencies = [ + "cfg-if", + "redox_syscall 0.2.16", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "overload" version = "0.1.1" @@ -2257,9 +2294,9 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "owned_ttf_parser" -version = "0.17.1" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18904d3c65493a9f0d7542293d1a7f69bfdc309a6b9ef4f46dc3e58b0577edc5" +checksum = "e25e9fb15717794fae58ab55c26e044103aad13186fbb625893f9a3bbcc24228" dependencies = [ "ttf-parser", ] @@ -2288,11 +2325,17 @@ checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.2.16", "smallvec", "windows-sys 0.42.0", ] +[[package]] +name = "paste" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" + [[package]] name = "peeking_take_while" version = "0.1.2" @@ -2361,9 +2404,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" dependencies = [ "unicode-ident", ] @@ -2376,9 +2419,9 @@ checksum = "74605f360ce573babfe43964cbe520294dcb081afbf8c108fc6e23036b4da2df" [[package]] name = "quote" -version = "1.0.21" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" dependencies = [ "proc-macro2", ] @@ -2395,15 +2438,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" -[[package]] -name = "raw-window-handle" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b800beb9b6e7d2df1fe337c9e3d04e3af22a124460fb4c30fcc22c9117cefb41" -dependencies = [ - "cty", -] - [[package]] name = "raw-window-handle" version = "0.5.0" @@ -2428,6 +2462,15 @@ dependencies = [ "bitflags", ] +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags", +] + [[package]] name = "regex" version = "1.7.0" @@ -2480,6 +2523,12 @@ dependencies = [ "serde", ] +[[package]] +name = "rustc-demangle" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a36c42d1873f9a77c53bde094f9664d9891bc604a45b4798fd2c389ed12e5b" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -2545,29 +2594,29 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.148" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e53f64bb4ba0191d6d0676e1b141ca55047d83b74f5607e6d8eb88126c52c2dc" +checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.148" +version = "1.0.160" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55492425aa53521babf6137309e7d34c20bbfbbfcfe2c7f3a047fd1f6b92c0c" +checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.15", ] [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" dependencies = [ "itoa", "ryu", @@ -2690,7 +2739,7 @@ dependencies = [ "quote", "serde", "serde_derive", - "syn", + "syn 1.0.105", ] [[package]] @@ -2706,7 +2755,7 @@ dependencies = [ "serde_derive", "serde_json", "sha1", - "syn", + "syn 1.0.105", ] [[package]] @@ -2715,12 +2764,6 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "svg_fmt" version = "0.4.1" @@ -2734,29 +2777,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17033fe05e4f7f10a6ad602c272bafd2520b2e5cdd9feb61494d9cdce08e002f" dependencies = [ "lazy_static", - "symphonia-bundle-mp3", + "symphonia-codec-vorbis", "symphonia-core", + "symphonia-format-ogg", "symphonia-metadata", ] [[package]] -name = "symphonia-bundle-mp3" -version = "0.5.1" +name = "symphonia-codec-vorbis" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db5d3d53535ae2b7d0e39e82f683cac5398a6c8baca25ff1183e107d13959d3e" +checksum = "7dfed6f7b6bfa21d7cef1acefc8eae5db80df1608a1aca91871b07cbd28d7b74" dependencies = [ - "bitflags", - "lazy_static", "log", "symphonia-core", - "symphonia-metadata", + "symphonia-utils-xiph", ] [[package]] name = "symphonia-core" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "199a6417cd4115bac79289b64b859358ea050b7add0ceb364dc991f628c5b347" +checksum = "6b9567e2d8a5f866b2f94f5d366d811e0c6826babcff6d37de9e1a6690d38869" dependencies = [ "arrayvec", "bitflags", @@ -2765,11 +2807,23 @@ dependencies = [ "log", ] +[[package]] +name = "symphonia-format-ogg" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "474df6e86b871dcb56913130bada1440245f483057c4a2d8a2981455494c4439" +dependencies = [ + "log", + "symphonia-core", + "symphonia-metadata", + "symphonia-utils-xiph", +] + [[package]] name = "symphonia-metadata" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed71acf6b5e6e8bee1509597b86365a06b78c1d73218df47357620a6fe5997b" +checksum = "acd35c263223ef6161000be79b124a75de3e065eea563bf3ef169b3e94c7bb2e" dependencies = [ "encoding_rs", "lazy_static", @@ -2777,6 +2831,16 @@ dependencies = [ "symphonia-core", ] +[[package]] +name = "symphonia-utils-xiph" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce340a6c33ac06cb42de01220308ec056e8a2a3d5cc664aaf34567392557136b" +dependencies = [ + "symphonia-core", + "symphonia-metadata", +] + [[package]] name = "syn" version = "1.0.105" @@ -2788,17 +2852,40 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "2.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sysinfo" +version = "0.28.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c2f3ca6693feb29a89724516f016488e9aafc7f37264f898593ee4b942f31b" +dependencies = [ + "cfg-if", + "core-foundation-sys", + "libc", + "ntapi", + "once_cell", + "winapi", +] + [[package]] name = "taffy" -version = "0.1.0" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec27dea659b100d489dffa57cf0efc6d7bfefb119af817b92cc14006c0b214e3" +checksum = "fab62c50c3d17993e7f0c72932e51ceeac5ec2b51c225fda8529d606159c99d8" dependencies = [ "arrayvec", - "hash32", - "hash32-derive", "num-traits", - "typenum", + "slotmap", ] [[package]] @@ -2827,7 +2914,7 @@ checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] @@ -2848,6 +2935,23 @@ dependencies = [ "serde", ] +[[package]] +name = "toml_datetime" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" + +[[package]] +name = "toml_edit" +version = "0.19.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow", +] + [[package]] name = "tracing" version = "0.1.37" @@ -2868,7 +2972,7 @@ checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.105", ] [[package]] @@ -2923,15 +3027,9 @@ dependencies = [ [[package]] name = "ttf-parser" -version = "0.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" - -[[package]] -name = "typenum" -version = "1.15.0" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" [[package]] name = "unicode-ident" @@ -3023,7 +3121,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.105", "wasm-bindgen-shared", ] @@ -3057,7 +3155,7 @@ checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.105", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3152,16 +3250,18 @@ dependencies = [ [[package]] name = "wgpu" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f643110d228fd62a60c5ed2ab56c4d5b3704520bd50561174ec4ec74932937" +checksum = "d14c6bfcf3b10f4273f522a95994553c0a5f2934976e62e61a720ae4bc2eb8f2" dependencies = [ "arrayvec", + "cfg-if", "js-sys", "log", "naga", "parking_lot", - "raw-window-handle 0.5.0", + "profiling", + "raw-window-handle", "smallvec", "static_assertions", "wasm-bindgen", @@ -3174,21 +3274,20 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.14.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6000d1284ef8eec6076fd5544a73125fd7eb9b635f18dceeb829d826f41724ca" +checksum = "7131408d940e335792645a98f03639573b0480e9e2e7cddbbab74f7c6d9f3fff" dependencies = [ "arrayvec", "bit-vec", "bitflags", - "cfg_aliases", "codespan-reporting", "fxhash", "log", "naga", "parking_lot", "profiling", - "raw-window-handle 0.5.0", + "raw-window-handle", "smallvec", "thiserror", "web-sys", @@ -3198,9 +3297,9 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.14.1" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cc320a61acb26be4f549c9b1b53405c10a223fbfea363ec39474c32c348d12f" +checksum = "82e95792925fe3d58950b9a5c2a191caa145e2bc570e2d233f0d7320f6a8e814" dependencies = [ "android_system_properties", "arrayvec", @@ -3214,9 +3313,12 @@ dependencies = [ "fxhash", "glow", "gpu-alloc", + "gpu-allocator", "gpu-descriptor", + "hassle-rs", "js-sys", "khronos-egl", + "libc", "libloading", "log", "metal", @@ -3225,7 +3327,7 @@ dependencies = [ "parking_lot", "profiling", "range-alloc", - "raw-window-handle 0.5.0", + "raw-window-handle", "renderdoc-sys", "smallvec", "thiserror", @@ -3237,13 +3339,21 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb6b28ef22cac17b9109b25b3bf8c9a103eeb293d7c5f78653979b09140375f6" +checksum = "ecf8cfcbf98f94cc8bd5981544c687140cf9d3948e2ab83849367ead2cd737cf" dependencies = [ "bitflags", + "js-sys", + "web-sys", ] +[[package]] +name = "widestring" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" + [[package]] name = "winapi" version = "0.3.9" @@ -3289,16 +3399,51 @@ dependencies = [ ] [[package]] -name = "windows-sys" -version = "0.36.1" +name = "windows" +version = "0.43.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04662ed0e3e5630dfa9b26e4cb823b817f1a9addda855d973a9458c236556244" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e745dab35a0c4c77aa3ce42d595e13d2003d6902d6b08c9ef5fc326d08da12b" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-targets", +] + +[[package]] +name = "windows-implement" +version = "0.44.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce87ca8e3417b02dc2a8a22769306658670ec92d78f1bd420d6310a67c245c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.105", +] + +[[package]] +name = "windows-interface" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +checksum = "853f69a591ecd4f810d29f17e902d40e349fb05b0b11fff63b08b826bfe39c7f" dependencies = [ - "windows_aarch64_msvc 0.36.1", - "windows_i686_gnu 0.36.1", - "windows_i686_msvc 0.36.1", - "windows_x86_64_gnu 0.36.1", - "windows_x86_64_msvc 0.36.1", + "proc-macro2", + "quote", + "syn 1.0.105", ] [[package]] @@ -3308,43 +3453,55 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc 0.42.2", ] [[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.0" +name = "windows-sys" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.36.1" +name = "windows-targets" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc 0.42.2", +] [[package]] -name = "windows_aarch64_msvc" -version = "0.37.0" +name = "windows_aarch64_gnullvm" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" [[package]] -name = "windows_i686_gnu" -version = "0.36.1" +name = "windows_aarch64_msvc" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_i686_gnu" @@ -3354,15 +3511,9 @@ checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" [[package]] name = "windows_i686_gnu" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" - -[[package]] -name = "windows_i686_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_msvc" @@ -3372,15 +3523,9 @@ checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" [[package]] name = "windows_i686_msvc" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_x86_64_gnu" @@ -3390,21 +3535,15 @@ checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.36.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_msvc" @@ -3414,18 +3553,19 @@ checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "winit" -version = "0.27.5" +version = "0.28.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" +checksum = "4f504e8c117b9015f618774f8d58cd4781f5a479bc41079c064f974cbb253874" dependencies = [ + "android-activity", "bitflags", - "cocoa", + "cfg_aliases", "core-foundation", "core-graphics", "dispatch", @@ -3434,22 +3574,32 @@ dependencies = [ "log", "mio", "ndk 0.7.0", - "ndk-glue", - "objc", + "objc2", "once_cell", - "parking_lot", + "orbclient", "percent-encoding", - "raw-window-handle 0.4.3", - "raw-window-handle 0.5.0", + "raw-window-handle", + "redox_syscall 0.3.5", "smithay-client-toolkit", "wasm-bindgen", "wayland-client", + "wayland-commons", "wayland-protocols", + "wayland-scanner", "web-sys", - "windows-sys 0.36.1", + "windows-sys 0.45.0", "x11-dl", ] +[[package]] +name = "winnow" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +dependencies = [ + "memchr", +] + [[package]] name = "x11-dl" version = "2.20.1" diff --git a/Cargo.toml b/Cargo.toml index 1686bec..78f5b7d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,23 +16,27 @@ log = "0.4.17" thiserror = "1.0.37" serde = "1.0.147" serde_json = "1.0.87" -iyes_loopless = "0.9.1" +num-traits = "0.2.15" -micro_musicbox = { version = "0.5.0", features = ["mp3"] } -micro_banimate = "0.2.1" -micro_bevy_web_utils = "0.1.0" +micro_musicbox = { version = "0.6.2", features = ["ogg"] } +micro_banimate = "0.5.0-beta.2" +micro_bevy_web_utils = "0.2.0" + +bevy_embedded_assets = "0.7.0" +bevy_tweening = "0.7.0" [workspace.dependencies.bevy] -version = "0.9.1" +version = "0.10.1" default-features = false features = [ "bevy_asset", - "render", + "bevy_sprite", "bevy_winit", "png", "hdr", "x11", "wayland", "serialize", - "filesystem_watcher" + "filesystem_watcher", + "bevy_core_pipeline", ] diff --git a/Makefile b/Makefile index 34f9ed6..4de73e3 100644 --- a/Makefile +++ b/Makefile @@ -20,19 +20,25 @@ setup-wayland: linux-deps wayland-deps cargo-deps assets: @echo "Beep Boop, No assets needed to be built" + run: RUSTFLAGS="-Awarnings" \ - cargo run -p game_core + cargo run --release --features "bevy/dynamic_linking" -p game_core + +dirty-build: + RUSTFLAGS="-Awarnings" \ + cargo build --release --features "embed" -p game_core run-web: + RUSTFLAGS="-Awarnings" \ cd game_core && trunk serve check: - cargo check --release --features "bevy/dynamic" -p game_core + cargo check --release -p game_core build-windows: clean_dist top_tail docker run --rm --name "${PROJECT_NAME}-build-windows" -v "$(CURRENT_DIRECTORY):/app" -w /app --user $(shell id -u):$(shell id -g) r.lcr.gr/microhacks/bevy-builder \ - cargo build --release -p game_core --target x86_64-pc-windows-gnu + cargo build --release --features "embed" -p game_core --target x86_64-pc-windows-gnu mkdir -p dist cp -r assets dist/assets cp target/x86_64-pc-windows-gnu/release/game_core.exe "dist/${PROJECT_NAME}.exe" @@ -40,14 +46,14 @@ build-windows: clean_dist top_tail build-linux: clean_dist top_tail docker run --rm --name "${PROJECT_NAME}-build-linux" -v "$(CURRENT_DIRECTORY):/app" -w /app --user $(shell id -u):$(shell id -g) r.lcr.gr/microhacks/bevy-builder \ - cargo build --release -p game_core --target x86_64-unknown-linux-gnu + cargo build --release --features "embed" -p game_core --target x86_64-unknown-linux-gnu mkdir -p dist cp -r assets dist/assets cp target/x86_64-unknown-linux-gnu/release/game_core "dist/${PROJECT_NAME}" cd dist && zip -r "${PROJECT_NAME}-linux.zip" "./${PROJECT_NAME}" ./assets build-web: top_tail - cd game_core && trunk build --release + cd game_core && trunk build --features "embed" --release cd game_core/dist && zip -r "${PROJECT_NAME}-web.zip" ./* clean_dist: diff --git a/assets/splash_sting.mp3 b/assets/splash_sting.mp3 deleted file mode 100644 index 60969e2..0000000 --- a/assets/splash_sting.mp3 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0b87909a495423ff0ad6870cbcb0af34a6b1f30b3b44c261aded03b910d79cde -size 187080 diff --git a/assets/splash_sting.ogg b/assets/splash_sting.ogg new file mode 100644 index 0000000..2021cd8 --- /dev/null +++ b/assets/splash_sting.ogg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bdee7232315c9e502fe583c3efc53ab30619c51c3c10d00e58c5415eaa3639c +size 93940 diff --git a/game_core/Cargo.toml b/game_core/Cargo.toml index f7f7b8b..3ee762e 100644 --- a/game_core/Cargo.toml +++ b/game_core/Cargo.toml @@ -5,8 +5,15 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[features] + +default = [] +embed = [] + [dependencies] bevy.workspace = true +bevy_tweening.workspace = true +bevy_embedded_assets.workspace = true fastrand.workspace = true anyhow.workspace = true @@ -14,7 +21,7 @@ log.workspace = true thiserror.workspace = true serde.workspace = true serde_json.workspace = true -iyes_loopless.workspace = true +num-traits.workspace = true micro_banimate.workspace = true micro_musicbox.workspace = true diff --git a/game_core/src/assets/loader.rs b/game_core/src/assets/loader.rs index a66028a..710473b 100644 --- a/game_core/src/assets/loader.rs +++ b/game_core/src/assets/loader.rs @@ -4,6 +4,7 @@ use bevy::asset::LoadState; use bevy::ecs::system::SystemParam; use bevy::prelude::*; use bevy::reflect::TypeUuid; +use micro_banimate::definitions::AnimationSet; use micro_musicbox::prelude::AudioSource; use crate::assets::{AssetHandles, FixedAssetNameMapping, SpriteSheetConfig}; @@ -55,6 +56,7 @@ impl<'w, 's> AssetTypeLoader<'w, 's> { load_basic_type!(load_images, Image => images); load_basic_type!(load_audio, AudioSource => sounds); load_basic_type!(load_font, Font => fonts); + load_basic_type!(load_animation, AnimationSet => animations); pub fn load_spritesheet( &mut self, diff --git a/game_core/src/assets/mod.rs b/game_core/src/assets/mod.rs index 5fc030e..0cef22e 100644 --- a/game_core/src/assets/mod.rs +++ b/game_core/src/assets/mod.rs @@ -2,13 +2,11 @@ mod loader; mod resources; mod startup; -use bevy::app::{App, Plugin}; -use iyes_loopless::condition::ConditionSet; -use iyes_loopless::prelude::AppLooplessStateExt; +use bevy::prelude::*; pub use loader::AssetTypeLoader; pub use resources::{AssetHandles, AssetNameMapping, FixedAssetNameMapping, SpriteSheetConfig}; -use crate::system::flow::AppState; +use crate::system::flow::{AppScheduleExt, AppState}; pub struct AssetsPlugin; impl Plugin for AssetsPlugin { @@ -16,11 +14,6 @@ impl Plugin for AssetsPlugin { app.init_resource::<AssetHandles>() .add_enter_system(AppState::Preload, startup::start_preload_resources) .add_enter_system(AppState::Preload, startup::start_load_resources) - .add_system_set( - ConditionSet::new() - .run_in_state(AppState::Setup) - .with_system(startup::check_load_resources) - .into(), - ); + .add_system(startup::check_load_resources.in_set(OnUpdate(AppState::Setup))); } } diff --git a/game_core/src/assets/resources.rs b/game_core/src/assets/resources.rs index 0800d96..425f79b 100644 --- a/game_core/src/assets/resources.rs +++ b/game_core/src/assets/resources.rs @@ -1,5 +1,6 @@ use bevy::prelude::*; use bevy::utils::HashMap; +use micro_banimate::definitions::AnimationSet; use micro_musicbox::prelude::AudioSource; use micro_musicbox::utilities::{SuppliesAudio, TrackType}; @@ -37,6 +38,7 @@ pub struct AssetHandles { pub atlas: HashMap<String, Handle<TextureAtlas>>, pub sounds: HashMap<String, Handle<AudioSource>>, pub fonts: HashMap<String, Handle<Font>>, + pub animations: HashMap<String, Handle<AnimationSet>> } macro_rules! fetch_wrapper { @@ -66,6 +68,7 @@ impl AssetHandles { fetch_wrapper!(atlas, TextureAtlas => atlas); fetch_wrapper!(sound, AudioSource => sounds); fetch_wrapper!(font, Font => fonts); + fetch_wrapper!(animation, AnimationSet => animations); } impl SuppliesAudio for AssetHandles { diff --git a/game_core/src/assets/startup.rs b/game_core/src/assets/startup.rs index cb6d71e..8f0ae56 100644 --- a/game_core/src/assets/startup.rs +++ b/game_core/src/assets/startup.rs @@ -1,25 +1,30 @@ use bevy::asset::LoadState; use bevy::prelude::*; -use iyes_loopless::prelude::NextState; use crate::assets::AssetTypeLoader; use crate::system::flow::AppState; -pub fn start_preload_resources(mut commands: Commands) { +pub fn start_preload_resources( + mut _commands: Commands, + mut next_state: ResMut<NextState<AppState>>, +) { // TODO: Add preload commands here - - commands.insert_resource(NextState(AppState::Setup)) + next_state.set(AppState::Setup); } pub fn start_load_resources(mut loader: AssetTypeLoader) { loader.load_images(&[("splash.png", "splash")]); - loader.load_audio(&[("splash_sting.mp3", "splash_sting")]); + loader.load_audio(&[("splash_sting.ogg", "splash_sting")]); } -pub fn check_load_resources(mut commands: Commands, loader: AssetTypeLoader) { +pub fn check_load_resources( + mut commands: Commands, + loader: AssetTypeLoader, + mut next_state: ResMut<NextState<AppState>>, +) { let load_states = loader.get_all_load_state(); if load_states.iter().all(|state| *state == LoadState::Loaded) { log::info!("Assets loaded successfully"); - commands.insert_resource(NextState(AppState::Splash)) + next_state.set(AppState::Splash); } } diff --git a/game_core/src/main.rs b/game_core/src/main.rs index 1eda1ba..7ba758c 100644 --- a/game_core/src/main.rs +++ b/game_core/src/main.rs @@ -1,22 +1,15 @@ use bevy::prelude::*; use game_core::assets::AssetHandles; use game_core::system::flow::AppState; -use game_core::system::resources::InitAppPlugins; -use iyes_loopless::prelude::AppLooplessStateExt; -use micro_musicbox::CombinedAudioPlugins; -// use remote_events::RemoteEventPlugin; fn main() { App::new() - .add_loopless_state(AppState::Preload) - .add_plugins(InitAppPlugins) + .add_state::<AppState>() + .add_plugins(game_core::system::resources::InitAppPlugins) .add_plugin(game_core::assets::AssetsPlugin) - .add_plugins(CombinedAudioPlugins::<AssetHandles>::new()) + .add_plugins(micro_musicbox::CombinedAudioPlugins::<AssetHandles>::new()) + .add_plugins(micro_banimate::BanimatePluginGroup) .add_plugin(game_core::splash_screen::SplashScreenPlugin) .add_plugin(game_core::system::camera::CameraManagementPlugin) - // .add_plugin(RemoteEventPlugin::< - // game_core::multiplayer::OutgoingEvent, - // game_core::multiplayer::IncomingEvent, - // >::new()) .run(); } diff --git a/game_core/src/splash_screen/mod.rs b/game_core/src/splash_screen/mod.rs index c7043c8..6a44354 100644 --- a/game_core/src/splash_screen/mod.rs +++ b/game_core/src/splash_screen/mod.rs @@ -1,7 +1,6 @@ use bevy::prelude::*; -use iyes_loopless::prelude::{AppLooplessStateExt, ConditionSet}; -use crate::system::flow::AppState; +use crate::system::flow::{AppScheduleExt, AppState}; mod components; mod systems; @@ -10,12 +9,7 @@ pub struct SplashScreenPlugin; impl Plugin for SplashScreenPlugin { fn build(&self, app: &mut App) { app.add_enter_system(AppState::Splash, systems::setup_splash_screen) - .add_system_set( - ConditionSet::new() - .run_in_state(AppState::Splash) - .with_system(systems::tick_splash_system) - .into(), - ) + .add_system(systems::tick_splash_system.in_set(OnUpdate(AppState::Splash))) .add_exit_system(AppState::Splash, systems::remove_splash_entities); } } diff --git a/game_core/src/splash_screen/systems.rs b/game_core/src/splash_screen/systems.rs index 9f7d47e..1cd7f4f 100644 --- a/game_core/src/splash_screen/systems.rs +++ b/game_core/src/splash_screen/systems.rs @@ -1,6 +1,5 @@ use bevy::prelude::*; use bevy::render::texture::ImageSampler; -use iyes_loopless::state::NextState; use micro_musicbox::music_box::MusicBox; use crate::assets::AssetHandles; @@ -33,6 +32,7 @@ pub fn setup_splash_screen( mut image_assets: ResMut<Assets<Image>>, handles: Res<AssetHandles>, mut music_box: MusicBox<AssetHandles>, + mut next_state: ResMut<NextState<AppState>>, ) { let (window_width, window_height) = virtual_size(); @@ -40,7 +40,7 @@ pub fn setup_splash_screen( Some(handle) => handle, None => { log::error!("No splash image was found; Skipping"); - commands.insert_resource(NextState(AppState::Menu)); + next_state.set(AppState::Menu); return; } }; @@ -48,7 +48,7 @@ pub fn setup_splash_screen( .get_mut(handle) .expect("An image was stored without the handle being persisted"); - commands.insert_resource(ClearColor(Color::hex("001122").unwrap())); + commands.insert_resource(bevy::prelude::ClearColor(Color::hex("001122").unwrap())); let scale_factor = match window_width > window_height { true => window_height / image_data.texture_descriptor.size.height as f32, @@ -92,8 +92,8 @@ pub fn setup_splash_screen( } pub fn tick_splash_system( - mut commands: Commands, time: Res<Time>, + mut next_state: ResMut<NextState<AppState>>, mut query: Query<(&mut Sprite, &mut SplashAnimation, &mut SplashAnimationTimer)>, ) { let tick = time.delta_seconds(); @@ -115,7 +115,7 @@ pub fn tick_splash_system( *anims = *anim.clone(); } None => { - commands.insert_resource(NextState(AppState::Menu)); + next_state.set(AppState::Menu); } } } diff --git a/game_core/src/system/camera.rs b/game_core/src/system/camera.rs index e3caa69..781dc16 100644 --- a/game_core/src/system/camera.rs +++ b/game_core/src/system/camera.rs @@ -1,42 +1,65 @@ use bevy::app::App; +use bevy::core_pipeline::clear_color::ClearColorConfig; use bevy::math::{Vec2, Vec3Swizzles}; -use bevy::prelude::{ - Camera2dBundle, Commands, Component, CoreStage, Entity, OrthographicProjection, Plugin, Query, - Transform, With, -}; +use bevy::prelude::*; use bevy::render::camera::ScalingMode; -use iyes_loopless::prelude::AppLooplessStateExt; +use bevy::render::view::RenderLayers; -use crate::system::flow::AppState; +use crate::system::flow::{AppScheduleExt, AppState}; use crate::system::load_config::virtual_size; /// A flag component to indicate which entity should be followed by the camera -#[derive(Component)] +#[derive(Component, Default)] pub struct ChaseCam; /// A flag component to indicate a camera that should be used for rendering world entities and sprites -#[derive(Component)] +#[derive(Component, Default)] pub struct GameCamera; /// System that creates a default orthographic camera, with correct tags for querying pub fn spawn_orthographic_camera(mut commands: Commands) { + spawn_camera( + &mut commands, + (GameCamera,), + 0, + ClearColorConfig::Default, + ); +} + +pub fn spawn_camera( + commands: &mut Commands, + tags: impl Bundle, + order: isize, + clear_color: ClearColorConfig, +) -> Entity { let (target_width, target_height) = virtual_size(); - commands.spawn(( - Camera2dBundle { - projection: OrthographicProjection { - left: -(target_width / 2.0), - right: (target_width / 2.0), - top: (target_height / 2.0), - bottom: -(target_height / 2.0), - scaling_mode: ScalingMode::Auto { - min_width: target_width, - min_height: target_height, + + commands + .spawn(( + Camera2dBundle { + camera: Camera { + order, + ..Default::default() + }, + projection: OrthographicProjection { + area: Rect::new( + -(target_width / 2.0), + -(target_height / 2.0), + (target_width / 2.0), + (target_height / 2.0), + ), + scaling_mode: ScalingMode::AutoMin { + min_width: target_width, + min_height: target_height, + }, + ..Default::default() }, + camera_2d: Camera2d { clear_color }, ..Default::default() }, - ..Default::default() - }, - GameCamera, - )); + RenderLayers::layer(order.max(0).min(RenderLayers::TOTAL_LAYERS as isize - 1) as u8), + tags, + )) + .id() } /// System that takes the average location of all chase camera entities, and updates the location @@ -75,6 +98,6 @@ pub struct CameraManagementPlugin; impl Plugin for CameraManagementPlugin { fn build(&self, app: &mut App) { app.add_enter_system(AppState::Preload, spawn_orthographic_camera) - .add_system_to_stage(CoreStage::PreUpdate, sync_chase_camera_location); + .add_system(sync_chase_camera_location); } } diff --git a/game_core/src/system/flow.rs b/game_core/src/system/flow.rs index 0f565c7..b7ac9ad 100644 --- a/game_core/src/system/flow.rs +++ b/game_core/src/system/flow.rs @@ -1,13 +1,15 @@ -use bevy::prelude::StageLabel; +use bevy::app::{App, CoreSet, Plugin}; +use bevy::prelude::*; /// An enum representing the current set of systems that should be running. /// Changing states should be done by inserting an `iyes_loopless` `NextState` /// resource with the value of one of these app states -#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, StageLabel)] +#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, States, Default)] pub enum AppState { /// During the preload state, embedded resources will be registered with Bevy. /// Embedded resources will be attached to the asset system with the path /// `internal:{resource-name}` + #[default] Preload, /// During the setup state, external resources will be registered by reading from /// the filesystem or the network. Progress can be displayed using the embedded @@ -22,3 +24,103 @@ pub enum AppState { /// will be spent here. InGame, } + +pub fn run_in_game(state: Res<State<AppState>>) -> bool { + state.0 == AppState::InGame +} +pub fn run_in_menu(state: Res<State<AppState>>) -> bool { + state.0 == AppState::Menu +} +pub fn run_in_splash(state: Res<State<AppState>>) -> bool { + state.0 == AppState::Splash +} +pub fn run_in_setup(state: Res<State<AppState>>) -> bool { + state.0 == AppState::Setup +} + +#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, SystemSet)] +#[system_set(base)] +pub enum FlowSet { + // Any custom processing steps, such as "player actions", or "process AI" + Cleanup, +} + +#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Debug, Hash, SystemSet)] +#[system_set(base)] +pub enum FlushFlowCommands { + // Create an associated flush step where actions will be applied, for each FlowSet + FlushCleanup, +} + +pub struct FlowSetPlugin; +impl Plugin for FlowSetPlugin { + fn build(&self, app: &mut App) { + app.configure_sets( + ( + CoreSet::UpdateFlush, + FlowSet::Cleanup, + FlushFlowCommands::FlushCleanup, + CoreSet::PostUpdate, + ) + .chain(), + ) + .add_system(apply_system_buffers.in_base_set(FlushFlowCommands::FlushCleanup)); + } +} + +pub trait AppScheduleExt { + fn add_enter_system<M>( + &mut self, + state: impl States, + system: impl IntoSystemAppConfig<M>, + ) -> &mut Self; + fn add_enter_systems<M>( + &mut self, + state: impl States, + system: impl IntoSystemAppConfigs<M>, + ) -> &mut Self; + fn add_exit_system<M>( + &mut self, + state: impl States, + system: impl IntoSystemAppConfig<M>, + ) -> &mut Self; + fn add_exit_systems<M>( + &mut self, + state: impl States, + system: impl IntoSystemAppConfigs<M>, + ) -> &mut Self; +} + +impl AppScheduleExt for App { + fn add_enter_system<M>( + &mut self, + state: impl States, + system: impl IntoSystemAppConfig<M>, + ) -> &mut Self { + self.add_system(system.in_schedule(OnEnter(state))) + } + + fn add_enter_systems<M>( + &mut self, + state: impl States, + systems: impl IntoSystemAppConfigs<M>, + ) -> &mut Self { + self.add_systems(systems.in_schedule(OnEnter(state))) + } + + fn add_exit_system<M>( + &mut self, + state: impl States, + system: impl IntoSystemAppConfig<M>, + ) -> &mut Self { + self.add_system(system.in_schedule(OnExit(state))) + } + + fn add_exit_systems<M>( + &mut self, + state: impl States, + systems: impl IntoSystemAppConfigs<M>, + ) -> &mut Self { + self.add_systems(systems.in_schedule(OnExit(state))) + } +} diff --git a/game_core/src/system/keycode.rs b/game_core/src/system/keycode.rs new file mode 100644 index 0000000..5ec750c --- /dev/null +++ b/game_core/src/system/keycode.rs @@ -0,0 +1,169 @@ +use bevy::prelude::KeyCode; + +pub fn keycode_string(code: KeyCode) -> &'static str { + match code { + KeyCode::Key1 => "Key1", + KeyCode::Key2 => "Key2", + KeyCode::Key3 => "Key3", + KeyCode::Key4 => "Key4", + KeyCode::Key5 => "Key5", + KeyCode::Key6 => "Key6", + KeyCode::Key7 => "Key7", + KeyCode::Key8 => "Key8", + KeyCode::Key9 => "Key9", + KeyCode::Key0 => "Key0", + KeyCode::A => "A", + KeyCode::B => "B", + KeyCode::C => "C", + KeyCode::D => "D", + KeyCode::E => "E", + KeyCode::F => "F", + KeyCode::G => "G", + KeyCode::H => "H", + KeyCode::I => "I", + KeyCode::J => "J", + KeyCode::K => "K", + KeyCode::L => "L", + KeyCode::M => "M", + KeyCode::N => "N", + KeyCode::O => "O", + KeyCode::P => "P", + KeyCode::Q => "Q", + KeyCode::R => "R", + KeyCode::S => "S", + KeyCode::T => "T", + KeyCode::U => "U", + KeyCode::V => "V", + KeyCode::W => "W", + KeyCode::X => "X", + KeyCode::Y => "Y", + KeyCode::Z => "Z", + KeyCode::Escape => "Escape", + KeyCode::F1 => "F1", + KeyCode::F2 => "F2", + KeyCode::F3 => "F3", + KeyCode::F4 => "F4", + KeyCode::F5 => "F5", + KeyCode::F6 => "F6", + KeyCode::F7 => "F7", + KeyCode::F8 => "F8", + KeyCode::F9 => "F9", + KeyCode::F10 => "F10", + KeyCode::F11 => "F11", + KeyCode::F12 => "F12", + KeyCode::F13 => "F13", + KeyCode::F14 => "F14", + KeyCode::F15 => "F15", + KeyCode::F16 => "F16", + KeyCode::F17 => "F17", + KeyCode::F18 => "F18", + KeyCode::F19 => "F19", + KeyCode::F20 => "F20", + KeyCode::F21 => "F21", + KeyCode::F22 => "F22", + KeyCode::F23 => "F23", + KeyCode::F24 => "F24", + KeyCode::Snapshot => "Snapshot", + KeyCode::Scroll => "Scroll", + KeyCode::Pause => "Pause", + KeyCode::Insert => "Insert", + KeyCode::Home => "Home", + KeyCode::Delete => "Delete", + KeyCode::End => "End", + KeyCode::PageDown => "PageDown", + KeyCode::PageUp => "PageUp", + KeyCode::Left => "Left", + KeyCode::Up => "Up", + KeyCode::Right => "Right", + KeyCode::Down => "Down", + KeyCode::Back => "Back", + KeyCode::Return => "Return", + KeyCode::Space => "Space", + KeyCode::Compose => "Compose", + KeyCode::Caret => "Caret", + KeyCode::Numlock => "Numlock", + KeyCode::Numpad0 => "Numpad0", + KeyCode::Numpad1 => "Numpad1", + KeyCode::Numpad2 => "Numpad2", + KeyCode::Numpad3 => "Numpad3", + KeyCode::Numpad4 => "Numpad4", + KeyCode::Numpad5 => "Numpad5", + KeyCode::Numpad6 => "Numpad6", + KeyCode::Numpad7 => "Numpad7", + KeyCode::Numpad8 => "Numpad8", + KeyCode::Numpad9 => "Numpad9", + KeyCode::AbntC1 => "AbntC1", + KeyCode::AbntC2 => "AbntC2", + KeyCode::NumpadAdd => "NumpadAdd", + KeyCode::Apostrophe => "Apostrophe", + KeyCode::Apps => "Apps", + KeyCode::Asterisk => "Asterisk", + KeyCode::Plus => "Plus", + KeyCode::At => "At", + KeyCode::Ax => "Ax", + KeyCode::Backslash => "Backslash", + KeyCode::Calculator => "Calculator", + KeyCode::Capital => "Capital", + KeyCode::Colon => "Colon", + KeyCode::Comma => "Comma", + KeyCode::Convert => "Convert", + KeyCode::NumpadDecimal => "NumpadDecimal", + KeyCode::NumpadDivide => "NumpadDivide", + KeyCode::Equals => "Equals", + KeyCode::Grave => "Grave", + KeyCode::Kana => "Kana", + KeyCode::Kanji => "Kanji", + KeyCode::LAlt => "LAlt", + KeyCode::LBracket => "LBracket", + KeyCode::LControl => "LControl", + KeyCode::LShift => "LShift", + KeyCode::LWin => "LWin", + KeyCode::Mail => "Mail", + KeyCode::MediaSelect => "MediaSelect", + KeyCode::MediaStop => "MediaStop", + KeyCode::Minus => "Minus", + KeyCode::NumpadMultiply => "NumpadMultiply", + KeyCode::Mute => "Mute", + KeyCode::MyComputer => "MyComputer", + KeyCode::NavigateForward => "NavigateForward", + KeyCode::NavigateBackward => "NavigateBackward", + KeyCode::NextTrack => "NextTrack", + KeyCode::NoConvert => "NoConvert", + KeyCode::NumpadComma => "NumpadComma", + KeyCode::NumpadEnter => "NumpadEnter", + KeyCode::NumpadEquals => "NumpadEquals", + KeyCode::Oem102 => "Oem102", + KeyCode::Period => "Period", + KeyCode::PlayPause => "PlayPause", + KeyCode::Power => "Power", + KeyCode::PrevTrack => "PrevTrack", + KeyCode::RAlt => "RAlt", + KeyCode::RBracket => "RBracket", + KeyCode::RControl => "RControl", + KeyCode::RShift => "RShift", + KeyCode::RWin => "RWin", + KeyCode::Semicolon => "Semicolon", + KeyCode::Slash => "Slash", + KeyCode::Sleep => "Sleep", + KeyCode::Stop => "Stop", + KeyCode::NumpadSubtract => "NumpadSubtract", + KeyCode::Sysrq => "Sysrq", + KeyCode::Tab => "Tab", + KeyCode::Underline => "Underline", + KeyCode::Unlabeled => "Unlabeled", + KeyCode::VolumeDown => "VolumeDown", + KeyCode::VolumeUp => "VolumeUp", + KeyCode::Wake => "Wake", + KeyCode::WebBack => "WebBack", + KeyCode::WebFavorites => "WebFavorites", + KeyCode::WebForward => "WebForward", + KeyCode::WebHome => "WebHome", + KeyCode::WebRefresh => "WebRefresh", + KeyCode::WebSearch => "WebSearch", + KeyCode::WebStop => "WebStop", + KeyCode::Yen => "Yen", + KeyCode::Copy => "Copy", + KeyCode::Paste => "Paste", + KeyCode::Cut => "Cut", + } +} diff --git a/game_core/src/system/mod.rs b/game_core/src/system/mod.rs index 5913484..2f33da8 100644 --- a/game_core/src/system/mod.rs +++ b/game_core/src/system/mod.rs @@ -1,7 +1,10 @@ pub mod camera; pub mod flow; +mod keycode; pub mod load_config; pub mod resources; pub mod utilities; +pub mod web; pub mod window; -pub mod web; \ No newline at end of file + +pub use keycode::keycode_string; diff --git a/game_core/src/system/resources.rs b/game_core/src/system/resources.rs index d194e09..dd9292e 100644 --- a/game_core/src/system/resources.rs +++ b/game_core/src/system/resources.rs @@ -1,31 +1,31 @@ use bevy::app::PluginGroupBuilder; use bevy::log::{Level, LogPlugin}; use bevy::prelude::*; -use bevy::window::{PresentMode, WindowMode}; +use bevy::window::{PresentMode, WindowMode, WindowResolution}; +use bevy_embedded_assets::EmbeddedAssetPlugin; use crate::system::load_config::{get_asset_path_string, initial_size}; pub struct DefaultResourcesPlugin; impl Plugin for DefaultResourcesPlugin { fn build(&self, app: &mut App) { - app.insert_resource(Msaa { samples: 1 }) + app.insert_resource(Msaa::Off) .insert_resource(ClearColor(Color::hex("040720").unwrap())); } } pub fn configure_default_plugins() -> PluginGroupBuilder { let (width, height) = initial_size(); - DefaultPlugins + let mut plugin_set = DefaultPlugins .set(WindowPlugin { - window: WindowDescriptor { - width, - height, + primary_window: Some(Window { + resolution: WindowResolution::new(width, height), resizable: true, mode: WindowMode::Windowed, - title: String::from("Bevy 2D Template"), + title: String::from("Game Core"), present_mode: PresentMode::AutoNoVsync, fit_canvas_to_parent: true, ..Default::default() - }, + }), ..Default::default() }) .set(AssetPlugin { @@ -35,15 +35,23 @@ pub fn configure_default_plugins() -> PluginGroupBuilder { .set(ImagePlugin::default_nearest()) .set(LogPlugin { filter: String::from( - "info,symphonia_core=warn,symphonia_bundle_mp3=warn,wgpu_core=warn,wgpu_hal=warn", + "info,game_core=debug,symphonia_core=warn,symphonia_format_ogg=warn,winit=warn,symphonia_bundle_mp3=warn,wgpu_core=warn,wgpu_hal=warn", ), level: Level::DEBUG, - }) + }); + + if cfg!(feature = "embed") { + plugin_set.add_before::<AssetPlugin, _>(EmbeddedAssetPlugin) + } else { + plugin_set + } } pub struct InitAppPlugins; impl PluginGroup for InitAppPlugins { fn build(self) -> PluginGroupBuilder { - configure_default_plugins().add(DefaultResourcesPlugin).add(super::web::WebPlugin) + configure_default_plugins() + .add(DefaultResourcesPlugin) + .add(super::web::WebPlugin) } } diff --git a/game_core/src/system/utilities.rs b/game_core/src/system/utilities.rs index 0244a87..907d28c 100644 --- a/game_core/src/system/utilities.rs +++ b/game_core/src/system/utilities.rs @@ -30,3 +30,25 @@ pub fn f32_min_mag(a: f32, b: f32) -> f32 { b.abs() } } + +#[macro_export] +macro_rules! deref_as { + ($name: ident => $target: ty) => { + impl std::ops::Deref for $name { + type Target = $target; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl std::ops::DerefMut for $name { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl From<$target> for $name { + fn from(other: $target) -> $name { + $name(other) + } + } + }; +} diff --git a/game_core/src/system/web.rs b/game_core/src/system/web.rs index 44c5d48..3b1903e 100644 --- a/game_core/src/system/web.rs +++ b/game_core/src/system/web.rs @@ -1,6 +1,6 @@ #[cfg(target_arch = "wasm32")] mod __plugin { - use bevy::app::{App, Plugin, CoreStage}; + use bevy::prelude::*; pub fn handle_startup_fullscreen() { if micro_bevy_web_utils::bindings::is_touch_device() { micro_bevy_web_utils::bindings::make_selector_fullscreen("canvas".to_string()); @@ -12,12 +12,11 @@ mod __plugin { pub struct WebPlugin; impl Plugin for WebPlugin { fn build(&self, app: &mut App) { - app.add_startup_system(handle_startup_fullscreen) - .add_system_to_stage( - CoreStage::First, - micro_bevy_web_utils::bevy::emit_touch_events, - ); - } + app.add_startup_system(handle_startup_fullscreen) + .add_system( + micro_bevy_web_utils::bevy::emit_touch_events.in_base_set(CoreSet::First), + ); + } } } @@ -30,4 +29,4 @@ mod __plugin { } } -pub use __plugin::WebPlugin; \ No newline at end of file +pub use __plugin::WebPlugin; diff --git a/game_core/src/system/window.rs b/game_core/src/system/window.rs index aa9cda5..aa2fdb7 100644 --- a/game_core/src/system/window.rs +++ b/game_core/src/system/window.rs @@ -1,47 +1,103 @@ use bevy::ecs::system::SystemParam; +use bevy::math::Vec4Swizzles; use bevy::prelude::*; +use bevy::window::PrimaryWindow; +// use advent_ui::prelude::Units; +// use num_traits::AsPrimitive; use crate::system::camera::GameCamera; +#[derive(PartialEq, Default, Debug, Copy, Clone, Resource)] +pub struct WindowUnits { + pub inner_width: f32, + pub inner_height: f32, + pub vw: f32, + pub vh: f32, +} + +// TODO: Enable if using advent_ui +// impl WindowUnits { +// pub fn vw_units<T: AsPrimitive<f32>>(&self, units: T) -> Units { +// Units::Pixels(self.vw * units.as_()) +// } +// pub fn vh_units<T: AsPrimitive<f32>>(&self, units: T) -> Units { +// Units::Pixels(self.vh * units.as_()) +// } +// } + +pub fn update_window_units(window: WindowManager, mut units: ResMut<WindowUnits>) { + let next_units = window.get_units(); + if next_units != *units { + *units = next_units; + } +} + +pub struct WindowSyncPlugin; +impl Plugin for WindowSyncPlugin { + fn build(&self, app: &mut App) { + app.init_resource::<WindowUnits>() + .add_system(update_window_units.in_base_set(CoreSet::First)); + } +} + /// A struct that provides several convenience methods for getting mouse and /// window related information #[derive(SystemParam)] pub struct WindowManager<'w, 's> { mouse: Res<'w, Input<MouseButton>>, - windows: Res<'w, Windows>, - cam_query: ParamSet<'w, 's, (Query<'w, 's, &'static Transform, With<GameCamera>>,)>, + windows: Query<'w, 's, &'static Window, With<PrimaryWindow>>, + camera: Query<'w, 's, (&'static OrthographicProjection, &'static Transform), With<GameCamera>>, } impl<'w, 's> WindowManager<'w, 's> { - /// Conditionally run a function with the primary window. The function will not - /// run if the primary window does not exist - typically this is the desired behaviour. - /// - /// ## Arguments - /// - `func`: an `FnOnce` callback that is given a [`bevy::prelude::Window`] - pub fn with_primary_window<Func: FnOnce(&Window)>(&self, func: Func) { - match self.windows.get_primary() { - Some(window) => func(window), - None => {} - } - } pub fn get_primary_window(&self) -> Option<&Window> { - self.windows.get_primary() + self.windows.get_single().ok() } pub fn get_mouse_press(&mut self) -> Option<Vec2> { if self.mouse.just_pressed(MouseButton::Left) { - if let Some(window) = self.windows.get_primary() { + if let Some(window) = self.get_primary_window() { if let Some(position) = window.cursor_position() { - let window_size = Vec2::new(window.width() as f32, window.height() as f32); - let adjusted_position = position - window_size / 2.0; - if let Ok(camera_transform) = self.cam_query.p0().get_single() { + if let Ok((projection, camera_transform)) = self.camera.get_single() { + let window_size = Vec2::new(window.width() as f32, window.height() as f32); + let projection_size = Vec2::new( + projection.area.max.x - projection.area.min.x, + projection.area.max.y - projection.area.min.y, + ); + + let adjusted_position = position - window_size / 2.0; + let scale = window_size / projection_size; + let adjusted_position = adjusted_position / scale; let world_position = camera_transform.compute_matrix() * adjusted_position.extend(0.0).extend(1.0); - return Some(Vec2::new(world_position.x, world_position.y)); + return Some(world_position.xy()); } } } } None } + pub fn get_units(&self) -> WindowUnits { + let window = self.get_primary_window(); + if let Some(window) = window { + let inner_width = window.width(); + let real_width = window.physical_width(); + + let inner_height = window.height(); + + WindowUnits { + inner_width, + inner_height, + vh: inner_height / 100.0, + vw: inner_width / 100.0, + } + } else { + WindowUnits { + inner_height: 0.0, + inner_width: 0.0, + vw: 0.0, + vh: 0.0, + } + } + } } -- GitLab