From eb3ec03d911190e2671391d87cf102bada6838a3 Mon Sep 17 00:00:00 2001 From: Schmarni Date: Sun, 19 Oct 2025 16:13:59 +0200 Subject: [PATCH] feat: update to bevy 0.17 and use individual bevy crates Signed-off-by: Schmarni --- Cargo.lock | 1650 +++++++++++------ Cargo.toml | 29 +- crates/bevy_openxr/Cargo.toml | 19 +- .../bevy_openxr/examples/android/Cargo.toml | 16 +- crates/bevy_openxr/examples/overlay.rs | 16 +- crates/bevy_openxr/examples/raw_actions.rs | 6 +- crates/bevy_openxr/examples/sessions.rs | 10 +- .../bevy_openxr/src/openxr/action_binding.rs | 23 +- .../src/openxr/action_set_attaching.rs | 14 +- .../src/openxr/action_set_syncing.rs | 13 +- .../src/openxr/environment_blend_mode.rs | 3 +- crates/bevy_openxr/src/openxr/exts.rs | 3 +- .../src/openxr/features/fb_passthrough.rs | 11 +- .../src/openxr/features/handtracking.rs | 11 +- .../src/openxr/features/overlay.rs | 15 +- crates/bevy_openxr/src/openxr/graphics.rs | 3 +- .../bevy_openxr/src/openxr/graphics/vulkan.rs | 30 +- .../bevy_openxr/src/openxr/helper_traits.rs | 3 +- crates/bevy_openxr/src/openxr/init.rs | 99 +- .../bevy_openxr/src/openxr/layer_builder.rs | 6 +- crates/bevy_openxr/src/openxr/mod.rs | 36 +- crates/bevy_openxr/src/openxr/poll_events.rs | 5 +- .../bevy_openxr/src/openxr/reference_space.rs | 14 +- crates/bevy_openxr/src/openxr/render.rs | 87 +- crates/bevy_openxr/src/openxr/resources.rs | 9 +- crates/bevy_openxr/src/openxr/session.rs | 3 +- crates/bevy_openxr/src/openxr/spaces.rs | 25 +- crates/bevy_webxr/Cargo.toml | 2 +- crates/bevy_xr/Cargo.toml | 15 +- crates/bevy_xr/src/actions.rs | 6 +- crates/bevy_xr/src/camera.rs | 37 +- crates/bevy_xr/src/hand_debug_gizmos.rs | 14 +- crates/bevy_xr/src/hands.rs | 13 +- crates/bevy_xr/src/lib.rs | 1 - crates/bevy_xr/src/session.rs | 157 +- crates/bevy_xr/src/spaces.rs | 38 +- crates/bevy_xr/src/types.rs | 4 - crates/bevy_xr_utils/Cargo.toml | 12 +- crates/bevy_xr_utils/examples/actions.rs | 4 +- .../bevy_xr_utils/examples/transform_utils.rs | 8 +- crates/bevy_xr_utils/src/generic_tracker.rs | 11 +- .../src/mndx_xdev_spaces_trackers.rs | 5 +- crates/bevy_xr_utils/src/tracking_utils.rs | 27 +- crates/bevy_xr_utils/src/transform_utils.rs | 22 +- crates/bevy_xr_utils/src/xr_utils_actions.rs | 32 +- 45 files changed, 1581 insertions(+), 986 deletions(-) delete mode 100644 crates/bevy_xr/src/types.rs diff --git a/Cargo.lock b/Cargo.lock index df997bc..362e2f6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,31 +3,46 @@ version = 4 [[package]] -name = "accesskit" -version = "0.18.0" +name = "ab_glyph" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "becf0eb5215b6ecb0a739c31c21bd83c4f326524c9b46b7e882d77559b60a529" +checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" + +[[package]] +name = "accesskit" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf203f9d3bd8f29f98833d1fbef628df18f759248a547e7e01cfbf63cda36a99" [[package]] name = "accesskit_consumer" -version = "0.27.0" +version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0bf66a7bf0b7ea4fd7742d50b64782a88f99217cf246b3f93b4162528dde520" +checksum = "bdd06f5fea9819250fffd4debf926709f3593ac22f8c1541a2573e5ee0ca01cd" dependencies = [ "accesskit", - "hashbrown", - "immutable-chunkmap", + "hashbrown 0.15.2", ] [[package]] name = "accesskit_macos" -version = "0.19.0" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09e230718177753b4e4ad9e1d9f6cfc2f4921212d4c1c480b253f526babb258d" +checksum = "93fbaf15815f39084e0cb24950c232f0e3634702c2dfbf182ae3b4919a4a1d45" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown", + "hashbrown 0.15.2", "objc2", "objc2-app-kit", "objc2-foundation", @@ -35,24 +50,23 @@ dependencies = [ [[package]] name = "accesskit_windows" -version = "0.25.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65178f3df98a51e4238e584fcb255cb1a4f9111820848eeddd37663be40a625f" +checksum = "792991159fa9ba57459de59e12e918bb90c5346fea7d40ac1a11f8632b41e63a" dependencies = [ "accesskit", "accesskit_consumer", - "hashbrown", - "paste", + "hashbrown 0.15.2", "static_assertions", - "windows 0.58.0", - "windows-core 0.58.0", + "windows 0.61.3", + "windows-core 0.61.2", ] [[package]] name = "accesskit_winit" -version = "0.25.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d941bb8c414caba6e206de669c7dc0dbeb305640ea890772ee422a40e6b89f" +checksum = "cd9db0ea66997e3f4eae4a5f2c6b6486cf206642639ee629dbbb860ace1dec87" dependencies = [ "accesskit", "accesskit_macos", @@ -87,6 +101,19 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "ahash" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" +dependencies = [ + "cfg-if", + "getrandom 0.3.2", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -324,12 +351,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" @@ -338,18 +359,18 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bevy" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5cd3b24a5adb7c7378da7b3eea47639877643d11b6b087fc8a8094f2528615" +checksum = "342f7e9335416dc98642d5747c4ed8a6ad9f7244a36d5b2b7a1b7910e4d8f524" dependencies = [ "bevy_internal", ] [[package]] name = "bevy_a11y" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ed969a58fbe449ef35ebec58ab19578302537f34ee8a35d04e5a038b3c40f5" +checksum = "3917cd35096fb2fe176632740b68a4b53cb61006cfff13d66ef47ee2c2478d53" dependencies = [ "accesskit", "bevy_app", @@ -359,28 +380,36 @@ dependencies = [ ] [[package]] -name = "bevy_animation" -version = "0.16.0" +name = "bevy_android" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3647b67c6bfd456922b2720ccef980dec01742d155d0eb454dc3d8fdc65e7aff" +checksum = "c2a9dd9488c77fa2ea31b5da2f978aab7f1cc82e6d2c3be0adf637d9fd7cb6c8" dependencies = [ + "android-activity", +] + +[[package]] +name = "bevy_animation" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00d2eadb9c20d87ab3a5528a8df483492d5b8102d3f2d61c7b1ed23f40a79166" +dependencies = [ + "bevy_animation_macros", "bevy_app", "bevy_asset", "bevy_color", "bevy_derive", "bevy_ecs", - "bevy_log", "bevy_math", "bevy_mesh", "bevy_platform", "bevy_reflect", - "bevy_render", "bevy_time", "bevy_transform", "bevy_utils", "blake3", "derive_more", - "downcast-rs", + "downcast-rs 2.0.1", "either", "petgraph", "ron", @@ -393,10 +422,43 @@ dependencies = [ ] [[package]] -name = "bevy_app" -version = "0.16.0" +name = "bevy_animation_macros" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b6267ac23a9947d5b2725ff047a1e1add70076d85fa9fb73d044ab9bea1f3c" +checksum = "aec80b84926f730f6df81b9bc07255c120f57aaf7ac577f38d12dd8e1a0268ad" +dependencies = [ + "bevy_macro_utils", + "quote", + "syn", +] + +[[package]] +name = "bevy_anti_alias" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c1adb85fe0956d6c3b6f90777b829785bb7e29a48f58febeeefd2bad317713" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_core_pipeline", + "bevy_derive", + "bevy_diagnostic", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_utils", + "tracing", +] + +[[package]] +name = "bevy_app" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f582409b4ed3850d9b66ee94e71a0e2c20e7068121d372530060c4dfcba66fa" dependencies = [ "bevy_derive", "bevy_ecs", @@ -407,7 +469,7 @@ dependencies = [ "cfg-if", "console_error_panic_hook", "ctrlc", - "downcast-rs", + "downcast-rs 2.0.1", "log", "thiserror 2.0.12", "variadics_please", @@ -417,14 +479,15 @@ dependencies = [ [[package]] name = "bevy_asset" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0698040d63199391ea77fd02e039630748e3e335c3070c6d932fd96cbf80f5d6" +checksum = "9e6ee42e74a64a46ab91bd1c0155f8abe5b732bdb948a9b26e541456cc7940e5" dependencies = [ "async-broadcast", "async-fs", "async-lock", "atomicow", + "bevy_android", "bevy_app", "bevy_asset_macros", "bevy_ecs", @@ -432,13 +495,12 @@ dependencies = [ "bevy_reflect", "bevy_tasks", "bevy_utils", - "bevy_window", "bitflags 2.9.0", "blake3", "crossbeam-channel", "derive_more", "disqualified", - "downcast-rs", + "downcast-rs 2.0.1", "either", "futures-io", "futures-lite", @@ -457,9 +519,9 @@ dependencies = [ [[package]] name = "bevy_asset_macros" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf8c00b5d532f8e5ac7b49af10602f9f7774a2d522cf0638323b5dfeee7b31c" +checksum = "d03711d2c087227f64ba85dd38a99d4d6893f80d2475c2e77fb90a883760a055" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -469,27 +531,53 @@ dependencies = [ [[package]] name = "bevy_audio" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74e54154e6369abdbaf5098e20424d59197c9b701d4f79fe8d0d2bde03d25f12" +checksum = "f83620c82f281848c02ed4b65133a0364512b4eca2b39cd21a171e50e2986d89" dependencies = [ "bevy_app", "bevy_asset", - "bevy_derive", "bevy_ecs", "bevy_math", "bevy_reflect", "bevy_transform", + "coreaudio-sys", "cpal", "rodio", "tracing", ] [[package]] -name = "bevy_color" -version = "0.16.1" +name = "bevy_camera" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddf6a5ad35496bbc41713efbcf06ab72b9a310fabcab0f9db1debb56e8488c6e" +checksum = "b70d79ccbd8bfefc79f33a104dfd82ae2f5276ce04d6df75787bfa3edc4c4c1a" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "bevy_window", + "derive_more", + "downcast-rs 2.0.1", + "serde", + "smallvec", + "thiserror 2.0.12", + "wgpu-types", +] + +[[package]] +name = "bevy_color" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94dc78477c1c208c0cd221c64e907aba8ba165f39bebb72adc6180e1a13e8938" dependencies = [ "bevy_math", "bevy_reflect", @@ -503,29 +591,28 @@ dependencies = [ [[package]] name = "bevy_core_pipeline" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55c2310717b9794e4a45513ee5946a7be0838852a4c1e185884195e1a8688ff3" +checksum = "0c866a2fe33ec27a612d883223d30f1857aa852766b21a9603628735dace632f" dependencies = [ "bevy_app", "bevy_asset", + "bevy_camera", "bevy_color", "bevy_derive", - "bevy_diagnostic", "bevy_ecs", "bevy_image", "bevy_math", "bevy_platform", "bevy_reflect", "bevy_render", + "bevy_shader", "bevy_transform", "bevy_utils", "bevy_window", "bitflags 2.9.0", - "bytemuck", "nonmax", "radsort", - "serde", "smallvec", "thiserror 2.0.12", "tracing", @@ -533,9 +620,9 @@ dependencies = [ [[package]] name = "bevy_derive" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f626531b9c05c25a758ede228727bd11c2c2c8498ecbed9925044386d525a2a3" +checksum = "b8c733807158f8fcac68e23222e69ed91a6492ae9410fc2c145b9bb182cfd63e" dependencies = [ "bevy_macro_utils", "quote", @@ -544,16 +631,16 @@ dependencies = [ [[package]] name = "bevy_diagnostic" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048a1ff3944a534b8472516866284181eef0a75b6dd4d39b6e5925715e350766" +checksum = "f12fa32312818c08aa4035bebe9fb3f62aaf7efae33688e718dd6ee6c0147493" dependencies = [ + "atomic-waker", "bevy_app", "bevy_ecs", "bevy_platform", "bevy_tasks", "bevy_time", - "bevy_utils", "const-fnv1a-hash", "log", "serde", @@ -562,9 +649,9 @@ dependencies = [ [[package]] name = "bevy_ecs" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e807b5d9aab3bb8dfe47e7a44c9ff088bad2ceefe299b80ac77609a87fe9d4" +checksum = "69d929d32190cfcde6efd2df493601c4dbc18a691fd9775a544c951c3c112e1a" dependencies = [ "arrayvec", "bevy_ecs_macros", @@ -577,12 +664,12 @@ dependencies = [ "bumpalo", "concurrent-queue", "derive_more", - "disqualified", "fixedbitset", "indexmap", "log", "nonmax", "serde", + "slotmap", "smallvec", "thiserror 2.0.12", "variadics_please", @@ -590,9 +677,9 @@ dependencies = [ [[package]] name = "bevy_ecs_macros" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "467d7bb98aeb8dd30f36e6a773000c12a891d4f1bee2adc3841ec89cc8eaf54e" +checksum = "6eeddfb80a2e000663e87be9229c26b4da92bddbc06c8776bc0d1f4a7f679079" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -602,9 +689,9 @@ dependencies = [ [[package]] name = "bevy_encase_derive" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8bb31dc1090c6f8fabbf6b21994d19a12766e786885ee48ffc547f0f1fa7863" +checksum = "7449e5903594a00f007732ba232af0c527ad4e6e3d29bc3e195ec78dbd20c8b2" dependencies = [ "bevy_macro_utils", "encase_derive_impl", @@ -612,16 +699,15 @@ dependencies = [ [[package]] name = "bevy_gilrs" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "950c84596dbff8a9691a050c37bb610ef9398af56369c2c2dd6dc41ef7b717a5" +checksum = "28ff35087f25406006338e6d57f31f313a60f3a5e09990ab7c7b5203b0b55077" dependencies = [ "bevy_app", "bevy_ecs", "bevy_input", "bevy_platform", "bevy_time", - "bevy_utils", "gilrs", "thiserror 2.0.12", "tracing", @@ -629,22 +715,26 @@ dependencies = [ [[package]] name = "bevy_gizmos" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54af8145b35ab2a830a6dd1058e23c1e1ddc4b893db79d295259ef82f51c7520" +checksum = "0d3f174faa13041634060dd99f6f59c29997fd62f40252f0466c2ebea8603d4d" dependencies = [ "bevy_app", "bevy_asset", + "bevy_camera", "bevy_color", "bevy_core_pipeline", "bevy_ecs", "bevy_gizmos_macros", "bevy_image", + "bevy_light", "bevy_math", + "bevy_mesh", "bevy_pbr", "bevy_reflect", "bevy_render", - "bevy_sprite", + "bevy_shader", + "bevy_sprite_render", "bevy_time", "bevy_transform", "bevy_utils", @@ -654,30 +744,30 @@ dependencies = [ [[package]] name = "bevy_gizmos_macros" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40137ace61f092b7a09eba41d7d1e6aef941f53a7818b06ef86dcce7b6a1fd3f" +checksum = "714273aa7f285c0aaa874b7fbe37fe4e6e45355e3e6f3321aefa1b78cda259e0" dependencies = [ "bevy_macro_utils", - "proc-macro2", "quote", "syn", ] [[package]] name = "bevy_gltf" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa25b809ee024ef2682bafc1ca22ca8275552edb549dc6f69a030fdffd976c63" +checksum = "13d67e954b20551818f7cdb33f169ab4db64506ada66eb4d60d3cb8861103411" dependencies = [ - "base64 0.22.1", + "base64", "bevy_animation", "bevy_app", "bevy_asset", + "bevy_camera", "bevy_color", - "bevy_core_pipeline", "bevy_ecs", "bevy_image", + "bevy_light", "bevy_math", "bevy_mesh", "bevy_pbr", @@ -687,7 +777,6 @@ dependencies = [ "bevy_scene", "bevy_tasks", "bevy_transform", - "bevy_utils", "fixedbitset", "gltf", "itertools 0.14.0", @@ -701,13 +790,14 @@ dependencies = [ [[package]] name = "bevy_image" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840b25f7f58894c641739f756959028a04f519c448db7e2cd3e2e29fc5fd188d" +checksum = "168de8239b2aedd2eeef9f76ae1909b2fdf859b11dcdb4d4d01b93f5f2c771be" dependencies = [ "bevy_app", "bevy_asset", "bevy_color", + "bevy_ecs", "bevy_math", "bevy_platform", "bevy_reflect", @@ -729,16 +819,15 @@ dependencies = [ [[package]] name = "bevy_input" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763410715714f3d4d2dcdf077af276e2e4ea93fd8081b183d446d060ea95baaa" +checksum = "3cf4074b2d0d6680b4deb308ded7b4e8b1b99181c0502e2632e78af815b26f01" dependencies = [ "bevy_app", "bevy_ecs", "bevy_math", "bevy_platform", "bevy_reflect", - "bevy_utils", "derive_more", "log", "smol_str", @@ -747,14 +836,15 @@ dependencies = [ [[package]] name = "bevy_input_focus" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7e7b4ed65e10927a39a987cf85ef98727dd319aafb6e6835f2cb05b883c6d66" +checksum = "70761eba0f616a1caa761457bff2b8ae80c9916f39d167fab8c2d5c98d2b8951" dependencies = [ "bevy_app", "bevy_ecs", "bevy_input", "bevy_math", + "bevy_picking", "bevy_reflect", "bevy_window", "log", @@ -763,15 +853,18 @@ dependencies = [ [[package]] name = "bevy_internal" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "526ffd64c58004cb97308826e896c07d0e23dc056c243b97492e31cdf72e2830" +checksum = "f43985739584f3a5d43026aa1edd772f064830be46c497518f05f7dfbc886bba" dependencies = [ "bevy_a11y", + "bevy_android", "bevy_animation", + "bevy_anti_alias", "bevy_app", "bevy_asset", "bevy_audio", + "bevy_camera", "bevy_color", "bevy_core_pipeline", "bevy_derive", @@ -783,36 +876,64 @@ dependencies = [ "bevy_image", "bevy_input", "bevy_input_focus", + "bevy_light", "bevy_log", "bevy_math", + "bevy_mesh", "bevy_pbr", "bevy_picking", "bevy_platform", + "bevy_post_process", "bevy_ptr", "bevy_reflect", "bevy_render", "bevy_scene", + "bevy_shader", "bevy_sprite", + "bevy_sprite_render", "bevy_state", "bevy_tasks", "bevy_text", "bevy_time", "bevy_transform", "bevy_ui", + "bevy_ui_render", "bevy_utils", "bevy_window", "bevy_winit", ] [[package]] -name = "bevy_log" -version = "0.16.0" +name = "bevy_light" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7156df8d2f11135cf71c03eb4c11132b65201fd4f51648571e59e39c9c9ee2f6" +checksum = "cad00ab66d1e93edb928be66606a71066f3b1cbc9f414720e290ef5361eb6237" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_transform", + "bevy_utils", + "tracing", +] + +[[package]] +name = "bevy_log" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae217a035714a37b779487f82edc4c7c1223f7088d7ad94054f29f524d61c51" dependencies = [ "android_log-sys", "bevy_app", "bevy_ecs", + "bevy_platform", "bevy_utils", "tracing", "tracing-log", @@ -823,22 +944,22 @@ dependencies = [ [[package]] name = "bevy_macro_utils" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2473db70d8785b5c75d6dd951a2e51e9be2c2311122db9692c79c9d887517b" +checksum = "17dbc3f8948da58b3c17767d20fd3cd35fe4721ed19a9a3204a6f1d6c9951bdd" dependencies = [ "parking_lot", "proc-macro2", "quote", "syn", - "toml_edit", + "toml_edit 0.23.7", ] [[package]] name = "bevy_math" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1a3a926d02dc501c6156a047510bdb538dcb1fa744eeba13c824b73ba88de55" +checksum = "f7a41e368ffa95ae2a353197d1ae3993f4d3d471444d80b65c932db667ea7b9e" dependencies = [ "approx", "bevy_reflect", @@ -856,10 +977,11 @@ dependencies = [ [[package]] name = "bevy_mesh" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12af58280c7453e32e2f083d86eaa4c9b9d03ea8683977108ded8f1930c539f2" +checksum = "b6255244b71153b305fddb4e6f827cb97ed51f276b6e632f5fc46538647948f6" dependencies = [ + "bevy_app", "bevy_asset", "bevy_derive", "bevy_ecs", @@ -869,11 +991,10 @@ dependencies = [ "bevy_platform", "bevy_reflect", "bevy_transform", - "bevy_utils", "bitflags 2.9.0", "bytemuck", + "derive_more", "hexasphere", - "serde", "thiserror 2.0.12", "tracing", "wgpu-types", @@ -881,12 +1002,9 @@ dependencies = [ [[package]] name = "bevy_mikktspace" -version = "0.16.0" +version = "0.17.0-dev" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75e0258423c689f764556e36b5d9eebdbf624b29a1fd5b33cd9f6c42dcc4d5f3" -dependencies = [ - "glam", -] +checksum = "7ef8e4b7e61dfe7719bb03c884dc270cd46a82efb40f93e9933b990c5c190c59" [[package]] name = "bevy_mod_openxr" @@ -895,7 +1013,19 @@ dependencies = [ "android_system_properties", "ash", "bevy", + "bevy_app", + "bevy_camera", + "bevy_derive", + "bevy_ecs", + "bevy_log", + "bevy_math", "bevy_mod_xr", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_transform", + "bevy_window", + "bevy_winit", "jni 0.20.0", "ndk-context", "openxr", @@ -909,7 +1039,6 @@ dependencies = [ name = "bevy_mod_webxr" version = "0.0.0" dependencies = [ - "bevy", "bevy_mod_xr", "thiserror 2.0.12", "wgpu", @@ -920,14 +1049,23 @@ dependencies = [ name = "bevy_mod_xr" version = "0.3.0" dependencies = [ - "bevy", + "bevy_app", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_gizmos", + "bevy_log", + "bevy_math", + "bevy_reflect", + "bevy_render", + "bevy_transform", ] [[package]] name = "bevy_openxr_android" version = "0.3.0" dependencies = [ - "bevy", "bevy_mod_openxr", "bevy_mod_xr", "bevy_xr_utils", @@ -937,32 +1075,34 @@ dependencies = [ [[package]] name = "bevy_pbr" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9fe0de43b68bf9e5090a33efc963f125e9d3f9d97be9ebece7bcfdde1b6da80" +checksum = "cf8c76337a6ae9d73d50be168aeee974d05fdeda9129a413eaff719e3b7b5fea" dependencies = [ "bevy_app", "bevy_asset", + "bevy_camera", "bevy_color", "bevy_core_pipeline", "bevy_derive", "bevy_diagnostic", "bevy_ecs", "bevy_image", + "bevy_light", "bevy_math", + "bevy_mesh", "bevy_platform", "bevy_reflect", "bevy_render", + "bevy_shader", "bevy_transform", "bevy_utils", - "bevy_window", "bitflags 2.9.0", "bytemuck", "derive_more", "fixedbitset", "nonmax", "offset-allocator", - "radsort", "smallvec", "static_assertions", "thiserror 2.0.12", @@ -971,12 +1111,13 @@ dependencies = [ [[package]] name = "bevy_picking" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f73674f62b1033006bd75c89033f5d3516386cfd7d43bb9f7665012c0ab14d22" +checksum = "3a232a8ea4dc9b83c08226f56b868acb1ead06946a95d8b9c8cbbcc860cd8090" dependencies = [ "bevy_app", "bevy_asset", + "bevy_camera", "bevy_derive", "bevy_ecs", "bevy_input", @@ -984,10 +1125,8 @@ dependencies = [ "bevy_mesh", "bevy_platform", "bevy_reflect", - "bevy_render", "bevy_time", "bevy_transform", - "bevy_utils", "bevy_window", "crossbeam-channel", "tracing", @@ -996,33 +1135,66 @@ dependencies = [ [[package]] name = "bevy_platform" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "704db2c11b7bc31093df4fbbdd3769f9606a6a5287149f4b51f2680f25834ebc" +checksum = "10cf8cda162688c95250e74cffaa1c3a04597f105d4ca35554106f107308ea57" dependencies = [ - "cfg-if", "critical-section", - "foldhash", - "getrandom 0.2.16", - "hashbrown", + "foldhash 0.2.0", + "futures-channel", + "getrandom 0.3.2", + "hashbrown 0.16.0", + "js-sys", "portable-atomic", "portable-atomic-util", "serde", "spin", + "wasm-bindgen", + "wasm-bindgen-futures", "web-time", ] [[package]] -name = "bevy_ptr" -version = "0.16.0" +name = "bevy_post_process" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f1275dfb4cfef4ffc90c3fa75408964864facf833acc932413d52aa5364ba4" +checksum = "26ee8ab6043f8bbe43e9c16bbdde0c5e7289b99e62cd8aad1a2a4166a7f2bce6" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_transform", + "bevy_utils", + "bevy_window", + "bitflags 2.9.0", + "nonmax", + "radsort", + "smallvec", + "thiserror 2.0.12", + "tracing", +] + +[[package]] +name = "bevy_ptr" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28ab4074e7b781bab84e9b0a41ede245d673d1f75646ce0db27643aedcfb3a85" [[package]] name = "bevy_reflect" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "607ebacc31029cf2f39ac330eabf1d4bc411b159528ec08dbe6b0593eaccfd41" +checksum = "333df3f5947b7e62728eb5c0b51d679716b16c7c5283118fed4563f13230954e" dependencies = [ "assert_type_match", "bevy_platform", @@ -1031,10 +1203,11 @@ dependencies = [ "bevy_utils", "derive_more", "disqualified", - "downcast-rs", + "downcast-rs 2.0.1", "erased-serde", - "foldhash", + "foldhash 0.2.0", "glam", + "inventory", "petgraph", "serde", "smallvec", @@ -1047,11 +1220,12 @@ dependencies = [ [[package]] name = "bevy_reflect_derive" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf35e45e4eb239018369f63f2adc2107a54c329f9276d020e01eee1625b0238b" +checksum = "0205dce9c5a4d8d041b263bcfd96e9d9d6f3d49416e12db347ab5778b3071fe1" dependencies = [ "bevy_macro_utils", + "indexmap", "proc-macro2", "quote", "syn", @@ -1060,13 +1234,14 @@ dependencies = [ [[package]] name = "bevy_render" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a7306235b3343b032801504f3e884b93abfb7ba58179fc555c479df509f349" +checksum = "70d6a5d47ebb247e4ecaaf4a3b0310b7c518728ff2362c69f4220d0d3228e17d" dependencies = [ "async-channel", "bevy_app", "bevy_asset", + "bevy_camera", "bevy_color", "bevy_derive", "bevy_diagnostic", @@ -1078,6 +1253,7 @@ dependencies = [ "bevy_platform", "bevy_reflect", "bevy_render_macros", + "bevy_shader", "bevy_tasks", "bevy_time", "bevy_transform", @@ -1085,22 +1261,17 @@ dependencies = [ "bevy_window", "bitflags 2.9.0", "bytemuck", - "codespan-reporting", "derive_more", - "downcast-rs", + "downcast-rs 2.0.1", "encase", "fixedbitset", - "futures-lite", "image", "indexmap", "js-sys", - "ktx2", "naga", - "naga_oil", "nonmax", "offset-allocator", "send_wrapper", - "serde", "smallvec", "thiserror 2.0.12", "tracing", @@ -1112,9 +1283,9 @@ dependencies = [ [[package]] name = "bevy_render_macros" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b85c4fb26b66d3a257b655485d11b9b6df9d3c85026493ba8092767a5edfc1b2" +checksum = "a7e8b553adf0a4f9f059c5c2dcb52d9ac09abede1c322a92b43b9f4bb11c3843" dependencies = [ "bevy_macro_utils", "proc-macro2", @@ -1124,17 +1295,17 @@ dependencies = [ [[package]] name = "bevy_scene" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b628f560f2d2fe9f35ecd4526627ba3992f082de03fd745536e4053a0266fe" +checksum = "e601ffeebbdaba1193f823dbdc9fc8787a24cf83225a72fee4def5c27a18778a" dependencies = [ "bevy_app", "bevy_asset", + "bevy_camera", "bevy_derive", "bevy_ecs", "bevy_platform", "bevy_reflect", - "bevy_render", "bevy_transform", "bevy_utils", "derive_more", @@ -1144,40 +1315,84 @@ dependencies = [ ] [[package]] -name = "bevy_sprite" -version = "0.16.0" +name = "bevy_shader" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01f97bf54fb1c37a1077139b59bb32bc77f7ca53149cfcaa512adbb69a2d492c" +checksum = "3cef8f8e53776d286eb62bb60164f30671f07005ff407e94ec1176e9426d1477" +dependencies = [ + "bevy_asset", + "bevy_platform", + "bevy_reflect", + "naga", + "naga_oil", + "serde", + "thiserror 2.0.12", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_sprite" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74bb52fa52caa1cc8d95acf45e52efc0c72b59755c2f0801a30fdab367921db0" dependencies = [ "bevy_app", "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_picking", + "bevy_reflect", + "bevy_text", + "bevy_transform", + "bevy_window", + "radsort", + "tracing", + "wgpu-types", +] + +[[package]] +name = "bevy_sprite_render" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31bb90a9139b04568bd30b2492ba61234092d95a7f7e3c84b55369b16d7e261b" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", "bevy_color", "bevy_core_pipeline", "bevy_derive", "bevy_ecs", "bevy_image", "bevy_math", - "bevy_picking", + "bevy_mesh", "bevy_platform", "bevy_reflect", "bevy_render", + "bevy_shader", + "bevy_sprite", + "bevy_text", "bevy_transform", "bevy_utils", - "bevy_window", "bitflags 2.9.0", "bytemuck", "derive_more", "fixedbitset", "nonmax", - "radsort", "tracing", ] [[package]] name = "bevy_state" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "682c343c354b191fe6669823bce3b0695ee1ae4ac36f582e29c436a72b67cdd5" +checksum = "fe4e955f36cdc7b31556e4619a653dcf65d46967d90d36fb788f746c8e89257e" dependencies = [ "bevy_app", "bevy_ecs", @@ -1191,43 +1406,39 @@ dependencies = [ [[package]] name = "bevy_state_macros" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b4bf3970c4f0e60572901df4641656722172c222d71a80c430d36b0e31426c" +checksum = "5c3e4e32b1b96585740a2b447661af7db1b9d688db5e4d96da50461cd8f5ce63" dependencies = [ "bevy_macro_utils", - "proc-macro2", "quote", "syn", ] [[package]] name = "bevy_tasks" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "444c450b65e108855f42ecb6db0c041a56ea7d7f10cc6222f0ca95e9536a7d19" +checksum = "18839182775f30d26f0f84d9de85d25361bb593c99517a80b64ede6cbaf41adc" dependencies = [ "async-channel", "async-executor", "async-task", "atomic-waker", "bevy_platform", - "cfg-if", "concurrent-queue", "crossbeam-queue", "derive_more", - "futures-channel", "futures-lite", "heapless", "pin-project", - "wasm-bindgen-futures", ] [[package]] name = "bevy_text" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef071262c5a9afbc39caba4c0b282c7d045fbb5cf33bdab1924bd2343403833" +checksum = "cc1b759cf2ed8992132bd541ebb9ffcfa777d2faf3596d418fb25984bc6677d8" dependencies = [ "bevy_app", "bevy_asset", @@ -1239,25 +1450,21 @@ dependencies = [ "bevy_math", "bevy_platform", "bevy_reflect", - "bevy_render", - "bevy_sprite", - "bevy_transform", "bevy_utils", - "bevy_window", "cosmic-text", "serde", "smallvec", "sys-locale", "thiserror 2.0.12", "tracing", - "unicode-bidi", + "wgpu-types", ] [[package]] name = "bevy_time" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456369ca10f8e039aaf273332744674844827854833ee29e28f9e161702f2f55" +checksum = "1a52edd3d30ed94074f646ba1c9914e407af9abe5b6fb7a4322c855341a536cc" dependencies = [ "bevy_app", "bevy_ecs", @@ -1270,9 +1477,9 @@ dependencies = [ [[package]] name = "bevy_transform" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8479cdd5461246943956a7c8347e4e5d6ff857e57add889fb50eee0b5c26ab48" +checksum = "7995ae14430b1a268d1e4f098ab770e8af880d2df5e4e37161b47d8d9e9625bd" dependencies = [ "bevy_app", "bevy_ecs", @@ -1288,16 +1495,16 @@ dependencies = [ [[package]] name = "bevy_ui" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "110dc5d0059f112263512be8cd7bfe0466dfb7c26b9bf4c74529355249fd23f9" +checksum = "cc999815a67a6b2fc911df9eea27af703ff656aed6fd31d8606dced701f07fd6" dependencies = [ "accesskit", "bevy_a11y", "bevy_app", "bevy_asset", + "bevy_camera", "bevy_color", - "bevy_core_pipeline", "bevy_derive", "bevy_ecs", "bevy_image", @@ -1306,61 +1513,91 @@ dependencies = [ "bevy_picking", "bevy_platform", "bevy_reflect", - "bevy_render", "bevy_sprite", "bevy_text", "bevy_transform", "bevy_utils", "bevy_window", - "bytemuck", "derive_more", - "nonmax", "smallvec", "taffy", "thiserror 2.0.12", "tracing", + "uuid", +] + +[[package]] +name = "bevy_ui_render" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adae9770089e04339d003afe7abe7153fe71600d81c828f964c7ac329b04d5b9" +dependencies = [ + "bevy_app", + "bevy_asset", + "bevy_camera", + "bevy_color", + "bevy_core_pipeline", + "bevy_derive", + "bevy_ecs", + "bevy_image", + "bevy_math", + "bevy_mesh", + "bevy_platform", + "bevy_reflect", + "bevy_render", + "bevy_shader", + "bevy_sprite", + "bevy_sprite_render", + "bevy_text", + "bevy_transform", + "bevy_ui", + "bevy_utils", + "bytemuck", + "derive_more", + "tracing", ] [[package]] name = "bevy_utils" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac2da3b3c1f94dadefcbe837aaa4aa119fcea37f7bdc5307eb05b4ede1921e24" +checksum = "080254083c74d5f6eb0649d7cd6181bda277e8fe3c509ec68990a5d56ec23f24" dependencies = [ "bevy_platform", + "disqualified", "thread_local", ] [[package]] name = "bevy_window" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d83327cc5584da463d12b7a88ddb97f9e006828832287e1564531171fffdeb4" +checksum = "f582478606d6b6e5c53befbe7612f038fdfb73f8a27f7aae644406637347acd4" dependencies = [ - "android-activity", "bevy_app", + "bevy_asset", "bevy_ecs", + "bevy_image", "bevy_input", "bevy_math", "bevy_platform", "bevy_reflect", - "bevy_utils", "log", "raw-window-handle", "serde", - "smol_str", ] [[package]] name = "bevy_winit" -version = "0.16.0" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b14928923ae4274f4b867dce3d0e7b2c8a31bebcb0f6e65a4261c3e0765064" +checksum = "eb0ccf2faca4b4c156a26284d1bbf90a8cac8568a273adcd6c1a270c1342f3df" dependencies = [ "accesskit", "accesskit_winit", "approx", "bevy_a11y", + "bevy_android", "bevy_app", "bevy_asset", "bevy_derive", @@ -1373,12 +1610,9 @@ dependencies = [ "bevy_platform", "bevy_reflect", "bevy_tasks", - "bevy_utils", "bevy_window", "bytemuck", "cfg-if", - "crossbeam-channel", - "raw-window-handle", "tracing", "wasm-bindgen", "web-sys", @@ -1391,56 +1625,47 @@ name = "bevy_xr_utils" version = "0.3.0" dependencies = [ "bevy", + "bevy_app", + "bevy_color", + "bevy_derive", + "bevy_ecs", + "bevy_gizmos", + "bevy_log", + "bevy_math", "bevy_mod_openxr", "bevy_mod_xr", + "bevy_transform", "openxr", "openxr_mndx_xdev_space", ] [[package]] name = "bindgen" -version = "0.70.1" +version = "0.72.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" dependencies = [ "bitflags 2.9.0", "cexpr", "clang-sys", "itertools 0.13.0", - "log", - "prettyplease", "proc-macro2", "quote", "regex", - "rustc-hash", + "rustc-hash 2.1.1", "shlex", "syn", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec 0.6.3", -] - [[package]] name = "bit-set" version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" dependencies = [ - "bit-vec 0.8.0", + "bit-vec", ] -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bit-vec" version = "0.8.0" @@ -1459,6 +1684,7 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ + "bytemuck", "serde", ] @@ -1589,6 +1815,18 @@ dependencies = [ "thiserror 1.0.69", ] +[[package]] +name = "calloop-wayland-source" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95a66a987056935f7efce4ab5668920b5d0dac4a7c99991a67395f13702ddd20" +dependencies = [ + "calloop", + "rustix 0.38.44", + "wayland-backend", + "wayland-client", +] + [[package]] name = "cc" version = "1.2.20" @@ -1659,10 +1897,11 @@ dependencies = [ [[package]] name = "codespan-reporting" -version = "0.11.1" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ + "serde", "termcolor", "unicode-width", ] @@ -1742,9 +1981,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -1764,7 +2003,7 @@ checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "core-graphics-types", + "core-graphics-types 0.1.3", "foreign-types 0.5.0", "libc", ] @@ -1780,6 +2019,17 @@ dependencies = [ "libc", ] +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.9.0", + "core-foundation 0.10.1", + "libc", +] + [[package]] name = "coreaudio-rs" version = "0.11.3" @@ -1793,24 +2043,24 @@ dependencies = [ [[package]] name = "coreaudio-sys" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b" +checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6" dependencies = [ "bindgen", ] [[package]] name = "cosmic-text" -version = "0.13.2" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e418dd4f5128c3e93eab12246391c54a20c496811131f85754dc8152ee207892" +checksum = "da46a9d5a8905cc538a4a5bceb6a4510de7a51049c5588c0114efce102bcbbe8" dependencies = [ "bitflags 2.9.0", "fontdb", "log", "rangemap", - "rustc-hash", + "rustc-hash 1.1.0", "rustybuzz", "self_cell", "smol_str", @@ -1931,15 +2181,15 @@ version = "3.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "697b5419f348fd5ae2478e8018cb016c00a5881c7f46c717de98ffd135a5651c" dependencies = [ - "nix", + "nix 0.29.0", "windows-sys 0.59.0", ] [[package]] name = "cursor-icon" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" +checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f" [[package]] name = "dasp_sample" @@ -1981,18 +2231,18 @@ dependencies = [ [[package]] name = "derive_more" -version = "1.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a9b99b9cbbe49445b21764dc0625032a89b145a2642e67603e1c936f5458d05" +checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "1.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" +checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", @@ -2052,6 +2302,12 @@ dependencies = [ "litrs", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "downcast-rs" version = "2.0.1" @@ -2060,9 +2316,9 @@ checksum = "ea8a8b81cacc08888170eef4d13b775126db426d0b348bee9d18c2c1eaf123cf" [[package]] name = "dpi" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "either" @@ -2072,30 +2328,30 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encase" -version = "0.10.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0a05902cf601ed11d564128448097b98ebe3c6574bd7b6a653a3d56d54aa020" +checksum = "02ba239319a4f60905966390f5e52799d868103a533bb7e27822792332504ddd" dependencies = [ "const_panic", "encase_derive", "glam", - "thiserror 1.0.69", + "thiserror 2.0.12", ] [[package]] name = "encase_derive" -version = "0.10.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "181d475b694e2dd56ae919ce7699d344d1fd259292d590c723a50d1189a2ea85" +checksum = "5223d6c647f09870553224f6e37261fe5567bc5a4f4cf13ed337476e79990f2f" dependencies = [ "encase_derive_impl", ] [[package]] name = "encase_derive_impl" -version = "0.10.0" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f97b51c5cc57ef7c5f7a0c57c250251c49ee4c28f819f87ac32f4aceabc36792" +checksum = "1796db3d892515842ca2dfb11124c4bb4a9e58d9f2c5c1072e5bca1b2334507b" dependencies = [ "proc-macro2", "quote", @@ -2211,19 +2467,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] -name = "font-types" -version = "0.8.4" +name = "foldhash" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fa6a5e5a77b5f3f7f9e32879f484aa5b3632ddfbe568a16266c904a6f32cdaf" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "font-types" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "511e2c18a516c666d27867d2f9821f76e7d591f762e9fc41dd6cc5c90fe54b0b" dependencies = [ "bytemuck", ] [[package]] name = "fontconfig-parser" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1fcfcd44ca6e90c921fee9fa665d530b21ef1327a4c1a6c5250ea44b776ada7" +checksum = "bbc773e24e02d4ddd8395fd30dc147524273a83e54e0f312d986ea30de5f5646" dependencies = [ "roxmltree", ] @@ -2368,12 +2630,12 @@ dependencies = [ [[package]] name = "gethostname" -version = "0.4.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" +checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" dependencies = [ - "libc", - "windows-targets 0.48.5", + "rustix 1.0.5", + "windows-targets 0.52.6", ] [[package]] @@ -2383,10 +2645,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", - "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", - "wasm-bindgen", ] [[package]] @@ -2418,23 +2678,23 @@ dependencies = [ [[package]] name = "gilrs-core" -version = "0.6.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6d95ae10ce5aa99543a28cf74e41c11f3b9e3c14f0452bbde46024753cd683e" +checksum = "be11a71ac3564f6965839e2ed275bf4fcf5ce16d80d396e1dfdb7b2d80bd587e" dependencies = [ - "core-foundation 0.10.0", + "core-foundation 0.10.1", "inotify", "io-kit-sys", "js-sys", "libc", "libudev-sys", "log", - "nix", + "nix 0.30.1", "uuid", "vec_map", "wasm-bindgen", "web-sys", - "windows 0.61.1", + "windows 0.61.3", ] [[package]] @@ -2456,21 +2716,21 @@ dependencies = [ [[package]] name = "glam" -version = "0.29.3" +version = "0.30.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8babf46d4c1c9d92deac9f7be466f76dfc4482b6452fc5024b5e8daf6ffeb3ee" +checksum = "e12d847aeb25f41be4c0ec9587d624e9cd631bc007a8fd7ce3f5851e064c6460" dependencies = [ "bytemuck", "libm", "rand", - "serde", + "serde_core", ] [[package]] name = "glob" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "glow" @@ -2562,13 +2822,13 @@ dependencies = [ [[package]] name = "gpu-descriptor" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf29e94d6d243368b7a56caa16bc213e4f9f8ed38c4d9557069527b5d5281ca" +checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca" dependencies = [ "bitflags 2.9.0", "gpu-descriptor-types", - "hashbrown", + "hashbrown 0.15.2", ] [[package]] @@ -2623,6 +2883,7 @@ checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", + "num-traits", ] [[package]] @@ -2639,9 +2900,17 @@ name = "hashbrown" version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" dependencies = [ "equivalent", - "foldhash", "serde", ] @@ -2656,23 +2925,17 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - [[package]] name = "hermit-abi" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hexasphere" -version = "15.1.0" +version = "16.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c9e718d32b6e6b2b32354e1b0367025efdd0b11d6a740b905ddf5db1074679" +checksum = "29a164ceff4500f2a72b1d21beaa8aa8ad83aec2b641844c659b190cb3ea2e0b" dependencies = [ "constgebra", "glam", @@ -2958,24 +3221,16 @@ dependencies = [ "png", ] -[[package]] -name = "immutable-chunkmap" -version = "2.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f97096f508d54f8f8ab8957862eee2ccd628847b6217af1a335e1c44dee578" -dependencies = [ - "arrayvec", -] - [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "4b0f83760fb341a774ed326568e19f5a863af4a952def8c39f9ab92fd95b88e5" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.16.0", "serde", + "serde_core", ] [[package]] @@ -3013,6 +3268,15 @@ dependencies = [ "generic-array", ] +[[package]] +name = "inventory" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc61209c082fbeb19919bee74b176221b27223e27b65d781eb91af24eb1fb46e" +dependencies = [ + "rustversion", +] + [[package]] name = "io-kit-sys" version = "0.4.1" @@ -3128,11 +3392,11 @@ checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" [[package]] name = "ktx2" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87d65e08a9ec02e409d27a0139eaa6b9756b4d81fe7cde71f6941a83730ce838" +checksum = "ff7f53bdf698e7aa7ec916411bbdc8078135da11b66db5182675b2227f6c0d07" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.0", ] [[package]] @@ -3154,9 +3418,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.172" +version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" +checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" [[package]] name = "libloading" @@ -3176,13 +3440,13 @@ checksum = "c9627da5196e5d8ed0b0495e61e518847578da83483c37288316d9b2e03a7f72" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" dependencies = [ "bitflags 2.9.0", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.18", ] [[package]] @@ -3258,9 +3522,9 @@ dependencies = [ [[package]] name = "mach2" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" +checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" dependencies = [ "libc", ] @@ -3276,11 +3540,11 @@ dependencies = [ [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -3291,22 +3555,22 @@ checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" -version = "0.9.5" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" +checksum = "843a98750cd611cc2965a8213b53b43e715f13c37a9e096c6408e69990961db7" dependencies = [ "libc", ] [[package]] name = "metal" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" dependencies = [ "bitflags 2.9.0", "block", - "core-graphics-types", + "core-graphics-types 0.2.0", "foreign-types 0.5.0", "log", "objc", @@ -3354,43 +3618,44 @@ dependencies = [ [[package]] name = "naga" -version = "24.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e380993072e52eef724eddfcde0ed013b0c023c3f0417336ed041aa9f076994e" +checksum = "916cbc7cb27db60be930a4e2da243cf4bc39569195f22fd8ee419cd31d5b662c" dependencies = [ "arrayvec", - "bit-set 0.8.0", + "bit-set", "bitflags 2.9.0", + "cfg-if", "cfg_aliases", "codespan-reporting", + "half", + "hashbrown 0.15.2", "hexf-parse", "indexmap", + "libm", "log", + "num-traits", + "once_cell", "pp-rs", - "rustc-hash", + "rustc-hash 1.1.0", "spirv", - "strum", - "termcolor", "thiserror 2.0.12", - "unicode-xid", + "unicode-ident", ] [[package]] name = "naga_oil" -version = "0.17.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ca507a365f886f95f74420361b75442a3709c747a8a6e8b6c45b8667f45a82c" +checksum = "1b586d3cf5c9b7e13fe2af6e114406ff70773fd80881960378933b63e76f37dd" dependencies = [ - "bit-set 0.5.3", "codespan-reporting", "data-encoding", "indexmap", "naga", - "once_cell", "regex", - "regex-syntax 0.8.5", - "rustc-hash", - "thiserror 1.0.69", + "rustc-hash 1.1.0", + "thiserror 2.0.12", "tracing", "unicode-ident", ] @@ -3477,6 +3742,18 @@ dependencies = [ "libc", ] +[[package]] +name = "nix" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" +dependencies = [ + "bitflags 2.9.0", + "cfg-if", + "cfg_aliases", + "libc", +] + [[package]] name = "nom" version = "7.1.3" @@ -3504,12 +3781,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "overload", - "winapi", + "windows-sys 0.61.2", ] [[package]] @@ -3639,9 +3915,9 @@ dependencies = [ [[package]] name = "objc2-core-foundation" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c10c2894a6fed806ade6027bcd50662746363a9589d3ec9d9bef30a4e4bc166" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" dependencies = [ "bitflags 2.9.0", ] @@ -3689,6 +3965,16 @@ dependencies = [ "objc2", ] +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + [[package]] name = "objc2-link-presentation" version = "0.2.2" @@ -3933,10 +4219,13 @@ dependencies = [ ] [[package]] -name = "overload" -version = "0.1.1" +name = "owned_ttf_parser" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b" +dependencies = [ + "ttf-parser 0.25.1", +] [[package]] name = "parking" @@ -3962,7 +4251,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.11", + "redox_syscall 0.5.18", "smallvec", "windows-targets 0.52.6", ] @@ -3991,11 +4280,12 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.7.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", + "hashbrown 0.15.2", "indexmap", "serde", "serde_derive", @@ -4065,17 +4355,16 @@ dependencies = [ [[package]] name = "polling" -version = "3.7.4" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "5d0e4f59085d47d8241c88ead0f274e8a0cb551f3625263c05eb8dd897c34218" dependencies = [ "cfg-if", "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 0.38.44", - "tracing", - "windows-sys 0.59.0", + "rustix 1.0.5", + "windows-sys 0.61.2", ] [[package]] @@ -4123,23 +4412,13 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" -[[package]] -name = "prettyplease" -version = "0.2.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "664ec5419c51e34154eec046ebcba56312d5a2fc3b09a06da188e1ad21afadf6" -dependencies = [ - "proc-macro2", - "syn", -] - [[package]] name = "proc-macro-crate" version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit", + "toml_edit 0.22.25", ] [[package]] @@ -4157,6 +4436,15 @@ version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d" +[[package]] +name = "quick-xml" +version = "0.37.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +dependencies = [ + "memchr", +] + [[package]] name = "quote" version = "1.0.40" @@ -4180,20 +4468,19 @@ checksum = "019b4b213425016d7d84a153c4c73afb0946fbb4840e4eece7ba8848b9d6da22" [[package]] name = "rand" -version = "0.8.5" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -4201,18 +4488,18 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.3.2", ] [[package]] name = "rand_distr" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" +checksum = "6a8615d50dcf34fa31f7ab52692afec947c4dd0ab803cc87cb3b0b4570ff7463" dependencies = [ "num-traits", "rand", @@ -4226,9 +4513,9 @@ checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" [[package]] name = "rangemap" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" +checksum = "f93e7e49bb0bf967717f7bd674458b3d6b0c5f48ec7e3038166026a69fc22223" [[package]] name = "raw-window-handle" @@ -4238,9 +4525,9 @@ checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" [[package]] name = "read-fonts" -version = "0.25.3" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f9e8a4f503e5c8750e4cd3b32a4e090035c46374b305a15c70bad833dca05f" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" dependencies = [ "bytemuck", "font-types", @@ -4263,9 +4550,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.11" +version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f103c6d277498fbceb16e84d317e2a400f160f46904d5f5410848c829511a3" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ "bitflags 2.9.0", ] @@ -4278,17 +4565,8 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] @@ -4299,15 +4577,9 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] -[[package]] -name = "regex-syntax" -version = "0.6.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" - [[package]] name = "regex-syntax" version = "0.8.5" @@ -4326,7 +4598,7 @@ version = "0.12.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d19c46a6fdd48bc4dab94b6103fccc55d34c67cc0ad04653aad4ea2a07cd7bbb" dependencies = [ - "base64 0.22.1", + "base64", "bytes", "encoding_rs", "futures-channel", @@ -4391,14 +4663,15 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" +checksum = "beceb6f7bf81c73e73aeef6dd1356d9a1b2b4909e1f0fc3e59b034f9572d7b7f" dependencies = [ - "base64 0.21.7", + "base64", "bitflags 2.9.0", "serde", "serde_derive", + "unicode-ident", ] [[package]] @@ -4419,6 +4692,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + [[package]] name = "rustix" version = "0.38.44" @@ -4509,9 +4788,9 @@ dependencies = [ [[package]] name = "ruzstd" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c581601827da5c717bfae77d7b187e54293d23d8fb6b700b4b5e9b5828a13cc3" +checksum = "3640bec8aad418d7d03c72ea2de10d5c646a598f9883c7babc160d91e3c1b26c" dependencies = [ "twox-hash", ] @@ -4540,12 +4819,31 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +[[package]] +name = "sctk-adwaita" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6277f0217056f77f1d8f49f2950ac6c278c0d607c45f5ee99328d792ede24ec" +dependencies = [ + "ab_glyph", + "log", + "memmap2", + "smithay-client-toolkit", + "tiny-skia", +] + [[package]] name = "security-framework" version = "2.11.1" @@ -4583,18 +4881,28 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" [[package]] name = "serde" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.219" +version = "1.0.228" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", @@ -4659,9 +4967,9 @@ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" [[package]] name = "skrifa" -version = "0.26.6" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc1aa86c26dbb1b63875a7180aa0819709b33348eb5b1491e4321fae388179d" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" dependencies = [ "bytemuck", "read-fonts", @@ -4691,6 +4999,31 @@ version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +[[package]] +name = "smithay-client-toolkit" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016" +dependencies = [ + "bitflags 2.9.0", + "calloop", + "calloop-wayland-source", + "cursor-icon", + "libc", + "log", + "memmap2", + "rustix 0.38.44", + "thiserror 1.0.69", + "wayland-backend", + "wayland-client", + "wayland-csd-frame", + "wayland-cursor", + "wayland-protocols", + "wayland-protocols-wlr", + "wayland-scanner", + "xkeysym", +] + [[package]] name = "smol_str" version = "0.2.2" @@ -4712,9 +5045,9 @@ dependencies = [ [[package]] name = "spin" -version = "0.9.8" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" dependencies = [ "portable-atomic", ] @@ -4747,26 +5080,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] -name = "strum" -version = "0.26.3" +name = "strict-num" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "rustversion", - "syn", -] +checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" [[package]] name = "subtle" @@ -4782,9 +5099,9 @@ checksum = "0193cc4331cfd2f3d2011ef287590868599a2f33c3e69bc22c1a3d3acf9e02fb" [[package]] name = "swash" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fae9a562c7b46107d9c78cd78b75bbe1e991c16734c0aee8ff0ee711fb8b620a" +checksum = "47846491253e976bdd07d0f9cc24b7daf24720d11309302ccbbc6e6b6e53550a" dependencies = [ "skrifa", "yazi", @@ -4833,15 +5150,16 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.34.2" +version = "0.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b93974b3d3aeaa036504b8eefd4c039dced109171c1ae973f1dc63b2c7e4b2" +checksum = "16607d5caffd1c07ce073528f9ed972d88db15dd44023fa57142963be3feb11f" dependencies = [ "libc", "memchr", "ntapi", "objc2-core-foundation", - "windows 0.57.0", + "objc2-io-kit", + "windows 0.61.3", ] [[package]] @@ -4968,6 +5286,31 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" +[[package]] +name = "tiny-skia" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +dependencies = [ + "arrayref", + "arrayvec", + "bytemuck", + "cfg-if", + "log", + "tiny-skia-path", +] + +[[package]] +name = "tiny-skia-path" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" +dependencies = [ + "arrayref", + "bytemuck", + "strict-num", +] + [[package]] name = "tinystr" version = "0.7.6" @@ -5047,6 +5390,15 @@ version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3da5db5a963e24bc68be8b17b6fa82814bb22ee8660f192bb182771d498f09a3" +[[package]] +name = "toml_datetime" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +dependencies = [ + "serde_core", +] + [[package]] name = "toml_edit" version = "0.22.25" @@ -5054,7 +5406,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10558ed0bd2a1562e630926a2d1f0b98c827da99fabd3fe20920a59642504485" dependencies = [ "indexmap", - "toml_datetime", + "toml_datetime 0.6.9", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime 0.7.3", + "toml_parser", + "winnow", +] + +[[package]] +name = "toml_parser" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +dependencies = [ "winnow", ] @@ -5130,29 +5503,26 @@ dependencies = [ [[package]] name = "tracing-oslog" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528bdd1f0e27b5dd9a4ededf154e824b0532731e4af73bb531de46276e0aab1e" +checksum = "d76902d2a8d5f9f55a81155c08971734071968c90f2d9bfe645fe700579b2950" dependencies = [ - "bindgen", "cc", "cfg-if", - "once_cell", - "parking_lot", "tracing-core", "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -5191,10 +5561,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" [[package]] -name = "twox-hash" -version = "2.1.0" +name = "ttf-parser" +version = "0.25.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" +checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31" + +[[package]] +name = "twox-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" [[package]] name = "typeid" @@ -5449,6 +5825,114 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wayland-backend" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" +dependencies = [ + "cc", + "downcast-rs 1.2.1", + "rustix 1.0.5", + "scoped-tls", + "smallvec", + "wayland-sys", +] + +[[package]] +name = "wayland-client" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" +dependencies = [ + "bitflags 2.9.0", + "rustix 1.0.5", + "wayland-backend", + "wayland-scanner", +] + +[[package]] +name = "wayland-csd-frame" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" +dependencies = [ + "bitflags 2.9.0", + "cursor-icon", + "wayland-backend", +] + +[[package]] +name = "wayland-cursor" +version = "0.31.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" +dependencies = [ + "rustix 1.0.5", + "wayland-client", + "xcursor", +] + +[[package]] +name = "wayland-protocols" +version = "0.32.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efa790ed75fbfd71283bd2521a1cfdc022aabcc28bdcff00851f9e4ae88d9901" +dependencies = [ + "bitflags 2.9.0", + "wayland-backend", + "wayland-client", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-plasma" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a07a14257c077ab3279987c4f8bb987851bf57081b93710381daea94f2c2c032" +dependencies = [ + "bitflags 2.9.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-protocols-wlr" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efd94963ed43cf9938a090ca4f7da58eb55325ec8200c3848963e98dc25b78ec" +dependencies = [ + "bitflags 2.9.0", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-scanner", +] + +[[package]] +name = "wayland-scanner" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54cb1e9dc49da91950bdfd8b848c49330536d9d1fb03d4bfec8cae50caa50ae3" +dependencies = [ + "proc-macro2", + "quick-xml", + "quote", +] + +[[package]] +name = "wayland-sys" +version = "0.31.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34949b42822155826b41db8e5d0c1be3a2bd296c747577a43a3e6daefc296142" +dependencies = [ + "dlib", + "log", + "pkg-config", +] + [[package]] name = "web-sys" version = "0.3.77" @@ -5471,18 +5955,21 @@ dependencies = [ [[package]] name = "wgpu" -version = "24.0.3" +version = "26.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35904fb00ba2d2e0a4d002fcbbb6e1b89b574d272a50e5fc95f6e81cf281c245" +checksum = "70b6ff82bbf6e9206828e1a3178e851f8c20f1c9028e74dd3a8090741ccd5798" dependencies = [ "arrayvec", "bitflags 2.9.0", + "cfg-if", "cfg_aliases", "document-features", + "hashbrown 0.15.2", "js-sys", "log", "naga", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", "smallvec", @@ -5497,49 +5984,94 @@ dependencies = [ [[package]] name = "wgpu-core" -version = "24.0.2" +version = "26.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "671c25545d479b47d3f0a8e373aceb2060b67c6eb841b24ac8c32348151c7a0c" +checksum = "d5f62f1053bd28c2268f42916f31588f81f64796e2ff91b81293515017ca8bd9" dependencies = [ "arrayvec", - "bit-vec 0.8.0", + "bit-set", + "bit-vec", "bitflags 2.9.0", "cfg_aliases", "document-features", + "hashbrown 0.15.2", "indexmap", "log", "naga", "once_cell", "parking_lot", + "portable-atomic", "profiling", "raw-window-handle", - "rustc-hash", + "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.12", + "wgpu-core-deps-apple", + "wgpu-core-deps-emscripten", + "wgpu-core-deps-wasm", + "wgpu-core-deps-windows-linux-android", "wgpu-hal", "wgpu-types", ] [[package]] -name = "wgpu-hal" -version = "24.0.4" +name = "wgpu-core-deps-apple" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f112f464674ca69f3533248508ee30cb84c67cf06c25ff6800685f5e0294e259" +checksum = "18ae5fbde6a4cbebae38358aa73fcd6e0f15c6144b67ef5dc91ded0db125dbdf" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7670e390f416006f746b4600fdd9136455e3627f5bd763abf9a65daa216dd2d" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-wasm" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03b9f9e1a50686d315fc6debe4980cc45cd37b0e919351917df494e8fdc8885" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "720a5cb9d12b3d337c15ff0e24d3e97ed11490ff3f7506e7f3d98c68fa5d6f14" +dependencies = [ + "wgpu-hal", +] + +[[package]] +name = "wgpu-hal" +version = "26.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df2c64ac282a91ad7662c90bc4a77d4a2135bc0b2a2da5a4d4e267afc034b9e" dependencies = [ "android_system_properties", "arrayvec", "ash", - "bit-set 0.8.0", + "bit-set", "bitflags 2.9.0", "block", "bytemuck", + "cfg-if", "cfg_aliases", - "core-graphics-types", + "core-graphics-types 0.2.0", "glow", "glutin_wgl_sys", "gpu-alloc", "gpu-allocator", "gpu-descriptor", + "hashbrown 0.15.2", "js-sys", "khronos-egl", "libc", @@ -5547,16 +6079,16 @@ dependencies = [ "log", "metal", "naga", - "ndk-sys 0.5.0+25.2.9519653", + "ndk-sys 0.6.0+11769913", "objc", - "once_cell", "ordered-float", "parking_lot", + "portable-atomic", + "portable-atomic-util", "profiling", "range-alloc", "raw-window-handle", "renderdoc-sys", - "rustc-hash", "smallvec", "thiserror 2.0.12", "wasm-bindgen", @@ -5568,14 +6100,16 @@ dependencies = [ [[package]] name = "wgpu-types" -version = "24.0.0" +version = "26.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50ac044c0e76c03a0378e7786ac505d010a873665e2d51383dcff8dd227dc69c" +checksum = "eca7a8d8af57c18f57d393601a1fb159ace8b2328f1b6b5f80893f7d672c9ae2" dependencies = [ "bitflags 2.9.0", + "bytemuck", "js-sys", "log", "serde", + "thiserror 2.0.12", "web-sys", ] @@ -5620,16 +6154,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" -dependencies = [ - "windows-core 0.57.0", - "windows-targets 0.52.6", -] - [[package]] name = "windows" version = "0.58.0" @@ -5642,14 +6166,14 @@ dependencies = [ [[package]] name = "windows" -version = "0.61.1" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5ee8f3d025738cb02bad7868bbb5f8a6327501e870bf51f1b455b0a2454a419" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core 0.61.0", + "windows-core 0.61.2", "windows-future", - "windows-link", + "windows-link 0.1.3", "windows-numerics", ] @@ -5659,7 +6183,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core 0.61.0", + "windows-core 0.61.2", ] [[package]] @@ -5672,18 +6196,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-core" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" -dependencies = [ - "windows-implement 0.57.0", - "windows-interface 0.57.0", - "windows-result 0.1.2", - "windows-targets 0.52.6", -] - [[package]] name = "windows-core" version = "0.58.0" @@ -5699,36 +6211,26 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.61.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.60.0", - "windows-interface 0.59.1", - "windows-link", - "windows-result 0.3.2", - "windows-strings 0.4.0", + "windows-implement 0.60.2", + "windows-interface 0.59.3", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", ] [[package]] name = "windows-future" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a1d6bbefcb7b60acd19828e1bc965da6fcf18a7e39490c5f8be71e54a19ba32" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core 0.61.0", - "windows-link", -] - -[[package]] -name = "windows-implement" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" -dependencies = [ - "proc-macro2", - "quote", - "syn", + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", ] [[package]] @@ -5744,20 +6246,9 @@ dependencies = [ [[package]] name = "windows-implement" -version = "0.60.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "windows-interface" -version = "0.57.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -5777,9 +6268,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.59.1" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", @@ -5788,9 +6279,15 @@ dependencies = [ [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] name = "windows-numerics" @@ -5798,8 +6295,8 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core 0.61.0", - "windows-link", + "windows-core 0.61.2", + "windows-link 0.1.3", ] [[package]] @@ -5808,7 +6305,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4286ad90ddb45071efd1a66dfa43eb02dd0dfbae1545ad6cc3c51cf34d7e8ba3" dependencies = [ - "windows-result 0.3.2", + "windows-result 0.3.4", "windows-strings 0.3.1", "windows-targets 0.53.0", ] @@ -5833,11 +6330,11 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -5856,16 +6353,16 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "87fa48cc5d406560701792be122a10132491cff9d0aeb23583cc2dcafc847319" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-link", + "windows-link 0.1.3", ] [[package]] @@ -5895,6 +6392,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + [[package]] name = "windows-targets" version = "0.42.2" @@ -5910,21 +6416,6 @@ dependencies = [ "windows_x86_64_msvc 0.42.2", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -5957,18 +6448,21 @@ dependencies = [ "windows_x86_64_msvc 0.53.0", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -5987,12 +6481,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -6011,12 +6499,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -6047,12 +6529,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -6071,12 +6547,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -6095,12 +6565,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -6119,12 +6583,6 @@ version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -6139,10 +6597,11 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winit" -version = "0.30.9" +version = "0.30.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a809eacf18c8eca8b6635091543f02a5a06ddf3dad846398795460e6e0ae3cc0" +checksum = "c66d4b9ed69c4009f6321f762d6e61ad8a2389cd431b97cb1e146812e9e6c732" dependencies = [ + "ahash", "android-activity", "atomic-waker", "bitflags 2.9.0", @@ -6157,6 +6616,7 @@ dependencies = [ "dpi", "js-sys", "libc", + "memmap2", "ndk 0.9.0", "objc2", "objc2-app-kit", @@ -6168,11 +6628,17 @@ dependencies = [ "raw-window-handle", "redox_syscall 0.4.1", "rustix 0.38.44", + "sctk-adwaita", + "smithay-client-toolkit", "smol_str", "tracing", "unicode-segmentation", "wasm-bindgen", "wasm-bindgen-futures", + "wayland-backend", + "wayland-client", + "wayland-protocols", + "wayland-protocols-plasma", "web-sys", "web-time", "windows-sys 0.52.0", @@ -6183,9 +6649,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.7" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb8234a863ea0e8cd7284fcdd4f145233eb00fee02bbdd9861aec44e6477bc5" +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" dependencies = [ "memchr", ] @@ -6224,24 +6690,30 @@ dependencies = [ [[package]] name = "x11rb" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" +checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414" dependencies = [ "as-raw-xcb-connection", "gethostname", "libc", "libloading", "once_cell", - "rustix 0.38.44", + "rustix 1.0.5", "x11rb-protocol", ] [[package]] name = "x11rb-protocol" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" +checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd" + +[[package]] +name = "xcursor" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b" [[package]] name = "xkbcommon-dl" @@ -6309,9 +6781,9 @@ dependencies = [ [[package]] name = "zeno" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc0de2315dc13d00e5df3cd6b8d2124a6eaec6a2d4b6a1c5f37b7efad17fcc17" +checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" [[package]] name = "zerocopy" diff --git a/Cargo.toml b/Cargo.toml index 5861d2b..0a4b9f7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,21 +10,30 @@ resolver = "2" members = ["crates/*", "crates/bevy_openxr/examples/android"] [workspace.dependencies] -bevy = { version = "0.16.0", default-features = false, features = [ - "bevy_render", - "bevy_core_pipeline", - "bevy_winit", - "bevy_pbr", - "bevy_window", - "x11", -] } +bevy = "0.17" +bevy_ecs = { version = "0.17.0", default-features = false } +bevy_math = { version = "0.17.0", default-features = false } +bevy_render = { version = "0.17.0", default-features = false } +bevy_core_pipeline = { version = "0.17.0", default-features = false } +bevy_window = { version = "0.17.0", default-features = false } +bevy_winit = { version = "0.17.0", default-features = false } +bevy_pbr = { version = "0.17.0", default-features = false } +bevy_app = { version = "0.17.0", default-features = false } +bevy_reflect = { version = "0.17.0", default-features = false } +bevy_log = { version = "0.17.0", default-features = false } +bevy_gizmos = { version = "0.17.0", default-features = false } +bevy_camera = { version = "0.17.0", default-features = false } +bevy_color = { version = "0.17.0", default-features = false } +bevy_transform = { version = "0.17.0", default-features = false } +bevy_derive = { version = "0.17.0", default-features = false } +bevy_platform = { version = "0.17.0", default-features = false } bevy_mod_xr = { path = "crates/bevy_xr", version = "0.3.0" } bevy_mod_openxr = { path = "crates/bevy_openxr", version = "0.3.0" } bevy_xr_utils = { path = "crates/bevy_xr_utils", version = "0.3.0" } openxr = "0.19.0" thiserror = "2.0.3" -wgpu = "24.0.1" -wgpu-hal = "24.0.2" +wgpu = "26" +wgpu-hal = "26" # Enable a small amount of optimization in the dev profile. [profile.dev] diff --git a/crates/bevy_openxr/Cargo.toml b/crates/bevy_openxr/Cargo.toml index caf0cb1..34731de 100644 --- a/crates/bevy_openxr/Cargo.toml +++ b/crates/bevy_openxr/Cargo.toml @@ -8,13 +8,15 @@ license.workspace = true keywords = ["gamedev", "bevy", "Xr", "Vr", "OpenXR"] [features] -default = ["vulkan", "d3d12", "passthrough"] +default = ["vulkan"] vulkan = ["dep:ash", "dep:android_system_properties"] d3d12 = ["wgpu/dx12", "wgpu-hal/dx12", "dep:winapi"] passthrough = [] +reflect = ["dep:bevy_reflect"] +window_support = ["dep:bevy_winit"] [dev-dependencies] -bevy = { workspace = true, default-features = true } +bevy.workspace = true [target.'cfg(target_os = "android")'.dependencies] ndk-context = "0.1" @@ -23,7 +25,18 @@ android_system_properties = { version = "0.1.5", optional = true } # bevy can't be placed behind target or proc macros won't work properly [dependencies] -bevy.workspace = true +bevy_ecs.workspace = true +bevy_math.workspace = true +bevy_render.workspace = true +bevy_app.workspace = true +bevy_reflect = { workspace = true, optional = true } +bevy_log.workspace = true +bevy_transform.workspace = true +bevy_camera.workspace = true +bevy_derive.workspace = true +bevy_platform.workspace = true +bevy_winit = { workspace = true, optional = true } +bevy_window = { workspace = true, optional = true } # all other dependencies are placed under this since on wasm, this crate is completely empty [target.'cfg(not(target_family = "wasm"))'.dependencies] diff --git a/crates/bevy_openxr/examples/android/Cargo.toml b/crates/bevy_openxr/examples/android/Cargo.toml index aadfe5a..4d81c8d 100644 --- a/crates/bevy_openxr/examples/android/Cargo.toml +++ b/crates/bevy_openxr/examples/android/Cargo.toml @@ -10,14 +10,14 @@ publish = false bevy_mod_openxr.workspace = true bevy_xr_utils.workspace = true bevy_mod_xr.workspace = true -bevy = { workspace = true, default-features = false, features = [ - # Bevy 0.15 made GameActivity the default which breaks Quest builds - # To use NativeActivity instead of GameActivity all of the features have to be listed manually - "android-native-activity", - "bevy_window", - "multi_threaded", - "tonemapping_luts", -] } +# bevy = { workspace = true, default-features = false, features = [ +# # Bevy 0.15 made GameActivity the default which breaks Quest builds +# # To use NativeActivity instead of GameActivity all of the features have to be listed manually +# "android-native-activity", +# "bevy_window", +# "multi_threaded", +# "tonemapping_luts", +# ] } [build-dependencies] reqwest = { version = "0.12", features = ["blocking"] } diff --git a/crates/bevy_openxr/examples/overlay.rs b/crates/bevy_openxr/examples/overlay.rs index 263e902..502439e 100644 --- a/crates/bevy_openxr/examples/overlay.rs +++ b/crates/bevy_openxr/examples/overlay.rs @@ -2,7 +2,7 @@ use bevy::prelude::*; use bevy_mod_openxr::{ - add_xr_plugins, features::overlay::OxrOverlaySessionEvent, init::OxrInitPlugin, + add_xr_plugins, features::overlay::OxrOverlaySessionMessage, init::OxrInitPlugin, resources::OxrSessionConfig, types::OxrExtensions, }; use openxr::EnvironmentBlendMode; @@ -36,20 +36,20 @@ fn main() { .run(); } -fn print_main_session_changes(mut events: EventReader) { +fn print_main_session_changes(mut events: MessageReader) { for event in events.read() { - let OxrOverlaySessionEvent::MainSessionVisibilityChanged { visible, flags: _ } = event; + let OxrOverlaySessionMessage::MainSessionVisibilityChanged { visible, flags: _ } = event; info!("main session visible: {visible}"); } } fn handle_input( keys: Res>, - mut end: EventWriter, - mut destroy: EventWriter, - mut begin: EventWriter, - mut create: EventWriter, - mut request_exit: EventWriter, + mut end: MessageWriter, + mut destroy: MessageWriter, + mut begin: MessageWriter, + mut create: MessageWriter, + mut request_exit: MessageWriter, ) { if keys.just_pressed(KeyCode::KeyE) { info!("sending end"); diff --git a/crates/bevy_openxr/examples/raw_actions.rs b/crates/bevy_openxr/examples/raw_actions.rs index 31c1c9f..f8dd49a 100644 --- a/crates/bevy_openxr/examples/raw_actions.rs +++ b/crates/bevy_openxr/examples/raw_actions.rs @@ -35,7 +35,7 @@ fn main() -> AppExit { app.run() } -fn attach_set(actions: Res, mut attach: EventWriter) { +fn attach_set(actions: Res, mut attach: MessageWriter) { attach.write(OxrAttachActionSet(actions.set.clone())); } @@ -45,7 +45,7 @@ struct ControllerActions { left: openxr::Action, right: openxr::Action, } -fn sync_actions(actions: Res, mut sync: EventWriter) { +fn sync_actions(actions: Res, mut sync: MessageWriter) { sync.write(OxrSyncActionSet(actions.set.clone())); } /// set up a simple 3D scene @@ -81,7 +81,7 @@ fn setup( } fn suggest_action_bindings( actions: Res, - mut bindings: EventWriter, + mut bindings: MessageWriter, ) { bindings.write(OxrSuggestActionBinding { action: actions.left.as_raw(), diff --git a/crates/bevy_openxr/examples/sessions.rs b/crates/bevy_openxr/examples/sessions.rs index b8fac4f..5f4ad03 100644 --- a/crates/bevy_openxr/examples/sessions.rs +++ b/crates/bevy_openxr/examples/sessions.rs @@ -16,11 +16,11 @@ fn main() -> AppExit { fn handle_input( keys: Res>, - mut end: EventWriter, - mut destroy: EventWriter, - mut begin: EventWriter, - mut create: EventWriter, - mut request_exit: EventWriter, + mut end: MessageWriter, + mut destroy: MessageWriter, + mut begin: MessageWriter, + mut create: MessageWriter, + mut request_exit: MessageWriter, state: Res, ) { if keys.just_pressed(KeyCode::KeyE) { diff --git a/crates/bevy_openxr/src/openxr/action_binding.rs b/crates/bevy_openxr/src/openxr/action_binding.rs index ea392a5..bd841b7 100644 --- a/crates/bevy_openxr/src/openxr/action_binding.rs +++ b/crates/bevy_openxr/src/openxr/action_binding.rs @@ -1,11 +1,15 @@ use std::borrow::Cow; use std::ptr; -use bevy::ecs::schedule::ScheduleLabel; -use bevy::ecs::system::RunSystemOnce; -use bevy::platform::collections::HashMap; -use bevy::prelude::*; -use bevy_mod_xr::session::XrSessionCreatedEvent; +use bevy_app::{App, Plugin, Update}; +use bevy_ecs::message::{Message, MessageReader}; +use bevy_ecs::schedule::common_conditions::on_message; +use bevy_ecs::schedule::{IntoScheduleConfigs as _, Schedule, ScheduleLabel}; +use bevy_ecs::system::{Res, RunSystemOnce}; +use bevy_ecs::world::World; +use bevy_log::error; +use bevy_mod_xr::session::XrSessionCreatedMessage; +use bevy_platform::collections::HashMap; use openxr::sys::ActionSuggestedBinding; use crate::resources::OxrInstance; @@ -13,10 +17,10 @@ use crate::resources::OxrInstance; impl Plugin for OxrActionBindingPlugin { fn build(&self, app: &mut App) { app.add_schedule(Schedule::new(OxrSendActionBindings)); - app.add_event::(); + app.add_message::(); app.add_systems( Update, - run_action_binding_sugestion.run_if(on_event::), + run_action_binding_sugestion.run_if(on_message::), ); } } @@ -28,7 +32,7 @@ pub(crate) fn run_action_binding_sugestion(world: &mut World) { _ = world.run_system_once(bind_actions); } -fn bind_actions(instance: Res, mut actions: EventReader) { +fn bind_actions(instance: Res, mut actions: MessageReader) { let mut bindings: HashMap<&str, Vec> = HashMap::new(); for e in actions.read() { bindings.entry(&e.interaction_profile).or_default().extend( @@ -88,7 +92,7 @@ fn bind_actions(instance: Res, mut actions: EventReader(); + app.add_message::(); app.add_systems( PostUpdate, attach_sets - .run_if(on_event::) + .run_if(on_message::) .after(run_action_binding_sugestion), ); } } -fn attach_sets(session: Res, mut events: EventReader) { +fn attach_sets(session: Res, mut events: MessageReader) { let sets = events.read().map(|v| &v.0).collect::>(); if sets.is_empty() { return; @@ -36,7 +38,7 @@ fn attach_sets(session: Res, mut events: EventReader(); + app.add_message::(); app.add_systems( PreUpdate, sync_sets @@ -16,8 +19,8 @@ impl Plugin for OxrActionSyncingPlugin { } } -fn sync_sets(session: Res, mut events: EventReader) { - let sets = events +fn sync_sets(session: Res, mut messages: MessageReader) { + let sets = messages .read() .map(|v| &v.0) .map(openxr::ActiveActionSet::new) @@ -31,7 +34,7 @@ fn sync_sets(session: Res, mut events: EventReader } } -#[derive(Event, Clone)] +#[derive(Message, Clone)] /// Send this event for every ActionSet you want to attach to the [`OxrSession`] once the Session Status changed to Ready. all requests will pub struct OxrSyncActionSet(pub openxr::ActionSet); diff --git a/crates/bevy_openxr/src/openxr/environment_blend_mode.rs b/crates/bevy_openxr/src/openxr/environment_blend_mode.rs index 7fcc822..38f04d9 100644 --- a/crates/bevy_openxr/src/openxr/environment_blend_mode.rs +++ b/crates/bevy_openxr/src/openxr/environment_blend_mode.rs @@ -1,4 +1,5 @@ -use bevy::{ecs::resource::Resource, render::extract_resource::ExtractResource}; +use bevy_ecs::resource::Resource; +use bevy_render::extract_resource::ExtractResource; use openxr::EnvironmentBlendMode; #[derive(Resource, ExtractResource, Clone)] diff --git a/crates/bevy_openxr/src/openxr/exts.rs b/crates/bevy_openxr/src/openxr/exts.rs index d577726..30250b9 100644 --- a/crates/bevy_openxr/src/openxr/exts.rs +++ b/crates/bevy_openxr/src/openxr/exts.rs @@ -1,4 +1,5 @@ -use bevy::prelude::{Deref, DerefMut, Resource}; +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::resource::Resource; use openxr::ExtensionSet; #[derive(Clone, Debug, Eq, PartialEq, Deref, DerefMut, Resource)] diff --git a/crates/bevy_openxr/src/openxr/features/fb_passthrough.rs b/crates/bevy_openxr/src/openxr/features/fb_passthrough.rs index 5eddf00..2d550e2 100644 --- a/crates/bevy_openxr/src/openxr/features/fb_passthrough.rs +++ b/crates/bevy_openxr/src/openxr/features/fb_passthrough.rs @@ -1,7 +1,8 @@ -use bevy::prelude::*; -use bevy::render::Render; -use bevy::render::RenderApp; -use bevy::render::RenderSet; +use bevy_log::error; +use bevy_log::info; +use bevy_render::Render; +use bevy_render::RenderApp; +use bevy_render::RenderSystems; use openxr::sys::SystemPassthroughProperties2FB; use openxr::PassthroughCapabilityFlagsFB; @@ -105,7 +106,7 @@ pub fn supports_passthrough(instance: &OxrInstance, system: OxrSystemId) -> OxrR system.0, p.as_mut_ptr(), ))?; - bevy::log::info!( + info!( "From supports_passthrough: Passthrough capabilities: {:?}", properties.capabilities ); diff --git a/crates/bevy_openxr/src/openxr/features/handtracking.rs b/crates/bevy_openxr/src/openxr/features/handtracking.rs index ece5aba..44de4df 100644 --- a/crates/bevy_openxr/src/openxr/features/handtracking.rs +++ b/crates/bevy_openxr/src/openxr/features/handtracking.rs @@ -1,4 +1,12 @@ -use bevy::prelude::*; +use bevy_app::{App, Plugin, PreUpdate, Startup}; +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::component::Component; +use bevy_ecs::entity::Entity; +use bevy_ecs::query::{Or, With}; +use bevy_ecs::schedule::IntoScheduleConfigs as _; +use bevy_ecs::system::{Commands, Query, Res}; +use bevy_ecs::world::World; +use bevy_log::{debug, error, warn}; use bevy_mod_xr::hands::{ spawn_hand_bones, HandBone, HandSide, SpawnHandTracker, SpawnHandTrackerCommandExecutor, XrHandBoneRadius, @@ -9,6 +17,7 @@ use bevy_mod_xr::spaces::{ XrPrimaryReferenceSpace, XrReferenceSpace, XrSpaceLocationFlags, XrSpaceSyncSet, XrSpaceVelocityFlags, XrVelocity, }; +use bevy_transform::components::Transform; use openxr::{SpaceLocationFlags, SpaceVelocityFlags}; use crate::helper_traits::ToVec3; diff --git a/crates/bevy_openxr/src/openxr/features/overlay.rs b/crates/bevy_openxr/src/openxr/features/overlay.rs index e84fa63..499c78b 100644 --- a/crates/bevy_openxr/src/openxr/features/overlay.rs +++ b/crates/bevy_openxr/src/openxr/features/overlay.rs @@ -1,6 +1,7 @@ use std::{mem, ptr}; -use bevy::prelude::*; +use bevy_app::{App, First, Plugin}; +use bevy_ecs::{message::{Message, MessageWriter}, resource::Resource, schedule::IntoScheduleConfigs as _, system::{NonSendMut, Res}}; use openxr::{sys, Event}; use crate::{ @@ -14,8 +15,8 @@ use crate::{ pub struct OxrOverlayPlugin; impl Plugin for OxrOverlayPlugin { - fn build(&self, app: &mut bevy::prelude::App) { - app.add_event::(); + fn build(&self, app: &mut App) { + app.add_message::(); app.init_resource::(); app.add_systems( First, @@ -25,9 +26,9 @@ impl Plugin for OxrOverlayPlugin { } } -fn handle_overlay_event(event: OxrEventIn, mut writer: EventWriter) { +fn handle_overlay_event(event: OxrEventIn, mut writer: MessageWriter) { if let Event::MainSessionVisibilityChangedEXTX(event) = *event { - writer.write(OxrOverlaySessionEvent::MainSessionVisibilityChanged { + writer.write(OxrOverlaySessionMessage::MainSessionVisibilityChanged { visible: event.visible(), flags: event.flags(), }); @@ -62,8 +63,8 @@ fn add_overlay_info_to_chain( } } -#[derive(Event, Clone, Copy, Debug)] -pub enum OxrOverlaySessionEvent { +#[derive(Message, Clone, Copy, Debug)] +pub enum OxrOverlaySessionMessage { MainSessionVisibilityChanged { visible: bool, flags: openxr::OverlayMainSessionFlagsEXTX, diff --git a/crates/bevy_openxr/src/openxr/graphics.rs b/crates/bevy_openxr/src/openxr/graphics.rs index bbd582d..7cc965d 100644 --- a/crates/bevy_openxr/src/openxr/graphics.rs +++ b/crates/bevy_openxr/src/openxr/graphics.rs @@ -5,7 +5,8 @@ pub mod vulkan; use std::{any::TypeId, ffi::CStr}; -use bevy::{ecs::resource::Resource, math::UVec2}; +use bevy_ecs::resource::Resource; +use bevy_math::UVec2; use openxr::{FrameStream, FrameWaiter, Session}; use crate::{ diff --git a/crates/bevy_openxr/src/openxr/graphics/vulkan.rs b/crates/bevy_openxr/src/openxr/graphics/vulkan.rs index 14aca40..e98e592 100644 --- a/crates/bevy_openxr/src/openxr/graphics/vulkan.rs +++ b/crates/bevy_openxr/src/openxr/graphics/vulkan.rs @@ -2,10 +2,11 @@ use std::ffi::{c_void, CStr, CString}; use std::str::FromStr; use ash::vk::{self, Handle}; -use bevy::log::{debug, error}; -use bevy::math::UVec2; +use bevy_log::{debug, error}; +use bevy_math::UVec2; use openxr::{sys, Version}; -use wgpu::InstanceFlags; +use wgpu::{InstanceFlags, MemoryBudgetThresholds}; +use wgpu::TextureUses; use wgpu_hal::api::Vulkan; use wgpu_hal::Api; @@ -53,7 +54,15 @@ unsafe impl GraphicsExt for openxr::Vulkan { ) -> Result { let color_image = vk::Image::from_raw(color_image); let wgpu_hal_texture = unsafe { - ::Device::texture_from_raw( + let hal_dev = + device + .as_hal::() + .ok_or(OxrError::GraphicsBackendMismatch { + item: "Wgpu Device", + backend: "unknown", + expected_backend: "vulkan", + })?; + hal_dev.texture_from_raw( color_image, &wgpu_hal::TextureDescriptor { label: Some("VR Swapchain"), @@ -66,7 +75,7 @@ unsafe impl GraphicsExt for openxr::Vulkan { sample_count: 1, dimension: wgpu::TextureDimension::D2, format, - usage: wgpu_hal::TextureUses::COLOR_TARGET | wgpu_hal::TextureUses::COPY_DST, + usage: TextureUses::COLOR_TARGET | TextureUses::COPY_DST, memory_flags: wgpu_hal::MemoryFlags::empty(), view_formats: vec![], }, @@ -151,7 +160,7 @@ unsafe impl GraphicsExt for openxr::Vulkan { vk_physical_device, instance_exts, flags, - device_exts.into(), + device_exts, |info| unsafe { let vk_device = instance .create_vulkan_device( @@ -262,8 +271,8 @@ unsafe impl GraphicsExt for openxr::Vulkan { vk_physical_device, instance_exts, instance_flags, - device_exts.into(), - |info| unsafe { Ok(vk_instance.create_device(vk_physical_device, &info, None)?) }, + device_exts, + |info| unsafe { Ok(vk_instance.create_device(vk_physical_device, info, None)?) }, ) .map(|v| v.0) } @@ -275,7 +284,7 @@ fn get_extensions( ) -> Result<(wgpu::InstanceFlags, Vec<&'static CStr>, Vec<&'static CStr>)> { let flags = wgpu::InstanceFlags::default().with_env(); let mut instance_exts = - ::Instance::desired_extensions(&vk_entry, VK_TARGET_VERSION_ASH, flags)?; + ::Instance::desired_extensions(vk_entry, VK_TARGET_VERSION_ASH, flags)?; let mut device_exts = vec![ ash::khr::swapchain::NAME, ash::khr::draw_indirect_count::NAME, @@ -370,6 +379,7 @@ fn init_from_instance_and_dev( None, instance_exts, instance_flags, + MemoryBudgetThresholds::default(), has_nv_optimus, None, )? @@ -442,8 +452,8 @@ fn init_from_instance_and_dev( required_features: wgpu_features, required_limits: limits, memory_hints: wgpu::MemoryHints::Performance, + trace: wgpu::Trace::Off, }, - None, ) }?; Ok(( diff --git a/crates/bevy_openxr/src/openxr/helper_traits.rs b/crates/bevy_openxr/src/openxr/helper_traits.rs index 01ef1c6..49674d0 100644 --- a/crates/bevy_openxr/src/openxr/helper_traits.rs +++ b/crates/bevy_openxr/src/openxr/helper_traits.rs @@ -1,4 +1,5 @@ -use bevy::{math::Vec3A, prelude::*}; +use bevy_math::{Isometry3d, Quat, Vec2, Vec3, Vec3A}; +use bevy_transform::components::Transform; pub trait ToPosef { fn to_posef(&self) -> openxr::Posef; diff --git a/crates/bevy_openxr/src/openxr/init.rs b/crates/bevy_openxr/src/openxr/init.rs index 4abcc74..d3795e5 100644 --- a/crates/bevy_openxr/src/openxr/init.rs +++ b/crates/bevy_openxr/src/openxr/init.rs @@ -1,23 +1,45 @@ use std::sync::atomic::Ordering; use std::sync::Arc; -use bevy::prelude::*; -use bevy::render::extract_resource::ExtractResourcePlugin; -use bevy::render::renderer::RenderAdapter; -use bevy::render::renderer::RenderAdapterInfo; -use bevy::render::renderer::RenderDevice; -use bevy::render::renderer::RenderInstance; -use bevy::render::renderer::RenderQueue; -use bevy::render::renderer::WgpuWrapper; -use bevy::render::settings::RenderCreation; -use bevy::render::MainWorld; -use bevy::render::Render; -use bevy::render::RenderApp; -use bevy::render::RenderDebugFlags; -use bevy::render::RenderPlugin; -use bevy::winit::UpdateMode; -use bevy::winit::WinitSettings; +use bevy_app::App; +use bevy_app::Plugin; +use bevy_ecs::message::MessageWriter; +use bevy_ecs::message::Messages; +use bevy_ecs::resource::Resource; +use bevy_ecs::schedule::SystemCondition as _; +use bevy_ecs::schedule::common_conditions::on_message; +use bevy_ecs::schedule::common_conditions::resource_exists; +use bevy_ecs::schedule::IntoScheduleConfigs as _; +use bevy_ecs::system::Commands; +use bevy_ecs::system::Local; +use bevy_ecs::system::Res; +use bevy_ecs::system::ResMut; +use bevy_ecs::world::World; +use bevy_log::debug; +use bevy_log::debug_span; +use bevy_log::error; +use bevy_log::info; +use bevy_log::warn; +use bevy_math::UVec2; use bevy_mod_xr::session::*; +use bevy_render::extract_resource::ExtractResourcePlugin; +use bevy_render::renderer::RenderAdapter; +use bevy_render::renderer::RenderAdapterInfo; +use bevy_render::renderer::RenderDevice; +use bevy_render::renderer::RenderInstance; +use bevy_render::renderer::RenderQueue; +use bevy_render::renderer::WgpuWrapper; +use bevy_render::settings::RenderCreation; +use bevy_render::ExtractSchedule; +use bevy_render::MainWorld; +use bevy_render::Render; +use bevy_render::RenderApp; +use bevy_render::RenderDebugFlags; +use bevy_render::RenderPlugin; +#[cfg(feature = "window_support")] +use bevy_winit::UpdateMode; +#[cfg(feature = "window_support")] +use bevy_winit::WinitSettings; use crate::error::OxrError; use crate::graphics::*; @@ -63,15 +85,15 @@ pub struct OxrInitPlugin { impl Default for OxrInitPlugin { fn default() -> Self { Self { - app_info: default(), + app_info: Default::default(), exts: { let mut exts = OxrExtensions::default(); exts.enable_hand_tracking(); exts }, - backends: default(), + backends: Default::default(), synchronous_pipeline_compilation: false, - render_debug_flags: default(), + render_debug_flags: Default::default(), } } } @@ -110,7 +132,7 @@ impl Plugin for OxrInitPlugin { ( create_xr_session .run_if(state_equals(XrState::Available)) - .run_if(on_event::), + .run_if(on_message::), ( destroy_xr_session, (|v: Res| { @@ -120,16 +142,16 @@ impl Plugin for OxrInitPlugin { ) .chain() .run_if(state_matches!(XrState::Exiting { .. })) - .run_if(on_event::), + .run_if(on_message::), begin_xr_session .run_if(state_equals(XrState::Ready)) - .run_if(on_event::), + .run_if(on_message::), end_xr_session .run_if(state_equals(XrState::Stopping)) - .run_if(on_event::), + .run_if(on_message::), request_exit_xr_session .run_if(session_created) - .run_if(on_event::), + .run_if(on_message::), detect_session_destroyed, ) .in_set(XrHandleEvents::SessionStateUpdateEvents), @@ -137,17 +159,20 @@ impl Plugin for OxrInitPlugin { .insert_resource(instance.clone()) .insert_resource(system_id) .insert_resource(XrState::Available) - .insert_resource(WinitSettings { - focused_mode: UpdateMode::Continuous, - unfocused_mode: UpdateMode::Continuous, - }) .insert_resource(OxrSessionStarted(false)) .insert_non_send_resource(graphics_info) .init_non_send_resource::(); + #[cfg(feature = "window_support")] + { + app.insert_resource(WinitSettings { + focused_mode: UpdateMode::Continuous, + unfocused_mode: UpdateMode::Continuous, + }); + }; app.world_mut() - .resource_mut::>() - .send(XrStateChanged(XrState::Available)); + .resource_mut::>() + .write(XrStateChanged(XrState::Available)); let render_app = app.sub_app_mut(RenderApp); @@ -213,7 +238,7 @@ impl Plugin for OxrInitPlugin { fn detect_session_destroyed( mut last_state: Local, state: Res, - mut sender: EventWriter, + mut sender: MessageWriter, mut cmds: Commands, ) { let state = state.0.load(Ordering::Relaxed); @@ -307,7 +332,7 @@ impl OxrInitPlugin { pub fn handle_events( event: OxrEventIn, mut status: ResMut, - mut changed_event: EventWriter, + mut changed_event: MessageWriter, ) { use openxr::Event::*; match *event { @@ -511,7 +536,7 @@ pub fn create_xr_session(world: &mut World) { } world.insert_non_send_resource(chain); world.run_schedule(XrSessionCreated); - world.send_event(XrSessionCreatedEvent); + world.write_message(XrSessionCreatedMessage); } pub fn destroy_xr_session(world: &mut World) { @@ -525,9 +550,7 @@ pub fn destroy_xr_session(world: &mut World) { world.insert_resource(XrState::Available); } -pub fn begin_xr_session( - world: &mut World, -) { +pub fn begin_xr_session(world: &mut World) { let _span = debug_span!("xr_begin_session").entered(); world .get_resource::() @@ -539,9 +562,7 @@ pub fn begin_xr_session( world.run_schedule(XrPostSessionBegin); } -pub fn end_xr_session( - world: &mut World, -) { +pub fn end_xr_session(world: &mut World) { world.run_schedule(XrPreSessionEnd); let _span = debug_span!("xr_end_session").entered(); world diff --git a/crates/bevy_openxr/src/openxr/layer_builder.rs b/crates/bevy_openxr/src/openxr/layer_builder.rs index b3bc9be..d4eb6c3 100644 --- a/crates/bevy_openxr/src/openxr/layer_builder.rs +++ b/crates/bevy_openxr/src/openxr/layer_builder.rs @@ -1,6 +1,6 @@ use std::mem; -use bevy::ecs::world::World; +use bevy_ecs::world::World; use bevy_mod_xr::spaces::{XrPrimaryReferenceSpace, XrSpace}; use openxr::{sys, CompositionLayerFlags, Fovf, Posef, Rect2Di}; @@ -63,7 +63,7 @@ impl LayerProvider for ProjectionLayer { } impl LayerProvider for PassthroughLayer { - fn get(&self, world: &World) -> Option> { + fn get(&self, world: &World) -> Option>> { Some(Box::new( CompositionLayerPassthrough::new() .layer_handle(world.get_resource::()?) @@ -171,7 +171,7 @@ impl Default for CompositionLayerProjectionView<'_> { } } /// # Safety -/// the header function must return a ref to a valid Composition Layer struct. +/// the header function must return a ref to a valid Composition Layer struct. /// it has to use `repr(C)` and it has to follow the shape of a Composition Layer struct from the /// OpenXR specification pub unsafe trait CompositionLayer<'a> { diff --git a/crates/bevy_openxr/src/openxr/mod.rs b/crates/bevy_openxr/src/openxr/mod.rs index dc23337..eb5018a 100644 --- a/crates/bevy_openxr/src/openxr/mod.rs +++ b/crates/bevy_openxr/src/openxr/mod.rs @@ -1,13 +1,11 @@ // use actions::XrActionPlugin; -use bevy::{ - app::{PluginGroup, PluginGroupBuilder}, - prelude::Res, - render::RenderPlugin, - utils::default, - window::{PresentMode, Window, WindowPlugin}, -}; +use bevy_app::{PluginGroup, PluginGroupBuilder}; +use bevy_ecs::system::Res; use bevy_mod_xr::session::XrSessionPlugin; use bevy_mod_xr::{camera::XrCameraPlugin, session::XrState}; +use bevy_render::RenderPlugin; +#[cfg(feature = "window_support")] +use bevy_window::{PresentMode, Window, WindowPlugin}; use init::OxrInitPlugin; use poll_events::OxrEventsPlugin; use render::OxrRenderPlugin; @@ -54,7 +52,7 @@ pub fn openxr_session_running( } pub fn add_xr_plugins(plugins: G) -> PluginGroupBuilder { - plugins + let plugins = plugins .build() .disable::() .add_before::(XrSessionPlugin { auto_handle: true }) @@ -69,15 +67,17 @@ pub fn add_xr_plugins(plugins: G) -> PluginGroupBuilder { .add(action_set_syncing::OxrActionSyncingPlugin) .add(features::overlay::OxrOverlayPlugin) .add(spaces::OxrSpatialPlugin) - .add(spaces::OxrSpacePatchingPlugin) - // we should probably handle the exiting ourselfs so that we can correctly end the - // session and instance - .set(WindowPlugin { - primary_window: Some(Window { - transparent: true, - present_mode: PresentMode::AutoNoVsync, - ..default() - }), + .add(spaces::OxrSpacePatchingPlugin); + // we should probably handle the exiting ourselfs so that we can correctly end the + // session and instance + #[cfg(feature = "window_support")] + let plugins = plugins.set(WindowPlugin { + primary_window: Some(Window { + transparent: true, + present_mode: PresentMode::AutoNoVsync, ..default() - }) + }), + ..default() + }); + plugins } diff --git a/crates/bevy_openxr/src/openxr/poll_events.rs b/crates/bevy_openxr/src/openxr/poll_events.rs index df15396..013d0aa 100644 --- a/crates/bevy_openxr/src/openxr/poll_events.rs +++ b/crates/bevy_openxr/src/openxr/poll_events.rs @@ -1,5 +1,8 @@ use super::{openxr_session_available, resources::OxrInstance}; -use bevy::{ecs::system::SystemId, prelude::*}; +use bevy_app::{App, Plugin}; +use bevy_derive::Deref; +use bevy_ecs::{entity::Entity, resource::Resource, schedule::IntoScheduleConfigs as _, system::{IntoSystem, SystemId, SystemInput}, world::World}; +use bevy_log::{debug_span, error}; use bevy_mod_xr::session::{XrFirst, XrHandleEvents}; use openxr::{Event, EventDataBuffer}; diff --git a/crates/bevy_openxr/src/openxr/reference_space.rs b/crates/bevy_openxr/src/openxr/reference_space.rs index bdc77f7..d8ccdae 100644 --- a/crates/bevy_openxr/src/openxr/reference_space.rs +++ b/crates/bevy_openxr/src/openxr/reference_space.rs @@ -1,11 +1,17 @@ -use bevy::{ - prelude::*, - render::{extract_resource::ExtractResourcePlugin, RenderApp}, +use bevy_app::{App, Plugin}; +use bevy_ecs::{ + entity::Entity, + query::With, + resource::Resource, + system::{Commands, Query, Res}, }; +use bevy_log::error; +use bevy_math::Isometry3d; use bevy_mod_xr::{ session::{XrPreDestroySession, XrSessionCreated}, spaces::{XrPrimaryReferenceSpace, XrReferenceSpace}, }; +use bevy_render::{RenderApp, extract_resource::ExtractResourcePlugin}; use crate::session::OxrSession; @@ -51,7 +57,7 @@ fn set_primary_ref_space( space_type: Res, mut cmds: Commands, ) { - match session.create_reference_space(space_type.0, Transform::IDENTITY) { + match session.create_reference_space(space_type.0, Isometry3d::IDENTITY) { Ok(space) => { cmds.insert_resource(XrPrimaryReferenceSpace(space)); } diff --git a/crates/bevy_openxr/src/openxr/render.rs b/crates/bevy_openxr/src/openxr/render.rs index 1f6eed1..b642aa8 100644 --- a/crates/bevy_openxr/src/openxr/render.rs +++ b/crates/bevy_openxr/src/openxr/render.rs @@ -1,25 +1,33 @@ -use bevy::{ - prelude::*, - render::{ - camera::{ManualTextureView, ManualTextureViewHandle, ManualTextureViews, RenderTarget}, - extract_resource::ExtractResourcePlugin, - pipelined_rendering::PipelinedRenderingPlugin, - view::{ExtractedView, NoFrustumCulling}, - Render, RenderApp, - }, - transform::TransformSystem, +use bevy_app::{App, Plugin, PostUpdate}; +use bevy_camera::{Camera, ManualTextureViewHandle, Projection, RenderTarget}; +use bevy_ecs::{ + change_detection::DetectChanges as _, + entity::Entity, + schedule::{IntoScheduleConfigs as _, SystemSet}, + system::{Commands, Query, Res, ResMut}, + world::World, }; +use bevy_log::{debug_span, error, info}; +use bevy_render::{ + extract_resource::ExtractResourcePlugin, + pipelined_rendering::PipelinedRenderingPlugin, + texture::{ManualTextureView, ManualTextureViews}, + view::ExtractedView, + Render, RenderApp, +}; + use bevy_mod_xr::{ camera::{calculate_projection, Fov, XrCamera, XrProjection, XrViewInit}, session::{ - XrFirst, XrHandleEvents, XrPreDestroySession, XrRenderSet, XrRootTransform, + XrFirst, XrHandleEvents, XrPreDestroySession, XrRenderSystems, XrRootTransform, XrSessionCreated, }, spaces::XrPrimaryReferenceSpace, }; +use bevy_transform::{components::Transform, TransformSystems}; use openxr::ViewStateFlags; -use crate::{init::should_run_frame_loop, resources::*}; +use crate::{helper_traits::ToTransform as _, init::should_run_frame_loop, resources::*}; use crate::{layer_builder::ProjectionLayer, session::OxrSession}; use super::environment_blend_mode::OxrEnvironmentBlendModes; @@ -88,9 +96,8 @@ impl Plugin for OxrRenderPlugin { .add_systems( PostUpdate, (locate_views, update_views) - .before(TransformSystem::TransformPropagate) + .before(TransformSystems::Propagate) .chain() - // .run_if(should_render) .run_if(should_run_frame_loop), ) .init_resource::(); @@ -109,7 +116,7 @@ impl Plugin for OxrRenderPlugin { wait_image, ) .chain() - .in_set(XrRenderSet::PreRender) + .in_set(XrRenderSystems::PreRender) .run_if(should_run_frame_loop), ) .add_systems( @@ -117,40 +124,12 @@ impl Plugin for OxrRenderPlugin { (release_image, end_frame) .chain() .run_if(should_run_frame_loop) - .in_set(XrRenderSet::PostRender), + .in_set(XrRenderSystems::PostRender), ) .insert_resource(OxrRenderLayers(vec![Box::new(ProjectionLayer)])); } } -// fn update_rendering(app_world: &mut World, _sub_app: &mut App) { -// app_world.resource_scope(|world, main_thread_executor: Mut| { -// world.resource_scope(|world, mut render_channels: Mut| { -// // we use a scope here to run any main thread tasks that the render world still needs to run -// // while we wait for the render world to be received. -// let mut render_app = ComputeTaskPool::get() -// .scope_with_executor(true, Some(&*main_thread_executor.0), |s| { -// s.spawn(async { render_channels.recv().await }); -// }) -// .pop() -// .unwrap(); - -// if matches!(world.resource::(), XrState::Stopping) { -// world.run_schedule(XrEndSession); -// } - -// if matches!(world.resource::(), XrState::Exiting { .. }) { -// world.run_schedule(XrDestroySession); -// render_app.app.world.run_schedule(XrDestroySession); -// } - -// render_app.extract(world); - -// render_channels.send_blocking(render_app); -// }); -// }); -// } - pub const XR_TEXTURE_INDEX: u32 = 3383858418; pub fn clean_views( @@ -185,7 +164,7 @@ pub fn init_views( }, XrCamera(index), Projection::custom(XrProjection::default()), - NoFrustumCulling, + // NoFrustumCulling, )); } } @@ -283,12 +262,7 @@ pub fn update_views( ); projection.projection_matrix = projection_matrix; - let openxr::Quaternionf { x, y, z, w } = view.pose.orientation; - let rotation = Quat::from_xyzw(x, y, z, w); - transform.rotation = rotation; - let openxr::Vector3f { x, y, z } = view.pose.position; - let translation = Vec3::new(x, y, z); - transform.translation = translation; + *transform = view.pose.to_transform(); } } @@ -301,14 +275,7 @@ pub fn update_views_render_world( let Some(view) = views.get(camera.0 as usize) else { continue; }; - let mut transform = Transform::IDENTITY; - let openxr::Quaternionf { x, y, z, w } = view.pose.orientation; - let rotation = Quat::from_xyzw(x, y, z, w); - transform.rotation = rotation; - let openxr::Vector3f { x, y, z } = view.pose.position; - let translation = Vec3::new(x, y, z); - transform.translation = translation; - extracted_view.world_from_view = root.0.mul_transform(transform); + extracted_view.world_from_view = root.0.mul_transform(view.pose.to_transform()); } } @@ -345,7 +312,7 @@ pub fn add_texture_view( dimension: Some(wgpu::TextureViewDimension::D2), array_layer_count: Some(1), base_array_layer: index, - ..default() + ..Default::default() }); let view = ManualTextureView { texture_view: view.into(), diff --git a/crates/bevy_openxr/src/openxr/resources.rs b/crates/bevy_openxr/src/openxr/resources.rs index c98e041..c933b1b 100644 --- a/crates/bevy_openxr/src/openxr/resources.rs +++ b/crates/bevy_openxr/src/openxr/resources.rs @@ -1,5 +1,8 @@ -use bevy::prelude::*; -use bevy::render::extract_resource::ExtractResource; +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::resource::Resource; +use bevy_math::UVec2; +use bevy_render::extract_resource::ExtractResource; +use bevy_log::error; use crate::error::OxrError; use crate::graphics::*; @@ -351,7 +354,7 @@ impl Default for OxrSessionConfig { Self { blend_mode_preference: vec![openxr::EnvironmentBlendMode::OPAQUE], formats: Some(vec![wgpu::TextureFormat::Rgba8UnormSrgb]), - resolutions: default(), + resolutions: None, } } } diff --git a/crates/bevy_openxr/src/openxr/session.rs b/crates/bevy_openxr/src/openxr/session.rs index a34ab6b..8f47ac2 100644 --- a/crates/bevy_openxr/src/openxr/session.rs +++ b/crates/bevy_openxr/src/openxr/session.rs @@ -3,7 +3,8 @@ use std::ffi::c_void; use crate::next_chain::{OxrNextChain, OxrNextChainStructBase, OxrNextChainStructProvider}; use crate::resources::{OxrPassthrough, OxrPassthroughLayer, OxrSwapchain}; use crate::types::{Result, SwapchainCreateInfo}; -use bevy::prelude::*; +use bevy_derive::Deref; +use bevy_ecs::resource::Resource; use openxr::AnyGraphics; use crate::graphics::{graphics_match, GraphicsExt, GraphicsType, GraphicsWrap}; diff --git a/crates/bevy_openxr/src/openxr/spaces.rs b/crates/bevy_openxr/src/openxr/spaces.rs index d73d188..7122724 100644 --- a/crates/bevy_openxr/src/openxr/spaces.rs +++ b/crates/bevy_openxr/src/openxr/spaces.rs @@ -1,16 +1,24 @@ -use std::{mem::MaybeUninit, ptr, sync::Mutex}; - -use bevy::{platform::collections::hash_set::HashSet, prelude::*}; +use bevy_app::{App, Plugin, PreUpdate, Startup}; +use bevy_ecs::{ + component::Component, message::MessageReader, schedule::IntoScheduleConfigs as _, system::{Query, Res, ResMut} +}; +use bevy_log::{error, info}; +use bevy_log::warn; +use bevy_math::Isometry3d; use bevy_mod_xr::{ session::{XrFirst, XrHandleEvents}, spaces::{ - XrDestroySpace, XrPrimaryReferenceSpace, XrReferenceSpace, XrSpace, XrSpaceLocationFlags, XrSpaceSyncSet, XrSpaceVelocityFlags, XrVelocity + XrDestroySpace, XrPrimaryReferenceSpace, XrReferenceSpace, XrSpace, XrSpaceLocationFlags, + XrSpaceSyncSet, XrSpaceVelocityFlags, XrVelocity, }, }; +use bevy_platform::collections::hash_set::HashSet; +use bevy_transform::components::Transform; use openxr::{ sys, HandJointLocation, HandJointLocations, HandJointVelocities, HandJointVelocity, ReferenceSpaceType, SpaceLocationFlags, SpaceVelocityFlags, HAND_JOINT_COUNT, }; +use std::{mem::MaybeUninit, ptr, sync::Mutex}; use crate::{ helper_traits::{ToPosef, ToQuat, ToVec3}, @@ -33,7 +41,7 @@ impl Plugin for OxrSpacePatchingPlugin { pub struct OxrSpatialPlugin; impl Plugin for OxrSpatialPlugin { fn build(&self, app: &mut App) { - app.add_event::() + app.add_message::() .add_systems( XrFirst, destroy_space_event @@ -51,7 +59,7 @@ impl Plugin for OxrSpatialPlugin { } } -fn destroy_space_event(instance: Res, mut events: EventReader) { +fn destroy_space_event(instance: Res, mut events: MessageReader) { for space in events.read() { match instance.destroy_space(space.0) { Ok(_) => (), @@ -231,7 +239,7 @@ impl OxrSession { pub fn create_reference_space( &self, ref_space_type: ReferenceSpaceType, - pose_in_ref_space: Transform, + pose_in_ref_space: Isometry3d, ) -> openxr::Result { let info = sys::ReferenceSpaceCreateInfo { ty: sys::ReferenceSpaceCreateInfo::TYPE, @@ -579,6 +587,7 @@ fn cvt(x: sys::Result) -> openxr::Result { Err(x) } } +#[allow(clippy::obfuscated_if_else)] unsafe fn create_view(flags: openxr::ViewStateFlags, raw: &MaybeUninit) -> openxr::View { // Applications *must* not read invalid parts of a poses, i.e. they may be uninitialized let ptr = raw.as_ptr(); @@ -596,6 +605,7 @@ unsafe fn create_view(flags: openxr::ViewStateFlags, raw: &MaybeUninit) -> openxr::SpaceLocation { // Applications *must* not read invalid parts of a pose, i.e. they may be uninitialized let ptr = raw.as_ptr(); @@ -614,6 +624,7 @@ unsafe fn create_space_location(raw: &MaybeUninit) -> openxr }, } } +#[allow(clippy::obfuscated_if_else)] unsafe fn create_space_velocity(raw: &MaybeUninit) -> openxr::SpaceVelocity { // Applications *must* not read invalid velocities, i.e. they may be uninitialized let ptr = raw.as_ptr(); diff --git a/crates/bevy_webxr/Cargo.toml b/crates/bevy_webxr/Cargo.toml index 621a673..0334691 100644 --- a/crates/bevy_webxr/Cargo.toml +++ b/crates/bevy_webxr/Cargo.toml @@ -8,7 +8,7 @@ license.workspace = true # bevy can't be placed behind target or proc macros won't work properly [dependencies] -bevy.workspace = true +# bevy.workspace = true # all dependencies are placed under this since on anything but wasm, this crate is completely empty [target.'cfg(target_family = "wasm")'.dependencies] diff --git a/crates/bevy_xr/Cargo.toml b/crates/bevy_xr/Cargo.toml index cbfee0b..30210bf 100644 --- a/crates/bevy_xr/Cargo.toml +++ b/crates/bevy_xr/Cargo.toml @@ -10,10 +10,21 @@ keywords = ["gamedev", "bevy", "Xr", "Vr"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] default = ["gizmos"] -gizmos = ["bevy/bevy_gizmos"] +gizmos = ["dep:bevy_gizmos", "dep:bevy_color"] +reflect = ["dep:bevy_reflect"] [dependencies] -bevy = { workspace = true, features = ["bevy_log"] } +bevy_ecs.workspace = true +bevy_math.workspace = true +bevy_render.workspace = true +bevy_app.workspace = true +bevy_reflect = { workspace = true, optional = true } +bevy_log.workspace = true +bevy_gizmos = { workspace = true, optional = true } +bevy_color = { workspace = true, optional = true } +bevy_transform.workspace = true +bevy_camera.workspace = true +bevy_derive.workspace = true [lints.clippy] too_many_arguments = "allow" diff --git a/crates/bevy_xr/src/actions.rs b/crates/bevy_xr/src/actions.rs index 4eaec8f..63c17f6 100644 --- a/crates/bevy_xr/src/actions.rs +++ b/crates/bevy_xr/src/actions.rs @@ -1,8 +1,8 @@ use std::{any::TypeId, marker::PhantomData}; -use bevy::app::{App, Plugin}; -use bevy::math::Vec2; -use bevy::prelude::Resource; +use bevy_app::{App, Plugin}; +use bevy_ecs::resource::Resource; +use bevy_math::Vec2; pub struct ActionPlugin(PhantomData); diff --git a/crates/bevy_xr/src/camera.rs b/crates/bevy_xr/src/camera.rs index 805a09a..8f15ee5 100644 --- a/crates/bevy_xr/src/camera.rs +++ b/crates/bevy_xr/src/camera.rs @@ -1,14 +1,15 @@ use core::panic; -use bevy::app::{App, Plugin}; -use bevy::core_pipeline::core_3d::Camera3d; -use bevy::ecs::component::Component; -use bevy::math::{Mat4, Vec3A, Vec4}; -use bevy::prelude::SystemSet; -use bevy::reflect::std_traits::ReflectDefault; -use bevy::reflect::Reflect; -use bevy::render::camera::CameraProjection; -use bevy::render::extract_component::{ExtractComponent, ExtractComponentPlugin}; +use bevy_app::{App, Plugin}; +use bevy_camera::{Camera3d, CameraProjection}; +use bevy_ecs::{component::Component, schedule::SystemSet}; +use bevy_math::{Mat4, Vec3A, Vec4}; +// use bevy::prelude::SystemSet; +#[cfg(feature = "reflect")] +use bevy_reflect::std_traits::ReflectDefault; +#[cfg(feature = "reflect")] +use bevy_reflect::Reflect; +use bevy_render::extract_component::{ExtractComponent, ExtractComponentPlugin}; use crate::session::XrTracker; @@ -23,8 +24,9 @@ impl Plugin for XrCameraPlugin { #[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, SystemSet)] pub struct XrViewInit; -#[derive(Debug, Clone, Reflect)] -#[reflect(Default)] +#[derive(Debug, Clone)] +#[cfg_attr(feature = "reflect", derive(Reflect))] +#[cfg_attr(feature = "reflect", reflect(Default))] pub struct XrProjection { pub projection_matrix: Mat4, pub near: f32, @@ -83,7 +85,7 @@ impl CameraProjection for XrProjection { self.projection_matrix } - fn get_clip_from_view_for_sub(&self, _sub_view: &bevy::render::camera::SubCameraView) -> Mat4 { + fn get_clip_from_view_for_sub(&self, _sub_view: &bevy_camera::SubCameraView) -> Mat4 { panic!("sub view not supported for xr camera"); } } @@ -194,11 +196,8 @@ pub fn calculate_projection(near_z: f32, fov: Fov) -> Mat4 { mod tests { use std::f32::{self, consts::PI}; - use bevy::{ - math::{Mat4, Vec3A}, - render::camera::{CameraProjection, PerspectiveProjection}, - utils::default, - }; + use bevy_math::{Mat4,Vec3A}; + use bevy_camera::{CameraProjection, PerspectiveProjection}; const TEST_VALUES: &[(f32, f32)] = &[(0.5, 100.0), (50.0, 200.0)]; @@ -230,7 +229,7 @@ mod tests { fn test_get_frustum_corners_symmetrical() { let control_proj = PerspectiveProjection { near: 0.1, - ..default() + ..Default::default() }; let projection = XrProjection { @@ -252,7 +251,7 @@ mod tests { fn test_get_frustum_corners_symmetrical_far_plane() { let control_proj = PerspectiveProjection { near: 0.1, - ..default() + ..Default::default() }; let projection = XrProjection { diff --git a/crates/bevy_xr/src/hand_debug_gizmos.rs b/crates/bevy_xr/src/hand_debug_gizmos.rs index 61cf071..82f136a 100644 --- a/crates/bevy_xr/src/hand_debug_gizmos.rs +++ b/crates/bevy_xr/src/hand_debug_gizmos.rs @@ -1,13 +1,21 @@ use crate::hands::{HandBone, XrHandBoneRadius}; use crate::spaces::XrSpaceLocationFlags; -use bevy::color::palettes::css; -use bevy::{prelude::*, transform::TransformSystem}; +use bevy_app::{App, Plugin, PostUpdate}; +use bevy_color::palettes::css; +use bevy_color::Srgba; +use bevy_ecs::schedule::IntoScheduleConfigs as _; +use bevy_ecs::system::Query; +use bevy_gizmos::gizmos::Gizmos; +use bevy_math::Isometry3d; +use bevy_transform::TransformSystems; +use bevy_transform::components::GlobalTransform; + pub struct HandGizmosPlugin; impl Plugin for HandGizmosPlugin { fn build(&self, app: &mut App) { app.add_systems( PostUpdate, - draw_hand_gizmos.after(TransformSystem::TransformPropagate), + draw_hand_gizmos.after(TransformSystems::Propagate), ); } } diff --git a/crates/bevy_xr/src/hands.rs b/crates/bevy_xr/src/hands.rs index ab4e627..74daf0f 100644 --- a/crates/bevy_xr/src/hands.rs +++ b/crates/bevy_xr/src/hands.rs @@ -1,10 +1,11 @@ -use bevy::{ - ecs::{component::Component, entity::Entity}, - log::warn, - math::bool, - prelude::{Bundle, Command, Commands, Deref, DerefMut, Resource, Transform, Visibility, World}, -}; use crate::{session::XrTracker, spaces::XrSpaceLocationFlags}; +use bevy_camera::visibility::Visibility; +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::{bundle::Bundle, component::Component, entity::Entity, resource::Resource, system::{Command, Commands}, world::World}; +use bevy_log::warn; +use bevy_math::bool; +use bevy_transform::components::Transform; + pub const HAND_JOINT_COUNT: usize = 26; pub fn spawn_hand_bones( diff --git a/crates/bevy_xr/src/lib.rs b/crates/bevy_xr/src/lib.rs index 5bf2335..e15bd0b 100644 --- a/crates/bevy_xr/src/lib.rs +++ b/crates/bevy_xr/src/lib.rs @@ -5,4 +5,3 @@ pub mod hand_debug_gizmos; pub mod hands; pub mod session; pub mod spaces; -pub mod types; diff --git a/crates/bevy_xr/src/session.rs b/crates/bevy_xr/src/session.rs index 8273619..6450706 100644 --- a/crates/bevy_xr/src/session.rs +++ b/crates/bevy_xr/src/session.rs @@ -2,30 +2,45 @@ use std::convert::identity; use std::sync::atomic::AtomicBool; use std::sync::Arc; -use bevy::app::{AppExit, MainScheduleOrder}; -use bevy::ecs::component::HookContext; -use bevy::ecs::schedule::ScheduleLabel; -use bevy::ecs::world::DeferredWorld; -use bevy::prelude::*; -use bevy::render::extract_resource::{ExtractResource, ExtractResourcePlugin}; -use bevy::render::{Render, RenderApp, RenderSet}; +use bevy_app::{App, AppExit, MainScheduleOrder, Plugin, PostUpdate, PreUpdate}; +use bevy_camera::visibility::Visibility; +use bevy_derive::Deref; +use bevy_ecs::component::Component; +use bevy_ecs::entity::Entity; +use bevy_ecs::hierarchy::Children; +use bevy_ecs::lifecycle::HookContext; +use bevy_ecs::message::{Message, MessageReader, MessageWriter}; +use bevy_ecs::query::{Has, With}; +use bevy_ecs::resource::Resource; +use bevy_ecs::schedule::common_conditions::on_message; +use bevy_ecs::schedule::{ + ExecutorKind, IntoScheduleConfigs as _, Schedule, ScheduleLabel, SystemCondition as _, SystemSet +}; +use bevy_ecs::system::{Local, Query, Res, ResMut}; +use bevy_ecs::world::DeferredWorld; +use bevy_render::extract_resource::{ExtractResource, ExtractResourcePlugin}; +use bevy_render::{Render, RenderApp, RenderSystems}; +use bevy_transform::components::{GlobalTransform, Transform}; +use bevy_transform::TransformSystems; +#[cfg(feature="reflect")] +use bevy_reflect::Reflect; -/// Event sent to instruct backends to create an XR session. Only works when the [`XrState`] is [`Available`](XrState::Available). -#[derive(Event, Clone, Copy, Default)] -pub struct XrCreateSessionEvent; +/// Message sent to instruct backends to create an XR session. Only works when the [`XrState`] is [`Available`](XrState::Available). +#[derive(Message, Clone, Copy, Default)] +pub struct XrCreateSessionMessage; -/// A schedule thats ran whenever an [`XrCreateSessionEvent`] is recieved while the [`XrState`] is [`Available`](XrState::Available) +/// A schedule thats ran whenever an [`XrCreateSessionMessage`] is recieved while the [`XrState`] is [`Available`](XrState::Available) #[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, ScheduleLabel)] pub struct XrSessionCreated; -/// Event sent after the XrSession was created. -#[derive(Event, Clone, Copy, Default)] -pub struct XrSessionCreatedEvent; +/// Message sent after the XrSession was created. +#[derive(Message, Clone, Copy, Default)] +pub struct XrSessionCreatedMessage; -/// Event sent to instruct backends to destroy an XR session. Only works when the [`XrState`] is [`Exiting`](XrState::Exiting). -/// If you would like to request that a running session be destroyed, send the [`XrRequestExitEvent`] instead. -#[derive(Event, Clone, Copy, Default)] -pub struct XrDestroySessionEvent; +/// Message sent to instruct backends to destroy an XR session. Only works when the [`XrState`] is [`Exiting`](XrState::Exiting). +/// If you would like to request that a running session be destroyed, send the [`XrRequestExitMessage`] instead. +#[derive(Message, Clone, Copy, Default)] +pub struct XrDestroySessionMessage; /// Resource flag thats inserted into the world and extracted to the render world to inform any session resources in the render world to drop. #[derive(Resource, Clone, Default)] @@ -35,29 +50,29 @@ pub struct XrDestroySessionRender(pub Arc); #[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, ScheduleLabel)] pub struct XrPreDestroySession; -/// Event sent to instruct backends to begin an XR session. Only works when the [`XrState`] is [`Ready`](XrState::Ready). -#[derive(Event, Clone, Copy, Default)] -pub struct XrBeginSessionEvent; +/// Message sent to instruct backends to begin an XR session. Only works when the [`XrState`] is [`Ready`](XrState::Ready). +#[derive(Message, Clone, Copy, Default)] +pub struct XrBeginSessionMessage; /// Schedule thats ran when the XrSession has begun. #[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, ScheduleLabel)] pub struct XrPostSessionBegin; -/// Event sent to backends to end an XR session. Only works when the [`XrState`] is [`Stopping`](XrState::Stopping). -#[derive(Event, Clone, Copy, Default)] -pub struct XrEndSessionEvent; +/// Message sent to backends to end an XR session. Only works when the [`XrState`] is [`Stopping`](XrState::Stopping). +#[derive(Message, Clone, Copy, Default)] +pub struct XrEndSessionMessage; /// Schedule thats ran whenever the XrSession is about to end #[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, ScheduleLabel)] pub struct XrPreSessionEnd; -/// Event that is emitted when the XrSession is fully destroyed -#[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, Event)] -pub struct XrSessionDestroyedEvent; +/// Message that is emitted when the XrSession is fully destroyed +#[derive(Message, Clone, Copy, Default, PartialEq, Eq, Debug, Hash)] +pub struct XrSessionDestroyedMessage; -/// Event sent to backends to request the [`XrState`] proceed to [`Exiting`](XrState::Exiting) and for the session to be exited. Can be called at any time a session exists. -#[derive(Event, Clone, Copy, Default)] -pub struct XrRequestExitEvent; +/// Message sent to backends to request the [`XrState`] proceed to [`Exiting`](XrState::Exiting) and for the session to be exited. Can be called at any time a session exists. +#[derive(Message, Clone, Copy, Default)] +pub struct XrRequestExitMessage; /// Schedule ran before [`First`] to handle XR events. #[derive(Clone, Copy, Default, PartialEq, Eq, Debug, Hash, ScheduleLabel)] @@ -75,13 +90,13 @@ pub enum XrHandleEvents { /// System sets ran in the render world for XR. #[derive(Debug, Hash, PartialEq, Eq, Clone, Copy, SystemSet)] -pub enum XrRenderSet { - /// Ran before [`XrRenderSet::PreRender`] but after [`RenderSet::ExtractCommands`]. +pub enum XrRenderSystems { + /// Ran before [`XrRenderSet::PreRender`] but after [`RenderSystems::ExtractCommands`]. HandleEvents, /// For any XR systems needing to be ran before rendering begins. - /// Ran after [`XrRenderSet::HandleEvents`] but before every render set except [`RenderSet::ExtractCommands`]. + /// Ran after [`XrRenderSet::HandleEvents`] but before every render set except [`RenderSystems::ExtractCommands`]. PreRender, - /// For any XR systems needing to be ran after [`RenderSet::Render`] but before [`RenderSet::Cleanup`]. + /// For any XR systems needing to be ran after [`RenderSystems::Render`] but before [`RenderSystems::Cleanup`]. PostRender, } @@ -97,7 +112,8 @@ pub struct XrTrackingRoot; struct TrackingRootRes(Entity); /// Makes the entity a child of the XrTrackingRoot if the entity has no parent -#[derive(Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, Default, Component)] +#[derive(Clone, Copy, Hash, PartialEq, Eq, Debug, Default, Component)] +#[cfg_attr(feature = "reflect", derive(Reflect))] #[component(on_add = on_tracker_add)] pub struct XrTracker; fn on_tracker_add(mut world: DeferredWorld, HookContext { entity, .. }: HookContext) { @@ -122,15 +138,15 @@ impl Plugin for XrSessionPlugin { fn build(&self, app: &mut App) { app.init_resource::(); let mut xr_first = Schedule::new(XrFirst); - xr_first.set_executor_kind(bevy::ecs::schedule::ExecutorKind::Simple); - app.add_event::() - .add_event::() - .add_event::() - .add_event::() - .add_event::() - .add_event::() - .add_event::() - .add_event::() + xr_first.set_executor_kind(ExecutorKind::SingleThreaded); + app.add_message::() + .add_message::() + .add_message::() + .add_message::() + .add_message::() + .add_message::() + .add_message::() + .add_message::() .init_schedule(XrSessionCreated) .init_schedule(XrPreDestroySession) .init_schedule(XrPostSessionBegin) @@ -150,7 +166,7 @@ impl Plugin for XrSessionPlugin { .add_systems( XrFirst, exits_session_on_app_exit - .run_if(on_event::) + .run_if(on_message::) .run_if(session_created) .in_set(XrHandleEvents::ExitEvents), ); @@ -178,13 +194,13 @@ impl Plugin for XrSessionPlugin { .init_resource::() .add_systems( PostUpdate, - update_root_transform.after(TransformSystem::TransformPropagate), + update_root_transform.after(TransformSystems::Propagate), ) .add_systems( XrFirst, exits_session_on_app_exit .before(XrHandleEvents::ExitEvents) - .run_if(on_event::.and(session_running)), + .run_if(on_message::.and(session_running)), ); let render_app = app.sub_app_mut(RenderApp); @@ -194,33 +210,33 @@ impl Plugin for XrSessionPlugin { // .init_resource::() .configure_sets( Render, - (XrRenderSet::HandleEvents, XrRenderSet::PreRender).chain(), + (XrRenderSystems::HandleEvents, XrRenderSystems::PreRender).chain(), ) .configure_sets( Render, - XrRenderSet::HandleEvents.after(RenderSet::ExtractCommands), + XrRenderSystems::HandleEvents.after(RenderSystems::ExtractCommands), ) .configure_sets( Render, - XrRenderSet::PreRender - .before(RenderSet::ManageViews) - .before(RenderSet::PrepareAssets), + XrRenderSystems::PreRender + .before(RenderSystems::ManageViews) + .before(RenderSystems::PrepareAssets), ) .configure_sets( Render, - XrRenderSet::PostRender - .after(RenderSet::Render) - .before(RenderSet::Cleanup), + XrRenderSystems::PostRender + .after(RenderSystems::Render) + .before(RenderSystems::Cleanup), ); } } -fn exits_session_on_app_exit(mut request_exit: EventWriter) { +fn exits_session_on_app_exit(mut request_exit: MessageWriter) { request_exit.write_default(); } -/// Event sent by backends whenever [`XrState`] is changed. -#[derive(Event, Clone, Copy, Deref)] +/// Message sent by backends whenever [`XrState`] is changed. +#[derive(Message, Clone, Copy, Deref)] pub struct XrStateChanged(pub XrState); /// A resource in the main world and render world representing the current session state. @@ -229,17 +245,17 @@ pub struct XrStateChanged(pub XrState); pub enum XrState { /// An XR session is not available here Unavailable, - /// An XR session is available and ready to be created with an [`XrCreateSessionEvent`]. + /// An XR session is available and ready to be created with an [`XrCreateSessionMessage`]. Available, /// An XR session is created but not ready to begin. Backends are not required to use this state. Idle, - /// An XR session has been created and is ready to start rendering with an [`XrBeginSessionEvent`]. + /// An XR session has been created and is ready to start rendering with an [`XrBeginSessionMessage`]. Ready, - /// The XR session is running and can be stopped with an [`XrEndSessionEvent`]. + /// The XR session is running and can be stopped with an [`XrEndSessionMessage`]. Running, - /// The runtime has requested that the session should be ended with an [`XrEndSessionEvent`]. + /// The runtime has requested that the session should be ended with an [`XrEndSessionMessage`]. Stopping, - /// The XR session should be destroyed with an [`XrDestroySessionEvent`]. + /// The XR session should be destroyed with an [`XrDestroySessionMessage`]. Exiting { /// Whether we should automatically restart the session should_restart: bool, @@ -247,11 +263,11 @@ pub enum XrState { } pub fn auto_handle_session( - mut state_changed: EventReader, - mut create_session: EventWriter, - mut begin_session: EventWriter, - mut end_session: EventWriter, - mut destroy_session: EventWriter, + mut state_changed: MessageReader, + mut create_session: MessageWriter, + mut begin_session: MessageWriter, + mut end_session: MessageWriter, + mut destroy_session: MessageWriter, mut no_auto_restart: Local, ) { for XrStateChanged(state) in state_changed.read() { @@ -290,8 +306,8 @@ pub fn update_root_transform( /// A [`Condition`](bevy::ecs::schedule::Condition) that allows the system to run when the xr status changed to a specific [`XrStatus`]. pub fn status_changed_to( status: XrState, -) -> impl FnMut(EventReader) -> bool + Clone { - move |mut reader: EventReader| { +) -> impl FnMut(MessageReader) -> bool + Clone { + move |mut reader: MessageReader| { reader.read().any(|new_status| new_status.0 == status) } } @@ -332,5 +348,4 @@ macro_rules! state_matches { }; } -use bevy::transform::TransformSystem; pub use state_matches; diff --git a/crates/bevy_xr/src/spaces.rs b/crates/bevy_xr/src/spaces.rs index d3e1733..7f4eff9 100644 --- a/crates/bevy_xr/src/spaces.rs +++ b/crates/bevy_xr/src/spaces.rs @@ -1,7 +1,11 @@ -use bevy::{ - prelude::*, - render::{extract_component::ExtractComponent, extract_resource::ExtractResource}, -}; +use bevy_camera::visibility::Visibility; +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::{component::Component, message::Message, resource::Resource, schedule::SystemSet}; +use bevy_math::Vec3; +use bevy_render::{extract_component::ExtractComponent, extract_resource::ExtractResource}; +use bevy_transform::components::Transform; +#[cfg(feature="reflect")] +use bevy_reflect::Reflect; use crate::session::XrTracker; @@ -10,11 +14,13 @@ pub struct XrSpaceSyncSet; /// Any Spaces will be invalid after the owning session exits #[repr(transparent)] -#[derive(Component, Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, ExtractComponent)] +#[derive(Component, Clone, Copy, Hash, PartialEq, Eq, Debug, ExtractComponent)] +#[cfg_attr(feature = "reflect", derive(Reflect))] #[require(XrSpaceLocationFlags, Transform, Visibility, XrTracker)] pub struct XrSpace(u64); -#[derive(Component, Clone, Copy, Reflect, Debug, ExtractComponent, Default)] +#[derive(Component, Clone, Copy, Debug, ExtractComponent, Default)] +#[cfg_attr(feature = "reflect", derive(Reflect))] #[require(XrSpaceVelocityFlags)] pub struct XrVelocity { /// Velocity of a space relative to it's reference space @@ -34,32 +40,30 @@ impl XrVelocity { } } -#[derive(Event, Clone, Copy, Deref, DerefMut)] +#[derive(Message, Clone, Copy, Deref, DerefMut)] pub struct XrDestroySpace(pub XrSpace); #[repr(transparent)] -#[derive( - Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, Component, Deref, DerefMut, ExtractComponent, -)] +#[derive(Clone, Copy, Hash, PartialEq, Eq, Debug, Component, Deref, DerefMut, ExtractComponent)] +#[cfg_attr(feature = "reflect", derive(Reflect))] pub struct XrReferenceSpace(pub XrSpace); #[repr(transparent)] -#[derive( - Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, Resource, Deref, DerefMut, ExtractResource, -)] +#[derive(Clone, Copy, Hash, PartialEq, Eq, Debug, Resource, Deref, DerefMut, ExtractResource)] +#[cfg_attr(feature = "reflect", derive(Reflect))] pub struct XrPrimaryReferenceSpace(pub XrReferenceSpace); -#[derive( - Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, Component, ExtractComponent, Default, -)] +#[derive(Clone, Copy, Hash, PartialEq, Eq, Debug, Component, ExtractComponent, Default)] +#[cfg_attr(feature = "reflect", derive(Reflect))] pub struct XrSpaceLocationFlags { pub position_tracked: bool, pub rotation_tracked: bool, } #[derive( - Clone, Copy, Hash, PartialEq, Eq, Reflect, Debug, Component, ExtractComponent, Default, + Clone, Copy, Hash, PartialEq, Eq, Debug, Component, ExtractComponent, Default, )] +#[cfg_attr(feature = "reflect", derive(Reflect))] pub struct XrSpaceVelocityFlags { pub linear_valid: bool, pub angular_valid: bool, diff --git a/crates/bevy_xr/src/types.rs b/crates/bevy_xr/src/types.rs deleted file mode 100644 index 2ca073b..0000000 --- a/crates/bevy_xr/src/types.rs +++ /dev/null @@ -1,4 +0,0 @@ -use bevy::math::Isometry3d; - -#[deprecated = "Use Isometry3d instead"] -pub type XrPose = Isometry3d; diff --git a/crates/bevy_xr_utils/Cargo.toml b/crates/bevy_xr_utils/Cargo.toml index 092020e..e02fcd6 100644 --- a/crates/bevy_xr_utils/Cargo.toml +++ b/crates/bevy_xr_utils/Cargo.toml @@ -9,12 +9,20 @@ description = "utils for bevy_mod_xr and bevy_mod_openxr" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -bevy = { workspace = true, features = ["bevy_gizmos"] } +# bevy = { workspace = true, features = ["bevy_gizmos"] } bevy_mod_xr.workspace = true bevy_mod_openxr.workspace = true +bevy_ecs.workspace=true +bevy_app.workspace=true +bevy_transform.workspace=true +bevy_color.workspace=true +bevy_gizmos.workspace=true +bevy_log.workspace=true +bevy_derive.workspace=true +bevy_math.workspace=true [dev-dependencies] -bevy = { workspace = true, default-features = true } +bevy.workspace = true [target.'cfg(not(target_family = "wasm"))'.dependencies] openxr.workspace = true diff --git a/crates/bevy_xr_utils/examples/actions.rs b/crates/bevy_xr_utils/examples/actions.rs index 0f58fb5..c636849 100644 --- a/crates/bevy_xr_utils/examples/actions.rs +++ b/crates/bevy_xr_utils/examples/actions.rs @@ -3,7 +3,7 @@ use bevy::{math::vec3, prelude::*}; use bevy_mod_openxr::{add_xr_plugins, helper_traits::ToQuat, resources::OxrViews}; use bevy_mod_xr::session::XrTrackingRoot; use bevy_xr_utils::xr_utils_actions::{ - ActiveSet, XRUtilsAction, XRUtilsActionSet, XRUtilsActionState, XRUtilsActionSystemSet, + ActiveSet, XRUtilsAction, XRUtilsActionSet, XRUtilsActionState, XRUtilsActionSystems, XRUtilsActionsPlugin, XRUtilsBinding, }; @@ -14,7 +14,7 @@ fn main() { .add_systems(Startup, setup_scene) .add_systems( Startup, - create_action_entities.before(XRUtilsActionSystemSet::CreateEvents), + create_action_entities.before(XRUtilsActionSystems::CreateEvents), ) .add_plugins(XRUtilsActionsPlugin) .add_systems(Update, read_action_with_marker_component) diff --git a/crates/bevy_xr_utils/examples/transform_utils.rs b/crates/bevy_xr_utils/examples/transform_utils.rs index 029c02f..c6c3f2e 100644 --- a/crates/bevy_xr_utils/examples/transform_utils.rs +++ b/crates/bevy_xr_utils/examples/transform_utils.rs @@ -4,7 +4,7 @@ use bevy::prelude::*; use bevy_mod_openxr::add_xr_plugins; use bevy_xr_utils::transform_utils::{self, SnapToPosition, SnapToRotation}; use bevy_xr_utils::xr_utils_actions::{ - ActiveSet, XRUtilsAction, XRUtilsActionSet, XRUtilsActionState, XRUtilsActionSystemSet, + ActiveSet, XRUtilsAction, XRUtilsActionSet, XRUtilsActionState, XRUtilsActionSystems, XRUtilsActionsPlugin, XRUtilsBinding, }; @@ -17,15 +17,15 @@ fn main() -> AppExit { .add_plugins(XRUtilsActionsPlugin) .add_systems( Startup, - create_action_entities.before(XRUtilsActionSystemSet::CreateEvents), + create_action_entities.before(XRUtilsActionSystems::CreateEvents), ) .add_systems( Update, - send_look_at_red_cube_event.after(XRUtilsActionSystemSet::SyncActionStates), + send_look_at_red_cube_event.after(XRUtilsActionSystems::SyncActionStates), ) .add_systems( Update, - send_recenter.after(XRUtilsActionSystemSet::SyncActionStates), + send_recenter.after(XRUtilsActionSystems::SyncActionStates), ) .insert_resource(AmbientLight { brightness: 500.0, diff --git a/crates/bevy_xr_utils/src/generic_tracker.rs b/crates/bevy_xr_utils/src/generic_tracker.rs index 59617de..71ad410 100644 --- a/crates/bevy_xr_utils/src/generic_tracker.rs +++ b/crates/bevy_xr_utils/src/generic_tracker.rs @@ -1,4 +1,8 @@ -use bevy::{color::palettes::css, prelude::*}; +use bevy_app::{App, Plugin, PostUpdate}; +use bevy_color::palettes::css; +use bevy_ecs::{component::Component, query::With, schedule::IntoScheduleConfigs as _, system::Query}; +use bevy_gizmos::gizmos::Gizmos; +use bevy_transform::{TransformSystems, components::{GlobalTransform, Transform}}; #[derive(Clone, Copy, Component)] #[require(Transform)] @@ -8,10 +12,7 @@ pub struct GenericTrackerGizmoPlugin; impl Plugin for GenericTrackerGizmoPlugin { fn build(&self, app: &mut App) { - app.add_systems( - PostUpdate, - draw_gizmos.after(TransformSystem::TransformPropagate), - ); + app.add_systems(PostUpdate, draw_gizmos.after(TransformSystems::Propagate)); } } diff --git a/crates/bevy_xr_utils/src/mndx_xdev_spaces_trackers.rs b/crates/bevy_xr_utils/src/mndx_xdev_spaces_trackers.rs index 63401ed..2726941 100644 --- a/crates/bevy_xr_utils/src/mndx_xdev_spaces_trackers.rs +++ b/crates/bevy_xr_utils/src/mndx_xdev_spaces_trackers.rs @@ -1,6 +1,9 @@ use std::convert::identity; -use bevy::prelude::*; +use bevy_app::{App, Plugin, PreUpdate}; +use bevy_derive::{Deref, DerefMut}; +use bevy_ecs::{component::Component, entity::Entity, query::With, resource::Resource, schedule::{IntoScheduleConfigs as _, common_conditions::resource_exists}, system::{Commands, Query, Res, ResMut}}; +use bevy_log::{error, info}; use bevy_mod_openxr::{ resources::{OxrInstance, OxrSystemId}, session::OxrSession, diff --git a/crates/bevy_xr_utils/src/tracking_utils.rs b/crates/bevy_xr_utils/src/tracking_utils.rs index 7ef9767..1c7cbe4 100644 --- a/crates/bevy_xr_utils/src/tracking_utils.rs +++ b/crates/bevy_xr_utils/src/tracking_utils.rs @@ -1,4 +1,13 @@ -use bevy::prelude::*; +use bevy_app::{App, Plugin, PreUpdate, Startup}; +use bevy_ecs::{ + component::Component, + message::MessageWriter, + query::{With, Without}, + resource::Resource, + schedule::IntoScheduleConfigs as _, + system::{Commands, Query, Res}, +}; +use bevy_math::{EulerRot, Isometry3d, Quat}; use bevy_mod_openxr::{ action_binding::OxrSuggestActionBinding, action_set_attaching::OxrAttachActionSet, @@ -13,6 +22,7 @@ use bevy_mod_xr::{ session::{XrSessionCreated, XrTracker, XrTrackingRoot}, spaces::{XrPrimaryReferenceSpace, XrReferenceSpace, XrSpaceSyncSet}, }; +use bevy_transform::components::Transform; use openxr::Posef; //exernal api @@ -203,14 +213,9 @@ fn spawn_tracking_rig( ) { //head let head_space = session - .create_reference_space(openxr::ReferenceSpaceType::VIEW, Transform::IDENTITY) + .create_reference_space(openxr::ReferenceSpaceType::VIEW, Isometry3d::IDENTITY) .unwrap(); - cmds.spawn(( - Transform::default(), - Visibility::default(), - XrTracker, - HeadXRSpace(head_space), - )); + cmds.spawn((Transform::default(), XrTracker, HeadXRSpace(head_space))); // let local_floor = cmds.spawn((SpatialBundle::default(), LocalFloor)).id(); let left_space = session @@ -227,7 +232,7 @@ fn spawn_tracking_rig( //TODO figure out how to make these better, specifically not be controller specific pub fn suggest_action_bindings( actions: Res, - mut bindings: EventWriter, + mut bindings: MessageWriter, ) { bindings.write(OxrSuggestActionBinding { action: actions.left.as_raw(), @@ -241,11 +246,11 @@ pub fn suggest_action_bindings( }); } -fn sync_actions(actions: Res, mut sync: EventWriter) { +fn sync_actions(actions: Res, mut sync: MessageWriter) { sync.write(OxrSyncActionSet(actions.set.clone())); } -fn attach_set(actions: Res, mut attach: EventWriter) { +fn attach_set(actions: Res, mut attach: MessageWriter) { attach.write(OxrAttachActionSet(actions.set.clone())); } diff --git a/crates/bevy_xr_utils/src/transform_utils.rs b/crates/bevy_xr_utils/src/transform_utils.rs index 2c126d8..90c57e1 100644 --- a/crates/bevy_xr_utils/src/transform_utils.rs +++ b/crates/bevy_xr_utils/src/transform_utils.rs @@ -1,32 +1,36 @@ -use bevy::prelude::*; +use bevy_app::{App, Plugin, PostUpdate}; +use bevy_ecs::{message::{Message, MessageReader}, query::With, system::{Query, ResMut}}; +use bevy_log::debug; +use bevy_math::{Quat, Vec3}; use bevy_mod_openxr::{ helper_traits::{ToQuat, ToVec3}, resources::OxrViews, }; use bevy_mod_xr::session::XrTrackingRoot; +use bevy_transform::components::Transform; pub struct TransformUtilitiesPlugin; impl Plugin for TransformUtilitiesPlugin { fn build(&self, app: &mut App) { - app.add_event::(); - app.add_event::(); + app.add_message::(); + app.add_message::(); app.add_systems(PostUpdate, handle_transform_events); } } //events -#[derive(Event, Debug)] +#[derive(Message, Debug)] pub struct SnapToRotation(pub Quat); -#[derive(Event, Debug)] +#[derive(Message, Debug)] pub struct SnapToPosition(pub Vec3); pub fn handle_transform_events( mut root_query: Query<&mut Transform, With>, views: ResMut, - mut position_reader: EventReader, - mut rotation_reader: EventReader, + mut position_reader: MessageReader, + mut rotation_reader: MessageReader, ) { let result = root_query.single_mut(); match result { @@ -52,11 +56,11 @@ pub fn handle_transform_events( let root_rot = root_transform.rotation; let view_global_rotation = root_rot.mul_quat(view_rot).normalize(); let (global_view_yaw, _pitch, _roll) = - view_global_rotation.to_euler(bevy::math::EulerRot::YXZ); + view_global_rotation.to_euler(bevy_math::EulerRot::YXZ); let up = Vec3::Y; for rotation in rotation_reader.read() { let (target_yaw, _pitch, _roll) = - rotation.0.normalize().to_euler(bevy::math::EulerRot::YXZ); + rotation.0.normalize().to_euler(bevy_math::EulerRot::YXZ); let diff_yaw = target_yaw - global_view_yaw; //build a rotation quat? diff --git a/crates/bevy_xr_utils/src/xr_utils_actions.rs b/crates/bevy_xr_utils/src/xr_utils_actions.rs index 09d6ac7..000de06 100644 --- a/crates/bevy_xr_utils/src/xr_utils_actions.rs +++ b/crates/bevy_xr_utils/src/xr_utils_actions.rs @@ -53,7 +53,9 @@ //! } //! //! -use bevy::prelude::*; +use bevy_app::{App, Plugin, PreUpdate, Startup, Update}; +use bevy_ecs::{component::Component, entity::Entity, hierarchy::Children, message::MessageWriter, query::With, schedule::{IntoScheduleConfigs as _, SystemSet}, system::{Commands, Query, Res, ResMut}}; +use bevy_log::info; use bevy_mod_openxr::{ action_binding::OxrSuggestActionBinding, action_set_attaching::OxrAttachActionSet, @@ -71,16 +73,16 @@ impl Plugin for XRUtilsActionsPlugin { fn build(&self, app: &mut App) { app.configure_sets( Startup, - XRUtilsActionSystemSet::CreateEvents.run_if(openxr_session_available), + XRUtilsActionSystems::CreateEvents.run_if(openxr_session_available), ); app.configure_sets( PreUpdate, - XRUtilsActionSystemSet::SyncActionStates.run_if(openxr_session_running), + XRUtilsActionSystems::SyncActionStates.run_if(openxr_session_running), ); app.add_systems( Startup, create_openxr_events - .in_set(XRUtilsActionSystemSet::CreateEvents) + .in_set(XRUtilsActionSystems::CreateEvents) .run_if(openxr_session_available), ); app.add_systems( @@ -91,21 +93,21 @@ impl Plugin for XRUtilsActionsPlugin { PreUpdate, sync_and_update_action_states_f32 .run_if(openxr_session_running) - .in_set(XRUtilsActionSystemSet::SyncActionStates) + .in_set(XRUtilsActionSystems::SyncActionStates) .after(OxrActionSetSyncSet), ); app.add_systems( PreUpdate, sync_and_update_action_states_bool .run_if(openxr_session_running) - .in_set(XRUtilsActionSystemSet::SyncActionStates) + .in_set(XRUtilsActionSystems::SyncActionStates) .after(OxrActionSetSyncSet), ); app.add_systems( PreUpdate, sync_and_update_action_states_vector .run_if(openxr_session_running) - .in_set(XRUtilsActionSystemSet::SyncActionStates) + .in_set(XRUtilsActionSystems::SyncActionStates) .after(OxrActionSetSyncSet), ); } @@ -116,8 +118,8 @@ fn create_openxr_events( actions_query: Query<(&XRUtilsAction, &Children)>, bindings_query: Query<&XRUtilsBinding>, instance: ResMut, - mut binding_writer: EventWriter, - mut attach_writer: EventWriter, + mut binding_writer: MessageWriter, + mut attach_writer: MessageWriter, mut commands: Commands, ) { //lets create some sets! @@ -131,7 +133,7 @@ fn create_openxr_events( commands.entity(id).insert(oxr_action_set); //since the actions are made from the sets lets go - for child in children.iter() { + for child in children.iter().copied() { //first get the action entity and stuff let (create_action, bindings) = actions_query.get(child).unwrap(); //lets create dat action @@ -158,7 +160,7 @@ fn create_openxr_events( }), )); //since we need actions for bindings lets go!! - for bind in bindings.iter() { + for bind in bindings.iter().copied() { //interaction profile //get the binding entity and stuff let create_binding = bindings_query.get(bind).unwrap(); @@ -197,7 +199,7 @@ fn create_openxr_events( }), )); //since we need actions for bindings lets go!! - for bind in bindings.iter() { + for bind in bindings.iter().copied() { //interaction profile //get the binding entity and stuff let create_binding = bindings_query.get(bind).unwrap(); @@ -236,7 +238,7 @@ fn create_openxr_events( }), )); //since we need actions for bindings lets go!! - for bind in bindings.iter() { + for bind in bindings.iter().copied() { //interaction profile //get the binding entity and stuff let create_binding = bindings_query.get(bind).unwrap(); @@ -260,7 +262,7 @@ fn create_openxr_events( } fn sync_active_action_sets( - mut sync_set: EventWriter, + mut sync_set: MessageWriter, active_action_set_query: Query<&XRUtilsActionSetReference, With>, ) { for set in &active_action_set_query { @@ -344,7 +346,7 @@ fn sync_and_update_action_states_vector( } #[derive(Debug, Hash, PartialEq, Eq, Clone, Copy, SystemSet)] -pub enum XRUtilsActionSystemSet { +pub enum XRUtilsActionSystems { /// Runs in Startup CreateEvents, /// Runs in PreUpdate