diff --git a/Cargo.lock b/Cargo.lock index d5f7614a..54158b54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -20,24 +20,24 @@ checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] name = "accesskit" -version = "0.11.2" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eb1adf08c5bcaa8490b9851fd53cca27fa9880076f178ea9d29f05196728a8" +checksum = "ca8410747ed85a17c4a1e9ed3f5a74d3e7bdcc876cf9a18ff40ae21d645997b2" [[package]] name = "accesskit_consumer" -version = "0.15.2" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04bb4d9e4772fe0d47df57d0d5dbe5d85dd05e2f37ae1ddb6b105e76be58fb00" +checksum = "8c17cca53c09fbd7288667b22a201274b9becaa27f0b91bf52a526db95de45e6" dependencies = [ "accesskit", ] [[package]] name = "accesskit_macos" -version = "0.9.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134d0acf6acb667c89d3332999b1a5df4edbc8d6113910f392ebb73f2b03bb56" +checksum = "cd3b6ae1eabbfbced10e840fd3fce8a93ae84f174b3e4ba892ab7bcb42e477a7" dependencies = [ "accesskit", "accesskit_consumer", @@ -47,23 +47,23 @@ dependencies = [ [[package]] name = "accesskit_windows" -version = "0.14.3" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eac0a7f2d7cd7a93b938af401d3d8e8b7094217989a7c25c55a953023436e31" +checksum = "afcae27ec0974fc7c3b0b318783be89fd1b2e66dd702179fe600166a38ff4a0b" dependencies = [ "accesskit", "accesskit_consumer", - "arrayvec", "once_cell", "paste", + "static_assertions", "windows 0.48.0", ] [[package]] name = "accesskit_winit" -version = "0.14.4" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825d23acee1bd6d25cbaa3ca6ed6e73faf24122a774ec33d52c5c86c6ab423c0" +checksum = "88e39fcec2e10971e188730b7a76bab60647dacc973d4591855ebebcadfaa738" dependencies = [ "accesskit", "accesskit_macos", @@ -236,12 +236,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "anyhow" -version = "1.0.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" - [[package]] name = "approx" version = "0.5.1" @@ -257,6 +251,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + [[package]] name = "arrayvec" version = "0.7.4" @@ -269,7 +269,7 @@ version = "0.37.3+1.3.251" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" dependencies = [ - "libloading 0.7.4", + "libloading", ] [[package]] @@ -311,6 +311,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "async-broadcast" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b" +dependencies = [ + "event-listener", + "futures-core", +] + [[package]] name = "async-channel" version = "1.9.0" @@ -349,6 +359,18 @@ dependencies = [ "slab", ] +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock", + "autocfg", + "blocking", + "futures-lite", +] + [[package]] name = "async-global-executor" version = "2.3.1" @@ -575,18 +597,18 @@ checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bevy" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91c6d3ec4f89e85294dc97334c5b271ddc301fdf67ac9bb994fe44d9273e6ed7" +checksum = "329e344f835f5a9a4c46a6d1d57371f726aa2c482d1bd669b2b9c4eb1ee91fd7" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_a11y" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "132c9e35a77c5395951f6d25fa2c52ee92296353426df4f961e60f3ff47e2e42" +checksum = "271b812e5734f5056a400f7d64592dd82d6c0e6179389c2f066f433ab8bc7692" dependencies = [ "accesskit", "bevy_app", @@ -596,9 +618,9 @@ dependencies = [ [[package]] name = "bevy_app" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f557a7d59e1e16892d7544fc37316506ee598cb5310ef0365125a30783c11531" +checksum = "172d532ea812e5954fa814dae003c207f2a0b20c6e50431787c94a7159677ece" dependencies = [ "bevy_derive", "bevy_ecs", @@ -612,25 +634,29 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9714af523da4cdf58c42a317e5ed40349708ad954a18533991fd64c8ae0a6f68" +checksum = "ccb2b67984088b23e223cfe9ec1befd89a110665a679acb06839bc4334ed37d6" dependencies = [ - "anyhow", - "async-channel", + "async-broadcast", + "async-fs", + "async-lock", "bevy_app", - "bevy_diagnostic", + "bevy_asset_macros", "bevy_ecs", "bevy_log", "bevy_reflect", "bevy_tasks", "bevy_utils", "bevy_winit", + "blake3", "crossbeam-channel", "downcast-rs", - "fastrand 1.9.0", + "futures-io", + "futures-lite", "js-sys", "parking_lot 0.12.1", + "ron", "serde", "thiserror", "wasm-bindgen", @@ -638,11 +664,23 @@ dependencies = [ "web-sys", ] +[[package]] +name = "bevy_asset_macros" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b3245193e90fc8abcf1059a467cb224501dcda083d114c67c10ac66b7171e3a" +dependencies = [ + "bevy_macro_utils", + "proc-macro2", + "quote", + "syn 2.0.38", +] + [[package]] name = "bevy_core" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d5272321be5fcf5ce2fb16023bc825bb10dfcb71611117296537181ce950f48" +checksum = "025e6800b73048092a55c3611e9327ad4c4c17b60517ec1c0086bb40b4b19ea8" dependencies = [ "bevy_app", "bevy_ecs", @@ -655,15 +693,16 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67382fa9c96ce4f4e5833ed7cedd9886844a8f3284b4a717bd4ac738dcdea0c3" +checksum = "2e4b08a2d53ba62d9ec1fca3f7f4e0f556e9f59e1c8e63a4b7c2a18c0701152c" dependencies = [ "bevy_app", "bevy_asset", "bevy_core", "bevy_derive", "bevy_ecs", + "bevy_log", "bevy_math", "bevy_reflect", "bevy_render", @@ -676,9 +715,9 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44e4e2784a81430199e4157e02903a987a32127c773985506f020e7d501b62e" +checksum = "24bf40259be12a1a24d9fd536f5ff18d31eeb5665b77e2732899783be6edc5d6" dependencies = [ "bevy_macro_utils", "quote", @@ -687,9 +726,9 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6babb230dc383c98fdfc9603e3a7a2a49e1e2879dbe8291059ef37dca897932e" +checksum = "41b5a99a9fb6cd7d1eb1714fad193944a0317f0887a15cccb8309c8d37951132" dependencies = [ "bevy_app", "bevy_core", @@ -702,9 +741,9 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266144b36df7e834d5198049e037ecdf2a2310a76ce39ed937d1b0a6a2c4e8c6" +checksum = "ae11a1f467c372b50e9d4b55e78370f5420c9db7416200cc441cc84f08174dd3" dependencies = [ "async-channel", "bevy_ecs_macros", @@ -723,9 +762,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7157a9c3be038d5008ee3f114feb6cf6b39c1d3d32ee21a7cacb8f81fccdfa80" +checksum = "f642c2b67c4d0daf8edf15074f6351457eb487a34b3de1290c760d8f3ac9ec16" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -735,9 +774,9 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0ac0f55ad6bca1be7b0f35bbd5fc95ed3d31e4e9db158fee8e5327f59006001" +checksum = "65b9fb5a62c4e3ab70caaa839470d35fa932001b1b34b08bc7f7f1909bd2b3a7" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -745,16 +784,14 @@ dependencies = [ [[package]] name = "bevy_ggrs" -version = "0.13.0" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10aba92b574e9af76a1b4514fa010731d0b2bf29b8b0b135a2a5c9bc3c468174" +checksum = "ce19ce4d45ad9699d14dfba7f720ec287e3eb6af9f50c7cc8d842014579eea44" dependencies = [ "bevy", "bytemuck", "ggrs", - "instant", "log", - "parking_lot 0.12.1", ] [[package]] @@ -775,9 +812,9 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e286a3e7276431963f4aa29165ea5429fa7dbbc6d5c5ba0c531e7dd44ecc88a2" +checksum = "87d1cc978b91f416b23eb16f00e69f95c3a04582021827d8082e92d4725cc510" dependencies = [ "bevy_app", "bevy_asset", @@ -795,9 +832,9 @@ dependencies = [ [[package]] name = "bevy_hierarchy" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "103f8f58416ac6799b8c7f0b418f1fac9eba44fa924df3b0e16b09256b897e3d" +checksum = "64fa240011fce8ee23f9b46e5a26a628a31d7860d6d2e4e0e361bb3ea6d5a703" dependencies = [ "bevy_app", "bevy_core", @@ -810,9 +847,9 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbd935401101ac8003f3c3aea70788c65ad03f7a32716a10608bedda7a648bc" +checksum = "9e86e241b3a10b79f65a69205552546723b855d3d4c1bd8261637c076144d32f" dependencies = [ "bevy_app", "bevy_ecs", @@ -824,9 +861,9 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e35a9b2bd29aa784b3cc416bcbf2a298f69f00ca51fd042ea39d9af7fad37e" +checksum = "55124e486814c4d3632d5cfad9c4f4e46d052c028593ec46fef5bfbfb0f840b1" dependencies = [ "bevy_a11y", "bevy_app", @@ -859,9 +896,9 @@ dependencies = [ [[package]] name = "bevy_log" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07dcc615ff4f617b06c3f9522fca3c55d56f9644db293318f8ab68fcdea5d4fe" +checksum = "011417debf7868b45932bb97fc0d5bfdeaf9304e324aa94840e2f1e6deeed69d" dependencies = [ "android_log-sys", "bevy_app", @@ -875,14 +912,15 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23ddc18d489b4e57832d4958cde7cd2f349f0ad91e5892ac9e2f2ee16546b981" +checksum = "cf6fba87c6d069fcbcd8a48625ca8ab4392ad40d2b260863ce7d641a0f42986d" dependencies = [ + "proc-macro2", "quote", "rustc-hash", "syn 2.0.38", - "toml_edit", + "toml_edit 0.20.7", ] [[package]] @@ -898,9 +936,9 @@ dependencies = [ [[package]] name = "bevy_math" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78286a81fead796dc4b45ab14f4f02fe29a94423d3587bcfef872b2a8e0a474b" +checksum = "752764558a1f429c20704c3b836a019fa308961c43fdfef4f08e339d456c96be" dependencies = [ "glam", "serde", @@ -908,18 +946,18 @@ dependencies = [ [[package]] name = "bevy_mikktspace" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfc2a21ea47970a9b1f0f4735af3256a8f204815bd756110051d10f9d909497" +checksum = "b596c41a56f2268ec7cde560edc588bc7b5886e4b49c8b27c4dcc9f7c743424c" dependencies = [ "glam", ] [[package]] name = "bevy_pbr" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63ca796a619e61cd43a0a3b11fde54644f7f0732a1fba1eef5d406248c6eba85" +checksum = "eeb6a35a78d355cc21c10f277dcd171eca65e30a90e76eb89f4dacf606621fe1" dependencies = [ "bevy_app", "bevy_asset", @@ -934,21 +972,24 @@ dependencies = [ "bevy_window", "bitflags 2.4.1", "bytemuck", + "fixedbitset", "naga_oil", "radsort", + "smallvec", + "thread_local", ] [[package]] name = "bevy_ptr" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72c7586401a46f7d8e436028225c1df5288f2e0082d066b247a82466fea155c6" +checksum = "308a02679f6ce21ef71de20fae6d6a2016c07baa21d8e8d0558e6b7851e8adf2" [[package]] name = "bevy_reflect" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0778197a1eb3e095a71417c74b7152ede02975cdc95b5ea4ddc5251ed00a2eb5" +checksum = "cdd56914a8ad57621d7a1a099f7e6b1f7482c9c76cedc9c3d4c175a203939c5d" dependencies = [ "bevy_math", "bevy_ptr", @@ -957,8 +998,6 @@ dependencies = [ "downcast-rs", "erased-serde", "glam", - "once_cell", - "parking_lot 0.12.1", "serde", "smallvec", "smol_str", @@ -967,12 +1006,11 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "342a4b2d09db22c48607d23ad59a056aff1ee004549050a51d490d375ba29528" +checksum = "25f627907c40ac552f798423447fc331fc1ddacd94c5f7a2a70942eb06bc8447" dependencies = [ "bevy_macro_utils", - "bit-set", "proc-macro2", "quote", "syn 2.0.38", @@ -981,11 +1019,10 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39df4824b760928c27afc7b00fb649c7a63c9d76661ab014ff5c86537ee906cb" +checksum = "90d777f4c51bd58e9e40777c6cb8dde0778df7e2c5298b3f9e3455bd12a9856c" dependencies = [ - "anyhow", "async-channel", "bevy_app", "bevy_asset", @@ -1016,8 +1053,6 @@ dependencies = [ "ktx2", "naga", "naga_oil", - "parking_lot 0.12.1", - "regex", "ruzstd", "serde", "smallvec", @@ -1026,14 +1061,13 @@ dependencies = [ "wasm-bindgen", "web-sys", "wgpu", - "wgpu-hal", ] [[package]] name = "bevy_render_macros" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bd08c740aac73363e32fb45af869b10cec65bcb76fe3e6cd0f8f7eebf4c36c9" +checksum = "35b00c3d0abff94a729460fc9aa95c2ceac71b49b3041166bb5ba3098e9657e7" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -1043,11 +1077,10 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd47e1263506153bef3a8be97fe2d856f206d315668c4f97510ca6cc181d9681" +checksum = "ba6294396a6375f0b14341d8003408c10aa040e3f833ac8bd49677170ec55d73" dependencies = [ - "anyhow", "bevy_app", "bevy_asset", "bevy_derive", @@ -1065,9 +1098,9 @@ dependencies = [ [[package]] name = "bevy_sprite" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68a8ca824fad75c6ef74cfbbba0a4ce3ccc435fa23d6bf3f003f260548813397" +checksum = "b4f7d1f88a6e5497fdafd95c20984a1d1b5517bc39d51600b4988cd60c51837a" dependencies = [ "bevy_app", "bevy_asset", @@ -1084,15 +1117,16 @@ dependencies = [ "bytemuck", "fixedbitset", "guillotiere", + "radsort", "rectangle-pack", "thiserror", ] [[package]] name = "bevy_tasks" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c73bbb847c83990d3927005090df52f8ac49332e1643d2ad9aac3cd2974e66bf" +checksum = "3a45be906618192515bc613e46546150089adbb4a82178dc462045acd1e89e92" dependencies = [ "async-channel", "async-executor", @@ -1104,12 +1138,11 @@ dependencies = [ [[package]] name = "bevy_text" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692288ab7b0a9f8b38058964c52789fc6bcb63703b23de51cce90ec41bfca355" +checksum = "c136af700af4f87c94f68d6e019528c371bf09ebf4a8ff7468bb3c73806b34f5" dependencies = [ "ab_glyph", - "anyhow", "bevy_app", "bevy_asset", "bevy_ecs", @@ -1127,9 +1160,9 @@ dependencies = [ [[package]] name = "bevy_time" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d58d6dbae9c8225d8c0e0f04d2c5dbb71d22adc01ecd5ab3cebc364139e4a6d" +checksum = "b29709cadf22d318a0b7c79f763e9c5ac414292bd0e850066fa935959021b276" dependencies = [ "bevy_app", "bevy_ecs", @@ -1141,22 +1174,23 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9b0ac0149a57cd846cb357a35fc99286f9848e53d4481954608ac9552ed2d4" +checksum = "70262c51e915b6224129206d23823364e650cf5eb5f4b6ce3ee379f608c180d2" dependencies = [ "bevy_app", "bevy_ecs", "bevy_hierarchy", "bevy_math", "bevy_reflect", + "thiserror", ] [[package]] name = "bevy_ui" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b6d295a755e5b79e869a09e087029d72974562a521ec7ccfba7141fa948a32" +checksum = "cd5ecbf2dceaab118769dd870e34d780bfde556af561fd10d8d613b0f237297e" dependencies = [ "bevy_a11y", "bevy_app", @@ -1184,15 +1218,16 @@ dependencies = [ [[package]] name = "bevy_utils" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d9484e32434ea84dc548cff246ce0c6f756c1336f5ea03f24ac120a48595c7" +checksum = "c8e75d4a34ef0b15dffd1ee9079ef1f0f5139527e192b9d5708b3e158777c753" dependencies = [ "ahash", "bevy_utils_proc_macros", "getrandom", "hashbrown 0.14.2", "instant", + "nonmax", "petgraph", "thiserror", "tracing", @@ -1201,9 +1236,9 @@ dependencies = [ [[package]] name = "bevy_utils_proc_macros" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5391b242c36f556db01d5891444730c83aa9dd648b6a8fd2b755d22cb3bddb57" +checksum = "f7dfd3735a61a1b681ed1e176afe4eae731bbb03e51ad871e9eb39e76a2d170e" dependencies = [ "proc-macro2", "quote", @@ -1212,10 +1247,11 @@ dependencies = [ [[package]] name = "bevy_window" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd584c0da7c4ada6557b09f57f30fb7cff21ccedc641473fc391574b4c9b7944" +checksum = "e60d1830b3fbd7db5bfea7ac9fcd0f5e1d1af88c91ab469e697ab176d8b3140b" dependencies = [ + "bevy_a11y", "bevy_app", "bevy_ecs", "bevy_input", @@ -1227,9 +1263,9 @@ dependencies = [ [[package]] name = "bevy_winit" -version = "0.11.3" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfdc044abdb95790c20053e6326760f0a2985f0dcd78613d397bf35f16039d53" +checksum = "7f8294e78c6a1f9c34d36501a377c5d20bf0fa23a0958187bb270187741448ba" dependencies = [ "accesskit_winit", "approx", @@ -1299,6 +1335,19 @@ dependencies = [ "serde", ] +[[package]] +name = "blake3" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if", + "constant_time_eq", +] + [[package]] name = "block" version = "0.1.6" @@ -1564,6 +1613,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87ca1caa64ef4ed453e68bb3db612e51cf1b2f5b871337f0fcab1c8f87cc3dff" +[[package]] +name = "constant_time_eq" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" + [[package]] name = "constgebra" version = "0.1.3" @@ -1604,7 +1659,7 @@ dependencies = [ "bitflags 1.3.2", "core-foundation", "core-graphics-types", - "foreign-types", + "foreign-types 0.3.2", "libc", ] @@ -1723,12 +1778,12 @@ dependencies = [ [[package]] name = "d3d12" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8f0de2f5a8e7bd4a9eec0e3c781992a4ce1724f68aec7d7a3715344de8b39da" +checksum = "e16e44ab292b1dddfdaf7be62cfd8877df52f2f3fde5858d95bab606be259f20" dependencies = [ - "bitflags 1.3.2", - "libloading 0.7.4", + "bitflags 2.4.1", + "libloading", "winapi", ] @@ -2013,7 +2068,28 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-shared", + "foreign-types-shared 0.1.1", +] + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared 0.3.1", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.38", ] [[package]] @@ -2022,6 +2098,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + [[package]] name = "form_urlencoded" version = "1.2.0" @@ -2188,9 +2270,9 @@ dependencies = [ [[package]] name = "ggrs" -version = "0.9.4" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1419c3c38e579884b075b99a8ade2ca507e87a2bde81940c6fe4aea895696831" +checksum = "a5eea709a0f7d1e6a54acf0c9d5c3e28272d90370c459b4fd05b9f17a283cbe5" dependencies = [ "bincode", "bitfield-rle", @@ -2266,21 +2348,21 @@ dependencies = [ [[package]] name = "gpu-alloc" -version = "0.5.4" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22beaafc29b38204457ea030f6fb7a84c9e4dd1b86e311ba0542533453d87f62" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "gpu-alloc-types", ] [[package]] name = "gpu-alloc-types" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54804d0d6bc9d7f26db4eaec1ad10def69b599315f487d32c334a80d1efe67a5" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", ] [[package]] @@ -2369,7 +2451,7 @@ dependencies = [ "bitflags 1.3.2", "com-rs", "libc", - "libloading 0.7.4", + "libloading", "thiserror", "widestring", "winapi", @@ -2628,7 +2710,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c2352bd1d0bceb871cb9d40f24360c8133c11d7486b68b5381c1dd1a32015e3" dependencies = [ "libc", - "libloading 0.7.4", + "libloading", "pkg-config", ] @@ -2672,16 +2754,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "libloading" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c571b676ddfc9a8c12f1f3d3085a7b163966a8fd8098a90640953ce5f6170161" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "linux-raw-sys" version = "0.3.8" @@ -2844,16 +2916,17 @@ dependencies = [ [[package]] name = "metal" -version = "0.24.0" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de11355d1f6781482d027a3b4d4de7825dcedb197bf573e0596d00008402d060" +checksum = "623b5e6cefd76e58f774bd3cc0c6f5c7615c58c03a97815245a25c3c9bdee318" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "block", "core-graphics-types", - "foreign-types", + "foreign-types 0.5.0", "log", "objc", + "paste", ] [[package]] @@ -2891,12 +2964,12 @@ dependencies = [ [[package]] name = "naga" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbcc2e0513220fd2b598e6068608d4462db20322c0e77e47f6f488dfcfc279cb" +checksum = "c1ceaaa4eedaece7e4ec08c55c640ba03dbb73fb812a6570a59bcf1930d0f70e" dependencies = [ "bit-set", - "bitflags 1.3.2", + "bitflags 2.4.1", "codespan-reporting", "hexf-parse", "indexmap 1.9.3", @@ -2912,9 +2985,9 @@ dependencies = [ [[package]] name = "naga_oil" -version = "0.8.2" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8be942a5c21c58b9b0bf4d9b99db3634ddb7a916f8e1d1d0b71820cc4150e56b" +checksum = "a1fa9518ff79ae8a98c3abe3897d873a85561d1b5642981c2245c1c4b9b2429d" dependencies = [ "bit-set", "codespan-reporting", @@ -2923,7 +2996,7 @@ dependencies = [ "naga", "once_cell", "regex", - "regex-syntax 0.6.29", + "regex-syntax 0.7.5", "rustc-hash", "thiserror", "tracing", @@ -2982,6 +3055,12 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nonmax" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99756f5493e135528f0cd660ac67b4c3a542bb65a3565efe92bb2c2317eb3669" + [[package]] name = "ntapi" version = "0.4.1" @@ -3452,7 +3531,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "toml_edit", + "toml_edit 0.19.15", ] [[package]] @@ -3611,6 +3690,12 @@ version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +[[package]] +name = "regex-syntax" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" + [[package]] name = "regex-syntax" version = "0.8.2" @@ -4387,6 +4472,17 @@ dependencies = [ "winnow", ] +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.0.2", + "toml_datetime", + "winnow", +] + [[package]] name = "tower" version = "0.4.13" @@ -5029,9 +5125,9 @@ dependencies = [ [[package]] name = "wgpu" -version = "0.16.3" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "480c965c9306872eb6255fa55e4b4953be55a8b64d57e61d7ff840d3dcc051cd" +checksum = "ed547920565c56c7a29afb4538ac5ae5048865a5d2f05bff3ad4fbeb921a9a2c" dependencies = [ "arrayvec", "cfg-if", @@ -5053,9 +5149,9 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "0.16.1" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f478237b4bf0d5b70a39898a66fa67ca3a007d79f2520485b8b0c3dfc46f8c2" +checksum = "0f8a44dd301a30ceeed3c27d8c0090433d3da04d7b2a4042738095a424d12ae7" dependencies = [ "arrayvec", "bit-vec", @@ -5076,9 +5172,9 @@ dependencies = [ [[package]] name = "wgpu-hal" -version = "0.16.2" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ecb3258078e936deee14fd4e0febe1cfe9bbb5ffef165cb60218d2ee5eb4448" +checksum = "9a80bf0e3c77399bb52850cb0830af9bad073d5cfcb9dd8253bef8125c42db17" dependencies = [ "android_system_properties", "arrayvec", @@ -5088,7 +5184,6 @@ dependencies = [ "block", "core-graphics-types", "d3d12", - "foreign-types", "glow", "gpu-alloc", "gpu-allocator", @@ -5097,7 +5192,7 @@ dependencies = [ "js-sys", "khronos-egl", "libc", - "libloading 0.8.1", + "libloading", "log", "metal", "naga", @@ -5118,9 +5213,9 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "0.16.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c153280bb108c2979eb5c7391cb18c56642dd3c072e55f52065e13e2a1252a" +checksum = "ee64d7398d0c2f9ca48922c902ef69c42d000c759f3db41e355f4a570b052b67" dependencies = [ "bitflags 2.4.1", "js-sys", diff --git a/bevy_matchbox/Cargo.toml b/bevy_matchbox/Cargo.toml index e2c5bff4..6ea3ec76 100644 --- a/bevy_matchbox/Cargo.toml +++ b/bevy_matchbox/Cargo.toml @@ -21,10 +21,14 @@ readme = "../README.md" [features] ggrs = ["matchbox_socket/ggrs"] -signaling = ["dep:matchbox_signaling", "dep:async-compat"] +signaling = [ + "dep:matchbox_signaling", + "dep:async-compat", + "bevy/multi-threaded", +] [dependencies] -bevy = { version = "0.11", default-features = false } +bevy = { version = "0.12", default-features = false } matchbox_socket = { version = "0.7", path = "../matchbox_socket" } cfg-if = "1.0" diff --git a/examples/bevy_ggrs/Cargo.toml b/examples/bevy_ggrs/Cargo.toml index a9749c97..1d001e83 100644 --- a/examples/bevy_ggrs/Cargo.toml +++ b/examples/bevy_ggrs/Cargo.toml @@ -15,11 +15,11 @@ web-sys = { version = "0.3", features = [ ] } serde_qs = "0.12" wasm-bindgen = "0.2" -ggrs = { version = "0.9", features = ["wasm-bindgen"] } +ggrs = { version = "0.10", features = ["wasm-bindgen"] } [dependencies] bevy_matchbox = { path = "../../bevy_matchbox", features = ["ggrs"] } -bevy = { version = "0.11", default-features = false, features = [ +bevy = { version = "0.12", default-features = false, features = [ "bevy_winit", "bevy_render", "bevy_pbr", @@ -34,8 +34,8 @@ bevy = { version = "0.11", default-features = false, features = [ # gh actions runners don't like wayland "x11", ] } -ggrs = "0.9" -bevy_ggrs = "0.13" +ggrs = "0.10" +bevy_ggrs = "0.14" bytemuck = { version = "1.7", features = ["derive"] } clap = { version = "4.3", features = ["derive"] } serde = "1.0" diff --git a/examples/bevy_ggrs/src/box_game.rs b/examples/bevy_ggrs/src/box_game.rs index 9d1ff7fd..22657f94 100644 --- a/examples/bevy_ggrs/src/box_game.rs +++ b/examples/bevy_ggrs/src/box_game.rs @@ -1,8 +1,10 @@ -use bevy::prelude::*; -use bevy_ggrs::{AddRollbackCommandExtension, PlayerInputs, Rollback, Session}; -use bevy_matchbox::prelude::*; +use bevy::{prelude::*, utils::HashMap}; +use bevy_ggrs::{ + AddRollbackCommandExtension, GgrsConfig, LocalInputs, LocalPlayers, PlayerInputs, Rollback, + Session, +}; +use bevy_matchbox::prelude::PeerId; use bytemuck::{Pod, Zeroable}; -use ggrs::{Config, PlayerHandle}; use std::hash::Hash; const BLUE: Color = Color::rgb(0.8, 0.6, 0.2); @@ -16,25 +18,18 @@ const INPUT_DOWN: u8 = 1 << 1; const INPUT_LEFT: u8 = 1 << 2; const INPUT_RIGHT: u8 = 1 << 3; -const MOVEMENT_SPEED: f32 = 0.005; -const MAX_SPEED: f32 = 0.05; -const FRICTION: f32 = 0.9; +const ACCELERATION: f32 = 18.0; +const MAX_SPEED: f32 = 3.0; +const FRICTION: f32 = 0.0018; const PLANE_SIZE: f32 = 5.0; const CUBE_SIZE: f32 = 0.2; -/// You need to define a config struct to bundle all the generics of GGRS. You can safely ignore -/// `State` and leave it as u8 for all GGRS functionality. -/// TODO: Find a way to hide the state type. -#[derive(Debug)] -pub struct GGRSConfig; -impl Config for GGRSConfig { - type Input = BoxInput; - type State = u8; - type Address = PeerId; -} +// You need to define a config struct to bundle all the generics of GGRS. bevy_ggrs provides a sensible default in `GgrsConfig`. +// (optional) You can define a type here for brevity. +pub type BoxConfig = GgrsConfig; #[repr(C)] -#[derive(Copy, Clone, PartialEq, Eq, Pod, Zeroable)] +#[derive(Copy, Clone, Debug, PartialEq, Eq, Pod, Zeroable)] pub struct BoxInput { pub inp: u8, } @@ -44,8 +39,12 @@ pub struct Player { pub handle: usize, } -// Components that should be saved/loaded need to implement the `Reflect` trait -#[derive(Default, Reflect, Component)] +// Components that should be saved/loaded need to support snapshotting. The built-in options are: +// - Clone (Recommended) +// - Copy +// - Reflect +// See `bevy_ggrs::Strategy` for custom alternatives +#[derive(Default, Reflect, Component, Clone)] pub struct Velocity { pub x: f32, pub y: f32, @@ -53,36 +52,47 @@ pub struct Velocity { } // You can also register resources. -#[derive(Resource, Default, Reflect, Hash)] -#[reflect(Resource, Hash)] +#[derive(Resource, Default, Reflect, Hash, Clone, Copy)] +#[reflect(Hash)] pub struct FrameCount { pub frame: u32, } -pub fn input(_handle: In, keyboard_input: Res>) -> BoxInput { - let mut input: u8 = 0; +/// Collects player inputs during [`ReadInputs`](`bevy_ggrs::ReadInputs`) and creates a [`LocalInputs`] resource. +pub fn read_local_inputs( + mut commands: Commands, + keyboard_input: Res>, + local_players: Res, +) { + let mut local_inputs = HashMap::new(); - if keyboard_input.pressed(KeyCode::W) { - input |= INPUT_UP; - } - if keyboard_input.pressed(KeyCode::A) { - input |= INPUT_LEFT; - } - if keyboard_input.pressed(KeyCode::S) { - input |= INPUT_DOWN; - } - if keyboard_input.pressed(KeyCode::D) { - input |= INPUT_RIGHT; + for handle in &local_players.0 { + let mut input: u8 = 0; + + if keyboard_input.pressed(KeyCode::W) { + input |= INPUT_UP; + } + if keyboard_input.pressed(KeyCode::A) { + input |= INPUT_LEFT; + } + if keyboard_input.pressed(KeyCode::S) { + input |= INPUT_DOWN; + } + if keyboard_input.pressed(KeyCode::D) { + input |= INPUT_RIGHT; + } + + local_inputs.insert(*handle, BoxInput { inp: input }); } - BoxInput { inp: input } + commands.insert_resource(LocalInputs::(local_inputs)); } -pub fn setup_scene_system( +pub fn setup_scene( mut commands: Commands, mut meshes: ResMut>, mut materials: ResMut>, - session: Res>, + session: Res>, mut camera_query: Query<&mut Transform, With>, ) { let num_players = match &*session { @@ -91,7 +101,7 @@ pub fn setup_scene_system( Session::Spectator(s) => s.num_players(), }; - // plane + // A ground plane commands.spawn(PbrBundle { mesh: meshes.add(Mesh::from(shape::Plane { size: PLANE_SIZE, @@ -101,11 +111,6 @@ pub fn setup_scene_system( ..default() }); - // player cube - just spawn whatever entity you want, then add a `Rollback` component with a - // unique id (for example through the `RollbackIdProvider` resource). Every entity that you - // want to be saved/loaded needs a `Rollback` component with a unique rollback id. - // When loading entities from the past, this extra id is necessary to connect entities over - // different game states let r = PLANE_SIZE / 4.; for handle in 0..num_players { @@ -119,17 +124,23 @@ pub fn setup_scene_system( transform.translation.z = z; let color = PLAYER_COLORS[handle % PLAYER_COLORS.len()]; + // Entities which will be rolled back can be created just like any other... commands .spawn(( + // ...add visual information... PbrBundle { mesh: meshes.add(Mesh::from(shape::Cube { size: CUBE_SIZE })), material: materials.add(color.into()), transform, ..default() }, + // ...flags... Player { handle }, + // ...and components which will be rolled-back... Velocity::default(), )) + // ...just ensure you call `add_rollback()` + // This ensures a stable ID is available for the rollback system to refer to .add_rollback(); } @@ -145,9 +156,8 @@ pub fn setup_scene_system( } // Example system, manipulating a resource, will be added to the rollback schedule. -// Increases the frame count by 1 every update step. If loading and saving resources works -// correctly, you should see this resource rolling back, counting back up and finally increasing by -// 1 every update step +// Increases the frame count by 1 every update step. If loading and saving resources works correctly, +// you should see this resource rolling back, counting back up and finally increasing by 1 every update step #[allow(dead_code)] pub fn increase_frame_system(mut frame_count: ResMut) { frame_count.frame += 1; @@ -159,32 +169,37 @@ pub fn increase_frame_system(mut frame_count: ResMut) { #[allow(dead_code)] pub fn move_cube_system( mut query: Query<(&mut Transform, &mut Velocity, &Player), With>, - inputs: Res>, + // ^------^ Added by `add_rollback` earlier + inputs: Res>, + // Thanks to RollbackTimePlugin, this is rollback safe + time: Res