From 7b727d797cb62b65f94a3fef32bafddf6f4b935a Mon Sep 17 00:00:00 2001 From: Mitchell M Date: Tue, 14 Jan 2025 20:41:09 -0600 Subject: [PATCH] idk --- Cargo.lock | 1356 ++++++++++++++++++++++++---------- Cargo.toml | 4 +- art/crooks.blend | Bin 1445496 -> 1442784 bytes assets/levels/World.glb | Bin 1412 -> 1012 bytes assets/levels/World.meta.ron | 4 - assets/registry.json | 1304 +++++++++++++++++++++++++++++--- launch.sh | 1 + src/char_controller.rs | 43 +- src/client.rs | 9 +- src/main.rs | 51 +- src/server.rs | 9 +- src/setup.rs | 77 +- src/shared_net.rs | 14 +- 13 files changed, 2305 insertions(+), 567 deletions(-) create mode 100755 launch.sh diff --git a/Cargo.lock b/Cargo.lock index bcdc710..812744a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "ab_glyph" @@ -106,6 +106,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", + "const-random", "getrandom", "once_cell", "version_check", @@ -123,9 +124,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "alsa" @@ -199,9 +200,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.17" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23a1e53f0f5d86382dafe1cf314783b2044280f406e7e1506368220ad11b1338" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", @@ -214,9 +215,9 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8365de52b16c035ff4fcafe0092ba9390540e3e352870ac09933bebcaa2c8c56" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" @@ -248,9 +249,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.91" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" +checksum = "34ac096ce696dc2fcabef30516bb13c0a68a11d30131d3df6f04711467681b04" [[package]] name = "approx" @@ -269,7 +270,7 @@ checksum = "df099ccb16cd014ff054ac1bf392c67feeef57164b05c42f037cd40f5d4357f4" dependencies = [ "clipboard-win", "core-graphics", - "image 0.25.4", + "image 0.25.5", "log", "objc2", "objc2-app-kit", @@ -306,6 +307,17 @@ dependencies = [ "libloading 0.7.4", ] +[[package]] +name = "assert_type_match" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f548ad2c4031f2902e3edc1f29c29e835829437de49562d8eb5dc5584d3a1043" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", +] + [[package]] name = "async-broadcast" version = "0.5.1" @@ -404,7 +416,7 @@ dependencies = [ "bevy", "bevy_math", "bitflags 2.6.0", - "derive_more", + "derive_more 0.99.18", "fxhash", "indexmap", "itertools", @@ -421,7 +433,7 @@ checksum = "b4adeeecb6d4628d3ca11836ce9af8309f9552d4bd3e3f6e4368440d8163260c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -467,22 +479,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d46ba955761969dbc9a79d3583a175609b4e370303bc0f9a5846397dcb7f05fd" dependencies = [ "bevy-inspector-egui-derive", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core", "bevy_core_pipeline", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_egui", "bevy_hierarchy", "bevy_log", "bevy_math", "bevy_pbr", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_state", - "bevy_time", - "bevy_utils", + "bevy_time 0.14.2", + "bevy_utils 0.14.2", "bevy_window", "bytemuck", "egui", @@ -501,7 +513,20 @@ checksum = "06683f27065a27065ef8cebe77d7b347c9d0511a091deafd6dd77c5535434934" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", +] + +[[package]] +name = "bevy-steamworks" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5ec26731a50695824bf6d75ccf76c770dec5def1ced72bbfd032508b109d407" +dependencies = [ + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_log", + "bevy_utils 0.14.2", + "steamworks", ] [[package]] @@ -511,9 +536,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae1a976cb539d6a5a3ff579cdb78187a6bcfbffa7e8224ea28f23d8b983d9389" dependencies = [ "accesskit", - "bevy_app", - "bevy_derive", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", ] [[package]] @@ -522,20 +547,20 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93aef7d21a0342c24b05059493aa31d58f1798d34a2236569a8789b74df5a475" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", "bevy_log", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", - "bevy_time", + "bevy_time 0.14.2", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "blake3", "fixedbitset 0.5.7", "petgraph", @@ -552,11 +577,11 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a5361d0f8a8677a5d0102cfe7321a7ecd2a8b9a4f887ce0dde1059311cf9cd42" dependencies = [ - "bevy_derive", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "console_error_panic_hook", "downcast-rs", "thiserror", @@ -564,6 +589,25 @@ dependencies = [ "web-sys", ] +[[package]] +name = "bevy_app" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "454a8cfd134864dcdcba6ee56fb958531b981021bba6bb2037c9e3df6046603c" +dependencies = [ + "bevy_derive 0.15.1", + "bevy_ecs 0.15.1", + "bevy_reflect 0.15.1", + "bevy_tasks 0.15.1", + "bevy_utils 0.15.1", + "console_error_panic_hook", + "ctrlc", + "derive_more 1.0.0", + "downcast-rs", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "bevy_asset" version = "0.14.2" @@ -573,12 +617,12 @@ dependencies = [ "async-broadcast", "async-fs", "async-lock", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset_macros", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "bevy_winit", "blake3", "crossbeam-channel", @@ -602,10 +646,10 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9eb05ce838d282f09d83380b4d6432aec7519d421dee8c75cc20e6148237e6e" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -614,15 +658,15 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ee31312a0e67f288fe12a1d9aa679dd0ba8a49e1e6fe5fcd2ba1aa1ea34e5ed" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "cpal", "rodio", ] @@ -634,7 +678,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04842e9d38a93f0c75ab46f7f404ea24ef57ad83dbd159e5b4b35318b02257bb" dependencies = [ "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bytemuck", "encase", "serde", @@ -661,11 +705,11 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de706862871a1fe99ea619bff2f99d73e43ad82f19ef866a9e19a14c957c8537" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "serde", "uuid", ] @@ -676,17 +720,17 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2f6e1e122ada4cd811442e083fb5ad3e325c59a87271d5ef57193f1c2cad7f8c" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bitflags 2.6.0", "nonmax", "radsort", @@ -701,9 +745,20 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fbfc33a4c6b80760bb8bf850a2cc65a1e031da62fd3ca8b552189104dc98514" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "quote", - "syn 2.0.85", + "syn 2.0.91", +] + +[[package]] +name = "bevy_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b962df2a1bef274ae76ec75279eb6f8ef0ffd85b5e4c43433f5d08ba57b3d071" +dependencies = [ + "bevy_macro_utils 0.15.1", + "quote", + "syn 2.0.91", ] [[package]] @@ -712,12 +767,12 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bebb154e0cc78e3bbfbfdb42fb502b14c1cd47e72f16e6d4228dfe6233ba6cbd" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_core", - "bevy_ecs", - "bevy_tasks", - "bevy_time", - "bevy_utils", + "bevy_ecs 0.14.2", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", + "bevy_utils 0.14.2", "const-fnv1a-hash", "sysinfo", ] @@ -741,11 +796,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ee4222406637f3c8e3991a99788cfcde76097bf997c311f1b6297364057483f" dependencies = [ "arrayvec", - "bevy_ecs_macros", - "bevy_ptr", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_ecs_macros 0.14.2", + "bevy_ptr 0.14.2", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "bitflags 2.6.0", "concurrent-queue", "fixedbitset 0.5.7", @@ -755,16 +810,49 @@ dependencies = [ "thiserror", ] +[[package]] +name = "bevy_ecs" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b747210d7db09dfacc237707d4fd31c8b43d7744cd5e5829e2c4ca86b9e47baf" +dependencies = [ + "bevy_ecs_macros 0.15.1", + "bevy_ptr 0.15.1", + "bevy_reflect 0.15.1", + "bevy_tasks 0.15.1", + "bevy_utils 0.15.1", + "bitflags 2.6.0", + "concurrent-queue", + "derive_more 1.0.0", + "disqualified", + "fixedbitset 0.5.7", + "nonmax", + "petgraph", + "smallvec", +] + [[package]] name = "bevy_ecs_macros" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36b573430b67aff7bde8292257494f39343401379bfbda64035ba4918bba7b20" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", +] + +[[package]] +name = "bevy_ecs_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d36ba5874ee278d20f17b8934d2969f8fbab90f3ea3fcf8d3583814b3661ada" +dependencies = [ + "bevy_macro_utils 0.15.1", + "proc-macro2", + "quote", + "syn 2.0.91", ] [[package]] @@ -837,21 +925,40 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d06c9693847a2a6ea61d6b86288dd4d8b6a79f05d4bf6e27b96d4f5c8d552fe4" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "encase_derive_impl", ] +[[package]] +name = "bevy_framepace" +version = "0.17.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa5f7d858e66d0f4c4fe3e1a678da440037ce383c4c51bff3c1fa06a121ebc0" +dependencies = [ + "bevy_app 0.14.2", + "bevy_diagnostic", + "bevy_ecs 0.14.2", + "bevy_log", + "bevy_reflect 0.14.2", + "bevy_render", + "bevy_time 0.14.2", + "bevy_utils 0.14.2", + "bevy_window", + "bevy_winit", + "spin_sleep", +] + [[package]] name = "bevy_gilrs" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0422ccb3ce0f79b264100cf064fdc5ef65cef5c7d51bf6378058f9b96fea4183" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_input", - "bevy_time", - "bevy_utils", + "bevy_time 0.14.2", + "bevy_utils 0.14.2", "gilrs", "thiserror", ] @@ -862,20 +969,20 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfe32af0666d8d8a7fd6eb6b5e41eceefdc6f2e5441c74b812e8f0902a9d7f52" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core_pipeline", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_gizmos_macros", "bevy_math", "bevy_pbr", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_sprite", - "bevy_time", + "bevy_time 0.14.2", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bytemuck", ] @@ -885,10 +992,10 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "906b052f8cf3f3983f0f6df625fb10cbd9b27d44e362a327dc1ed51300d362bc" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -899,21 +1006,21 @@ checksum = "d6adbd325b90e3c700d0966b5404e226c7deec1b8bda8f36832788d7b435b9b8" dependencies = [ "base64 0.22.1", "bevy_animation", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core", "bevy_core_pipeline", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_hierarchy", "bevy_math", "bevy_pbr", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_scene", - "bevy_tasks", + "bevy_tasks 0.14.2", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "gltf", "percent-encoding", "serde", @@ -928,11 +1035,11 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a88b912b37e1bc4dbb2aa40723199f74c8b06c4fbb6da0bb4585131df28ef66e" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_core", - "bevy_ecs", - "bevy_reflect", - "bevy_utils", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "smallvec", ] @@ -942,11 +1049,11 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dd3a54e67cc3ba17971de7b1a7e64eda84493c1e7bb6bfa11c6cf8ac124377b" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_math", - "bevy_reflect", - "bevy_utils", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "serde", "smol_str", "thiserror", @@ -960,15 +1067,15 @@ checksum = "45d435cac77c568f3aef65f786a5fee0e53c81950c5258182dd2c1d6cd6c4fec" dependencies = [ "bevy_a11y", "bevy_animation", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_audio", "bevy_color", "bevy_core", "bevy_core_pipeline", - "bevy_derive", + "bevy_derive 0.14.2", "bevy_diagnostic", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_gilrs", "bevy_gizmos", "bevy_gltf", @@ -977,18 +1084,18 @@ dependencies = [ "bevy_log", "bevy_math", "bevy_pbr", - "bevy_ptr", - "bevy_reflect", + "bevy_ptr 0.14.2", + "bevy_reflect 0.14.2", "bevy_render", "bevy_scene", "bevy_sprite", "bevy_state", - "bevy_tasks", + "bevy_tasks 0.14.2", "bevy_text", - "bevy_time", + "bevy_time 0.14.2", "bevy_transform", "bevy_ui", - "bevy_utils", + "bevy_utils 0.14.2", "bevy_window", "bevy_winit", ] @@ -1000,9 +1107,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67240c7596c8f0653e50fce35a60196516817449235193246599facba9002e02" dependencies = [ "android_log-sys", - "bevy_app", - "bevy_ecs", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_utils 0.14.2", "tracing-log", "tracing-subscriber", "tracing-wasm", @@ -1016,7 +1123,19 @@ checksum = "bfc65e570012e64a21f3546df68591aaede8349e6174fb500071677f54f06630" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", + "toml_edit", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdb3a681c24abace65bf18ed467ad8befbedb42468b32e459811bfdb01e506c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", "toml_edit", ] @@ -1026,7 +1145,7 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5421792749dda753ab3718e77d27bfce38443daf1850b836b97530b6245a4581" dependencies = [ - "bevy_reflect", + "bevy_reflect 0.14.2", "glam 0.27.0", "rand", "serde", @@ -1049,11 +1168,11 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30f0eab3099d7d474b25a95a6a2a945e6089d75e099af5a571fe896f7c1a455b" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_color", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_render", - "bevy_utils", + "bevy_utils 0.14.2", "lexopt", "once_cell", "petgraph", @@ -1066,17 +1185,17 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4dccaa3c945f19834dcf7cd8eb358236dbf0fc4000dacbc7710564e7856714db" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bevy_window", "bitflags 2.6.0", "bytemuck", @@ -1093,15 +1212,21 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61baa1bdc1f4a7ac2c18217570a7cc04e1cd54d38456e91782f0371c79afe0a8" +[[package]] +name = "bevy_ptr" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa65df6a190b7dfc84d79f09cf02d47ae046fa86a613e202c31559e06d8d3710" + [[package]] name = "bevy_reflect" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2508785a4a5809f25a237eec4fee2c91a4dbcf81324b2bbc2d6c52629e603781" dependencies = [ - "bevy_ptr", - "bevy_reflect_derive", - "bevy_utils", + "bevy_ptr 0.14.2", + "bevy_reflect_derive 0.14.2", + "bevy_utils 0.14.2", "downcast-rs", "erased-serde", "glam 0.27.0", @@ -1113,16 +1238,48 @@ dependencies = [ "uuid", ] +[[package]] +name = "bevy_reflect" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab3264acc3b6f48bc23fbd09fdfea6e5d9b7bfec142e4f3333f532acf195bca" +dependencies = [ + "assert_type_match", + "bevy_ptr 0.15.1", + "bevy_reflect_derive 0.15.1", + "bevy_utils 0.15.1", + "derive_more 1.0.0", + "disqualified", + "downcast-rs", + "erased-serde", + "serde", + "smallvec", + "smol_str", +] + [[package]] name = "bevy_reflect_derive" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "967d5da1882ec3bb3675353915d3da909cafac033cbf31e58727824a1ad2a288" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", + "uuid", +] + +[[package]] +name = "bevy_reflect_derive" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42f83876a322130ab38a47d5dcf75258944bf76b3387d1acdb3750920fda63e2" +dependencies = [ + "bevy_macro_utils 0.15.1", + "proc-macro2", + "quote", + "syn 2.0.91", "uuid", ] @@ -1133,23 +1290,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836cf8a513db013cbe7d55a331060088efd407e49fd5b05c8404700cd82e7619" dependencies = [ "async-channel", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core", - "bevy_derive", + "bevy_derive 0.14.2", "bevy_diagnostic", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_encase_derive", "bevy_hierarchy", "bevy_math", "bevy_mikktspace", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render_macros", - "bevy_tasks", - "bevy_time", + "bevy_tasks 0.14.2", + "bevy_time 0.14.2", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bevy_window", "bitflags 2.6.0", "bytemuck", @@ -1158,7 +1315,7 @@ dependencies = [ "encase", "futures-lite", "hexasphere", - "image 0.25.4", + "image 0.25.5", "js-sys", "ktx2", "naga", @@ -1180,10 +1337,10 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cbc24e0e95061a38a7744218b9c7e52e4c08b53f1499f33480e2b749f3864432" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -1192,15 +1349,15 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ec57a72d75273bdbb6154390688fd07ba79ae9f6f99476d1937f799c736c2da" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "serde", "thiserror", "uuid", @@ -1212,17 +1369,17 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e045b4d8cc8e7422a4c29b1eadbe224f5cc42f170b88d43e7535892fcede3840" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bitflags 2.6.0", "bytemuck", "fixedbitset 0.5.7", @@ -1238,12 +1395,12 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25335bfa58cc22371182335c3b133017293bc9b6d3308402fd4d1f978b83f937" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_state_macros", - "bevy_utils", + "bevy_utils 0.14.2", ] [[package]] @@ -1252,10 +1409,10 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dee600b659c739f1911f997a81611fec0a1832cf731727956e5fa4e7532b4dd5" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.14.2", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -1271,6 +1428,19 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "bevy_tasks" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c28f2db2619203aa82342dbbe77e49aeea4f933212c0b7a1f285e94c4008e5b" +dependencies = [ + "async-executor", + "futures-channel", + "futures-lite", + "pin-project", + "wasm-bindgen-futures", +] + [[package]] name = "bevy_text" version = "0.14.2" @@ -1278,16 +1448,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b661db828fd423fc41a4ccf43aa4d1b8e50e75057ec40453317d0d761e8ad62d" dependencies = [ "ab_glyph", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_sprite", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bevy_window", "glyph_brush_layout", "serde", @@ -1300,26 +1470,39 @@ version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4e4d53ec32a1b16492396951d04de0d2d90e924bf9adcb8d1adacab5ab6c17c" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_reflect", - "bevy_utils", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "crossbeam-channel", "serde", "thiserror", ] +[[package]] +name = "bevy_time" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb3108ed1ef864bc40bc859ba4c9c3844213c7be3674f982203cf5d87c656848" +dependencies = [ + "bevy_app 0.15.1", + "bevy_ecs 0.15.1", + "bevy_reflect 0.15.1", + "bevy_utils 0.15.1", + "crossbeam-channel", +] + [[package]] name = "bevy_transform" version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5493dce84427d00a9266e8e4386d738a72ee8640423b62dfcecb6dfccbfe0d2" dependencies = [ - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "serde", "thiserror", ] @@ -1331,21 +1514,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56d2cba6603b39a3765f043212ae530e25550af168a7eec6b23b9b93c19bc5f7" dependencies = [ "bevy_a11y", - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_color", "bevy_core_pipeline", - "bevy_derive", - "bevy_ecs", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", "bevy_input", "bevy_math", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_sprite", "bevy_text", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bevy_window", "bytemuck", "nonmax", @@ -1362,7 +1545,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffb0ec333b5965771153bd746f92ffd8aeeb9d008a8620ffd9ed474859381a5e" dependencies = [ "ahash", - "bevy_utils_proc_macros", + "bevy_utils_proc_macros 0.14.2", + "getrandom", + "hashbrown 0.14.5", + "thread_local", + "tracing", + "web-time", +] + +[[package]] +name = "bevy_utils" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f01088c048960ea50ee847c3f668942ecf49ed26be12a1585a5e59b6a941d9a" +dependencies = [ + "ahash", + "bevy_utils_proc_macros 0.15.1", "getrandom", "hashbrown 0.14.5", "thread_local", @@ -1378,18 +1576,29 @@ checksum = "38f1ab8f2f6f58439d260081d89a42b02690e5fdd64f814edc9417d33fcf2857" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", +] + +[[package]] +name = "bevy_utils_proc_macros" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a0c3244d543cc964545b7aa074f6fb18a915a7121cf3de5d7ed37a4aae8662d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", ] [[package]] name = "bevy_web_keepalive" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d026b73907b0cd0027da750ad0ea664c1cbb5666ab103f90540d449931883f06" +checksum = "4277c0fdccc4bc903552b23705e013d8fb5dcda41e57d67cbb59ceb26e5be2e6" dependencies = [ - "bevy_app", - "bevy_ecs", - "bevy_time", + "bevy_app 0.15.1", + "bevy_ecs 0.15.1", + "bevy_time 0.15.1", "wasm-bindgen", "web-sys", ] @@ -1401,11 +1610,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c89e88a20db64ea8204540afb4699295947c454738fd50293f7b32ab8be857a6" dependencies = [ "bevy_a11y", - "bevy_app", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_ecs 0.14.2", "bevy_math", - "bevy_reflect", - "bevy_utils", + "bevy_reflect 0.14.2", + "bevy_utils 0.14.2", "raw-window-handle", "serde", "smol_str", @@ -1420,16 +1629,16 @@ dependencies = [ "accesskit_winit", "approx", "bevy_a11y", - "bevy_app", - "bevy_derive", - "bevy_ecs", + "bevy_app 0.14.2", + "bevy_derive 0.14.2", + "bevy_ecs 0.14.2", "bevy_hierarchy", "bevy_input", "bevy_log", "bevy_math", - "bevy_reflect", - "bevy_tasks", - "bevy_utils", + "bevy_reflect 0.14.2", + "bevy_tasks 0.14.2", + "bevy_utils 0.14.2", "bevy_window", "cfg-if", "crossbeam-channel", @@ -1474,7 +1683,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -1509,9 +1718,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "b8ee0c1824c4dea5b5f81736aff91bae041d2c07ee1192bec91054e10e3e601e" dependencies = [ "arrayref", "arrayvec", @@ -1563,12 +1772,12 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "serde", ] @@ -1580,22 +1789,22 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.19.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8334215b81e418a0a7bdb8ef0849474f40bb10c8b71f1c4ed315cff49f32494d" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.8.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -1612,9 +1821,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" dependencies = [ "serde", ] @@ -1647,9 +1856,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.31" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e7962b54006dcfcc61cb72735f4d89bb97061dd6a7ed882ec6b8ee53714c6f" +checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" dependencies = [ "jobserver", "libc", @@ -1746,14 +1955,14 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.5", + "libloading 0.8.6", ] [[package]] name = "clap" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -1761,9 +1970,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -1780,14 +1989,14 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "clipboard-win" @@ -1897,10 +2106,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32b13ea120a812beba79e34316b3942a857c86ec1593cb34f27bb28272ce2cca" [[package]] -name = "const_panic" -version = "0.2.10" +name = "const-random" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "013b6c2c3a14d678f38cd23994b02da3a1a1b6a5d1eedddfe63a5a5f11b13a81" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "const_panic" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53857514f72ee4a2b583de67401e3ff63a5472ca4acf289d09a9ea7636dfec17" [[package]] name = "const_soft_float" @@ -2024,9 +2253,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -2046,8 +2275,10 @@ version = "0.1.0" dependencies = [ "avian3d", "bevy", + "bevy-steamworks", "bevy_dolly", "bevy_editor_pls", + "bevy_framepace", "blenvy", "cfg-if", "clap", @@ -2058,18 +2289,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -2086,9 +2317,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" [[package]] name = "crypto-common" @@ -2101,6 +2338,16 @@ dependencies = [ "typenum", ] +[[package]] +name = "ctrlc" +version = "3.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + [[package]] name = "cursor-icon" version = "1.1.0" @@ -2114,7 +2361,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b28bfe653d79bd16c77f659305b195b82bb5ce0c0eb2a4846b82ddbd77586813" dependencies = [ "bitflags 2.6.0", - "libloading 0.8.5", + "libloading 0.8.6", "winapi", ] @@ -2138,7 +2385,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2149,7 +2396,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2187,7 +2434,28 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.85", + "syn 2.0.91", +] + +[[package]] +name = "derive_more" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", + "unicode-xid", ] [[package]] @@ -2196,13 +2464,30 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", +] + +[[package]] +name = "disqualified" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9c272297e804878a2a4b707cfcfc6d2328b5bb936944613b4fdf2b9269afdfd" + [[package]] name = "dlib" version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading 0.8.5", + "libloading 0.8.6", ] [[package]] @@ -2313,7 +2598,7 @@ checksum = "fd31dbbd9743684d339f907a87fe212cb7b51d75b9e8e74181fe363199ee9b47" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2325,7 +2610,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2346,7 +2631,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2382,12 +2667,12 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -2424,9 +2709,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ "event-listener 5.3.1", "pin-project-lite", @@ -2434,15 +2719,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fdeflate" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c6f4c64c1d33a3111c4466f7365ebdcc37c5bd1ea0d62aae2e3d722aacbedb" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" dependencies = [ "simd-adler32", ] @@ -2461,9 +2746,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flate2" -version = "1.0.34" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" +checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" dependencies = [ "crc32fast", "miniz_oxide", @@ -2475,6 +2760,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + [[package]] name = "foreign-types" version = "0.5.0" @@ -2493,7 +2784,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2561,9 +2852,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -2580,7 +2871,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2781,7 +3072,7 @@ dependencies = [ "inflections", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -2870,13 +3161,13 @@ dependencies = [ [[package]] name = "gpu-descriptor" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c08c1f623a8d0b722b8b99f821eb0ba672a1618f0d3b16ddbee1cedd2dd8557" +checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" dependencies = [ "bitflags 2.6.0", "gpu-descriptor-types", - "hashbrown 0.14.5", + "hashbrown 0.15.2", ] [[package]] @@ -2917,9 +3208,12 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.0" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash", +] [[package]] name = "hassle-rs" @@ -2930,7 +3224,7 @@ dependencies = [ "bitflags 2.6.0", "com", "libc", - "libloading 0.8.5", + "libloading 0.8.6", "thiserror", "widestring", "winapi", @@ -2972,11 +3266,11 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3002,6 +3296,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -3010,12 +3422,23 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.5.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] @@ -3032,9 +3455,9 @@ dependencies = [ [[package]] name = "image" -version = "0.25.4" +version = "0.25.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc144d44a31d753b02ce64093d532f55ff8dc4ebf2ffb8a63c0dda691385acae" +checksum = "cd6f44aed642f18953a158afeb30206f4d50da59fbc66ecb53c66488de73563b" dependencies = [ "bytemuck", "byteorder-lite", @@ -3056,12 +3479,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown 0.15.0", + "hashbrown 0.15.2", ] [[package]] @@ -3126,9 +3549,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jni" @@ -3169,10 +3592,11 @@ checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -3183,7 +3607,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" dependencies = [ "libc", - "libloading 0.8.5", + "libloading 0.8.6", "pkg-config", ] @@ -3215,7 +3639,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bebb7f3227809906ca7ccc981aedf7805b5edb422b4265290cc749316c0faba4" dependencies = [ "bevy", - "derive_more", + "derive_more 0.99.18", "itertools", "leafwing_input_manager_macros", "serde", @@ -3230,7 +3654,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -3252,9 +3676,9 @@ checksum = "baff4b617f7df3d896f97fe922b64817f6cd9a756bb81d40f8883f2f66dcb401" [[package]] name = "libc" -version = "0.2.161" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" @@ -3268,9 +3692,9 @@ dependencies = [ [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets 0.52.6", @@ -3290,7 +3714,7 @@ checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ "bitflags 2.6.0", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", ] [[package]] @@ -3352,7 +3776,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -3361,6 +3785,12 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" + [[package]] name = "litrs" version = "0.4.1" @@ -3458,9 +3888,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", "simd-adler32", @@ -3539,7 +3969,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -3686,7 +4116,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -3736,7 +4166,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -3953,9 +4383,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.5" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -4063,7 +4493,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.8", "smallvec", "windows-targets 0.52.6", ] @@ -4155,7 +4585,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -4189,9 +4619,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "png" -version = "0.17.14" +version = "0.17.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52f9d46a34a05a6a57566bc2bfae066ef07585a6e3fa30fbbdff5936380623f0" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" dependencies = [ "bitflags 1.3.2", "crc32fast", @@ -4202,9 +4632,9 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.3" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ "cfg-if", "concurrent-queue", @@ -4228,9 +4658,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "pp-rs" @@ -4297,9 +4727,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -4312,9 +4742,9 @@ checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" [[package]] name = "quanta" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5167a477619228a0b284fac2674e3c388cba90631d7b7de620e6f1fcd08da5" +checksum = "773ce68d0bb9bc7ef20be3536ffe94e223e1f365bd374108b2659fac0c65cfe6" dependencies = [ "crossbeam-utils", "libc", @@ -4443,9 +4873,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -4458,7 +4888,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -4473,9 +4903,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -4558,22 +4988,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.38" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "ruzstd" -version = "0.7.2" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99c3938e133aac070997ddc684d4b393777d293ba170f2988c8fd5ea2ad4ce21" +checksum = "fad02996bfc73da3e301efe90b1837be9ed8f4a462b6ed410aa35d00381de89f" dependencies = [ "twox-hash", ] @@ -4586,9 +5016,9 @@ checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "safe_arch" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" dependencies = [ "bytemuck", ] @@ -4635,15 +5065,15 @@ checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" [[package]] name = "self_cell" -version = "1.0.4" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" +checksum = "c2fdfc24bc566f839a2da4c4295b82db7d25a24253867d5c64355abb5799bdbe" [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "send_wrapper" @@ -4653,29 +5083,29 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", "memchr", @@ -4790,6 +5220,15 @@ dependencies = [ "smallvec", ] +[[package]] +name = "spin_sleep" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4196b31c8c1dc443543be4f4d0e827657fbf2b87387e5c8f229b14f1c046718a" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "spinning_top" version = "0.3.0" @@ -4808,12 +5247,37 @@ dependencies = [ "bitflags 2.6.0", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "steamworks" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a79d6f059322f73a4586cc2d0ca595ce1583104b2b1574ae1bb87f2c05bf4c67" +dependencies = [ + "bitflags 1.3.2", + "lazy_static", + "serde", + "steamworks-sys", + "thiserror", +] + +[[package]] +name = "steamworks-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef6b00f8fe8eaaaff22cb9b70822a48c1a5d772bc682c202a57c0b438175845" + [[package]] name = "strict-num" version = "0.1.1" @@ -4834,9 +5298,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "svg_fmt" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20e16a0f46cf5fd675563ef54f26e83e20f2366bcf027bcb3cc3ed2b98aaf2ca" +checksum = "ce5d813d71d82c4cbc1742135004e4a79fd870214c155443451c139c9470a0aa" [[package]] name = "syn" @@ -4851,15 +5315,26 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.85" +version = "2.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5023162dfcd14ef8f32034d8bcd4cc5ddc61ef7a247c024a33e24e1f24d21b56" +checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", +] + [[package]] name = "sysinfo" version = "0.30.13" @@ -4898,22 +5373,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d11abd9594d9b38965ef50805c5e469ca9cc6f197f883f717e0269a3057b3d5" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.65" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae71770322cbd277e69d762a16c444af02aa0575ac0d174f0b9562d3b37f8602" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -4937,6 +5412,15 @@ dependencies = [ "weezl", ] +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + [[package]] name = "tiny-skia" version = "0.11.4" @@ -4963,10 +5447,20 @@ dependencies = [ ] [[package]] -name = "tinyvec" -version = "1.8.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8" dependencies = [ "tinyvec_macros", ] @@ -4979,9 +5473,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "pin-project-lite", @@ -4996,7 +5490,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -5018,9 +5512,9 @@ dependencies = [ [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -5029,20 +5523,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", "valuable", @@ -5061,9 +5555,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -5110,19 +5604,19 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e8240adbd84abd8b020fe5a5c8eb4f11771495f189cb080eb0344947ac18449" dependencies = [ - "bevy_app", + "bevy_app 0.14.2", "bevy_asset", "bevy_core", "bevy_core_pipeline", - "bevy_ecs", + "bevy_ecs 0.14.2", "bevy_input", "bevy_log", "bevy_math", "bevy_pbr", - "bevy_reflect", + "bevy_reflect 0.14.2", "bevy_render", "bevy_transform", - "bevy_utils", + "bevy_utils 0.14.2", "bevy_window", "bytemuck", "transform-gizmo", @@ -5131,9 +5625,9 @@ dependencies = [ [[package]] name = "ttf-parser" -version = "0.25.0" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5902c5d130972a0000f60860bfbf46f7ca3db5391eddfedd1b8728bd9dc96c0e" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" [[package]] name = "twox-hash" @@ -5157,26 +5651,11 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" - [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" - -[[package]] -name = "unicode-normalization" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-segmentation" @@ -5208,15 +5687,27 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -5275,9 +5766,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -5286,36 +5777,36 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.45" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5323,22 +5814,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wayland-backend" @@ -5451,9 +5942,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -5471,9 +5962,9 @@ dependencies = [ [[package]] name = "webbrowser" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e5f07fb9bc8de2ddfe6b24a71a75430673fd679e568c48b52716cef1cfae923" +checksum = "ea9fe1ebb156110ff855242c1101df158b822487e4957b0556d9ffce9db0f535" dependencies = [ "block2", "core-foundation 0.10.0", @@ -5570,7 +6061,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.5", + "libloading 0.8.6", "log", "metal", "naga", @@ -5604,9 +6095,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.28" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690" +checksum = "58e6db2670d2be78525979e9a5f9c69d296fd7d670549fe9ebf70f8708cb5019" dependencies = [ "bytemuck", "safe_arch", @@ -5721,7 +6212,7 @@ checksum = "942ac266be9249c84ca862f0a164a39533dc2f6f33dc98ec89c8da99b82ea0bd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -5732,7 +6223,7 @@ checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -5743,7 +6234,7 @@ checksum = "da33557140a288fae4e1d5f8873aaf9eb6613a9cf82c3e070223ff177f598b60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -5754,7 +6245,7 @@ checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", ] [[package]] @@ -6001,9 +6492,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winit" -version = "0.30.5" +version = "0.30.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0be9e76a1f1077e04a411f0b989cbd3c93339e1771cb41e71ac4aee95bfd2c67" +checksum = "dba50bc8ef4b6f1a75c9274fb95aa9a8f63fbc66c56f391bd85cf68d51e7b1a3" dependencies = [ "ahash", "android-activity", @@ -6060,6 +6551,18 @@ dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "x11-dl" version = "2.21.0" @@ -6080,7 +6583,7 @@ dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", - "libloading 0.8.5", + "libloading 0.8.6", "once_cell", "rustix", "x11rb-protocol", @@ -6125,9 +6628,33 @@ checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56" [[package]] name = "xml-rs" -version = "0.8.22" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af4e2e2f7cba5a093896c1e150fbfe177d1883e7448200efb81d40b9d339ef26" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", + "synstructure", +] [[package]] name = "zerocopy" @@ -6147,7 +6674,28 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.85", + "syn 2.0.91", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", + "synstructure", ] [[package]] @@ -6156,6 +6704,28 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.91", +] + [[package]] name = "zune-core" version = "0.4.12" @@ -6164,9 +6734,9 @@ checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" [[package]] name = "zune-jpeg" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16099418600b4d8f028622f73ff6e3deaabdff330fb9a2a131dea781ee8b0768" +checksum = "99a5bab8d7dedf81405c4bb1f2b83ea057643d9cb28778cea9eecddeedd2e028" dependencies = [ "zune-core", ] diff --git a/Cargo.toml b/Cargo.toml index 2242074..6b1c221 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,7 +5,7 @@ edition = "2021" [dependencies] avian3d = "0.1.2" -bevy = { version = "0.14.2", features = ["jpeg"] } +bevy = { version = "0.14", features = ["jpeg"] } bevy_dolly = "0.0.4" bevy_editor_pls = "0.10.0" blenvy = "0.1.0-alpha.1" @@ -14,6 +14,8 @@ clap = { version = "4.5.20", features = ["derive"] } lazy_static = "1.5.0" lightyear = { version = "0.17.1", features = ["avian3d"] } serde = { version = "1.0.213", features = ["derive"] } +bevy-steamworks = { version = "0.12", features = ["serde"] } +bevy_framepace = "0.17.0" [profile.dev.package."*"] opt-level = 3 diff --git a/art/crooks.blend b/art/crooks.blend index 6f63be909eef9c9fe1e10e2c4e85cb0684504e40..c2ee2cfb80899f26ef2df49fcf8ac6ed0cff0117 100644 GIT binary patch delta 159121 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%0AT@8U^PN@RO(<< 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

v@ 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 Pogc-jav#NdA3O5DN~MY> diff --git a/assets/levels/World.glb b/assets/levels/World.glb index df4ceee483d655aa01086c371048a908e1ff03f8..14eb5f92b3eb47ccd43c3405e86f1f4bf067d788 100644 GIT binary patch delta 40 vcmZqS{=&|eo)hB6#K6Gtg_(ij0rN(_lZ=yhF-@NA&+GxDH8y9mNHGEc_wfuY delta 337 zcmeyu-onk7o)hB6#K6GN!pguPGV(hQH+v~LP26lhLu8$Qc_N7YC%zE zUP-Y&L{cw3Cn-irQ%6A~FEKY2q$E8jvA8(3SkJ(~a56uWm?{zeal~OB8iV}fZtCfNa63aKYGvzWeDgXcq CR%i(T diff --git a/assets/levels/World.meta.ron b/assets/levels/World.meta.ron index 487ee25..4b51a62 100644 --- a/assets/levels/World.meta.ron +++ b/assets/levels/World.meta.ron @@ -1,10 +1,6 @@ ( assets: [ - ("Player", File ( path: "blueprints/Player.glb" )), - ("glasses.001", File ( path: "materials/glasses.001.glb" )), - ("head.001", File ( path: "materials/head.001.glb" )), - ("body.001", File ( path: "materials/body.001.glb" )), ("Hotel", File ( path: "blueprints/Hotel.glb" )), ("floor", File ( path: "materials/floor.glb" )), ] diff --git a/assets/registry.json b/assets/registry.json index 1c391dd..bf3bd91 100644 --- a/assets/registry.json +++ b/assets/registry.json @@ -3972,6 +3972,44 @@ "type": "object", "typeInfo": "Enum" }, + "bevy_asset::handle::Handle": { + "isComponent": true, + "isResource": false, + "long_name": "bevy_asset::handle::Handle", + "oneOf": [ + { + "items": false, + "long_name": "Strong", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/std::sync::Arc" + } + } + ], + "short_name": "Strong", + "type": "array", + "typeInfo": "Tuple" + }, + { + "items": false, + "long_name": "Weak", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/bevy_asset::id::AssetId" + } + } + ], + "short_name": "Weak", + "type": "array", + "typeInfo": "Tuple" + } + ], + "short_name": "Handle", + "type": "object", + "typeInfo": "Enum" + }, "bevy_asset::handle::Handle": { "isComponent": true, "isResource": false, @@ -4352,6 +4390,44 @@ "type": "object", "typeInfo": "Enum" }, + "bevy_asset::handle::Handle": { + "isComponent": true, + "isResource": false, + "long_name": "bevy_asset::handle::Handle", + "oneOf": [ + { + "items": false, + "long_name": "Strong", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/std::sync::Arc" + } + } + ], + "short_name": "Strong", + "type": "array", + "typeInfo": "Tuple" + }, + { + "items": false, + "long_name": "Weak", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/bevy_asset::id::AssetId" + } + } + ], + "short_name": "Weak", + "type": "array", + "typeInfo": "Tuple" + } + ], + "short_name": "Handle", + "type": "object", + "typeInfo": "Enum" + }, "bevy_asset::id::AssetId<()>": { "isComponent": false, "isResource": false, @@ -4950,6 +5026,52 @@ "type": "object", "typeInfo": "Enum" }, + "bevy_asset::id::AssetId": { + "isComponent": false, + "isResource": false, + "long_name": "bevy_asset::id::AssetId", + "oneOf": [ + { + "additionalProperties": false, + "long_name": "Index", + "properties": { + "index": { + "long_name": "index", + "type": { + "$ref": "#/$defs/bevy_asset::assets::AssetIndex" + } + } + }, + "required": [ + "index" + ], + "short_name": "Index", + "type": "object", + "typeInfo": "Struct" + }, + { + "additionalProperties": false, + "long_name": "Uuid", + "properties": { + "uuid": { + "long_name": "uuid", + "type": { + "$ref": "#/$defs/uuid::Uuid" + } + } + }, + "required": [ + "uuid" + ], + "short_name": "Uuid", + "type": "object", + "typeInfo": "Struct" + } + ], + "short_name": "AssetId", + "type": "object", + "typeInfo": "Enum" + }, "bevy_asset::id::AssetId": { "isComponent": false, "isResource": false, @@ -5410,6 +5532,52 @@ "type": "object", "typeInfo": "Enum" }, + "bevy_asset::id::AssetId": { + "isComponent": false, + "isResource": false, + "long_name": "bevy_asset::id::AssetId", + "oneOf": [ + { + "additionalProperties": false, + "long_name": "Index", + "properties": { + "index": { + "long_name": "index", + "type": { + "$ref": "#/$defs/bevy_asset::assets::AssetIndex" + } + } + }, + "required": [ + "index" + ], + "short_name": "Index", + "type": "object", + "typeInfo": "Struct" + }, + { + "additionalProperties": false, + "long_name": "Uuid", + "properties": { + "uuid": { + "long_name": "uuid", + "type": { + "$ref": "#/$defs/uuid::Uuid" + } + } + }, + "required": [ + "uuid" + ], + "short_name": "Uuid", + "type": "object", + "typeInfo": "Struct" + } + ], + "short_name": "AssetId", + "type": "object", + "typeInfo": "Enum" + }, "bevy_asset::path::AssetPath": { "isComponent": false, "isResource": false, @@ -6500,6 +6668,79 @@ "type": "object", "typeInfo": "Value" }, + "bevy_egui::EguiSettings": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "bevy_egui::EguiSettings", + "properties": { + "default_open_url_target": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + }, + "scale_factor": { + "type": { + "$ref": "#/$defs/f32" + } + } + }, + "required": [ + "scale_factor" + ], + "short_name": "EguiSettings", + "type": "object", + "typeInfo": "Struct" + }, + "bevy_framepace::FramepaceSettings": { + "additionalProperties": false, + "isComponent": false, + "isResource": true, + "long_name": "bevy_framepace::FramepaceSettings", + "properties": { + "limiter": { + "type": { + "$ref": "#/$defs/bevy_framepace::Limiter" + } + } + }, + "required": [ + "limiter" + ], + "short_name": "FramepaceSettings", + "type": "object", + "typeInfo": "Struct" + }, + "bevy_framepace::Limiter": { + "isComponent": false, + "isResource": false, + "long_name": "bevy_framepace::Limiter", + "oneOf": [ + { + "long_name": "Auto" + }, + { + "items": false, + "long_name": "Manual", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/bevy_utils::Duration" + } + } + ], + "short_name": "Manual", + "type": "array", + "typeInfo": "Tuple" + }, + { + "long_name": "Off" + } + ], + "short_name": "Limiter", + "type": "object", + "typeInfo": "Enum" + }, "bevy_gizmos::aabb::AabbGizmoConfigGroup": { "additionalProperties": false, "isComponent": false, @@ -10687,6 +10928,72 @@ "type": "object", "typeInfo": "Struct" }, + "bevy_pbr::wireframe::NoWireframe": { + "additionalProperties": false, + "isComponent": true, + "isResource": false, + "long_name": "bevy_pbr::wireframe::NoWireframe", + "properties": {}, + "required": [], + "short_name": "NoWireframe", + "type": "object", + "typeInfo": "Struct" + }, + "bevy_pbr::wireframe::Wireframe": { + "additionalProperties": false, + "isComponent": true, + "isResource": false, + "long_name": "bevy_pbr::wireframe::Wireframe", + "properties": {}, + "required": [], + "short_name": "Wireframe", + "type": "object", + "typeInfo": "Struct" + }, + "bevy_pbr::wireframe::WireframeColor": { + "additionalProperties": false, + "isComponent": true, + "isResource": false, + "long_name": "bevy_pbr::wireframe::WireframeColor", + "properties": { + "color": { + "type": { + "$ref": "#/$defs/bevy_color::color::Color" + } + } + }, + "required": [ + "color" + ], + "short_name": "WireframeColor", + "type": "object", + "typeInfo": "Struct" + }, + "bevy_pbr::wireframe::WireframeConfig": { + "additionalProperties": false, + "isComponent": false, + "isResource": true, + "long_name": "bevy_pbr::wireframe::WireframeConfig", + "properties": { + "default_color": { + "type": { + "$ref": "#/$defs/bevy_color::color::Color" + } + }, + "global": { + "type": { + "$ref": "#/$defs/bool" + } + } + }, + "required": [ + "global", + "default_color" + ], + "short_name": "WireframeConfig", + "type": "object", + "typeInfo": "Struct" + }, "bevy_render::alpha::AlphaMode": { "isComponent": false, "isResource": false, @@ -15887,6 +16194,30 @@ "type": "object", "typeInfo": "Value" }, + "core::ops::Range": { + "isComponent": false, + "isResource": false, + "long_name": "core::ops::Range", + "short_name": "Range", + "type": "object", + "typeInfo": "Value" + }, + "core::ops::RangeInclusive": { + "isComponent": false, + "isResource": false, + "long_name": "core::ops::RangeInclusive", + "short_name": "RangeInclusive", + "type": "object", + "typeInfo": "Value" + }, + "core::ops::RangeInclusive": { + "isComponent": false, + "isResource": false, + "long_name": "core::ops::RangeInclusive", + "short_name": "RangeInclusive", + "type": "object", + "typeInfo": "Value" + }, "core::option::Option<(u8, u8)>": { "isComponent": false, "isResource": false, @@ -16886,6 +17217,33 @@ "type": "object", "typeInfo": "Enum" }, + "core::option::Option": { + "isComponent": false, + "isResource": false, + "long_name": "core::option::Option", + "oneOf": [ + { + "long_name": "None" + }, + { + "items": false, + "long_name": "Some", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/u64" + } + } + ], + "short_name": "Some", + "type": "array", + "typeInfo": "Tuple" + } + ], + "short_name": "Option", + "type": "object", + "typeInfo": "Enum" + }, "crooks::setup::Player": { "additionalProperties": false, "isComponent": true, @@ -16974,6 +17332,295 @@ "type": "object", "typeInfo": "Struct" }, + "glam::BVec2": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::BVec2", + "properties": { + "x": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "y": { + "type": { + "$ref": "#/$defs/bool" + } + } + }, + "required": [ + "x", + "y" + ], + "short_name": "BVec2", + "type": "object", + "typeInfo": "Struct" + }, + "glam::BVec3": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::BVec3", + "properties": { + "x": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "y": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "z": { + "type": { + "$ref": "#/$defs/bool" + } + } + }, + "required": [ + "x", + "y", + "z" + ], + "short_name": "BVec3", + "type": "object", + "typeInfo": "Struct" + }, + "glam::BVec3A": { + "isComponent": false, + "isResource": false, + "long_name": "glam::BVec3A", + "short_name": "BVec3A", + "type": "object", + "typeInfo": "Value" + }, + "glam::BVec4": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::BVec4", + "properties": { + "w": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "x": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "y": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "z": { + "type": { + "$ref": "#/$defs/bool" + } + } + }, + "required": [ + "x", + "y", + "z", + "w" + ], + "short_name": "BVec4", + "type": "object", + "typeInfo": "Struct" + }, + "glam::BVec4A": { + "isComponent": false, + "isResource": false, + "long_name": "glam::BVec4A", + "short_name": "BVec4A", + "type": "object", + "typeInfo": "Value" + }, + "glam::DAffine2": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DAffine2", + "properties": { + "matrix2": { + "type": { + "$ref": "#/$defs/glam::DMat2" + } + }, + "translation": { + "type": { + "$ref": "#/$defs/glam::DVec2" + } + } + }, + "required": [ + "matrix2", + "translation" + ], + "short_name": "DAffine2", + "type": "object", + "typeInfo": "Struct" + }, + "glam::DAffine3": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DAffine3", + "properties": { + "matrix3": { + "type": { + "$ref": "#/$defs/glam::DMat3" + } + }, + "translation": { + "type": { + "$ref": "#/$defs/glam::DVec3" + } + } + }, + "required": [ + "matrix3", + "translation" + ], + "short_name": "DAffine3", + "type": "object", + "typeInfo": "Struct" + }, + "glam::DMat2": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DMat2", + "properties": { + "x_axis": { + "type": { + "$ref": "#/$defs/glam::DVec2" + } + }, + "y_axis": { + "type": { + "$ref": "#/$defs/glam::DVec2" + } + } + }, + "required": [ + "x_axis", + "y_axis" + ], + "short_name": "DMat2", + "type": "object", + "typeInfo": "Struct" + }, + "glam::DMat3": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DMat3", + "properties": { + "x_axis": { + "type": { + "$ref": "#/$defs/glam::DVec3" + } + }, + "y_axis": { + "type": { + "$ref": "#/$defs/glam::DVec3" + } + }, + "z_axis": { + "type": { + "$ref": "#/$defs/glam::DVec3" + } + } + }, + "required": [ + "x_axis", + "y_axis", + "z_axis" + ], + "short_name": "DMat3", + "type": "object", + "typeInfo": "Struct" + }, + "glam::DMat4": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DMat4", + "properties": { + "w_axis": { + "type": { + "$ref": "#/$defs/glam::DVec4" + } + }, + "x_axis": { + "type": { + "$ref": "#/$defs/glam::DVec4" + } + }, + "y_axis": { + "type": { + "$ref": "#/$defs/glam::DVec4" + } + }, + "z_axis": { + "type": { + "$ref": "#/$defs/glam::DVec4" + } + } + }, + "required": [ + "x_axis", + "y_axis", + "z_axis", + "w_axis" + ], + "short_name": "DMat4", + "type": "object", + "typeInfo": "Struct" + }, + "glam::DQuat": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DQuat", + "properties": { + "w": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "x": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "y": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "z": { + "type": { + "$ref": "#/$defs/f64" + } + } + }, + "required": [ + "x", + "y", + "z", + "w" + ], + "short_name": "DQuat", + "type": "object", + "typeInfo": "Struct" + }, "glam::DVec2": { "additionalProperties": false, "isComponent": false, @@ -16999,6 +17646,74 @@ "type": "object", "typeInfo": "Struct" }, + "glam::DVec3": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DVec3", + "properties": { + "x": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "y": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "z": { + "type": { + "$ref": "#/$defs/f64" + } + } + }, + "required": [ + "x", + "y", + "z" + ], + "short_name": "DVec3", + "type": "object", + "typeInfo": "Struct" + }, + "glam::DVec4": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::DVec4", + "properties": { + "w": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "x": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "y": { + "type": { + "$ref": "#/$defs/f64" + } + }, + "z": { + "type": { + "$ref": "#/$defs/f64" + } + } + }, + "required": [ + "x", + "y", + "z", + "w" + ], + "short_name": "DVec4", + "type": "object", + "typeInfo": "Struct" + }, "glam::IVec2": { "additionalProperties": false, "isComponent": false, @@ -17024,6 +17739,74 @@ "type": "object", "typeInfo": "Struct" }, + "glam::IVec3": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::IVec3", + "properties": { + "x": { + "type": { + "$ref": "#/$defs/i32" + } + }, + "y": { + "type": { + "$ref": "#/$defs/i32" + } + }, + "z": { + "type": { + "$ref": "#/$defs/i32" + } + } + }, + "required": [ + "x", + "y", + "z" + ], + "short_name": "IVec3", + "type": "object", + "typeInfo": "Struct" + }, + "glam::IVec4": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::IVec4", + "properties": { + "w": { + "type": { + "$ref": "#/$defs/i32" + } + }, + "x": { + "type": { + "$ref": "#/$defs/i32" + } + }, + "y": { + "type": { + "$ref": "#/$defs/i32" + } + }, + "z": { + "type": { + "$ref": "#/$defs/i32" + } + } + }, + "required": [ + "x", + "y", + "z", + "w" + ], + "short_name": "IVec4", + "type": "object", + "typeInfo": "Struct" + }, "glam::Mat2": { "additionalProperties": false, "isComponent": false, @@ -17241,6 +18024,43 @@ "type": "object", "typeInfo": "Struct" }, + "glam::UVec4": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "glam::UVec4", + "properties": { + "w": { + "type": { + "$ref": "#/$defs/u32" + } + }, + "x": { + "type": { + "$ref": "#/$defs/u32" + } + }, + "y": { + "type": { + "$ref": "#/$defs/u32" + } + }, + "z": { + "type": { + "$ref": "#/$defs/u32" + } + } + }, + "required": [ + "x", + "y", + "z", + "w" + ], + "short_name": "UVec4", + "type": "object", + "typeInfo": "Struct" + }, "glam::Vec2": { "additionalProperties": false, "isComponent": false, @@ -17413,6 +18233,351 @@ "type": "int", "typeInfo": "Value" }, + "lightyear::client::components::Confirmed": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::components::Confirmed", + "properties": { + "interpolated": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + }, + "predicted": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + }, + "tick": { + "type": { + "$ref": "#/$defs/lightyear::shared::tick_manager::tick_module::Tick" + } + } + }, + "required": [ + "tick" + ], + "short_name": "Confirmed", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::input::native::InputConfig": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::input::native::InputConfig", + "properties": { + "packet_redundancy": { + "type": { + "$ref": "#/$defs/u16" + } + }, + "send_interval": { + "type": { + "$ref": "#/$defs/bevy_utils::Duration" + } + } + }, + "required": [ + "packet_redundancy", + "send_interval" + ], + "short_name": "InputConfig", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::interpolation::Interpolated": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::interpolation::Interpolated", + "properties": { + "confirmed_entity": { + "type": { + "$ref": "#/$defs/bevy_ecs::entity::Entity" + } + } + }, + "required": [ + "confirmed_entity" + ], + "short_name": "Interpolated", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::interpolation::plugin::InterpolationConfig": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::interpolation::plugin::InterpolationConfig", + "properties": { + "delay": { + "type": { + "$ref": "#/$defs/lightyear::client::interpolation::plugin::InterpolationDelay" + } + } + }, + "required": [ + "delay" + ], + "short_name": "InterpolationConfig", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::interpolation::plugin::InterpolationDelay": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::interpolation::plugin::InterpolationDelay", + "properties": { + "min_delay": { + "type": { + "$ref": "#/$defs/bevy_utils::Duration" + } + }, + "send_interval_ratio": { + "type": { + "$ref": "#/$defs/f32" + } + } + }, + "required": [ + "min_delay", + "send_interval_ratio" + ], + "short_name": "InterpolationDelay", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::networking::HostServerMetadata": { + "additionalProperties": false, + "isComponent": false, + "isResource": true, + "long_name": "lightyear::client::networking::HostServerMetadata", + "properties": { + "client_entity": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + } + }, + "required": [], + "short_name": "HostServerMetadata", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::Predicted": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::prediction::Predicted", + "properties": { + "confirmed_entity": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + } + }, + "required": [], + "short_name": "Predicted", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::despawn::PredictionDespawnMarker": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::prediction::despawn::PredictionDespawnMarker", + "properties": { + "death_tick": { + "type": { + "$ref": "#/$defs/lightyear::shared::tick_manager::tick_module::Tick" + } + } + }, + "required": [ + "death_tick" + ], + "short_name": "PredictionDespawnMarker", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::diagnostics::PredictionMetrics": { + "additionalProperties": false, + "isComponent": false, + "isResource": true, + "long_name": "lightyear::client::prediction::diagnostics::PredictionMetrics", + "properties": { + "rollback_ticks": { + "type": { + "$ref": "#/$defs/u32" + } + }, + "rollbacks": { + "type": { + "$ref": "#/$defs/u32" + } + } + }, + "required": [ + "rollbacks", + "rollback_ticks" + ], + "short_name": "PredictionMetrics", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::plugin::PredictionConfig": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::prediction::plugin::PredictionConfig", + "properties": { + "always_rollback": { + "type": { + "$ref": "#/$defs/bool" + } + }, + "correction_ticks_factor": { + "type": { + "$ref": "#/$defs/f32" + } + }, + "maximum_input_delay_before_prediction": { + "type": { + "$ref": "#/$defs/u16" + } + }, + "maximum_predicted_ticks": { + "type": { + "$ref": "#/$defs/u16" + } + }, + "minimum_input_delay_ticks": { + "type": { + "$ref": "#/$defs/u16" + } + } + }, + "required": [ + "always_rollback", + "minimum_input_delay_ticks", + "maximum_input_delay_before_prediction", + "maximum_predicted_ticks", + "correction_ticks_factor" + ], + "short_name": "PredictionConfig", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::prespawn::PreSpawnedPlayerObject": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::prediction::prespawn::PreSpawnedPlayerObject", + "properties": { + "hash": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + }, + "user_salt": { + "type": { + "$ref": "#/$defs/core::option::Option" + } + } + }, + "required": [], + "short_name": "PreSpawnedPlayerObject", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::rollback::Rollback": { + "additionalProperties": false, + "isComponent": false, + "isResource": true, + "long_name": "lightyear::client::prediction::rollback::Rollback", + "properties": {}, + "required": [], + "short_name": "Rollback", + "type": "object", + "typeInfo": "Struct" + }, + "lightyear::client::prediction::rollback::RollbackState": { + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::prediction::rollback::RollbackState", + "oneOf": [ + { + "long_name": "Default" + }, + { + "additionalProperties": false, + "long_name": "ShouldRollback", + "properties": { + "current_tick": { + "long_name": "current_tick", + "type": { + "$ref": "#/$defs/lightyear::shared::tick_manager::tick_module::Tick" + } + } + }, + "required": [ + "current_tick" + ], + "short_name": "ShouldRollback", + "type": "object", + "typeInfo": "Struct" + } + ], + "short_name": "RollbackState", + "type": "object", + "typeInfo": "Enum" + }, + "lightyear::client::replication::send::Replicate": { + "additionalProperties": false, + "isComponent": false, + "isResource": false, + "long_name": "lightyear::client::replication::send::Replicate", + "properties": { + "authority": { + "type": { + "$ref": "#/$defs/lightyear::shared::replication::authority::HasAuthority" + } + }, + "group": { + "type": { + "$ref": "#/$defs/lightyear::shared::replication::components::ReplicationGroup" + } + }, + "hierarchy": { + "type": { + "$ref": "#/$defs/lightyear::shared::replication::components::ReplicateHierarchy" + } + }, + "replicating": { + "type": { + "$ref": "#/$defs/lightyear::shared::replication::components::Replicating" + } + }, + "target": { + "type": { + "$ref": "#/$defs/lightyear::client::replication::send::ReplicateToServer" + } + } + }, + "required": [ + "target", + "authority", + "group", + "hierarchy", + "replicating" + ], + "short_name": "Replicate", + "type": "object", + "typeInfo": "Struct" + }, "lightyear::client::replication::send::ReplicateToServer": { "additionalProperties": false, "isComponent": false, @@ -17476,129 +18641,6 @@ "type": "object", "typeInfo": "Enum" }, - "lightyear::server::replication::send::ControlledBy": { - "additionalProperties": false, - "isComponent": true, - "isResource": false, - "long_name": "lightyear::server::replication::send::ControlledBy", - "properties": { - "lifetime": { - "type": { - "$ref": "#/$defs/lightyear::server::replication::send::Lifetime" - } - }, - "target": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::network_target::NetworkTarget" - } - } - }, - "required": [ - "target", - "lifetime" - ], - "short_name": "ControlledBy", - "type": "object", - "typeInfo": "Struct" - }, - "lightyear::server::replication::send::Lifetime": { - "isComponent": false, - "isResource": false, - "long_name": "lightyear::server::replication::send::Lifetime", - "oneOf": [ - "SessionBased", - "Persistent" - ], - "short_name": "Lifetime", - "type": "string", - "typeInfo": "Enum" - }, - "lightyear::server::replication::send::Replicate": { - "additionalProperties": false, - "isComponent": false, - "isResource": false, - "long_name": "lightyear::server::replication::send::Replicate", - "properties": { - "authority": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::authority::AuthorityPeer" - } - }, - "controlled_by": { - "type": { - "$ref": "#/$defs/lightyear::server::replication::send::ControlledBy" - } - }, - "group": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::components::ReplicationGroup" - } - }, - "hierarchy": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::components::ReplicateHierarchy" - } - }, - "marker": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::components::Replicating" - } - }, - "relevance_mode": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::components::NetworkRelevanceMode" - } - }, - "sync": { - "type": { - "$ref": "#/$defs/lightyear::server::replication::send::SyncTarget" - } - }, - "target": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::components::ReplicationTarget" - } - } - }, - "required": [ - "target", - "authority", - "sync", - "relevance_mode", - "controlled_by", - "group", - "hierarchy", - "marker" - ], - "short_name": "Replicate", - "type": "object", - "typeInfo": "Struct" - }, - "lightyear::server::replication::send::SyncTarget": { - "additionalProperties": false, - "isComponent": false, - "isResource": false, - "long_name": "lightyear::server::replication::send::SyncTarget", - "properties": { - "interpolation": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::network_target::NetworkTarget" - } - }, - "prediction": { - "type": { - "$ref": "#/$defs/lightyear::shared::replication::network_target::NetworkTarget" - } - } - }, - "required": [ - "prediction", - "interpolation" - ], - "short_name": "SyncTarget", - "type": "object", - "typeInfo": "Struct" - }, "lightyear::shared::config::Mode": { "isComponent": false, "isResource": false, @@ -18197,6 +19239,22 @@ "type": "object", "typeInfo": "Struct" }, + "lightyear::shared::tick_manager::tick_module::Tick": { + "isComponent": false, + "isResource": false, + "items": false, + "long_name": "lightyear::shared::tick_manager::tick_module::Tick", + "prefixItems": [ + { + "type": { + "$ref": "#/$defs/u16" + } + } + ], + "short_name": "Tick", + "type": "array", + "typeInfo": "TupleStruct" + }, "lightyear::transport::config::SharedIoConfig": { "additionalProperties": false, "isComponent": false, diff --git a/launch.sh b/launch.sh new file mode 100755 index 0000000..932eaae --- /dev/null +++ b/launch.sh @@ -0,0 +1 @@ +cargo r || ~/rust/crooks/target/debug/crooks diff --git a/src/char_controller.rs b/src/char_controller.rs index 6cdb4d7..700a205 100644 --- a/src/char_controller.rs +++ b/src/char_controller.rs @@ -2,11 +2,30 @@ use avian3d::{math::*, prelude::*}; use bevy::{ecs::query::Has, prelude::*, window::PrimaryWindow}; +#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Default, Debug, Hash, Resource)] +pub enum GameCursorMode { + #[default] + Locked, + Unlocked, +} + +impl GameCursorMode { + #[must_use] + pub fn switch(self) -> Self { + match self { + GameCursorMode::Locked => GameCursorMode::Unlocked, + GameCursorMode::Unlocked => GameCursorMode::Locked, + } + } +} + pub struct CharacterControllerPlugin; impl Plugin for CharacterControllerPlugin { fn build(&self, app: &mut App) { - app.add_event::() + app.insert_resource(GameCursorMode::default()) + .add_event::() + .add_systems(Update, set_cursor_vis) .add_systems( Update, ( @@ -105,6 +124,24 @@ impl MovementBundle { } } +fn set_cursor_vis( + buttons: Res>, + mut cursor_mode: ResMut, + mut q_windows: Query<&mut Window, With>, +) { + let right_clicked = buttons.just_pressed(MouseButton::Right); + + if right_clicked { + *cursor_mode = cursor_mode.switch(); + } + + if right_clicked || cursor_mode.is_changed() { + if let Ok(mut window) = q_windows.get_single_mut() { + window.cursor.visible = *cursor_mode == GameCursorMode::Unlocked; + } + } +} + impl Default for MovementBundle { fn default() -> Self { Self::new(30.0, 0.9, 7.0, PI * 0.45) @@ -146,9 +183,13 @@ impl CharacterControllerBundle { } fn cursor_input( + cursor_mode: Res, mut q_windows: Query<&mut Window, With>, mut ew_movement: EventWriter, ) { + if *cursor_mode == GameCursorMode::Unlocked { + return; + } let mut window = q_windows.single_mut(); let window_center = window.size() / 2.; diff --git a/src/client.rs b/src/client.rs index 502ad1f..c886720 100644 --- a/src/client.rs +++ b/src/client.rs @@ -1,14 +1,19 @@ use bevy::prelude::*; -use lightyear::prelude::ClientConnectEvent; +use lightyear::prelude::{client::ClientCommands, ClientConnectEvent}; pub struct MyClientPlugin; impl Plugin for MyClientPlugin { fn build(&self, app: &mut App) { - app.add_systems(Update, handle_events); + app.add_systems(Startup, connect_to_server) + .add_systems(Update, handle_events); } } +pub fn connect_to_server(mut commands: Commands) { + commands.connect_client(); +} + pub fn handle_events( mut er_client_events: EventReader, // mut er_server_events: EventReader, diff --git a/src/main.rs b/src/main.rs index 4534027..f3981db 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ use avian3d::prelude::PhysicsDebugPlugin; use avian3d::PhysicsPlugins; +use bevy::log::LogPlugin; use bevy::prelude::*; use bevy_editor_pls::prelude::*; use blenvy::BlenvyPlugin; @@ -20,6 +21,9 @@ lazy_static::lazy_static! { }; } +const LOG_FILTER: &str = "wgpu=error,naga=warn,blenvy=warn"; +// const LOG_FILTER: &str = "wgpu=error,naga=warn,blenvy=warn,lightyear=debug"; + #[derive(Parser)] #[command(version, about, long_about = None)] pub struct Cli { @@ -40,25 +44,35 @@ fn main() { #[cfg(feature = "client")] let app = app - .add_plugins(DefaultPlugins) + // .add_plugins(SteamworksPlugin::init_app(480).unwrap()) + .add_plugins(DefaultPlugins.set(LogPlugin { + filter: LOG_FILTER.to_string(), + level: bevy::log::Level::INFO, + custom_layer: |_| None, + })) .add_plugins(lightyear::client::plugin::ClientPlugins::new( shared_net::client_config(), )) .add_plugins(EditorPlugin::default()) + .add_plugins(bevy_framepace::FramepacePlugin) .add_plugins(client::MyClientPlugin); #[cfg(feature = "server")] app.add_plugins( - DefaultPlugins.build(), // disable some plugins on the server - // .disable::() - // .disable::() - // .disable::() - // .disable::() - // .disable::() - // .disable::() - // .disable::() - // .disable::() - // .disable::() + DefaultPlugins.build().set(LogPlugin { + filter: LOG_FILTER.to_string(), + level: bevy::log::Level::INFO, + custom_layer: |_| None, + }), // disable some plugins on the server + // .disable::() + // .disable::() + // .disable::() + // .disable::() + // .disable::() + // .disable::() + // .disable::() + // .disable::() + // .disable::() ) .add_plugins(lightyear::server::plugin::ServerPlugins::new( shared_net::server_config(), @@ -73,7 +87,20 @@ fn main() { CharacterControllerPlugin, )) .add_plugins(protocol::ProtocolPlugin) - .add_plugins(BlenvyPlugin::default()); + .add_plugins(BlenvyPlugin::default()) + // .add_systems(Startup, steam_system); + ; app.run(); } + +// fn steam_system(steam_client: Res) { +// for friend in steam_client.friends().get_friends(FriendFlags::IMMEDIATE) { +// println!( +// "Friend: {:?} - {}({:?})", +// friend.id(), +// friend.name(), +// friend.state() +// ); +// } +// } diff --git a/src/server.rs b/src/server.rs index a25fa43..46bf114 100644 --- a/src/server.rs +++ b/src/server.rs @@ -1,14 +1,19 @@ use bevy::prelude::*; -use lightyear::prelude::ServerConnectEvent; +use lightyear::prelude::{server::ServerCommands, ServerConnectEvent}; pub struct MyServerPlugin; impl Plugin for MyServerPlugin { fn build(&self, app: &mut App) { - app.add_systems(Update, handle_events); + app.add_systems(Startup, start_server) + .add_systems(Update, handle_events); } } +pub fn start_server(mut commands: Commands) { + commands.start_server(); +} + pub fn handle_events(mut er_server_events: EventReader) { for server_connect in er_server_events.read() { println!("Server Connect: {:?}", server_connect); diff --git a/src/setup.rs b/src/setup.rs index 84bf370..66e68f9 100644 --- a/src/setup.rs +++ b/src/setup.rs @@ -1,9 +1,9 @@ use avian3d::{ math::{Scalar, Vector}, - prelude::Collider, + prelude::{Collider, PhysicsSet}, }; use bevy::prelude::*; -use bevy_dolly::{prelude::Rig, system::Dolly}; +use bevy_dolly::prelude::Rig; use blenvy::{BlueprintInfo, GameWorldTag, HideUntilReady, SpawnBlueprint}; use crate::char_controller::CharacterControllerBundle; @@ -27,16 +27,22 @@ impl Plugin for SetupPlugin { app.register_type::() .register_type::() .add_systems(Startup, setup) + // .add_systems( + // Update, + // (update_camera_rig, Dolly::::update_active).chain(), + // ) .add_systems( - Update, - (update_camera_rig, Dolly::::update_active), - ) - // TODO: change to component hooks - .add_systems(Update, setup_player); + PostUpdate, + update_camera_location + .after(PhysicsSet::Sync) + .before(TransformSystem::TransformPropagate), + ); } } -fn setup(mut commands: Commands) { +fn setup(world: &mut World) { + let mut commands = world.commands(); + use bevy_dolly::prelude::*; commands.spawn(( MainCamera, // The rig component tag @@ -45,9 +51,9 @@ fn setup(mut commands: Commands) { // Adds a driver for rotation .with(Rotation::new(Quat::IDENTITY)) // Interpolation when the translation is updated, also known as smoothing - .with(Smooth::new_position(0.3)) + // .with(Smooth::new_position(0.03)) // Interpolation when the rotation is updated (updated via the YawPitch driver) - .with(Smooth::new_rotation(0.3)) + // .with(Smooth::new_rotation(0.03)) // Moves the camera point out in the Z direction and uses the position as the pivot // .with(Arm::new(Vec3::Z * 4.0)) .build(), @@ -92,23 +98,26 @@ fn setup(mut commands: Commands) { HideUntilReady, GameWorldTag, )); -} -fn setup_player( - mut commands: Commands, - q_player: Query, Without)>, -) { - let Ok(player_entity) = q_player.get_single() else { - return; - }; + #[cfg(feature = "client")] + commands.spawn(( + BlueprintInfo::from_path("blueprints/Player.glb"), + SpawnBlueprint, + HideUntilReady, + GameWorldTag, + )); - commands.entity(player_entity).insert( - CharacterControllerBundle::new( - Collider::capsule_endpoints(1., Vec3::Y, Vec3::Y * 3.), - Vector::NEG_Y * 9.81 * 2.0, - ) - .with_movement(30.0, 0.92, 7.0, (30.0 as Scalar).to_radians()), - ); + world + .register_component_hooks::() + .on_add(|mut world, e, _| { + world.commands().entity(e).insert( + CharacterControllerBundle::new( + Collider::capsule_endpoints(1., Vec3::Y, Vec3::Y * 3.), + Vector::NEG_Y * 9.81 * 2.0, + ) + .with_movement(30.0, 0.92, 7.0, (30.0 as Scalar).to_radians()), + ); + }); } fn update_camera_rig( @@ -129,3 +138,21 @@ fn update_camera_rig( d_pos.position = pos; } } + +fn update_camera_location( + q_player_head: Query<&GlobalTransform, (With, Without)>, + mut q_camera: Query<&mut Transform, (With, With)>, +) { + let Ok(player_head_transform) = q_player_head.get_single() else { + warn!("No player head!"); + return; + }; + let Ok(mut camera_transform) = q_camera.get_single_mut() else { + warn!("No main camera!"); + return; + }; + + let (_, rot, pos) = player_head_transform.to_scale_rotation_translation(); + camera_transform.translation = pos; + camera_transform.rotation = rot; +} diff --git a/src/shared_net.rs b/src/shared_net.rs index c9d3960..8aff00d 100644 --- a/src/shared_net.rs +++ b/src/shared_net.rs @@ -6,17 +6,19 @@ use std::time::Duration; pub const PRIVIATE_KEY: Key = [12; 32]; pub const FIXED_TIMESTEP_HZ: f64 = 64.0; pub const REPLICATION_INTERVAL: Duration = Duration::from_millis(100); +pub const LOCAL_IP: &str = "127.0.0.1:7000"; +pub const ANY_IP: &str = "0.0.0.0:0"; pub fn client_config() -> ClientConfig { let auth = Authentication::Manual { - server_addr: "127.0.0.1:7000".parse().unwrap(), + server_addr: "127.0.0.1:7001".parse().unwrap(), client_id: 2, private_key: PRIVIATE_KEY, protocol_id: 0, }; let netcode_config = client::NetcodeConfig::default(); let io_config = client::IoConfig { - transport: client::ClientTransport::UdpSocket("127.0.0.1:7000".parse().unwrap()), + transport: client::ClientTransport::UdpSocket(ANY_IP.parse().unwrap()), conditioner: None, compression: CompressionConfig::default(), }; @@ -33,9 +35,13 @@ pub fn client_config() -> ClientConfig { } pub fn server_config() -> ServerConfig { - let netcode_config = server::NetcodeConfig::default(); + let netcode_config = server::NetcodeConfig { + protocol_id: 0, + private_key: PRIVIATE_KEY, + ..Default::default() + }; let io_config = server::IoConfig { - transport: server::ServerTransport::UdpSocket("127.0.0.1:7000".parse().unwrap()), + transport: server::ServerTransport::UdpSocket(LOCAL_IP.parse().unwrap()), conditioner: None, compression: CompressionConfig::default(), };