diff --git a/Cargo.lock b/Cargo.lock index 5039ec6..e8dcef2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -245,23 +245,33 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" dependencies = [ - "async-lock", + "async-lock 3.2.0", "async-task", "concurrent-queue", - "fastrand", - "futures-lite", + "fastrand 2.0.1", + "futures-lite 2.1.0", "slab", ] [[package]] name = "async-fs" -version = "2.1.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1f344136bad34df1f83a47f3fd7f2ab85d75cb8a940af4ccf6d482a84ea01b" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" dependencies = [ - "async-lock", + "async-lock 2.8.0", + "autocfg", "blocking", - "futures-lite", + "futures-lite 1.13.0", +] + +[[package]] +name = "async-lock" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +dependencies = [ + "event-listener 2.5.3", ] [[package]] @@ -334,7 +344,7 @@ checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "bevy" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_internal", ] @@ -342,18 +352,18 @@ dependencies = [ [[package]] name = "bevy_a11y" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "accesskit", "bevy_app", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", ] [[package]] name = "bevy_animation" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", @@ -371,9 +381,9 @@ dependencies = [ [[package]] name = "bevy_app" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_reflect", "bevy_tasks", @@ -386,11 +396,11 @@ dependencies = [ [[package]] name = "bevy_asset" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "async-broadcast", "async-fs", - "async-lock", + "async-lock 2.8.0", "bevy_app", "bevy_asset_macros", "bevy_ecs", @@ -403,7 +413,7 @@ dependencies = [ "crossbeam-channel", "downcast-rs", "futures-io", - "futures-lite", + "futures-lite 1.13.0", "js-sys", "parking_lot", "ron", @@ -417,9 +427,9 @@ dependencies = [ [[package]] name = "bevy_asset_macros" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.39", @@ -428,11 +438,11 @@ dependencies = [ [[package]] name = "bevy_audio" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_math", "bevy_reflect", @@ -445,7 +455,7 @@ dependencies = [ [[package]] name = "bevy_core" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_ecs", @@ -459,12 +469,12 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", "bevy_core", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_log", "bevy_math", @@ -480,9 +490,20 @@ dependencies = [ [[package]] name = "bevy_derive" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", + "quote", + "syn 2.0.39", +] + +[[package]] +name = "bevy_derive" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f484318350462c58ba3942a45a656c1fd6b6e484a6b6b7abc3a787ad1a51e500" +dependencies = [ + "bevy_macro_utils 0.12.1", "quote", "syn 2.0.39", ] @@ -490,7 +511,7 @@ dependencies = [ [[package]] name = "bevy_diagnostic" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_core", @@ -506,13 +527,14 @@ name = "bevy_dioxus" version = "0.1.0" dependencies = [ "bevy", + "bevy_mod_picking", "dioxus", ] [[package]] name = "bevy_ecs" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "async-channel 1.9.0", "bevy_ecs_macros", @@ -532,9 +554,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.39", @@ -543,16 +565,49 @@ dependencies = [ [[package]] name = "bevy_encase_derive" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "encase_derive_impl", ] +[[package]] +name = "bevy_eventlistener" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8ee25ddf3d72e8501eb11d99870f7b6a484a111a91f52cef22c3e39302c9b0" +dependencies = [ + "bevy_eventlistener_core", + "bevy_eventlistener_derive", +] + +[[package]] +name = "bevy_eventlistener_core" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790c6a7ff1f6857a2927becb24b24fe16817bb998903f44342e73c1ed720c369" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_utils", +] + +[[package]] +name = "bevy_eventlistener_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b1150b00713155ef8e9ba879ebbaaaaba43192eaf7fb87555ba1ceb21f71708" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "bevy_gilrs" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_ecs", @@ -567,7 +622,7 @@ dependencies = [ [[package]] name = "bevy_gizmos" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", @@ -586,7 +641,7 @@ dependencies = [ [[package]] name = "bevy_gltf" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "base64 0.13.1", "bevy_animation", @@ -615,7 +670,7 @@ dependencies = [ [[package]] name = "bevy_hierarchy" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_core", @@ -629,7 +684,7 @@ dependencies = [ [[package]] name = "bevy_input" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_ecs", @@ -642,7 +697,7 @@ dependencies = [ [[package]] name = "bevy_internal" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_a11y", "bevy_animation", @@ -651,7 +706,7 @@ dependencies = [ "bevy_audio", "bevy_core", "bevy_core_pipeline", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_diagnostic", "bevy_ecs", "bevy_gilrs", @@ -680,7 +735,7 @@ dependencies = [ [[package]] name = "bevy_log" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "android_log-sys", "bevy_app", @@ -695,7 +750,20 @@ dependencies = [ [[package]] name = "bevy_macro_utils" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" +dependencies = [ + "proc-macro2", + "quote", + "rustc-hash", + "syn 2.0.39", + "toml_edit 0.20.7", +] + +[[package]] +name = "bevy_macro_utils" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e566640c6b6dced73d2006c764c2cffebe1a82be4809486c4a5d7b4b50efed4d" dependencies = [ "proc-macro2", "quote", @@ -707,7 +775,7 @@ dependencies = [ [[package]] name = "bevy_math" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "glam", "serde", @@ -716,20 +784,39 @@ dependencies = [ [[package]] name = "bevy_mikktspace" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "glam", ] +[[package]] +name = "bevy_mod_picking" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2392df63bc272d5a546633e0a19ef6d428173e3dd22bad0da0a59c6fddd6f2cf" +dependencies = [ + "bevy_app", + "bevy_core", + "bevy_ecs", + "bevy_eventlistener", + "bevy_math", + "bevy_picking_core", + "bevy_picking_input", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", +] + [[package]] name = "bevy_pbr" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", "bevy_core_pipeline", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_math", "bevy_reflect", @@ -746,15 +833,50 @@ dependencies = [ "thread_local", ] +[[package]] +name = "bevy_picking_core" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0799488c4505d68886209afd77ff9c898b634abf7f97fffa8ae37a356cbc8ab2" +dependencies = [ + "bevy_app", + "bevy_derive 0.12.1", + "bevy_ecs", + "bevy_eventlistener", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", +] + +[[package]] +name = "bevy_picking_input" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16a2b375461e3965c2bd4357d53c772eeafa4747812f54be09de373c0c203da4" +dependencies = [ + "bevy_app", + "bevy_ecs", + "bevy_hierarchy", + "bevy_input", + "bevy_math", + "bevy_picking_core", + "bevy_reflect", + "bevy_render", + "bevy_utils", + "bevy_window", +] + [[package]] name = "bevy_ptr" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" [[package]] name = "bevy_reflect" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_math", "bevy_ptr", @@ -772,9 +894,9 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.39", @@ -784,13 +906,13 @@ dependencies = [ [[package]] name = "bevy_render" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "async-channel 1.9.0", "bevy_app", "bevy_asset", "bevy_core", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_encase_derive", "bevy_hierarchy", @@ -809,7 +931,7 @@ dependencies = [ "codespan-reporting", "downcast-rs", "encase", - "futures-lite", + "futures-lite 1.13.0", "hexasphere", "image", "js-sys", @@ -829,9 +951,9 @@ dependencies = [ [[package]] name = "bevy_render_macros" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ - "bevy_macro_utils", + "bevy_macro_utils 0.12.0", "proc-macro2", "quote", "syn 2.0.39", @@ -840,17 +962,18 @@ dependencies = [ [[package]] name = "bevy_scene" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_hierarchy", "bevy_reflect", "bevy_render", "bevy_transform", "bevy_utils", + "ron", "serde", "thiserror", "uuid", @@ -859,12 +982,12 @@ dependencies = [ [[package]] name = "bevy_sprite" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_asset", "bevy_core_pipeline", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_log", "bevy_math", @@ -884,20 +1007,20 @@ dependencies = [ [[package]] name = "bevy_tasks" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "async-channel 1.9.0", "async-executor", "async-task", "concurrent-queue", - "futures-lite", + "futures-lite 1.13.0", "wasm-bindgen-futures", ] [[package]] name = "bevy_text" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "ab_glyph", "bevy_app", @@ -918,7 +1041,7 @@ dependencies = [ [[package]] name = "bevy_time" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_ecs", @@ -931,7 +1054,7 @@ dependencies = [ [[package]] name = "bevy_transform" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_app", "bevy_ecs", @@ -944,13 +1067,13 @@ dependencies = [ [[package]] name = "bevy_ui" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_a11y", "bevy_app", "bevy_asset", "bevy_core_pipeline", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_hierarchy", "bevy_input", @@ -973,7 +1096,7 @@ dependencies = [ [[package]] name = "bevy_utils" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "ahash", "bevy_utils_proc_macros", @@ -990,7 +1113,7 @@ dependencies = [ [[package]] name = "bevy_utils_proc_macros" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "proc-macro2", "quote", @@ -1000,7 +1123,7 @@ dependencies = [ [[package]] name = "bevy_window" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "bevy_a11y", "bevy_app", @@ -1015,13 +1138,13 @@ dependencies = [ [[package]] name = "bevy_winit" version = "0.12.0" -source = "git+https://github.com/JMS55/bevy?branch=query_new#cd2efa7033f0505260ea81ee7adc9a75c5b45f5a" +source = "git+https://github.com/JMS55/bevy?branch=query_new_12#b7d4e386802c5f62ec9fd1d457753e734be486f8" dependencies = [ "accesskit_winit", "approx", "bevy_a11y", "bevy_app", - "bevy_derive", + "bevy_derive 0.12.0", "bevy_ecs", "bevy_hierarchy", "bevy_input", @@ -1131,11 +1254,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" dependencies = [ "async-channel 2.1.1", - "async-lock", + "async-lock 3.2.0", "async-task", - "fastrand", + "fastrand 2.0.1", "futures-io", - "futures-lite", + "futures-lite 2.1.0", "piper", "tracing", ] @@ -1708,6 +1831,15 @@ dependencies = [ "pin-project-lite", ] +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + [[package]] name = "fastrand" version = "2.0.1" @@ -1808,13 +1940,28 @@ version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + [[package]] name = "futures-lite" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aeee267a1883f7ebef3700f262d2d54de95dfaf38189015a74fdc4e0c7ad8143" dependencies = [ - "fastrand", + "fastrand 2.0.1", "futures-core", "futures-io", "parking", @@ -2198,9 +2345,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" [[package]] name = "jni" @@ -2310,9 +2457,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.150" +version = "0.2.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c" +checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" [[package]] name = "libloading" @@ -2864,7 +3011,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" dependencies = [ "atomic-waker", - "fastrand", + "fastrand 2.0.1", "futures-io", ] @@ -2927,9 +3074,9 @@ dependencies = [ [[package]] name = "profiling" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f89dff0959d98c9758c88826cc002e2c3d0b9dfac4139711d1f30de442f1139b" +checksum = "1de09527cd2ea2c2d59fb6c2f8c1ab8c71709ed9d1b6d60b0e1c9fbb6fdcb33c" [[package]] name = "quote" @@ -3094,9 +3241,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" [[package]] name = "same-file" @@ -3572,6 +3719,12 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +[[package]] +name = "waker-fn" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" + [[package]] name = "walkdir" version = "2.4.0" @@ -4077,18 +4230,18 @@ checksum = "0fcb9cbac069e033553e8bb871be2fbdffcab578eb25bd0f7c508cedc6dcd75a" [[package]] name = "zerocopy" -version = "0.7.29" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e" +checksum = "306dca4455518f1f31635ec308b6b3e4eb1b11758cefafc782827d0aa7acb5c7" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.29" +version = "0.7.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2" +checksum = "be912bf68235a88fbefd1b73415cb218405958d1655b2ece9035a19920bdf6ba" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 0e86d62..a06c087 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,21 @@ version = "0.1.0" edition = "2021" [dependencies] -bevy = { git = "https://github.com/JMS55/bevy", branch = "query_new" } +bevy = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } dioxus = "0.4" +bevy_mod_picking = { version = "0.17", default-features = false } + +[patch.crates-io] +bevy_app = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_core = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_ecs = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_hierarchy = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_input = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_math = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_reflect = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_render = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_utils = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } +bevy_window = { git = "https://github.com/JMS55/bevy", branch = "query_new_12" } [[example]] name = "basic" diff --git a/examples/basic.rs b/examples/basic.rs index 0d08835..a0e2734 100644 --- a/examples/basic.rs +++ b/examples/basic.rs @@ -5,11 +5,14 @@ use bevy::{ ui::node_bundles::NodeBundle, DefaultPlugins, }; -use bevy_dioxus::{dioxus::prelude::*, DioxusUiBundle, DioxusUiPlugin, DioxusUiRoot}; +use bevy_dioxus::{ + bevy_mod_picking::DefaultPickingPlugins, dioxus::prelude::*, DioxusUiBundle, DioxusUiPlugin, + DioxusUiRoot, +}; fn main() { App::new() - .add_plugins((DefaultPlugins, DioxusUiPlugin)) + .add_plugins((DefaultPlugins, DioxusUiPlugin, DefaultPickingPlugins)) .add_systems(Startup, |mut commands: Commands| { commands.spawn(DioxusUiBundle { dioxus_ui_root: DioxusUiRoot::new(ui_root), diff --git a/src/apply_mutations.rs b/src/apply_mutations.rs index 3b8c4a5..0118fca 100644 --- a/src/apply_mutations.rs +++ b/src/apply_mutations.rs @@ -3,15 +3,19 @@ use bevy::{ hierarchy::BuildChildren, prelude::default, text::{Text, TextStyle}, - ui::node_bundles::{NodeBundle, TextBundle}, - utils::HashMap, + ui::{ + node_bundles::{NodeBundle, TextBundle}, + *, + }, + utils::{HashMap, HashSet}, }; -use dioxus::core::{ElementId, Mutation, Mutations, Template, TemplateNode}; +use dioxus::core::{ElementId, Mutation, Mutations, Template, TemplateAttribute, TemplateNode}; pub fn apply_mutations( mutations: Mutations, hierarchy: &mut HashMap<(Entity, u8), Entity>, element_id_to_bevy_ui_entity: &mut HashMap, + event_listeners: &mut HashSet<(Event, ElementId)>, templates: &mut HashMap, root_entity: Entity, commands: &mut Commands, @@ -23,14 +27,13 @@ pub fn apply_mutations( ); } - let map = element_id_to_bevy_ui_entity; - map.insert(ElementId(0), root_entity); + element_id_to_bevy_ui_entity.insert(ElementId(0), root_entity); let mut stack = vec![root_entity]; for edit in mutations.edits { match edit { Mutation::AppendChildren { id, m } => { - let mut parent = commands.entity(map[&id]); + let mut parent = commands.entity(element_id_to_bevy_ui_entity[&id]); let parent_existing_children_count = hierarchy.keys().filter(|(p, _)| *p == parent.id()).count(); for i in 1..=m { @@ -47,7 +50,7 @@ pub fn apply_mutations( Mutation::CreateTextNode { value, id } => { let entity = BevyTemplateNode::from_dioxus(&TemplateNode::Text { text: value }) .spawn(commands, hierarchy); - map.insert(id, entity); + element_id_to_bevy_ui_entity.insert(id, entity); stack.push(entity); } Mutation::HydrateText { path, value, id } => { @@ -58,11 +61,11 @@ pub fn apply_mutations( commands .entity(entity) .insert(Text::from_section(value, TextStyle::default())); - map.insert(id, entity); + element_id_to_bevy_ui_entity.insert(id, entity); } Mutation::LoadTemplate { name, index, id } => { let entity = templates[name].roots[index].spawn(commands, hierarchy); - map.insert(id, entity); + element_id_to_bevy_ui_entity.insert(id, entity); stack.push(entity); } Mutation::ReplaceWith { id, m } => todo!(), @@ -76,10 +79,14 @@ pub fn apply_mutations( ns, } => todo!(), Mutation::SetText { value, id } => todo!(), - Mutation::NewEventListener { name, id } => todo!(), - Mutation::RemoveEventListener { name, id } => todo!(), + Mutation::NewEventListener { name, id } => { + event_listeners.insert((Event::from_dioxus(name), id)); + } + Mutation::RemoveEventListener { name, id } => { + event_listeners.remove(&(Event::from_dioxus(name), id)); + } Mutation::Remove { id } => todo!(), - Mutation::PushRoot { id } => todo!(), + Mutation::PushRoot { id } => stack.push(element_id_to_bevy_ui_entity[&id]), } } } @@ -89,7 +96,7 @@ pub struct BevyTemplate { } enum BevyTemplateNode { - Node { children: Box<[Self]> }, + Node { style: Style, children: Box<[Self]> }, TextNode(Text), } @@ -111,7 +118,7 @@ impl BevyTemplateNode { TemplateNode::Element { tag, namespace: _, - attrs: _, + attrs, children, } => { if *tag != "div" { @@ -120,6 +127,7 @@ impl BevyTemplateNode { ); } Self::Node { + style: parse_style_attributes(attrs), children: children.iter().map(Self::from_dioxus).collect(), } } @@ -127,6 +135,7 @@ impl BevyTemplateNode { Self::TextNode(Text::from_section(*text, TextStyle::default())) } TemplateNode::Dynamic { id: _ } => Self::Node { + style: Style::default(), children: Box::new([]), }, TemplateNode::DynamicText { id: _ } => { @@ -141,14 +150,17 @@ impl BevyTemplateNode { hierarchy: &mut HashMap<(Entity, u8), Entity>, ) -> Entity { match self { - BevyTemplateNode::Node { children } => { + BevyTemplateNode::Node { style, children } => { // TODO: Can probably use with_children() instead let children = children .iter() .map(|child| child.spawn(commands, hierarchy)) .collect::>(); let parent = commands - .spawn(NodeBundle::default()) + .spawn(NodeBundle { + style: style.clone(), + ..default() + }) .push_children(&children) .id(); for (i, child) in children.iter().enumerate() { @@ -165,3 +177,40 @@ impl BevyTemplateNode { } } } + +#[derive(PartialEq, Eq, Hash, Clone, Copy)] +pub enum Event { + Click, +} + +impl Event { + pub fn from_dioxus(event: &str) -> Self { + match event { + "click" => Self::Click, + _ => panic!("Encountered unsupported bevy_dioxus event `{event}`."), + } + } +} + +fn parse_style_attributes(attributes: &[TemplateAttribute]) -> Style { + let mut style = Style::default(); + for attribute in attributes { + if let TemplateAttribute::Static { + name, + value, + namespace: _, + } = attribute + { + // TODO: The rest of Style + match (*name, *value) { + ("display", "flex") => style.display = Display::Flex, + ("display", "grid") => style.display = Display::Grid, + ("display", "none") => style.display = Display::None, + ("position", "relative") => style.position_type = PositionType::Relative, + ("position", "absolute") => style.position_type = PositionType::Absolute, + _ => panic!("Encountered unsupported bevy_dioxus attribute `{name}: {value}`."), + } + } + } + style +} diff --git a/src/hooks.rs b/src/hooks.rs index 4389b02..491f7a7 100644 --- a/src/hooks.rs +++ b/src/hooks.rs @@ -3,7 +3,7 @@ use crate::{ tick::EcsContext, }; use bevy::ecs::{ - query::{QueryState, ReadOnlyWorldQueryData, WorldQueryFilter}, + query::{QueryState, ReadOnlyWorldQuery}, system::{IntoSystem, Query, Resource}, world::{unsafe_world_cell::UnsafeWorldCell, World}, }; @@ -16,12 +16,12 @@ pub trait DioxusUiHooks { fn use_query<'a, Q>(&'a self) -> DioxusUiQuery<'a, Q, ()> where - Q: ReadOnlyWorldQueryData; + Q: ReadOnlyWorldQuery; fn use_query_filtered<'a, Q, F>(&'a self) -> DioxusUiQuery<'a, Q, F> where - Q: ReadOnlyWorldQueryData, - F: WorldQueryFilter; + Q: ReadOnlyWorldQuery, + F: ReadOnlyWorldQuery; fn use_system(&self, system: S) -> DeferredSystem where @@ -40,15 +40,15 @@ impl DioxusUiHooks for ScopeState { fn use_query<'a, Q>(&'a self) -> DioxusUiQuery<'a, Q, ()> where - Q: ReadOnlyWorldQueryData, + Q: ReadOnlyWorldQuery, { Self::use_query_filtered(self) } fn use_query_filtered<'a, Q, F>(&'a self) -> DioxusUiQuery<'a, Q, F> where - Q: ReadOnlyWorldQueryData, - F: WorldQueryFilter, + Q: ReadOnlyWorldQuery, + F: ReadOnlyWorldQuery, { let world = EcsContext::get_world(self); DioxusUiQuery { @@ -66,15 +66,15 @@ impl DioxusUiHooks for ScopeState { } } -pub struct DioxusUiQuery<'a, Q: ReadOnlyWorldQueryData, F: WorldQueryFilter> { +pub struct DioxusUiQuery<'a, Q: ReadOnlyWorldQuery, F: ReadOnlyWorldQuery> { query_state: QueryState, world_cell: UnsafeWorldCell<'a>, } impl<'a, Q, F> DioxusUiQuery<'a, Q, F> where - Q: ReadOnlyWorldQueryData, - F: WorldQueryFilter, + Q: ReadOnlyWorldQuery, + F: ReadOnlyWorldQuery, { pub fn query(&self) -> Query { unsafe { diff --git a/src/lib.rs b/src/lib.rs index ff2f1e3..ed1d918 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -4,7 +4,7 @@ mod hooks; mod tick; use self::{ - apply_mutations::BevyTemplate, + apply_mutations::{BevyTemplate, Event}, deferred_system::DeferredSystemRegistry, tick::{tick_dioxus_ui, VirtualDomUnsafe}, }; @@ -12,7 +12,7 @@ use bevy::{ app::{App, Plugin, Update}, ecs::{bundle::Bundle, component::Component, entity::Entity}, ui::node_bundles::NodeBundle, - utils::HashMap, + utils::{HashMap, HashSet}, }; use dioxus::core::{Element, ElementId, Scope}; @@ -20,6 +20,7 @@ pub use self::{ deferred_system::DeferredSystem, hooks::{DioxusUiHooks, DioxusUiQuery}, }; +pub use bevy_mod_picking; pub use dioxus; pub struct DioxusUiPlugin; @@ -42,6 +43,7 @@ pub struct DioxusUiRoot { virtual_dom: VirtualDomUnsafe, hierarchy: HashMap<(Entity, u8), Entity>, element_id_to_bevy_ui_entity: HashMap, + event_listeners: HashSet<(Event, ElementId)>, templates: HashMap, needs_rebuild: bool, } @@ -52,6 +54,7 @@ impl DioxusUiRoot { virtual_dom: VirtualDomUnsafe::new(root_component), hierarchy: HashMap::new(), element_id_to_bevy_ui_entity: HashMap::new(), + event_listeners: HashSet::new(), templates: HashMap::new(), needs_rebuild: true, } diff --git a/src/tick.rs b/src/tick.rs index 2dc1fa4..44a965a 100644 --- a/src/tick.rs +++ b/src/tick.rs @@ -29,6 +29,7 @@ pub fn tick_dioxus_ui(world: &mut World) { virtual_dom, hierarchy, element_id_to_bevy_ui_entity, + event_listeners, templates, needs_rebuild, } = &mut *dioxus_ui_root; @@ -46,6 +47,7 @@ pub fn tick_dioxus_ui(world: &mut World) { virtual_dom.rebuild(), hierarchy, element_id_to_bevy_ui_entity, + event_listeners, templates, root_entity, &mut commands, @@ -57,6 +59,7 @@ pub fn tick_dioxus_ui(world: &mut World) { virtual_dom.render_immediate(), hierarchy, element_id_to_bevy_ui_entity, + event_listeners, templates, root_entity, &mut commands,