From e7aaad8123bc03cd9cb92f1f750266b5a6a69d17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eero=20H=C3=A4ih=C3=A4l=C3=A4?= Date: Sun, 14 Jul 2024 11:19:50 +0300 Subject: [PATCH] Bevy 0.14 minimal migration New animation system is not really a good fit for what was already there --- client/Cargo.lock | 951 ++++++++++-------- client/Cargo.toml | 6 +- client/input_parsing/src/input_parser.rs | 10 +- .../src/assets/animations/animation_helper.rs | 37 +- .../src/assets/animations/animations_prep.rs | 269 +++-- client/lib/src/assets/loaders.rs | 3 +- client/lib/src/player/player_flash.rs | 4 +- client/lib/src/state_transitions.rs | 2 +- client/wag_core/src/color_palette.rs | 47 +- 9 files changed, 810 insertions(+), 519 deletions(-) diff --git a/client/Cargo.lock b/client/Cargo.lock index 599c358e..bd00dbcd 100644 --- a/client/Cargo.lock +++ b/client/Cargo.lock @@ -20,55 +20,57 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "accesskit" -version = "0.12.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74a4b14f3d99c1255dcba8f45621ab1a2e7540a0009652d33989005a4d0bfc6b" +checksum = "6cf780eb737f2d4a49ffbd512324d53ad089070f813f7be7f99dbd5123a7f448" [[package]] name = "accesskit_consumer" -version = "0.16.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" +checksum = "3bdfa1638ddd6eb9c752def95568df8b3ad832df252e9156d2eb783b201ca8a9" dependencies = [ "accesskit", + "immutable-chunkmap", ] [[package]] name = "accesskit_macos" -version = "0.10.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" +checksum = "c236a84ff1111defc280cee755eaa953d0b24398786851b9d28322c6d3bb1ebd" dependencies = [ "accesskit", "accesskit_consumer", - "objc2 0.3.0-beta.3.patch-leaks.3", + "objc2", + "objc2-app-kit", + "objc2-foundation", "once_cell", ] [[package]] name = "accesskit_windows" -version = "0.15.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" +checksum = "5d7f43d24b16b3e76bef248124fbfd2493c3a9860edb5aae1010c890e826de5e" dependencies = [ "accesskit", "accesskit_consumer", - "once_cell", "paste", "static_assertions", - "windows 0.48.0", + "windows 0.54.0", ] [[package]] name = "accesskit_winit" -version = "0.17.0" +version = "0.20.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45f8f7c9f66d454d5fd8e344c8c8c7324b57194e1041b955519fc58a01e77a25" +checksum = "755535e6bf711a42dac28b888b884b10fc00ff4010d9d3bd871c5f5beae5aa78" dependencies = [ "accesskit", "accesskit_macos", "accesskit_windows", - "raw-window-handle 0.6.2", + "raw-window-handle", "winit", ] @@ -129,9 +131,9 @@ dependencies = [ [[package]] name = "android-activity" -version = "0.5.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" +checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", "bitflags 2.6.0", @@ -141,9 +143,9 @@ dependencies = [ "jni-sys", "libc", "log", - "ndk", + "ndk 0.9.0", "ndk-context", - "ndk-sys", + "ndk-sys 0.6.0+11769913", "num_enum", "thiserror", ] @@ -243,7 +245,7 @@ dependencies = [ "core-graphics", "image 0.25.1", "log", - "objc2 0.5.2", + "objc2", "objc2-app-kit", "objc2-foundation", "parking_lot", @@ -359,24 +361,31 @@ version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + [[package]] name = "bevy" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65b9eadaacf8fe971331bc3f250f35c18bc9dace3f96b483062f38ac07e3a1b4" +checksum = "8e938630e9f472b1899c78ef84aa907081b23bad8333140e2295c620485b6ee7" dependencies = [ "bevy_internal", ] [[package]] name = "bevy-inspector-egui" -version = "0.24.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a437cb56d4ca4d3b770889e0bd9c464cfd8e68ef370e232bd39cb4f40d880a7f" +checksum = "f8d77dbe53c8840aa74b66ea19dac6675d0a1752c989610cbded909d03967bec" dependencies = [ "bevy-inspector-egui-derive", "bevy_app", "bevy_asset", + "bevy_color", "bevy_core", "bevy_core_pipeline", "bevy_ecs", @@ -387,11 +396,12 @@ dependencies = [ "bevy_pbr", "bevy_reflect", "bevy_render", + "bevy_state", "bevy_time", "bevy_utils", "bevy_window", + "bytemuck", "egui", - "egui-dropdown", "fuzzy-matcher", "image 0.24.9", "once_cell", @@ -401,9 +411,9 @@ dependencies = [ [[package]] name = "bevy-inspector-egui-derive" -version = "0.24.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "975d905908c2d621b5a55a6925ac331feac19df430e4c8818b35ef1b95142b14" +checksum = "161d93f4b3a9246a87485e30ccf4cc927f204a14f26df42da977e383f0a0ec5d" dependencies = [ "proc-macro2", "quote", @@ -412,9 +422,9 @@ dependencies = [ [[package]] name = "bevy_a11y" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8ef2795f7f5c816a4eda04834083eb5a92e8fef603bc21d2091c6e3b63621a" +checksum = "3e613f0e7d5a92637e59744f7185e374c9a59654ecc6d7575adcec9581db1363" dependencies = [ "accesskit", "bevy_app", @@ -424,44 +434,57 @@ dependencies = [ [[package]] name = "bevy_animation" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e553d68bc937586010ed2194ac66b751bc6238cf622b3ed5a86f4e1581e94509" +checksum = "23aa4141df149b743e69c90244261c6372bafb70d9f115885de48a75fc28fd9b" dependencies = [ "bevy_app", "bevy_asset", + "bevy_color", "bevy_core", + "bevy_derive", "bevy_ecs", "bevy_hierarchy", + "bevy_log", "bevy_math", "bevy_reflect", "bevy_render", "bevy_time", "bevy_transform", "bevy_utils", + "blake3", + "fixedbitset 0.5.7", + "petgraph", + "ron", + "serde", + "thiserror", + "thread_local", + "uuid", ] [[package]] name = "bevy_app" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab348a32e46d21c5d61794294a92d415a770d26c7ba8951830b127b40b53ccc4" +checksum = "6f548e9dab7d10c5f99e3b504c758c4bf87aa67df9bcb9cc8b317a0271770e72" dependencies = [ "bevy_derive", "bevy_ecs", "bevy_reflect", "bevy_tasks", "bevy_utils", + "console_error_panic_hook", "downcast-rs", + "thiserror", "wasm-bindgen", "web-sys", ] [[package]] name = "bevy_asset" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50028e0d4f28a9f6aab48f61b688ba2793141188f88cdc9aa6c2bca2cc02ad35" +checksum = "f9d198e4c3419215de2ad981d4e734bbfab46469b7575e3b7150c912b9ec5175" dependencies = [ "async-broadcast", "async-fs", @@ -469,7 +492,6 @@ dependencies = [ "bevy_app", "bevy_asset_macros", "bevy_ecs", - "bevy_log", "bevy_reflect", "bevy_tasks", "bevy_utils", @@ -484,6 +506,7 @@ dependencies = [ "ron", "serde", "thiserror", + "uuid", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -491,9 +514,9 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6617475908368418d815360148fdbb82f879dc255a70d2d7baa3766f0cd4bfd7" +checksum = "11b2cbeba287a4b44e116c33dbaf37dce80a9d84477b2bb35ff459999d6c9e1b" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -503,14 +526,15 @@ dependencies = [ [[package]] name = "bevy_audio" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f12495e230cd5cf59c6051cdd820c97d7fe4f0597d4d9c3240c62e9c65b485" +checksum = "e41ecf15d0aae31bdb6d2b5cc590f966451e9736ddfee634c8f1ca5af1ac4342" dependencies = [ "bevy_app", "bevy_asset", "bevy_derive", "bevy_ecs", + "bevy_hierarchy", "bevy_math", "bevy_reflect", "bevy_transform", @@ -519,48 +543,65 @@ dependencies = [ "rodio", ] +[[package]] +name = "bevy_color" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a933306f5c7dc9568209180f482b28b5f40d2f8d5b361bc1b270c0a588752c0" +dependencies = [ + "bevy_math", + "bevy_reflect", + "bytemuck", + "encase", + "serde", + "thiserror", + "wgpu-types", +] + [[package]] name = "bevy_core" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b0042f241ba7cd61487aadd8addfb56f7eeb662d713ac1577026704508fc6c" +checksum = "6ddeed5ebf2fa75a4d4f32e2da9c60f11037e36252695059a151c6685cd3d72b" dependencies = [ "bevy_app", "bevy_ecs", - "bevy_math", "bevy_reflect", "bevy_tasks", "bevy_utils", - "bytemuck", + "uuid", ] [[package]] name = "bevy_core_pipeline" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48b7a471cb8ba665f12f7a167faa5566c11386f5bfc77d2e10bfde22b179f7b3" +checksum = "1b978220b5edc98f2c5cbbd14c118c74b3ec7216e5416d3c187c1097279b009b" dependencies = [ "bevy_app", "bevy_asset", + "bevy_color", "bevy_core", "bevy_derive", "bevy_ecs", - "bevy_log", "bevy_math", "bevy_reflect", "bevy_render", "bevy_transform", "bevy_utils", "bitflags 2.6.0", + "nonmax", "radsort", "serde", + "smallvec", + "thiserror", ] [[package]] name = "bevy_derive" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0e01f8343f391e2d6a63b368b82fb5b252ed43c8713fc87f9a8f2d59407dd00" +checksum = "c8a8173bad3ed53fa158806b1beda147263337d6ef71a093780dd141b74386b1" dependencies = [ "bevy_macro_utils", "quote", @@ -569,14 +610,14 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1401cdccec7e49378d013dfb0ff62c251f85b3be19dcdf04cfd827f793d1ee9" +checksum = "0b7f82011fd70048be282526a99756d54bf00e874edafa9664ba0dc247678f03" dependencies = [ "bevy_app", "bevy_core", "bevy_ecs", - "bevy_log", + "bevy_tasks", "bevy_time", "bevy_utils", "const-fnv1a-hash", @@ -585,29 +626,30 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98e612a8e7962ead849e370f3a7e972b88df879ced05cd9dad6a0286d14650cf" +checksum = "2c77fdc3a7230eff2fcebe4bd17c155bd238c660a0089d0f98c39ba0d461b923" dependencies = [ - "async-channel", + "arrayvec", "bevy_ecs_macros", "bevy_ptr", "bevy_reflect", "bevy_tasks", "bevy_utils", - "downcast-rs", - "fixedbitset", - "rustc-hash", + "bitflags 2.6.0", + "concurrent-queue", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", "serde", "thiserror", - "thread_local", ] [[package]] name = "bevy_ecs_macros" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "807b5106c3410e58f4f523b55ea3c071e2a09e31e9510f3c22021c6a04732b5b" +checksum = "9272b511958525306cd141726d3ca59740f79fc0707c439b55a007bcc3497308" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -617,12 +659,13 @@ dependencies = [ [[package]] name = "bevy_egui" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0118223ec165efe20f2e017811539ee1ba1f62b03a878022fbaec9e9bfd56bc" +checksum = "5e4a90f30f2849a07d91e393b10c0cc05df09b5773c010ddde57dd8b583be230" dependencies = [ "arboard", "bevy", + "bytemuck", "console_log", "crossbeam-channel", "egui", @@ -638,9 +681,9 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "887087a5e522d9f20733a84dd7e6e9ca04cd8fdfac659220ed87d675eebc83a7" +checksum = "f0452d8254c8bfae4bff6caca2a8be3b0c1b2e1a72b93e9b9f6a21c8dff807e0" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -648,14 +691,13 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d133c65ab756f130c65cf00f37dc293fb9a9336c891802baf006c63e300d0e2" +checksum = "fbad8e59470c3d5cf25aa8c48462c4cf6f0c6314538c68ab2f5cf393146f0fc2" dependencies = [ "bevy_app", "bevy_ecs", "bevy_input", - "bevy_log", "bevy_time", "bevy_utils", "gilrs", @@ -664,31 +706,32 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054df3550a9d423a961de65b459946ff23304f97f25af8a62c23f4259db8506d" +checksum = "bdbb0556f0c6e45f4a17aef9c708c06ebf15ae1bed4533d7eddb493409f9f025" dependencies = [ "bevy_app", "bevy_asset", - "bevy_core", + "bevy_color", "bevy_core_pipeline", "bevy_ecs", "bevy_gizmos_macros", - "bevy_log", "bevy_math", "bevy_pbr", "bevy_reflect", "bevy_render", "bevy_sprite", + "bevy_time", "bevy_transform", "bevy_utils", + "bytemuck", ] [[package]] name = "bevy_gizmos_macros" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abdcaf74d8cd34aa5c3293527e7a012826840886ad3496c1b963ed8b66b1619f" +checksum = "8ef351a4b6498c197d1317c62f46ba84b69fbde3dbeb57beb2e744bbe5b7c3e0" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -698,19 +741,19 @@ dependencies = [ [[package]] name = "bevy_gltf" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ecf404295055deb7fe037495891bc135ca10d46bc5b6c55f9ab7b7ebc61d31" +checksum = "cfd7abeaf3f28afd1f8999c2169aa17b40a37ad11253cf7dd05017024b65adc6" dependencies = [ - "base64", + "base64 0.22.1", "bevy_animation", "bevy_app", "bevy_asset", + "bevy_color", "bevy_core", "bevy_core_pipeline", "bevy_ecs", "bevy_hierarchy", - "bevy_log", "bevy_math", "bevy_pbr", "bevy_reflect", @@ -723,21 +766,22 @@ dependencies = [ "percent-encoding", "serde", "serde_json", + "smallvec", "thiserror", ] [[package]] name = "bevy_hanabi" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "871ca056b92c79a3e3143851622df2816e6e5f462dbf568fdfc9a2048b9b49b0" +checksum = "94fa7d583821f2b0caa80879f88d27746cb307413196a7f47ed6111b9873467f" dependencies = [ "anyhow", "bevy", "bitflags 2.6.0", "bytemuck", "copyless", - "fixedbitset", + "fixedbitset 0.5.7", "naga", "naga_oil", "rand", @@ -750,23 +794,23 @@ dependencies = [ [[package]] name = "bevy_hierarchy" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb3dfad24866a6713dafa3065a91c5cf5e355f6e1b191c25d704ae54185246c" +checksum = "802eca6f341d19ade790ccfaba7044be4d823b708087eb5ac4c1f74e4ea0916a" dependencies = [ "bevy_app", "bevy_core", "bevy_ecs", - "bevy_log", "bevy_reflect", "bevy_utils", + "smallvec", ] [[package]] name = "bevy_input" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47f2b2b3df168c6ef661d25e09abf5bd4fecaacd400f27e5db650df1c3fa3a3b" +checksum = "2d050f1433f48ca23f1ea078734ebff119a3f76eb7d221725ab0f1fd9f81230b" dependencies = [ "bevy_app", "bevy_ecs", @@ -779,15 +823,16 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58ec0ce77603df9474cde61f429126bfe06eb79094440e9141afb4217751c79" +checksum = "8ddd2b23e44d3a1f8ae547cbee5b6661f8135cc456c5de206e8648789944e7a1" dependencies = [ "bevy_a11y", "bevy_animation", "bevy_app", "bevy_asset", "bevy_audio", + "bevy_color", "bevy_core", "bevy_core_pipeline", "bevy_derive", @@ -806,6 +851,7 @@ dependencies = [ "bevy_render", "bevy_scene", "bevy_sprite", + "bevy_state", "bevy_tasks", "bevy_text", "bevy_time", @@ -818,60 +864,62 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5eea6c527fd828b7fef8d0f518167f27f405b904a16f227b644687d3f46a809" +checksum = "bab641fd0de254915ab746165a07677465b2d89b72f5b49367d73b9197548a35" dependencies = [ "android_log-sys", "bevy_app", "bevy_ecs", "bevy_utils", - "console_error_panic_hook", - "tracing-log 0.1.4", + "tracing-log", "tracing-subscriber", "tracing-wasm", ] [[package]] name = "bevy_macro_utils" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb270c98a96243b29465139ed10bda2f675d00a11904f6588a5f7fc4774119c7" +checksum = "c3ad860d35d74b35d4d6ae7f656d163b6f475aa2e64fc293ee86ac901977ddb7" dependencies = [ "proc-macro2", "quote", - "rustc-hash", "syn 2.0.70", - "toml_edit", + "toml_edit 0.22.15", ] [[package]] name = "bevy_math" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f06daa26ffb82d90ba772256c0ba286f6c305c392f6976c9822717974805837c" +checksum = "51bd6ce2174d3237d30e0ab5b2508480cc7593ca4d96ffb3a3095f9fc6bbc34c" dependencies = [ + "bevy_reflect", "glam", - "serde", + "rand", + "smallvec", + "thiserror", ] [[package]] name = "bevy_mikktspace" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d7ef7f2a826d0b19f059035831ce00a5e930435cc53c61e045773d0483f67a" +checksum = "b7ce4266293629a2d10459cc112dffe3b3e9229a4f2b8a4d20061b8dd53316d0" dependencies = [ "glam", ] [[package]] name = "bevy_pbr" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b29c80269fa6db55c9e33701edd3ecb73d8866ca8cb814d49a9d3fb72531b6" +checksum = "3effe8ff28899f14d250d0649ca9868dbe68b389d0f2b7af086759b8e16c6e3d" dependencies = [ "bevy_app", "bevy_asset", + "bevy_color", "bevy_core_pipeline", "bevy_derive", "bevy_ecs", @@ -883,41 +931,44 @@ dependencies = [ "bevy_window", "bitflags 2.6.0", "bytemuck", - "fixedbitset", + "fixedbitset 0.5.7", + "nonmax", "radsort", "smallvec", - "thread_local", + "static_assertions", ] [[package]] name = "bevy_ptr" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8050e2869fe341db6874203b5a01ff12673807a2c7c80cb829f6c7bea6997268" +checksum = "c115c97a5c8a263bd0aa7001b999772c744ac5ba797d07c86f25734ce381ea69" [[package]] name = "bevy_reflect" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccbd7de21d586457a340a0962ad0747dc5098ff925eb6b27a918c4bdd8252f7b" +checksum = "406ea0fce267169c2320c7302d97d09f605105686346762562c5f65960b5ca2f" dependencies = [ - "bevy_math", "bevy_ptr", "bevy_reflect_derive", "bevy_utils", "downcast-rs", "erased-serde", "glam", + "petgraph", "serde", + "smallvec", "smol_str", "thiserror", + "uuid", ] [[package]] name = "bevy_reflect_derive" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ce33051bd49036d4a5a62aa3f2068672ec55f3ebe92aa0d003a341f15cc37ac" +checksum = "0427fdb4425fc72cc96d45e550df83ace6347f0503840de116c76a40843ba751" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -928,19 +979,20 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b2c4b644c739c0b474b6f8f7b0bc68ac13d83b59688781e9a7753c52780177" +checksum = "4c48acf1ff4267c231def4cbf573248d42ac60c9952108822d505019460bf36d" dependencies = [ "async-channel", "bevy_app", "bevy_asset", + "bevy_color", "bevy_core", "bevy_derive", + "bevy_diagnostic", "bevy_ecs", "bevy_encase_derive", "bevy_hierarchy", - "bevy_log", "bevy_math", "bevy_mikktspace", "bevy_reflect", @@ -957,15 +1009,17 @@ dependencies = [ "encase", "futures-lite", "hexasphere", - "image 0.24.9", + "image 0.25.1", "js-sys", "ktx2", "naga", "naga_oil", + "nonmax", "ruzstd", + "send_wrapper", "serde", + "smallvec", "thiserror", - "thread_local", "wasm-bindgen", "web-sys", "wgpu", @@ -973,9 +1027,9 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "720b88406e786e378829b7d43c1ffb5300186912b99904d0d4d8ec6698a4f210" +checksum = "72ddf4a96d71519c8eca3d74dabcb89a9c0d50ab5d9230638cb004145f46e9ed" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -985,9 +1039,9 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3d2caa1bfe7542dbe2c62e1bcc10791ba181fb744d2fe6711d1d373354da7c" +checksum = "b7a9f0388612a116f02ab6187aeab66e52c9e91abbc21f919b8b50230c4d83e7" dependencies = [ "bevy_app", "bevy_asset", @@ -1005,16 +1059,16 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cad1b555161f50e5d62b7fdf7ebeef1b24338aae7a88e51985da9553cd60ddf" +checksum = "d837e33ed27b9f2e5212eca4bdd5655a9ee64c52914112e6189c043cb25dd1ec" dependencies = [ "bevy_app", "bevy_asset", + "bevy_color", "bevy_core_pipeline", "bevy_derive", "bevy_ecs", - "bevy_log", "bevy_math", "bevy_reflect", "bevy_render", @@ -1022,22 +1076,47 @@ dependencies = [ "bevy_utils", "bitflags 2.6.0", "bytemuck", - "fixedbitset", + "fixedbitset 0.5.7", "guillotiere", "radsort", "rectangle-pack", "thiserror", ] +[[package]] +name = "bevy_state" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0959984092d56885fd3b320ea84fb816821bad6bfa3040b9d4ee850d3273233d" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_reflect", + "bevy_state_macros", + "bevy_utils", +] + +[[package]] +name = "bevy_state_macros" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887a98bfa268258377cd073f5bb839518d3a1cd6b96ed81418145485b69378e6" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.70", +] + [[package]] name = "bevy_tasks" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f07fcc4969b357de143509925b39c9a2c56eaa8750828d97f319ca9ed41897cb" +checksum = "5a8bfb8d484bdb1e9bec3789c75202adc5e608c4244347152e50fb31668a54f9" dependencies = [ "async-channel", "async-executor", - "async-task", "concurrent-queue", "futures-lite", "wasm-bindgen-futures", @@ -1045,13 +1124,14 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4e8456ae0bea7d6b7621e42c1c12bf66c0891381e62c948ab23920673ce611c" +checksum = "454fd29b7828244356b2e0ce782e6d0a6f26b47f521456accde3a7191b121727" dependencies = [ "ab_glyph", "bevy_app", "bevy_asset", + "bevy_color", "bevy_ecs", "bevy_math", "bevy_reflect", @@ -1067,9 +1147,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ea5ae9fe7f56f555dbb05a88d34931907873e3f0c7dc426591839eef72fe3e" +checksum = "a6c3d3d14ee8b0dbe4819fd516cc75509b61946134d78e0ee89ad3d1835ffe6c" dependencies = [ "bevy_app", "bevy_ecs", @@ -1081,9 +1161,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d51a1f332cc00939d2f19ed6b909e5ed7037e39c7e25cc86930d79d432163e" +checksum = "97e8aa6b16be573277c6ceda30aebf1d78af7c6ede19b448dcb052fb8601d815" dependencies = [ "bevy_app", "bevy_ecs", @@ -1095,19 +1175,19 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bbc30be39cfbfa3a073b541d22aea43ab14452dea12d7411ce201df17ff7b1" +checksum = "38d9f864c646f3742ff77f67bcd89a13a7ab024b68ca2f1bfbab8245bcb1c06c" dependencies = [ "bevy_a11y", "bevy_app", "bevy_asset", + "bevy_color", "bevy_core_pipeline", "bevy_derive", "bevy_ecs", "bevy_hierarchy", "bevy_input", - "bevy_log", "bevy_math", "bevy_reflect", "bevy_render", @@ -1117,34 +1197,32 @@ dependencies = [ "bevy_utils", "bevy_window", "bytemuck", + "nonmax", + "smallvec", "taffy", "thiserror", ] [[package]] name = "bevy_utils" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9f845a985c00e0ee8dc2d8af3f417be925fb52aad4bda5b96e2e58a2b4d2eb" +checksum = "7fab364910e8f5839578aba9cfda00a8388e9ebe352ceb8491a742ce6af9ec6e" dependencies = [ "ahash", "bevy_utils_proc_macros", "getrandom", "hashbrown", - "nonmax", - "petgraph", - "smallvec", - "thiserror", + "thread_local", "tracing", - "uuid", "web-time", ] [[package]] name = "bevy_utils_proc_macros" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef158627f30503d5c18c20c60b444829f698d343516eeaf6eeee078c9a45163" +checksum = "ad9db261ab33a046e1f54b35f885a44f21fcc80aa2bc9050319466b88fe58fe3" dependencies = [ "proc-macro2", "quote", @@ -1153,26 +1231,25 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976202d2ed838176595b550ac654b15ae236e0178a6f19a94ca6d58f2a96ca60" +checksum = "c9ea5777f933bf7ecaeb3af1a30845720ec730e007972ca7d4aba2d3512abe24" dependencies = [ "bevy_a11y", "bevy_app", "bevy_ecs", - "bevy_input", "bevy_math", "bevy_reflect", "bevy_utils", - "raw-window-handle 0.6.2", + "raw-window-handle", "smol_str", ] [[package]] name = "bevy_winit" -version = "0.13.2" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa66539aa93d8522b146bf82de429714ea6370a6061fc1f1ff7bcacd4e64c6c4" +checksum = "f8c2213bbf14debe819ec8ad4913f233c596002d087bc6f1f20d533e2ebaf8c6" dependencies = [ "accesskit_winit", "approx", @@ -1182,12 +1259,15 @@ dependencies = [ "bevy_ecs", "bevy_hierarchy", "bevy_input", + "bevy_log", "bevy_math", + "bevy_reflect", "bevy_tasks", "bevy_utils", "bevy_window", + "cfg-if", "crossbeam-channel", - "raw-window-handle 0.6.2", + "raw-window-handle", "wasm-bindgen", "web-sys", "winit", @@ -1262,51 +1342,13 @@ 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 0.2.0-beta.2", -] - -[[package]] -name = "block-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" -dependencies = [ - "objc-sys 0.3.5", -] - -[[package]] -name = "block2" -version = "0.2.0-alpha.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd9e63c1744f755c2f60332b88de39d341e5e86239014ad839bd71c106dec42" -dependencies = [ - "block-sys 0.1.0-beta.1", - "objc2-encode 2.0.0-pre.2", -] - -[[package]] -name = "block2" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" -dependencies = [ - "block-sys 0.2.1", - "objc2 0.4.1", -] - [[package]] name = "block2" version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c132eebf10f5cad5289222520a4a058514204aed6d791f1cf4fe8088b82d15f" dependencies = [ - "objc2 0.5.2", + "objc2", ] [[package]] @@ -1703,7 +1745,7 @@ dependencies = [ "js-sys", "libc", "mach2", - "ndk", + "ndk 0.8.0", "ndk-context", "oboe", "wasm-bindgen", @@ -1744,9 +1786,9 @@ checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" [[package]] name = "d3d12" -version = "0.19.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" +checksum = "b28bfe653d79bd16c77f659305b195b82bb5ce0c0eb2a4846b82ddbd77586813" dependencies = [ "bitflags 2.6.0", "libloading 0.8.4", @@ -1765,17 +1807,6 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.70", -] - [[package]] name = "dispatch" version = "0.2.0" @@ -1791,41 +1822,49 @@ dependencies = [ "libloading 0.8.4", ] +[[package]] +name = "document-features" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef5282ad69563b5fc40319526ba27e0e7363d552a896f0297d54f767717f9b95" +dependencies = [ + "litrs", +] + [[package]] name = "downcast-rs" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" +[[package]] +name = "dpi" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" + [[package]] name = "ecolor" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20930a432bbd57a6d55e07976089708d4893f3d556cf42a0d79e9e321fa73b10" +checksum = "2e6b451ff1143f6de0f33fc7f1b68fecfd2c7de06e104de96c4514de3f5396f8" dependencies = [ "bytemuck", + "emath", ] [[package]] name = "egui" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "584c5d1bf9a67b25778a3323af222dbe1a1feb532190e103901187f92c7fe29a" +checksum = "20c97e70a2768de630f161bb5392cbd3874fcf72868f14df0e002e82e06cb798" dependencies = [ "ahash", + "emath", "epaint", "nohash-hasher", ] -[[package]] -name = "egui-dropdown" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240e9423d44c6fd18a72208b442b1101ac871f9636c06d30cc6555d125f57db0" -dependencies = [ - "egui", -] - [[package]] name = "either" version = "1.13.0" @@ -1834,18 +1873,18 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "emath" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4c3a552cfca14630702449d35f41c84a0d15963273771c6059175a803620f3f" +checksum = "0a6a21708405ea88f63d8309650b4d77431f4bc28fb9d8e6f77d3963b51249e6" dependencies = [ "bytemuck", ] [[package]] name = "encase" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ed933078d2e659745df651f4c180511cd582e5b9414ff896e7d50d207e3103" +checksum = "5a9299a95fa5671ddf29ecc22b00e121843a65cb9ff24911e394b4ae556baf36" dependencies = [ "const_panic", "encase_derive", @@ -1855,18 +1894,18 @@ dependencies = [ [[package]] name = "encase_derive" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ce1449c7d19eba6cc0abd231150ad81620a8dce29601d7f8d236e5d431d72a" +checksum = "07e09decb3beb1fe2db6940f598957b2e1f7df6206a804d438ff6cb2a9cddc10" dependencies = [ "encase_derive_impl", ] [[package]] name = "encase_derive_impl" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92959a9e8d13eaa13b8ae8c7b583c3bf1669ca7a8e7708a088d12587ba86effc" +checksum = "fd31dbbd9743684d339f907a87fe212cb7b51d75b9e8e74181fe363199ee9b47" dependencies = [ "proc-macro2", "quote", @@ -1884,9 +1923,9 @@ dependencies = [ [[package]] name = "epaint" -version = "0.27.2" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b381f8b149657a4acf837095351839f32cd5c4aec1817fc4df84e18d76334176" +checksum = "3f0dcc0a0771e7500e94cd1cb797bd13c9f23b9409bdc3c824e2cbc562b7fa01" dependencies = [ "ab_glyph", "ahash", @@ -1986,6 +2025,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flate2" version = "1.0.30" @@ -2142,11 +2187,12 @@ dependencies = [ [[package]] name = "glam" -version = "0.25.0" +version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" +checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9" dependencies = [ "bytemuck", + "rand", "serde", ] @@ -2258,9 +2304,9 @@ dependencies = [ [[package]] name = "gpu-descriptor" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" +checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" dependencies = [ "bitflags 2.6.0", "gpu-descriptor-types", @@ -2269,18 +2315,18 @@ dependencies = [ [[package]] name = "gpu-descriptor-types" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" +checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "grid" -version = "0.10.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eec1c01eb1de97451ee0d60de7d81cf1e72aabefb021616027f3d1c3ec1c723c" +checksum = "be136d9dacc2a13cc70bb6c8f902b414fb2641f8db1314637c6b7933411a8f82" [[package]] name = "guillotiere" @@ -2332,9 +2378,9 @@ checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hexasphere" -version = "10.0.0" +version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f33ddb7f7143d9e703c072e88b98cd8b9719f174137a671429351bd2ee43c02a" +checksum = "edd6b038160f086b0a7496edae34169ae22f328793cbe2b627a5a3d8373748ec" dependencies = [ "constgebra", "glam", @@ -2355,17 +2401,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "icrate" -version = "0.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" -dependencies = [ - "block2 0.3.0", - "dispatch", - "objc2 0.4.1", -] - [[package]] name = "idna" version = "0.5.0" @@ -2386,7 +2421,6 @@ dependencies = [ "byteorder", "color_quant", "num-traits", - "png", ] [[package]] @@ -2402,6 +2436,15 @@ dependencies = [ "tiff", ] +[[package]] +name = "immutable-chunkmap" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4419f022e55cc63d5bbd6b44b71e1d226b9c9480a47824c706e9d54e5c40c5eb" +dependencies = [ + "arrayvec", +] + [[package]] name = "indexmap" version = "2.2.6" @@ -2631,6 +2674,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litrs" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" + [[package]] name = "lock_api" version = "0.4.12" @@ -2691,9 +2740,9 @@ dependencies = [ [[package]] name = "metal" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" +checksum = "5637e166ea14be6063a3f8ba5ccb9a4159df7d8f6d61c02fc3d480b1f90dcfcb" dependencies = [ "bitflags 2.6.0", "block", @@ -2722,10 +2771,11 @@ dependencies = [ [[package]] name = "naga" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" +checksum = "e536ae46fcab0876853bd4a632ede5df4b1c2527a58f6c5a4150fe86be858231" dependencies = [ + "arrayvec", "bit-set", "bitflags 2.6.0", "codespan-reporting", @@ -2743,9 +2793,9 @@ dependencies = [ [[package]] name = "naga_oil" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ea62ae0f2787456afca7209ca180522b41f00cbe159ee369eba1e07d365cd1" +checksum = "275d9720a7338eedac966141089232514c84d76a246a58ef501af88c5edf402f" dependencies = [ "bit-set", "codespan-reporting", @@ -2770,9 +2820,23 @@ dependencies = [ "bitflags 2.6.0", "jni-sys", "log", - "ndk-sys", + "ndk-sys 0.5.0+25.2.9519653", + "num_enum", + "thiserror", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.6.0", + "jni-sys", + "log", + "ndk-sys 0.6.0+11769913", "num_enum", - "raw-window-handle 0.6.2", + "raw-window-handle", "thiserror", ] @@ -2791,6 +2855,15 @@ dependencies = [ "jni-sys", ] +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys", +] + [[package]] name = "nix" version = "0.29.0" @@ -2892,15 +2965,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" dependencies = [ "malloc_buf", - "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 = "objc-sys" version = "0.3.5" @@ -2909,49 +2975,52 @@ checksum = "cdb91bdd390c7ce1a8607f35f3ca7151b65afc0ff5ff3b34fa350f7d7c7e4310" [[package]] name = "objc2" -version = "0.3.0-beta.3.patch-leaks.3" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e01640f9f2cb1220bbe80325e179e532cb3379ebcd1bf2279d703c19fe3a468" +checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" dependencies = [ - "block2 0.2.0-alpha.6", - "objc-sys 0.2.0-beta.2", - "objc2-encode 2.0.0-pre.2", + "objc-sys", + "objc2-encode", ] [[package]] -name = "objc2" -version = "0.4.1" +name = "objc2-app-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" +checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" dependencies = [ - "objc-sys 0.3.5", - "objc2-encode 3.0.0", + "bitflags 2.6.0", + "block2", + "libc", + "objc2", + "objc2-core-data", + "objc2-core-image", + "objc2-foundation", + "objc2-quartz-core", ] [[package]] -name = "objc2" -version = "0.5.2" +name = "objc2-cloud-kit" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46a785d4eeff09c14c487497c162e92766fbb3e4059a71840cecc03d9a50b804" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" dependencies = [ - "objc-sys 0.3.5", - "objc2-encode 4.0.3", + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", ] [[package]] -name = "objc2-app-kit" +name = "objc2-contacts" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" dependencies = [ - "bitflags 2.6.0", - "block2 0.5.1", - "libc", - "objc2 0.5.2", - "objc2-core-data", - "objc2-core-image", + "block2", + "objc2", "objc2-foundation", - "objc2-quartz-core", ] [[package]] @@ -2961,8 +3030,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef" dependencies = [ "bitflags 2.6.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", ] @@ -2972,27 +3041,24 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80" dependencies = [ - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", "objc2-metal", ] [[package]] -name = "objc2-encode" -version = "2.0.0-pre.2" +name = "objc2-core-location" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfcac41015b00a120608fdaa6938c44cb983fee294351cc4bac7638b4e50512" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" dependencies = [ - "objc-sys 0.2.0-beta.2", + "block2", + "objc2", + "objc2-contacts", + "objc2-foundation", ] -[[package]] -name = "objc2-encode" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" - [[package]] name = "objc2-encode" version = "4.0.3" @@ -3006,9 +3072,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.6.0", - "block2 0.5.1", + "block2", + "dispatch", "libc", - "objc2 0.5.2", + "objc2", +] + +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2", + "objc2", + "objc2-app-kit", + "objc2-foundation", ] [[package]] @@ -3018,8 +3097,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6" dependencies = [ "bitflags 2.6.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", ] @@ -3030,19 +3109,65 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a" dependencies = [ "bitflags 2.6.0", - "block2 0.5.1", - "objc2 0.5.2", + "block2", + "objc2", "objc2-foundation", "objc2-metal", ] [[package]] -name = "objc_exception" -version = "0.1.2" +name = "objc2-symbols" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" dependencies = [ - "cc", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation", + "objc2-link-presentation", + "objc2-quartz-core", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2", + "objc2", + "objc2-foundation", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.6.0", + "block2", + "objc2", + "objc2-core-location", + "objc2-foundation", ] [[package]] @@ -3052,7 +3177,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" dependencies = [ "jni", - "ndk", + "ndk 0.8.0", "ndk-context", "num-derive", "num-traits", @@ -3154,8 +3279,30 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", + "fixedbitset 0.4.2", "indexmap", + "serde", + "serde_derive", +] + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.70", ] [[package]] @@ -3254,7 +3401,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit", + "toml_edit 0.21.1", ] [[package]] @@ -3341,12 +3488,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" -[[package]] -name = "raw-window-handle" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" - [[package]] name = "raw-window-handle" version = "0.6.2" @@ -3359,15 +3500,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0d463f2884048e7153449a55166f91028d5b0ea53c79377099ce4e8cf0cf9bb" -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -3438,13 +3570,14 @@ checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" [[package]] name = "rodio" -version = "0.17.3" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b1bb7b48ee48471f55da122c0044fcc7600cfcc85db88240b89cb832935e611" +checksum = "d1fceb9d127d515af1586d8d0cc601e1245bdb0af38e75c865a156290184f5b3" dependencies = [ "cpal", "lewton", "symphonia", + "thiserror", ] [[package]] @@ -3453,7 +3586,7 @@ version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ - "base64", + "base64 0.21.7", "bitflags 2.6.0", "serde", "serde_derive", @@ -3486,12 +3619,11 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ruzstd" -version = "0.5.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58c4eb8a81997cf040a091d1f7e1938aeab6749d3a0dfa73af43cdc32393483d" +checksum = "5022b253619b1ba797f243056276bed8ed1a73b0f5a7ce7225d524067644bf8f" dependencies = [ "byteorder", - "derive_more", "twox-hash", ] @@ -3524,9 +3656,9 @@ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "sctk-adwaita" -version = "0.8.3" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7" +checksum = "7555fcb4f753d095d734fdefebb0ad8c98478a21db500492d87c55913d3b0086" dependencies = [ "ab_glyph", "log", @@ -3535,6 +3667,12 @@ dependencies = [ "tiny-skia", ] +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + [[package]] name = "serde" version = "1.0.204" @@ -3610,9 +3748,6 @@ name = "smallvec" version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" -dependencies = [ - "serde", -] [[package]] name = "smithay-client-toolkit" @@ -3787,13 +3922,14 @@ dependencies = [ [[package]] name = "taffy" -version = "0.3.19" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1315457ccd9c3def787a18fae91914e623e4dcff019b64ce39f5268ded53d3d" +checksum = "9cb893bff0f80ae17d3a57e030622a967b8dbc90e38284d9b4b1442e23873c94" dependencies = [ "arrayvec", "grid", "num-traits", + "serde", "slotmap", ] @@ -3901,7 +4037,18 @@ checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap", "toml_datetime", - "winnow", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" +dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.6.13", ] [[package]] @@ -3936,17 +4083,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-log" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -3973,7 +4109,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", ] [[package]] @@ -4330,9 +4466,9 @@ dependencies = [ [[package]] name = "web-time" -version = "0.2.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ "js-sys", "wasm-bindgen", @@ -4340,17 +4476,18 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.15" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" +checksum = "425ba64c1e13b1c6e8c5d2541c8fac10022ca584f33da781db01b5756aef1f4e" dependencies = [ + "block2", "core-foundation", "home", "jni", "log", "ndk-context", - "objc", - "raw-window-handle 0.5.2", + "objc2", + "objc2-foundation", "url", "web-sys", ] @@ -4363,19 +4500,20 @@ checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "wgpu" -version = "0.19.4" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" +checksum = "90e37c7b9921b75dfd26dd973fdcbce36f13dfa6e2dc82aece584e0ed48c355c" dependencies = [ "arrayvec", "cfg-if", "cfg_aliases 0.1.1", + "document-features", "js-sys", "log", "naga", "parking_lot", "profiling", - "raw-window-handle 0.6.2", + "raw-window-handle", "smallvec", "static_assertions", "wasm-bindgen", @@ -4388,22 +4526,23 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.19.4" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" +checksum = "d50819ab545b867d8a454d1d756b90cd5f15da1f2943334ca314af10583c9d39" dependencies = [ "arrayvec", "bit-vec", "bitflags 2.6.0", "cfg_aliases 0.1.1", "codespan-reporting", + "document-features", "indexmap", "log", "naga", "once_cell", "parking_lot", "profiling", - "raw-window-handle 0.6.2", + "raw-window-handle", "rustc-hash", "smallvec", "thiserror", @@ -4414,9 +4553,9 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.19.4" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3" +checksum = "172e490a87295564f3fcc0f165798d87386f6231b04d4548bca458cbbfd63222" dependencies = [ "android_system_properties", "arrayvec", @@ -4440,13 +4579,13 @@ dependencies = [ "log", "metal", "naga", - "ndk-sys", + "ndk-sys 0.5.0+25.2.9519653", "objc", "once_cell", "parking_lot", "profiling", "range-alloc", - "raw-window-handle 0.6.2", + "raw-window-handle", "renderdoc-sys", "rustc-hash", "smallvec", @@ -4459,9 +4598,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.19.2" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" +checksum = "1353d9a46bff7f955a680577f34c69122628cc2076e1d6f3a9be6ef00ae793ef" dependencies = [ "bitflags 2.6.0", "js-sys", @@ -4529,17 +4668,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "windows" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" -dependencies = [ - "windows-implement 0.48.0", - "windows-interface 0.48.0", - "windows-targets 0.48.5", -] - [[package]] name = "windows" version = "0.52.0" @@ -4557,6 +4685,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" dependencies = [ "windows-core 0.54.0", + "windows-implement 0.53.0", + "windows-interface 0.53.0", "windows-targets 0.52.6", ] @@ -4604,13 +4734,13 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.48.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e2ee588991b9e7e6c8338edf3333fbe4da35dc72092643958ebb43f0ab2c49c" +checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.70", ] [[package]] @@ -4626,13 +4756,13 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.48.0" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6fb8df20c9bcaa8ad6ab513f7b40104840c8867d5751126e4df3b08388d0cc7" +checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.70", ] [[package]] @@ -4881,37 +5011,41 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" -version = "0.29.15" +version = "0.30.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" +checksum = "49f45a7b7e2de6af35448d7718dab6d95acec466eb3bb7a56f4d31d1af754004" dependencies = [ "ahash", "android-activity", "atomic-waker", "bitflags 2.6.0", + "block2", "bytemuck", "calloop", - "cfg_aliases 0.1.1", + "cfg_aliases 0.2.1", + "concurrent-queue", "core-foundation", "core-graphics", "cursor-icon", - "icrate", + "dpi", "js-sys", "libc", - "log", "memmap2", - "ndk", - "ndk-sys", - "objc2 0.4.1", - "once_cell", + "ndk 0.9.0", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", "orbclient", "percent-encoding", - "raw-window-handle 0.6.2", - "redox_syscall 0.3.5", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", "rustix", "sctk-adwaita", "smithay-client-toolkit", "smol_str", + "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", @@ -4921,7 +5055,7 @@ dependencies = [ "wayland-protocols-plasma", "web-sys", "web-time", - "windows-sys 0.48.0", + "windows-sys 0.52.0", "x11-dl", "x11rb", "xkbcommon-dl", @@ -4936,6 +5070,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "winnow" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +dependencies = [ + "memchr", +] + [[package]] name = "x11-dl" version = "2.21.0" diff --git a/client/Cargo.toml b/client/Cargo.toml index cd006537..43e5aaa8 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -18,9 +18,9 @@ incremental = true opt-level = 3 [workspace.dependencies] -bevy = "0.13" -bevy_hanabi = "0.11" -bevy-inspector-egui = "0.24" +bevy = "0.14" +bevy_hanabi = "0.12" +bevy-inspector-egui = "0.25" rand = "0.8" strum = "0.26" diff --git a/client/input_parsing/src/input_parser.rs b/client/input_parsing/src/input_parser.rs index f6fbcd72..35dc9d2f 100644 --- a/client/input_parsing/src/input_parser.rs +++ b/client/input_parsing/src/input_parser.rs @@ -275,7 +275,7 @@ mod test { let mut app = App::new(); app.add_systems(Update, parse_input::); - app.world.spawn(( + app.world_mut().spawn(( TestInputBundle::new(moves.into_iter().collect()), Facing::Right, )); @@ -303,9 +303,9 @@ mod test { fn add_input(&mut self, change: InputEvent) { for mut reader in self .app - .world + .world_mut() .query::<&mut TestStream>() - .iter_mut(&mut self.app.world) + .iter_mut(&mut self.app.world_mut()) { reader.push(change.clone()); } @@ -338,9 +338,9 @@ mod test { // Running a query requires mutable access I guess? fn get_parser_events(&mut self) -> Vec { self.app - .world + .world_mut() .query::<&InputParser>() - .iter(&self.app.world) + .iter(&self.app.world()) .next() .unwrap() .events diff --git a/client/lib/src/assets/animations/animation_helper.rs b/client/lib/src/assets/animations/animation_helper.rs index 307ef221..8e4c92e7 100644 --- a/client/lib/src/assets/animations/animation_helper.rs +++ b/client/lib/src/assets/animations/animation_helper.rs @@ -95,11 +95,13 @@ fn find_animation_player_entity( } pub fn update_animation( + mut commands: Commands, animations: Res, mut main: Query<(&mut AnimationHelper, &Facing, &Stats)>, mut players: Query<&mut AnimationPlayer>, mut scenes: Query<&mut Transform, With>>, maybe_hitstop: Option>, + graphs: ResMut>, ) { for (mut helper, facing, stats) in &mut main { let mut player = players.get_mut(helper.player_entity).unwrap(); @@ -107,16 +109,28 @@ pub fn update_animation( if let Some(request) = helper.request.take() { // New animation set to start - let handle = animations.get( + let (graph_handle, index) = animations.get( request.animation, &if request.invert { facing.opposite() } else { *facing }, + &graphs, + ); + + let graph = graphs.get(&graph_handle).unwrap(); + dbg!( + index, + &graph_handle, + &graph, + graph.nodes().collect::>() ); - player - .start(handle) + + commands.entity(helper.player_entity).insert(graph_handle); + + let animation = player + .start(index) .seek_to(request.time_offset as f32 / wag_core::FPS) .set_speed(if request.ignore_action_speed { 1.0 @@ -127,7 +141,7 @@ pub fn update_animation( // FIXME: There is something wrong with this. // First frames of the animation bleed through occasionally if request.looping { - player.repeat(); + animation.repeat(); } helper.playing = request; @@ -137,16 +151,17 @@ pub fn update_animation( // Looping animations like idle ought to turn when the sides switch. Non looping like moves should not } else if *facing != helper.facing && helper.playing.looping { // Sideswitch - let handle = animations.get(helper.playing.animation, facing); - let elapsed = player.elapsed(); - player.start(handle).seek_to(elapsed).repeat(); + let (graph, index) = animations.get(helper.playing.animation, facing, &graphs); + commands.entity(helper.player_entity).insert(graph); + let elapsed = player.playing_animations().next().unwrap().1.elapsed(); + player.start(index).seek_to(elapsed).repeat(); helper.facing = *facing; - } else if maybe_hitstop.is_none() && player.is_paused() { + } else if maybe_hitstop.is_none() && player.all_paused() { // Hitstop is over, resume playing - player.resume(); - } else if maybe_hitstop.is_some() && !player.is_paused() { + player.resume_all(); + } else if maybe_hitstop.is_some() && !player.all_paused() { // Hitstop started, pause - player.pause(); + player.pause_all(); } } } diff --git a/client/lib/src/assets/animations/animations_prep.rs b/client/lib/src/assets/animations/animations_prep.rs index c3eafed2..e007962f 100644 --- a/client/lib/src/assets/animations/animations_prep.rs +++ b/client/lib/src/assets/animations/animations_prep.rs @@ -1,118 +1,249 @@ -use bevy::{prelude::*, utils::HashMap}; // Need to use this one for reflect to work +use bevy::{animation::AnimationTargetId, prelude::*, utils::HashMap}; use wag_core::{Animation, DummyAnimation, Facing, MizkuAnimation}; #[derive(Debug, Default, Resource)] pub struct Animations { - normal: HashMap>, - mirrored: HashMap>, + normal: HashMap>, + mirrored: HashMap>, } impl Animations { - pub fn new(animations: HashMap>) -> Self { + pub fn new( + animations: HashMap>, + asset_server: &mut ResMut>, + ) -> Self { Self { - normal: animations, + normal: animations + .into_iter() + .map(|(k, v)| (k, asset_server.add(AnimationGraph::from_clip(v).0))) + .collect(), mirrored: default(), } } - fn all_loaded(&self, assets: &Assets) -> bool { - self.normal - .values() - .map(|handle| assets.get(handle)) - .all(|clip| clip.is_some()) + fn all_loaded( + &self, + graph_assets: &Assets, + clip_assets: &Assets, + ) -> bool { + self.normal.values().all(|handle| { + let Some(graph) = graph_assets.get(handle) else { + return false; + }; + + let node_index = graph.nodes().last().unwrap(); + let Some(node) = graph.get(node_index) else { + return false; + }; + + clip_assets.get(&node.clip.clone().unwrap()).is_some() + }) } - pub(super) fn get(&self, animation: Animation, flipped: &Facing) -> Handle { - if animation == Animation::default() { + pub(super) fn get( + &self, + animation: Animation, + flipped: &Facing, + graphs: &Assets, + ) -> (Handle, AnimationNodeIndex) { + let graph_handle = if animation == Animation::default() { // Default is not mirrored and mirrored animations may not be ready by the time it is requested // This should be irrelevant after a real loading screen. - return self.normal[&Animation::default()].clone(); - } + self.normal[&Animation::default()].clone() + } else { + match flipped { + Facing::Right => self.normal.get(&animation), + Facing::Left => self.mirrored.get(&animation), + } + .unwrap() + .clone() + }; - match flipped { - Facing::Right => self.normal.get(&animation), - Facing::Left => self.mirrored.get(&animation), - } - .unwrap() - .clone() + let graph = graphs.get(&graph_handle).unwrap(); + let node_index = graph.nodes().last().unwrap(); + + (graph_handle, node_index) } } pub fn mirror_after_load( mut animations: ResMut, mut clip_assets: ResMut>, + mut graph_assets: ResMut>, mut done: Local, ) { - if !animations.all_loaded(&clip_assets) || !animations.mirrored.is_empty() { + if !animations.all_loaded(&graph_assets, &clip_assets) || !animations.mirrored.is_empty() { return; } + // TODO: This is horrendous. There is got to be a better way. + let base_hierarchy = vec!["Mizuki"]; // It's character specific (blender root object name) + + let hand_base = vec![ + "DEF-upper_arm.{}", + "DEF-upper_arm.{}.001", + "DEF-forearm.{}", + "DEF-forearm.{}.001", + "DEF-hand.{}", + ]; + + let hand = |new: Vec<&'static str>| { + let mut hc = hand_base.clone(); + hc.extend(new); + hc + }; + + // Flattening hierarchy when exporting means bone structure here doesn't match one in blender + let mirror_map = vec![ + // Legs + vec![ + "DEF-thigh.{}", + "DEF-thigh.{}.001", + "DEF-shin.{}", + "DEF-shin.{}.001", + "DEF-foot.{}", + "DEF-toe.{}", + ], + // Face + vec!["DEF-ear.{}"], + vec!["DEF-ear.{}.001"], + vec!["DEF-ear.{}.002", "DEF-ear.{}.003"], + vec!["DEF-ear.{}.004"], + vec!["DEF-nose.{}.001"], + vec!["DEF-eye_master.{}"], + vec!["DEF-eye.{}", "DEF-eye_iris.{}"], + vec![ + "DEF-lid.B.{}", + "DEF-lid.B.{}.001", + "DEF-lid.B.{}.002", + "DEF-lid.B.{}.003", + ], + vec![ + "DEF-lid.T.{}", + "DEF-lid.T.{}.001", + "DEF-lid.T.{}.002", + "DEF-lid.T.{}.003", + ], + vec!["DEF-lip.B.{}", "DEF-lip.B.{}.001"], + vec!["DEF-lip.T.{}", "DEF-lip.T.{}.001"], + vec!["DEF-jaw.{}", "DEF-jaw.{}.001", "DEF-chin.{}"], + vec![ + "DEF-brow.B.{}", + "DEF-brow.B.{}.001", + "DEF-brow.B.{}.002", + "DEF-brow.B.{}.003", + ], + vec!["DEF-brow.B.{}.004"], + vec!["DEF-brow.T.{}"], + vec!["DEF-brow.T.{}.001", "DEF-brow.T.{}.002"], + vec!["DEF-brow.T.{}.003"], + vec!["DEF-cheek.B.{}", "DEF-cheek.B.{}.001"], + vec!["DEF-cheek.T.{}", "DEF-cheek.T.{}.001"], + vec!["DEF-forehead.{}"], + vec!["DEF-forehead.{}.001"], + vec!["DEF-forehead.{}.002"], + vec!["DEF-temple.{}"], + // Body + vec!["DEF-breast.{}"], + vec!["DEF-pelvis.{}"], + vec!["DEF-shoulder.{}"], + // Hands + hand(vec!["DEF-palm.01.{}"]), + hand(vec!["DEF-palm.02.{}"]), + hand(vec!["DEF-palm.03.{}"]), + hand(vec!["DEF-palm.04.{}"]), + hand(vec![ + "DEF-thumb.01.{}", + "DEF-thumb.02.{}", + "DEF-thumb.03.{}", + ]), + hand(vec![ + "DEF-f_index.01.{}", + "DEF-f_index.02.{}", + "DEF-f_index.03.{}", + ]), + hand(vec![ + "DEF-f_middle.01.{}", + "DEF-f_middle.02.{}", + "DEF-f_middle.03.{}", + ]), + hand(vec![ + "DEF-f_ring.01.{}", + "DEF-f_ring.02.{}", + "DEF-f_ring.03.{}", + ]), + hand(vec![ + "DEF-f_pinky.01.{}", + "DEF-f_pinky.02.{}", + "DEF-f_pinky.03.{}", + ]), + ] + .into_iter() + .flat_map(|sides| { + let mut coll = vec![]; + for size in 1..=sides.len() { + let half_template = sides.clone().into_iter().take(size).collect::>(); + + let (lefts, rights) = base_hierarchy + .clone() + .into_iter() + .chain(half_template.clone().into_iter()) + .map(|template| { + ( + Name::new(template.replace("{}", "L")), + Name::new(template.replace("{}", "R")), + ) + }) + .collect::<(Vec<_>, Vec<_>)>(); + + coll.push(( + AnimationTargetId::from_names(rights.iter()), + AnimationTargetId::from_names(lefts.iter()), + )); + + coll.push(( + AnimationTargetId::from_names(lefts.iter()), + AnimationTargetId::from_names(rights.iter()), + )); + } + + coll + }) + .collect::>(); + animations.mirrored = animations .normal .iter() .map(|(animation, handle)| { - let clip = clip_assets.get(handle).unwrap(); + let graph = graph_assets.get(handle).unwrap(); + let node_index = graph.nodes().last().unwrap(); + let node = graph.get(node_index).unwrap(); + let clip_handle = node.clip.clone().unwrap(); + let clip = clip_assets.get(&clip_handle).unwrap(); + let curves = clip.curves(); - let reflected: Box = Box::new(clip.to_owned()); - let ref_paths = reflected.field("paths").unwrap(); - let paths = ref_paths - .downcast_ref::>() - .unwrap(); - - let mirrored = paths.into_iter().fold( + let mirrored = curves.into_iter().fold( AnimationClip::default(), - |mut clip_acc, (path, curves_index)| { - let mirrored_path = mirror_path(path.to_owned()); - - for curve in clip.get_curves(*curves_index).unwrap().iter() { - clip_acc.add_curve_to_path( - mirrored_path.clone(), - mirror_curve(curve.to_owned()), - ); + |mut clip_acc, (uuid, animation_curves)| { + let mirrored_uuid = mirror_map.get(uuid).cloned().unwrap_or(uuid.to_owned()); + for curve in animation_curves.iter() { + clip_acc.add_curve_to_target(mirrored_uuid, mirror_curve(curve.to_owned())); } clip_acc }, ); - (animation.to_owned(), clip_assets.add(mirrored)) + ( + animation.to_owned(), + graph_assets.add(AnimationGraph::from_clip(clip_assets.add(mirrored)).0), + ) }) .collect(); *done = true; } -fn mirror_path(original: EntityPath) -> EntityPath { - EntityPath { - parts: original - .parts - .into_iter() - .map(|mut name| { - // Transforms - // - Bone.L -> Bone.R - // - Bone.R -> Bone.L - // - Bone.L.001 -> Bone.R.001 - // - Bone.R.001 -> Bone.L.001 - // Could be smarter, but I think that risks false positive hits and those seem annoying. - // Assumes there are fewer than 100 bones with the same name - - name.mutate(|old_name| { - if let Some(base_name) = old_name.strip_suffix(".L") { - *old_name = base_name.to_owned() + ".R"; - } else if let Some(base_name) = old_name.strip_suffix(".R") { - *old_name = base_name.to_owned() + ".L"; - } else if old_name.contains(".R.0") { - *old_name = old_name.replace(".R.0", ".L.0"); - } else if old_name.contains(".L.0") { - *old_name = old_name.replace(".L.0", ".R.0"); - } - }); - name - }) - .collect(), - } -} - fn mirror_curve(original: VariableCurve) -> VariableCurve { VariableCurve { keyframes: match original.keyframes { diff --git a/client/lib/src/assets/loaders.rs b/client/lib/src/assets/loaders.rs index 4b7dad73..77b1cb53 100644 --- a/client/lib/src/assets/loaders.rs +++ b/client/lib/src/assets/loaders.rs @@ -59,6 +59,7 @@ pub fn animations( mut commands: Commands, asset_server: Res, mut loading_assets: ResMut, + mut animation_graphs: ResMut>, ) { let handles: HashMap> = animation_paths() .into_iter() @@ -69,7 +70,7 @@ pub fn animations( .0 .extend(handles.values().cloned().map(|h| h.untyped())); - commands.insert_resource(Animations::new(handles)); + commands.insert_resource(Animations::new(handles, &mut animation_graphs)); } pub fn sounds( diff --git a/client/lib/src/player/player_flash.rs b/client/lib/src/player/player_flash.rs index 3e0a3a0f..9442a71b 100644 --- a/client/lib/src/player/player_flash.rs +++ b/client/lib/src/player/player_flash.rs @@ -49,7 +49,7 @@ pub struct FlashMaterial { // Start at a high binding number to ensure bindings don't conflict // with the base material #[uniform(100)] - pub color: Color, + pub color: LinearRgba, #[uniform(101)] pub speed: f32, #[uniform(102)] @@ -71,7 +71,7 @@ impl MaterialExtension for FlashMaterial { impl FlashMaterial { pub fn from_request(request: FlashRequest, time: f32) -> Self { Self { - color: request.color, + color: request.color.into(), speed: request.speed, depth: request.depth, duration: request.duration, diff --git a/client/lib/src/state_transitions.rs b/client/lib/src/state_transitions.rs index b5637455..58c66a7f 100644 --- a/client/lib/src/state_transitions.rs +++ b/client/lib/src/state_transitions.rs @@ -153,7 +153,7 @@ fn transition_after_timer( if transition.timer.finished() { if transition.exit_game { - exit.send(AppExit); + exit.send(AppExit::Success); } else { next_state.set(game_state.get().next()); commands.remove_resource::() diff --git a/client/wag_core/src/color_palette.rs b/client/wag_core/src/color_palette.rs index e5c94569..d8966340 100644 --- a/client/wag_core/src/color_palette.rs +++ b/client/wag_core/src/color_palette.rs @@ -1,13 +1,14 @@ +use bevy::color::palettes::css::*; use bevy::prelude::*; // Resource bars -pub const HEALTH_BAR_COLOR: Color = Color::rgb(0.9, 0.0, 0.0); +pub const HEALTH_BAR_COLOR: Color = Color::srgb(0.9, 0.0, 0.0); -pub const METER_BAR_PARTIAL_SEGMENT_COLOR: Color = Color::rgb(0.04, 0.5, 0.55); -pub const METER_BAR_FULL_SEGMENT_COLOR: Color = Color::rgb(0.14, 0.7, 0.8); +pub const METER_BAR_PARTIAL_SEGMENT_COLOR: Color = Color::srgb(0.04, 0.5, 0.55); +pub const METER_BAR_FULL_SEGMENT_COLOR: Color = Color::srgb(0.14, 0.7, 0.8); -pub const CHARGE_BAR_PARTIAL_SEGMENT_COLOR: Color = Color::rgb(0.05, 0.4, 0.55); -pub const CHARGE_BAR_FULL_SEGMENT_COLOR: Color = Color::rgb(0.9, 0.1, 0.3); +pub const CHARGE_BAR_PARTIAL_SEGMENT_COLOR: Color = Color::srgb(0.05, 0.4, 0.55); +pub const CHARGE_BAR_FULL_SEGMENT_COLOR: Color = Color::srgb(0.9, 0.1, 0.3); // Texts (general) pub const GENERIC_TEXT_COLOR: Color = Color::WHITE; @@ -15,38 +16,38 @@ pub const ROUND_TIMER_TEXT_COLOR: Color = Color::WHITE; pub const RESOURCE_COUNTER_TEXT_COLOR: Color = Color::WHITE; // General utils -pub const TRANSPARENT: Color = Color::rgba(0.0, 0.0, 0.0, 0.0); +pub const TRANSPARENT: Color = Color::srgba(0.0, 0.0, 0.0, 0.0); // Shop -pub const ITEM_SLOT_HIGHLIGHT_COLOR: Color = Color::rgb(195.0 / 255.0, 24.0 / 255.0, 24.0 / 255.0); // WWE Raw red -pub const ITEM_SLOT_DEFAULT_COLOR: Color = Color::GRAY; -pub const ITEM_SLOT_DISABLED_COLOR: Color = Color::BISQUE; -pub const ITEM_SLOT_COMPONENT_COLOR: Color = Color::YELLOW; -pub const ITEM_SLOT_UPGRADE_COLOR: Color = Color::BLUE; -pub const ITEM_SLOT_OWNED_COLOR: Color = Color::GREEN; -pub const SHOP_TIMER_BACKGROUND_COLOR: Color = Color::rgba(0.0, 0.0, 0.0, 0.8); +pub const ITEM_SLOT_HIGHLIGHT_COLOR: Color = Color::srgb(195.0 / 255.0, 24.0 / 255.0, 24.0 / 255.0); // WWE Raw red +pub const ITEM_SLOT_DEFAULT_COLOR: Color = Color::Srgba(GRAY); +pub const ITEM_SLOT_DISABLED_COLOR: Color = Color::Srgba(BISQUE); +pub const ITEM_SLOT_COMPONENT_COLOR: Color = Color::Srgba(YELLOW); +pub const ITEM_SLOT_UPGRADE_COLOR: Color = Color::Srgba(BLUE); +pub const ITEM_SLOT_OWNED_COLOR: Color = Color::Srgba(LIME); +pub const SHOP_TIMER_BACKGROUND_COLOR: Color = Color::srgba(0.0, 0.0, 0.0, 0.8); pub const SHOP_DIVIDER_COLOR: Color = Color::BLACK; -pub const SHOP_DARK_BACKGROUND_COLOR: Color = Color::DARK_GRAY; +pub const SHOP_DARK_BACKGROUND_COLOR: Color = Color::srgba(0.25, 0.25, 0.25, 0.25); pub const SHOP_ICON_BACKGROUND_COLOR: Color = Color::WHITE; // Box visualizations -pub const HITBOX_VISUALIZATION_COLOR: Color = Color::RED; -pub const HURTBOX_VISUALIZATION_COLOR: Color = Color::GREEN; -pub const PUSHBOX_VISUALIZATION_COLOR: Color = Color::BLUE; +pub const HITBOX_VISUALIZATION_COLOR: Color = Color::Srgba(RED); +pub const HURTBOX_VISUALIZATION_COLOR: Color = Color::Srgba(LIME); +pub const PUSHBOX_VISUALIZATION_COLOR: Color = Color::Srgba(BLUE); // Notifications -pub const NOTIFICATION_BACKGROUND_COLOR: Color = Color::rgba(1.0, 1.0, 1.0, 0.3); +pub const NOTIFICATION_BACKGROUND_COLOR: Color = Color::srgba(1.0, 1.0, 1.0, 0.3); pub const NOTIFICATION_TEXT_COLOR: Color = Color::BLACK; // Signal colors pub const HIT_FLASH_COLOR: Color = Color::WHITE; -pub const GI_PARRY_FLASH_COLOR: Color = Color::ALICE_BLUE; -pub const TRACK_SPIKES_FLASH_COLOR: Color = Color::YELLOW; +pub const GI_PARRY_FLASH_COLOR: Color = Color::Srgba(ALICE_BLUE); +pub const TRACK_SPIKES_FLASH_COLOR: Color = Color::Srgba(YELLOW); // Player colors pub const MIZUKI_ALT_SHIRT_COLOR: Color = Color::WHITE; -pub const MIZUKI_ALT_JEANS_COLOR: Color = Color::MIDNIGHT_BLUE; -pub const MIZUKI_ALT_HELMET_COLOR: Color = Color::rgb(38.0 / 255.0, 50.0 / 255.0, 100.0 / 255.0); +pub const MIZUKI_ALT_JEANS_COLOR: Color = Color::Srgba(MIDNIGHT_BLUE); +pub const MIZUKI_ALT_HELMET_COLOR: Color = Color::srgb(38.0 / 255.0, 50.0 / 255.0, 100.0 / 255.0); // UI -pub const LOADING_SCREEN_BACKGROUND: Color = Color::rgb(0.2, 0.2, 0.2); +pub const LOADING_SCREEN_BACKGROUND: Color = Color::srgb(0.2, 0.2, 0.2);