Commit: fae0c08
Parent: 0944c13

Position virtual window relative to physical monitor/window

Mårten Åsberg committed on 2026-10-03 at 16:33
Cargo.lock +247 -234
diff --git a/Cargo.lock b/Cargo.lock
index 6a742b9..a25dc2d 100644
@@ -165,7 +165,7 @@ dependencies = [
"ndk-context",
"ndk-sys",
"num_enum",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
@@ -236,7 +236,7 @@ version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -247,7 +247,7 @@ checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [
"anstyle",
"once_cell_polyfill",
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -444,9 +444,9 @@ checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
[[package]]
name = "bevy"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "396e1587b1079514a3267154bb9f5c2988bf9a28110044738223b6a1978d0397"
checksum = "58ef8c940e975677de2bc02af8bc3892f568640a3d371159f65d443bcb57ad90"
dependencies = [
"bevy_dylib",
"bevy_internal",
@@ -454,9 +454,9 @@ dependencies = [
[[package]]
name = "bevy_a11y"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e07580818ea11f9bc4b29b5ccc2bacefb15de329680aed6b2fcee6c0c0694a1c"
checksum = "2342145be5f563546b9f05066aea8b265cbb71908238a439ca21326bea6dea02"
dependencies = [
"accesskit",
"bevy_app",
@@ -467,18 +467,18 @@ dependencies = [
[[package]]
name = "bevy_android"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8240a1058603a1ff814a6d2c560af651723d2c57cdb7c99f139ce85b5bdc8afb"
checksum = "368f3e26f8841958f40f5cfc09ccdb8ca74b6621273e19aaad483a12410bd80e"
dependencies = [
"android-activity",
]
[[package]]
name = "bevy_animation"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbe401f8c7cb0168de7ed14eb94acb3a2ef32b715d5c70f0ecb28761494cff9e"
checksum = "4fa54a2f1e7e4cd6940240c5af653ac59f575767924ffe0b68e43b41cc4a93e3"
dependencies = [
"bevy_animation_macros",
"bevy_app",
@@ -503,7 +503,7 @@ dependencies = [
"ron",
"serde",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"thread_local",
"tracing",
"uuid",
@@ -511,9 +511,9 @@ dependencies = [
[[package]]
name = "bevy_animation_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1bd4958be946e31fc90788173f3076854f3a648e4607f4a16745a288f19bedf"
checksum = "9d21f29584768b88c8e7de37417ffc6e6ccbfb5dc725e9f35c7caca73c71c5e2"
dependencies = [
"bevy_macro_utils",
"quote",
@@ -522,9 +522,9 @@ dependencies = [
[[package]]
name = "bevy_anti_alias"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cb19ef8a301ff4ade7cf1df627735f476f339927a48fe2e922b531cf47140cb"
checksum = "b5e8bb27b7a73ece83bb9b0e14b96a422831bd1a0360364e535195a33edf913d"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -545,9 +545,9 @@ dependencies = [
[[package]]
name = "bevy_app"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "964978b1f1ffd37d4feeb0e5814c0ac742423dce0a84c2435fe11d97ea8d4ca9"
checksum = "e2fe0ed3c8f4f1aac72b9e7a24d2d8a2ddaad13144c13ed9267820eb00b60850"
dependencies = [
"bevy_derive",
"bevy_ecs",
@@ -559,7 +559,7 @@ dependencies = [
"ctrlc",
"downcast-rs 2.0.2",
"log",
"thiserror 2.0.20",
"thiserror 2.0.21",
"variadics_please",
"wasm-bindgen",
"web-sys",
@@ -567,9 +567,9 @@ dependencies = [
[[package]]
name = "bevy_asset"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a074324bb50ff2bca1d0782cc0da9d826e7b21037599a2d0b412670ba32fe7d2"
checksum = "32c080e7c6f81adccc68c12cc8e380c83b07c62b368f5d4f43fd3bb1d01ec83f"
dependencies = [
"async-broadcast",
"async-channel",
@@ -600,7 +600,7 @@ dependencies = [
"ron",
"serde",
"stackfuture",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"uuid",
"wasm-bindgen",
@@ -610,9 +610,9 @@ dependencies = [
[[package]]
name = "bevy_asset_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8090e18cf1225e27e29a3f40952fe1820b55d5aca4958fc22ecc861b4fbc3582"
checksum = "f406a23d8ff47c5fde25045843717fb39bc91ac24285e2cb97ce17f384d186be"
dependencies = [
"bevy_macro_utils",
"proc-macro2",
@@ -622,9 +622,9 @@ dependencies = [
[[package]]
name = "bevy_audio"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fbcc4c2b0b44045fa8041e799fc086f226d52af97f5c97848ec2dd3e2193f91"
checksum = "4b7b52b8ee4650189ea997c046c8b78af1252d59670f16de04eca82afc8d9216"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -638,9 +638,9 @@ dependencies = [
[[package]]
name = "bevy_camera"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0eb22c483d0c030918b414832545f4b6b29e8a62837b16d0f70528f749fe2da"
checksum = "cc5925ac06cbb457cb86159cdacf8892a9d87472fdc24c548cacb8431f573cbc"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -659,15 +659,15 @@ dependencies = [
"downcast-rs 2.0.2",
"serde",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"wgpu-types",
]
[[package]]
name = "bevy_clipboard"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4987dd9dc4dfba75efdda80f0a1224cc4ec3a53d435d1c13181733e5ecda199b"
checksum = "b9e12716395dfcb405555b181d23e70de7291060589c9ce93f6e8b89d4dfb697"
dependencies = [
"arboard",
"bevy_app",
@@ -681,9 +681,9 @@ dependencies = [
[[package]]
name = "bevy_color"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e882b611596ba70052a313c36ed3b6c889bb7900f25af92dc6c81277eac71cf7"
checksum = "fa9745a537a030adee369258cecbfe50a4fd22df4cce41ca61a768ead6adf5db"
dependencies = [
"bevy_curve",
"bevy_math",
@@ -692,15 +692,15 @@ dependencies = [
"derive_more",
"encase",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"wgpu-types",
]
[[package]]
name = "bevy_core_pipeline"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "838602ee816ce4d6ab6226e7a39c2699a456f00a0e5f67e7e2f999a40a274753"
checksum = "3b2c9e70f42001550ebb1423864340b930de50b64f6b406ffffd04233a8ef7ff"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -728,24 +728,24 @@ dependencies = [
[[package]]
name = "bevy_curve"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1c7244805e50e704d90863b5fc803a832c90a2d84ae592e8f223fc828e6c0e09"
checksum = "a99e9de55de4126730314fd17f52afa2c5e19e79e3992a6c678c14a844957c9f"
dependencies = [
"approx",
"bevy_math",
"bevy_reflect",
"itertools 0.14.0",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"variadics_please",
]
[[package]]
name = "bevy_derive"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d82daafb39a96cbe8f9db5f393d13b4c47c6505188f3e0cf324fe3ddcd63d14"
checksum = "b45c93a5829afaafa1f1c43b1a1a7cb781aab8d4254a6f7dcae1ea90c1c1a350"
dependencies = [
"bevy_macro_utils",
"quote",
@@ -754,9 +754,9 @@ dependencies = [
[[package]]
name = "bevy_dev_tools"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c503382da3b68626f4222cdef9f19219fe86a684aec9ce1bc9c175b32fad307"
checksum = "a620da099f25a77959b5728faa15abe01b1cfafabfd67da092b1e02444af857e"
dependencies = [
"bevy_animation",
"bevy_app",
@@ -792,9 +792,9 @@ dependencies = [
[[package]]
name = "bevy_diagnostic"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a720a0fdb72d4f8ac65b4b16cdcce0150a07bfb34dcbff86be0baa599d01017f"
checksum = "23e0c5119274904372c6905cacb30a10e6fb15eefe0744a5fbea40ff5fbba646"
dependencies = [
"atomic-waker",
"bevy_app",
@@ -810,18 +810,18 @@ dependencies = [
[[package]]
name = "bevy_dylib"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f399049780f1987d6e8cc95e075e2b350417730182afe531b9f16824a075f864"
checksum = "2d488b53bf9498580cabb197f59c6d9c7c55fd6ac83eefde88f9326c0e08bcba"
dependencies = [
"bevy_internal",
]
[[package]]
name = "bevy_ecs"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "336c56027498f943ec97292fafe30f072fd2241c4da9237a735dddb91166fd81"
checksum = "d1d1e82ccbd177a344487fff86aa418501f0f1de16377244b052063d99d72e1e"
dependencies = [
"arrayvec",
"bevy_ecs_macros",
@@ -838,18 +838,19 @@ dependencies = [
"indexmap",
"log",
"nonmax",
"rand",
"serde",
"slotmap",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"variadics_please",
]
[[package]]
name = "bevy_ecs_macro_logic"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0db6aea26810c09e39c094bd0cca992bb058eeb28509d14997e01d2d531377bd"
checksum = "7aaebc9c4c1c1dbb97d61dae889719046f1866a29289bed17c1d51ee20b33c3e"
dependencies = [
"bevy_macro_utils",
"proc-macro2",
@@ -859,9 +860,9 @@ dependencies = [
[[package]]
name = "bevy_ecs_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c17762fae975901bef29eee67634120575bfb82765d5c283ad925fc7c1dfff7"
checksum = "3082d69ef29b708fc4fb8a4a4ce5e69cd702402497347836414f100dbd5b488c"
dependencies = [
"bevy_ecs_macro_logic",
"bevy_macro_utils",
@@ -872,9 +873,9 @@ dependencies = [
[[package]]
name = "bevy_encase_derive"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d5c689175054baf99319f9e5e379cf9ff0a77200adb42de4d97610ec03de2760"
checksum = "d9952ccb38f76947d263328c9801c201b26e4ab5c061fc9ac05a87ccf86b71fb"
dependencies = [
"bevy_macro_utils",
"encase_derive_impl",
@@ -882,9 +883,9 @@ dependencies = [
[[package]]
name = "bevy_extract"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3db5c0a281cb7555ca6778936d7b6e585038128667e67c977e2e67302ff36510"
checksum = "b234c64584dfb52e751fecdb789f02d38be25ffc095cb267f6b9edc7a8e8dd1a"
dependencies = [
"bevy_app",
"bevy_camera",
@@ -900,9 +901,9 @@ dependencies = [
[[package]]
name = "bevy_extract_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0faffc62b206fed5c6c83a099ea0e322eb3d32ca4c1691432f041dc8358ef1f6"
checksum = "2bf9b2a03c34389eb761901872419b439ce991f84c55f23b6c9f697ff641bf34"
dependencies = [
"bevy_macro_utils",
"proc-macro2",
@@ -912,9 +913,9 @@ dependencies = [
[[package]]
name = "bevy_feathers"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c53f92b53fa12ff014fc56324963ac7e556aa49175940bda39645006d3c1f2c3"
checksum = "ecf11d4c3dd48e1d68a7bd840eaa4d0212131539985362b9cf8400e1da7e16bf"
dependencies = [
"accesskit",
"bevy_a11y",
@@ -944,9 +945,9 @@ dependencies = [
[[package]]
name = "bevy_gilrs"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e4b4d597078d5bf0f0ef2859119d280bc112b7fd7e07629d63d44478a4369ad"
checksum = "a25d4688d4726e952a8edc670fc74f745f3676e376aed08cc85b92d8cc0263db"
dependencies = [
"bevy_app",
"bevy_ecs",
@@ -954,15 +955,15 @@ dependencies = [
"bevy_platform",
"bevy_time",
"gilrs",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
]
[[package]]
name = "bevy_gizmos"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9290a7947a332f18dc749246940cffebf8df198757b11ca421a52710b8bbfa02"
checksum = "26896d90aed072ad6e284b5235fcb2f860e46051fa7b9448cf7e1022952062e8"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -985,9 +986,9 @@ dependencies = [
[[package]]
name = "bevy_gizmos_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e48d960180532269e05cf7d8f948f987d1b6b8194df6f62797fe4936aebe4a4f"
checksum = "dc6d828be5bf8a35a89644b9d80440cc235755bbd2cdedc1f60d0f069b836224"
dependencies = [
"bevy_macro_utils",
"quote",
@@ -996,9 +997,9 @@ dependencies = [
[[package]]
name = "bevy_gizmos_render"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f791ae1d08c2d31bb40a13dd17cd09defc6ddfa30465f408ae78d3d7263a1993"
checksum = "a6dd8184ff6cfc4f0ec19fd994e968b47c1fa5e000b81cdda4eef7b2a50196ad"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1027,9 +1028,9 @@ dependencies = [
[[package]]
name = "bevy_gltf"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a03caf767c31b308707c2a7362d3531f6aa50672c80b5264e939e925df29442b"
checksum = "93accfdc3f3d8f785b4548e7d203de4830ac3b0ce53c5e1187d3522761fd4ec5"
dependencies = [
"async-lock",
"base64",
@@ -1057,16 +1058,16 @@ dependencies = [
"serde",
"serde_json",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"wgpu-types",
]
[[package]]
name = "bevy_image"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c905e33d22e359cdd63e60d9a348a4f2776a0a106ba4ec803457171499bdbca6"
checksum = "dd702305135f9fe35750ab7ab8bf224aa885d9e65b9e501e0de8863651c814c8"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1086,16 +1087,16 @@ dependencies = [
"rectangle-pack",
"ruzstd",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"wgpu-types",
]
[[package]]
name = "bevy_input"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6f25a8af4c4638923dc7013d42fe2fe6a870f665ad8a6efd155cc1992616a4f"
checksum = "8dd1b66c8e92c9a547a0ecfa8492a2b02364e84ed556b1bb51bd80cdd2c6f437"
dependencies = [
"bevy_app",
"bevy_ecs",
@@ -1105,14 +1106,14 @@ dependencies = [
"derive_more",
"log",
"smol_str",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
name = "bevy_input_focus"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa45d4f867e98a3b97cf2a0e74932a1fd8a0ae07d9aa9be5c882ae63ac7db5c8"
checksum = "bfecf7f8de29f215c1e5132a68b299cc3213cb29d92d603bad9ab026809dbf4d"
dependencies = [
"bevy_app",
"bevy_camera",
@@ -1123,14 +1124,14 @@ dependencies = [
"bevy_reflect",
"bevy_window",
"log",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
name = "bevy_internal"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc01c57336c5c4d7ddbc56aea342e89520833a182644cc8c05ba8ca57a90ca98"
checksum = "e4b497476fa6c5c72b1b610165f4e4b42da566db9c70698f9407dafe65ea8abb"
dependencies = [
"bevy_a11y",
"bevy_android",
@@ -1190,9 +1191,9 @@ dependencies = [
[[package]]
name = "bevy_light"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f555cf297a7f8e40f3cd2c29b95b5259bdc487ef970892fd3aed2af9e21f2fd"
checksum = "0bc5b5af22aa7380852dcab45c71a77f6c94d98436e93e903e06c5fdf861cc77"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1218,9 +1219,9 @@ dependencies = [
[[package]]
name = "bevy_log"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ca1f463938089fd503ff493be5c566e9ab2d873a5fe5323934451b3b0a49a58"
checksum = "f91f41282a873dfa9fa82b5ae6c1b466317d42f010cf667fd67fc866eaf3d7bd"
dependencies = [
"android_log-sys",
"bevy_app",
@@ -1236,9 +1237,9 @@ dependencies = [
[[package]]
name = "bevy_macro_utils"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4e56c1eb75e35a61c95bf5638d52c18fb77aee91701ab809ae8224eac830d2c4"
checksum = "d178856e3a91a946a2f42bb4855474a9e1d2d767d0834e7bf180cb0199e145b7"
dependencies = [
"proc-macro2",
"quote",
@@ -1248,9 +1249,9 @@ dependencies = [
[[package]]
name = "bevy_material"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acd94ed0ad8c8ffef06405c7fe778da5e81f02500c3f949fae515e68120ee1d6"
checksum = "1d036df8f7906464d32990025ac217f1154d22e2a8aecbc5d5ec1c9801344940"
dependencies = [
"bevy_asset",
"bevy_derive",
@@ -1263,7 +1264,7 @@ dependencies = [
"bevy_utils",
"encase",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"variadics_please",
"wgpu-types",
@@ -1271,9 +1272,9 @@ dependencies = [
[[package]]
name = "bevy_material_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "16006972a2a93b336ad221c215006b3b23437bfd0bb43675d3402ab5e1e8e9ff"
checksum = "c06aef47528c6cc49dfc0f76bdf93e274aa1d07436af1c5925555a6daebb1dbd"
dependencies = [
"bevy_macro_utils",
"quote",
@@ -1282,9 +1283,9 @@ dependencies = [
[[package]]
name = "bevy_math"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0c8099a2a51ead7b2e3b5df25b2440afd72eec2652bbaff8a24553db2a65e5b"
checksum = "6123f38b9c25f860b3d333bfa42e41a5fea1f47969480b2f7154b578ebecc966"
dependencies = [
"approx",
"bevy_reflect",
@@ -1293,15 +1294,15 @@ dependencies = [
"libm",
"rand",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"variadics_please",
]
[[package]]
name = "bevy_mesh"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1fbd374d868762e7f35f0a551b480e173f36042465407aa070da6a547d3b4a6c"
checksum = "b02dff8bb23766a6bd6684f61ca6d1c569d32ea91a0fd2fd136faf1b6ea96cf1"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1322,7 +1323,7 @@ dependencies = [
"half",
"hexasphere",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"wgpu-types",
]
@@ -1335,9 +1336,9 @@ checksum = "bff34eb29ff4b8a8688bc7299f14fb6b597461ca80fec03ed7d22939ab33e48f"
[[package]]
name = "bevy_pbr"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1af98f47d1a1337f709e762ed07fcae5a4db8fad5c25813b33e986bbef7490ea"
checksum = "69a4a0e861abccd2ff8c655415ab3981f401a83b930a4c5c7227a0b6297f709e"
dependencies = [
"arrayvec",
"bevy_app",
@@ -1373,16 +1374,16 @@ dependencies = [
"offset-allocator",
"smallvec",
"static_assertions",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"wgpu-types",
]
[[package]]
name = "bevy_picking"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e84c90cc45bddce3a48a72712647db151ce1a2e52dc0618b6ff7508ccb6acfc0"
checksum = "cf702aab0222bea88462d779b4e78d3c25466a4dcbfbe7ffb8c085b3a2ef53f8"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1405,9 +1406,9 @@ dependencies = [
[[package]]
name = "bevy_platform"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fea429ddbd84d2c2d83f179c101e30e4e3e9936873732fe2ad6aa599d3ca3cd"
checksum = "b7ca327d3f991caf81875867d2e975e24b8785d813062a4da78af98615a78e68"
dependencies = [
"bytemuck",
"critical-section",
@@ -1423,14 +1424,14 @@ dependencies = [
"wasm-bindgen",
"wasm-bindgen-futures",
"web-time",
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
name = "bevy_post_process"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30e87e7b160abec6c1422ff8251104a7dcb7bdad500023e6ebf576b47d44b19"
checksum = "6c48f3ae7c687fb7138e6f0da8237ad8b27438abd19ce6cb5348ca9237dc5093"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1449,21 +1450,21 @@ dependencies = [
"bevy_shader",
"bevy_utils",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
]
[[package]]
name = "bevy_ptr"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12e5f31b88040abbbb6ba5ce01a1a08c7e47b6c98e085739d3463f17b6ce43bc"
checksum = "4c0a2bf291fc984fb36134687ee245e932a4c48e2e8bf4e68bb98044471476d6"
[[package]]
name = "bevy_reflect"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbe473c05cdeea8f27f7f3db04ed6b6fbc4c45b4f6c0f6082bdd807e1ceaf1fb"
checksum = "8cc3b94ab8bfc35a6073831125f2c158b4c2f2933c3acf7409406a453c8fda8b"
dependencies = [
"assert_type_match",
"bevy_platform",
@@ -1482,7 +1483,7 @@ dependencies = [
"serde",
"smallvec",
"smol_str",
"thiserror 2.0.20",
"thiserror 2.0.21",
"uuid",
"variadics_please",
"wgpu-types",
@@ -1490,9 +1491,9 @@ dependencies = [
[[package]]
name = "bevy_reflect_derive"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3074678c132bf8c88edcca22ae9079f6b38b199752d0e98232a30651841887ec"
checksum = "842e47e334b545afee95266e5a2421804c12270e732fb7a41295a8d8b8dabc6f"
dependencies = [
"bevy_macro_utils",
"indexmap",
@@ -1504,9 +1505,9 @@ dependencies = [
[[package]]
name = "bevy_render"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "627187515bcd73d029da0dd8cd87cfdf25ee61b91b08a1143c97926b78399713"
checksum = "85dec5029f3bd8ca09f584f24df77d1bd096906062aa4377bc8af95d60f50136"
dependencies = [
"async-channel",
"bevy_app",
@@ -1550,7 +1551,7 @@ dependencies = [
"send_wrapper",
"smallvec",
"static_assertions",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"variadics_please",
"wasm-bindgen",
@@ -1562,9 +1563,9 @@ dependencies = [
[[package]]
name = "bevy_render_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0a7027c51fd679e16fcc5d0d6e5a21fe96c09358d3817ba02ee68b637b54cee4"
checksum = "becf3b8c638b4781b3fedd2c85216db742f23d1f516b0542c6a5135748eabba8"
dependencies = [
"bevy_extract_macros",
"bevy_macro_utils",
@@ -1575,9 +1576,9 @@ dependencies = [
[[package]]
name = "bevy_scene"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57fccf567057b385308406f18aace2ae4138420f37ba36870c986a64619d550c"
checksum = "8d4f102f051bfaef75b5b016b6ec4d2d2224dd4e75d4627a64049ef84aab60f2"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1589,16 +1590,16 @@ dependencies = [
"bevy_scene_macros",
"bevy_utils",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"variadics_please",
]
[[package]]
name = "bevy_scene_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7503865a2acb43e7cee20f1677aa2986b0d2de7db19ccdbf2e3f0223f1a50532"
checksum = "984400d6d9680124f4c1b10e59b2bf86640e0194f9eb37d821a82725f2a44186"
dependencies = [
"bevy_ecs_macro_logic",
"bevy_macro_utils",
@@ -1609,16 +1610,16 @@ dependencies = [
[[package]]
name = "bevy_shader"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "94bc8866f33731d99365a389210419807a0979440f5a1ca4b1dcc099f7bf516b"
checksum = "efc0b16e24edff02c3465f5b67ade623a53de6616ef768ce671c5e9ba1d46661"
dependencies = [
"bevy_asset",
"bevy_platform",
"bevy_reflect",
"bevy_utils",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"wesl",
"wgpu-types",
@@ -1626,9 +1627,9 @@ dependencies = [
[[package]]
name = "bevy_shape"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dc9240094bf3ed72a29513b6ae394ad96dc20e4f8121d8480a3f42a067b8813"
checksum = "05a1e620f362672cd9fae915a3a762011f98e95a3dc7e6d542360d6926751e2b"
dependencies = [
"arrayvec",
"bevy_math",
@@ -1637,14 +1638,14 @@ dependencies = [
"rand",
"rand_distr",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
name = "bevy_sprite"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acb07e9215a2a01104234207beaa72afe768fc2478fd45dc401e261ce31d425c"
checksum = "3715bc3299df0d8f2d0c7478b287556ad2cbdb239ef13c16b0034f4c3a47bd6b"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1668,9 +1669,9 @@ dependencies = [
[[package]]
name = "bevy_sprite_render"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb88598facefe3afc0fc85324c83b0e92e085c6dc0d93f8b46372f3dd09b538b"
checksum = "50a3f99e851adb259a45abd182cacedc0a04eb1b63dea7b0b07c09ea63a5e974"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1705,9 +1706,9 @@ dependencies = [
[[package]]
name = "bevy_state"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecff6a4bd1ea5eef961b9e1706d3e01cf538231c43205b7a2ef9c007ef52cc13"
checksum = "c0b0c9defe3e553b865a033509d51757b7f5b9db137c01082f81957b8e2f8500"
dependencies = [
"bevy_app",
"bevy_ecs",
@@ -1721,9 +1722,9 @@ dependencies = [
[[package]]
name = "bevy_state_macros"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1036087e690917fdd742dd25ad2694a1d379b5d6096fb344694341038968125"
checksum = "1149849d9c159cb02f29154c5e9385feb3313b3c69853a3bbd190719a9acd10f"
dependencies = [
"bevy_macro_utils",
"quote",
@@ -1732,9 +1733,9 @@ dependencies = [
[[package]]
name = "bevy_tasks"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "03762b1b385880529b06435f1a553ba926b4aa766f3ea3c7ef389ddf947ff036"
checksum = "bd59bcf4985254e6d9aceb5b2ce5efbdad82408e529c30904a8f06e4c34888ae"
dependencies = [
"async-channel",
"async-executor",
@@ -1751,9 +1752,9 @@ dependencies = [
[[package]]
name = "bevy_text"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67c6b0fc6d0818f3b1ce678b251985c2d6d6f21691d229e63d9e3e58d84962ac"
checksum = "d397dd2a70b5b241cf2d044b2bc01fda3a7b48a1a1bedfaea0bb27c11c3a0f2f"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1773,16 +1774,16 @@ dependencies = [
"smol_str",
"swash",
"sys-locale",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"wgpu-types",
]
[[package]]
name = "bevy_time"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4f2a496c51f709a092881eef01696bfb3fcde832df02dd3bd5f079baf3d02d0"
checksum = "1b73c66744c051cb77e085b2b62ea4fd0e943b8a72e7671385db41a9d507bafb"
dependencies = [
"bevy_app",
"bevy_ecs",
@@ -1795,9 +1796,9 @@ dependencies = [
[[package]]
name = "bevy_transform"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d710d5ec02516f42f6313cff1c97e6034b34e8fda9ab8b1913892b0831a84982"
checksum = "deb63b92867acd97fc85763179f79395c3f1bfe6048b1ca492c6c731bb84c76b"
dependencies = [
"bevy_app",
"bevy_ecs",
@@ -1807,14 +1808,14 @@ dependencies = [
"bevy_utils",
"derive_more",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
name = "bevy_ui"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c4fc0abf9010e467c23af71b2112d428506ffbac6230beb4d2d75a2e1a229729"
checksum = "5a561e731b64d325b1ad6e8e070d1c8164d078f7d79349bad4f6a6a04cb36d00"
dependencies = [
"accesskit",
"bevy_a11y",
@@ -1843,16 +1844,16 @@ dependencies = [
"smallvec",
"swash",
"taffy",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
"uuid",
]
[[package]]
name = "bevy_ui_render"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d821b8189e2cb2d0fc1e970c0b8c8fbe9e50a8a107ee39b79bb556c5b6bc827c"
checksum = "38b19694d055bcd1199668ddac0fa3660a5580b929b25225a4b968630ccdfe81"
dependencies = [
"bevy_a11y",
"bevy_app",
@@ -1886,9 +1887,9 @@ dependencies = [
[[package]]
name = "bevy_ui_widgets"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4c7206168fd6fbf71691f6713e9d347d8778b5e2c5036ede8be684d749f35f8d"
checksum = "5d04ad54cd70db438f1787e4ab39a7b749ea611ea7558bf5fdd6918505e8eb12"
dependencies = [
"accesskit",
"bevy_a11y",
@@ -1913,9 +1914,9 @@ dependencies = [
[[package]]
name = "bevy_utils"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "884820c664f6fa35afa43318092f28ef8d7ed598f88886ae65ce6c1be06c00f2"
checksum = "814e108de28dd27bb0ce9b944b73a4479f250eec446447f53cf0599ee5e31ca1"
dependencies = [
"async-channel",
"bevy_platform",
@@ -1926,9 +1927,9 @@ dependencies = [
[[package]]
name = "bevy_window"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "48e1e140d997701c2befa65f38d8ee7429c1c2ed7b49fd892f2a70d929749632"
checksum = "417cd4775c2fc40c346d20533857f335b377eb6c26d23e012012f75d00b87b33"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1945,9 +1946,9 @@ dependencies = [
[[package]]
name = "bevy_winit"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe050542591de5077dc2905f9de622cea5cfcf2a8f28c1d30228736ea4d5875f"
checksum = "d6324bea4cd0e205b3f9abbfee41e7a9f836e1412c214e1bc4577c76d52251d0"
dependencies = [
"accesskit",
"accesskit_winit",
@@ -1978,9 +1979,9 @@ dependencies = [
[[package]]
name = "bevy_world_serialization"
version = "0.20.0-rc.1"
version = "0.20.0-rc.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85dc66a86e93d5d755f8685061a469eb2390f613aff5bcf1586ede8fb1b05a7d"
checksum = "10dc5a4d915d39b9de516bfaaa039f64498fb4bbf6ec42efc7eb968f189ccd0d"
dependencies = [
"bevy_app",
"bevy_asset",
@@ -1994,7 +1995,7 @@ dependencies = [
"derive_more",
"ron",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
"uuid",
]
@@ -2175,9 +2176,9 @@ dependencies = [
[[package]]
name = "cc"
version = "1.4.7"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54413ede23c2daf518f35156dfde027feb2374004d63bd497f983c8db9c0e313"
checksum = "f74872d07caf508b30a21f6836e7d7016a2eaf7d9ff4f48deaa58cd8a0407630"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -2609,7 +2610,7 @@ checksum = "b1acbc46b960480c4959213714511e22f9a2e0d361520693bcf5057b5924f53e"
dependencies = [
"const_panic",
"encase_derive",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
@@ -2656,7 +2657,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -2711,9 +2712,9 @@ dependencies = [
[[package]]
name = "find-msvc-tools"
version = "0.1.13"
version = "0.1.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef25905e51abafe4dcea6c15fec58c57b601cdbd0ee53d22ea1d3016c587d39b"
checksum = "aedcfb3409746eddb02b9e19ebda1c3394f759a152e48ee875a0844d1b955484"
[[package]]
name = "fixedbitset"
@@ -2752,9 +2753,9 @@ checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]]
name = "font-types"
version = "0.12.5"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8eb065f3251655b3c90e22e5e363f310fc5332fb3402e37bbc94752283248f6"
checksum = "6c92d9081c7ab3bd83ef1eecdfad090f3d966e3ce74106779664114cfe1a6274"
dependencies = [
"bytemuck",
]
@@ -2960,9 +2961,9 @@ dependencies = [
[[package]]
name = "glam"
version = "0.33.8"
version = "0.33.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a0990707078259d76f65619a692e87c82645be66cbee224173cd1af151e54ba2"
checksum = "37bfe73dc8ec21f54d181e5a60554327ec3f1c600c455a75ccbfc65d2106a6c4"
dependencies = [
"approx",
"bytemuck",
@@ -3039,7 +3040,7 @@ dependencies = [
"hashbrown 0.16.1",
"log",
"presser",
"thiserror 2.0.20",
"thiserror 2.0.21",
"windows",
]
@@ -3392,7 +3393,7 @@ dependencies = [
"jni-sys 0.4.1",
"log",
"simd_cesu8",
"thiserror 2.0.20",
"thiserror 2.0.21",
"walkdir",
"windows-link",
]
@@ -3450,9 +3451,9 @@ dependencies = [
[[package]]
name = "js-sys"
version = "0.3.105"
version = "0.3.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce57d20d1ea864ce2ac172ab472d409214f4fd359f0b2a2775abdf522e2af99e"
checksum = "7883d941dae510fb2d978fc3fe018c71c9e2892fd38854de3e8b92c2e5ad9cc5"
dependencies = [
"cfg-if",
"futures-util",
@@ -3526,9 +3527,9 @@ dependencies = [
[[package]]
name = "lazy_static"
version = "1.5.0"
version = "1.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
checksum = "20870f649af7073d53e38067b2a84312175d56ea15217e1b15bc83506ec50afb"
[[package]]
name = "lewton"
@@ -3609,9 +3610,9 @@ dependencies = [
[[package]]
name = "libc"
version = "0.2.189"
version = "0.2.190"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
checksum = "ce5d3ddc6d3fa000eb1536d85e147bfe31aacaba692ed6a876f95cb7c855be78"
[[package]]
name = "libloading"
@@ -3631,9 +3632,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libredox"
version = "0.1.24"
version = "0.1.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6480ccc157a1389bb2e4891b24751b0f798ba640d22386f23143fbcc89da195a"
checksum = "61ff90caf6077a803a240f62fdbe88645a890bbca49ef8174c3cb0404362171d"
dependencies = [
"bitflags 2.13.2",
"libc",
@@ -3819,7 +3820,7 @@ dependencies = [
"once_cell",
"rustc-hash 1.1.0",
"spirv",
"thiserror 2.0.20",
"thiserror 2.0.21",
"unicode-ident",
]
@@ -3833,7 +3834,7 @@ dependencies = [
"indexmap",
"rustc-hash 1.1.0",
"serde",
"thiserror 2.0.20",
"thiserror 2.0.21",
]
[[package]]
@@ -3914,7 +3915,7 @@ version = "0.50.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -4406,7 +4407,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967"
dependencies = [
"libc",
"windows-sys 0.61.2",
"windows-sys 0.45.0",
]
[[package]]
@@ -4833,7 +4834,7 @@ dependencies = [
"dasp_sample",
"lewton",
"num-rational",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tracing",
]
@@ -4895,7 +4896,7 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.12.1",
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -5051,9 +5052,9 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
name = "siphasher"
version = "1.0.3"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
checksum = "33f4fe9184a62d842c9ef383018f3306d8ba224fd9d836f56d7288308847c256"
[[package]]
name = "skrifa"
@@ -5082,9 +5083,9 @@ dependencies = [
[[package]]
name = "smallvec"
version = "1.16.1"
version = "1.16.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba467056f1b547ed52077911161fc86985becbc60e8e1857c8a144dab0def891"
checksum = "f9395f0f0eee849a9b707b2f06bb92a6a422090e2123bb2ef8e87a0e61892a8e"
[[package]]
name = "smithay-client-toolkit"
@@ -5268,7 +5269,7 @@ version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8c27177b12a6399ffc08b98f76f7c9a1f4fe9fc967c784c5a071fa8d93cf7e1"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -5282,11 +5283,11 @@ dependencies = [
[[package]]
name = "thiserror"
version = "2.0.20"
version = "2.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
checksum = "09e52cb86a36cede5cb101bf8908837b3e4c6e5e59fe7fd85c23fb56200d189e"
dependencies = [
"thiserror-impl 2.0.20",
"thiserror-impl 2.0.21",
]
[[package]]
@@ -5302,9 +5303,9 @@ dependencies = [
[[package]]
name = "thiserror-impl"
version = "2.0.20"
version = "2.0.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524"
dependencies = [
"proc-macro2",
"quote",
@@ -5363,6 +5364,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd3ca314f692efd6c868f8408f53fe444634a845f96c028b97d35f6a1f79f0ee"
[[package]]
name = "tokio"
version = "1.53.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed"
dependencies = [
"pin-project-lite",
]
[[package]]
name = "toml_datetime"
version = "1.1.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -5566,9 +5576,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
name = "uuid"
version = "1.26.1"
version = "1.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2ef6dac1e96601b4fb3acccccff2139741fcb757cb9a36089bf5be91cfb285ce"
checksum = "97277d36b9c3ace13e58fa6e753f8b0bbbf302a18dd193240d70f9e29681059a"
dependencies = [
"getrandom 0.4.3",
"js-sys",
@@ -5625,9 +5635,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen"
version = "0.2.128"
version = "0.2.129"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aecb87a33d3b0c5e3b7aa46336eaf486cffafbd281b195e4c8b80d50df2351bf"
checksum = "9bb54f33acc68fd454578d9820b0bde1a1a3d17aa17bb7b6595806d02886d409"
dependencies = [
"cfg-if",
"once_cell",
@@ -5638,19 +5648,20 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.78"
version = "0.4.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6ef4c5d3d2cdf5c54f4231181768f5510842e350db025faf1f7163b1030ed928"
checksum = "3cbab34de2d982e9b48e18d216d04c4a6f641066ff19ffb699980f591ee3610e"
dependencies = [
"js-sys",
"tokio",
"wasm-bindgen",
]
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.128"
version = "0.2.129"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a690d511e3c1a8b3a55e33511e3c2c00c78415cd23650f32b808627f5696b9ed"
checksum = "2e29d0c35b16e224a7eeb5cd2d25e3e1968fbd65604117b44d3b789d00ee8535"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -5658,9 +5669,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.128"
version = "0.2.129"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "411e4887f0071ef2d2164a9d5fdf2d20efbef78fccd3a78b0c10a1dc5295e48a"
checksum = "6f501a8bc3719dba86ef8ae4728879c08001bea749eb1333ac5b91e040e2a6b7"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -5671,9 +5682,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.128"
version = "0.2.129"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81941cd78d0c92026c33e5e01312845a4cb1e9af3407f9134b100dd03144103e"
checksum = "23f0c9c52aa7cd7d77769a4cfe2a9adb1b331f489a41d912ce14513d5ab995c6"
dependencies = [
"unicode-ident",
]
@@ -5799,9 +5810,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.105"
version = "0.3.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fbddc4a036f00ec4f18c83445bd3115cb306a91da554919a099d9222fe4a7f8"
checksum = "88261b9deccee56594c11a3460c462c41f58d148598fe70ad77070126a68aba4"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -5841,7 +5852,7 @@ dependencies = [
"half",
"itertools 0.15.0",
"num-traits",
"thiserror 2.0.20",
"thiserror 2.0.21",
"wesl-macros",
"wgsl-parse",
"wgsl-types",
@@ -5911,7 +5922,7 @@ dependencies = [
"raw-window-handle",
"rustc-hash 1.1.0",
"smallvec",
"thiserror 2.0.20",
"thiserror 2.0.21",
"wgpu-core-deps-apple",
"wgpu-core-deps-wasm",
"wgpu-core-deps-windows-linux-android",
@@ -5992,7 +6003,7 @@ dependencies = [
"renderdoc-sys",
"smallvec",
"static_assertions",
"thiserror 2.0.20",
"thiserror 2.0.21",
"wasm-bindgen",
"wayland-sys",
"web-sys",
@@ -6043,7 +6054,7 @@ dependencies = [
"lalrpop-util",
"lexical",
"logos",
"thiserror 2.0.20",
"thiserror 2.0.21",
"wgsl-types",
]
@@ -6080,7 +6091,7 @@ version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
"windows-sys 0.61.2",
"windows-sys 0.60.2",
]
[[package]]
@@ -6094,6 +6105,8 @@ name = "window"
version = "0.1.0"
dependencies = [
"bevy",
"dpi",
"windows",
]
[[package]]
@@ -6506,15 +6519,15 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
[[package]]
name = "wl-clipboard-rs"
version = "0.9.3"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9651471a32e87d96ef3a127715382b2d11cc7c8bb9822ded8a7cc94072eb0a3"
checksum = "4d7888ccd4896447b2d14d3a9350a85df2aeb6f181e2e7a31349d104ac46cac1"
dependencies = [
"libc",
"log",
"os_pipe",
"rustix 1.1.5",
"thiserror 2.0.20",
"thiserror 2.0.21",
"tree_magic_mini",
"wayland-backend",
"wayland-client",
@@ -6619,9 +6632,9 @@ dependencies = [
[[package]]
name = "yoke-derive"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33811428bee40dbceb6d545e95754741d17a6aef9a4849f0fd62e2ba4f412a78"
checksum = "ec8ebde2db3681e8c9980cc27822030e68752690ddfa9473e739aeb4dbde6d71"
dependencies = [
"proc-macro2",
"quote",
@@ -6637,18 +6650,18 @@ checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524"
[[package]]
name = "zerocopy"
version = "0.8.57"
version = "0.8.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873"
checksum = "6df92bf3d9227be3d53173901ddbffac2babc27ae50f397776ffd6dc33f800cb"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.57"
version = "0.8.59"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc"
checksum = "ac4f328cf2f05d084e496c3e9c3f33ed0a183656a16e1fcec4d464d8373aec82"
dependencies = [
"proc-macro2",
"quote",
Cargo.toml +5 -1
diff --git a/Cargo.toml b/Cargo.toml
index ade815a..e187631 100644
@@ -4,7 +4,11 @@ version = "0.1.0"
edition = "2024"
[dependencies]
bevy = { version = "0.20.0-rc.1", features = ["dynamic_linking", "gamepad"] }
bevy = { version = "0.20.0-rc.1", features = ["debug", "dynamic_linking", "gamepad"] }
dpi = "0.1.2"
[target.'cfg(windows)'.dependencies]
windows = { version = "0.62.2", features = ["Devices_Display"] }
# Enable a small amount of optimization in the dev profile.
[profile.dev]
src/camera_controller.rs +6 -6
diff --git a/src/camera_controller.rs b/src/camera_controller.rs
index 5594d48..73d9daa 100644
@@ -33,10 +33,10 @@ fn move_camera_with_controller(
gamepad: If<Single<&Gamepad>>,
) {
let (mut camera, window) = camera.into_inner();
let mut origin = window.center + window.normal.as_vec3();
let mut origin = window.camera_position() + window.camera_normal().as_vec3();
camera.translation = origin;
camera.look_at(window.center, Vec3::Y);
camera.look_at(window.center(), Vec3::Y);
origin += camera.local_z().as_vec3()
* (gamepad
@@ -47,7 +47,7 @@ fn move_camera_with_controller(
origin += camera.local_y().as_vec3() * gamepad.get(GamepadAxis::LeftStickY).unwrap_or_default();
camera.translation = origin;
camera.look_at(window.center, Vec3::Y);
camera.look_at(window.center(), Vec3::Y);
}
fn move_camera_with_keyboard(
@@ -55,10 +55,10 @@ fn move_camera_with_keyboard(
input: Res<ButtonInput<KeyCode>>,
) {
let (mut camera, window) = camera.into_inner();
let mut origin = window.center + window.normal.as_vec3();
let mut origin = window.camera_position() + window.camera_normal().as_vec3();
camera.translation = origin;
camera.look_at(window.center, Vec3::Y);
camera.look_at(window.center(), Vec3::Y);
if input.pressed(KeyCode::KeyS) {
origin += camera.local_z().as_vec3();
@@ -80,5 +80,5 @@ fn move_camera_with_keyboard(
}
camera.translation = origin;
camera.look_at(window.center, Vec3::Y);
camera.look_at(window.center(), Vec3::Y);
}
src/main.rs +10 -6
diff --git a/src/main.rs b/src/main.rs
index 2230e99..7115793 100644
@@ -1,4 +1,5 @@
mod camera_controller;
mod physical_monitor;
mod virtual_window;
use std::f32::consts::FRAC_PI_4;
@@ -22,11 +23,14 @@ use bevy::{
world_serialization::WorldAssetRoot,
};
use crate::{camera_controller::CameraControllerPlugin, virtual_window::VirtualWindow};
use crate::{
camera_controller::CameraControllerPlugin,
virtual_window::{VirtualWindow, VirtualWindowPlugin},
};
fn main() {
App::new()
.add_plugins((DefaultPlugins, CameraControllerPlugin))
.add_plugins((DefaultPlugins, CameraControllerPlugin, VirtualWindowPlugin))
.add_systems(Startup, setup)
.add_systems(Update, load_skybox)
.run();
@@ -37,10 +41,10 @@ fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
commands.insert_resource(SkyboxHandle(handle.clone(), false));
commands.spawn((
Camera3d::default(),
VirtualWindow {
center: Vec3::new(-6.5, 3.1, 13.1),
normal: Dir3::from_xyz_unchecked(-0.4767313, 0.19069253, 0.8581163),
},
VirtualWindow::new(
Vec3::new(-6.5, 3.3, 13.1),
Dir3::from_xyz_unchecked(-0.48564294, 0.0, 0.87415725),
),
Projection::from(PerspectiveProjection {
fov: FRAC_PI_4,
..Default::default()
src/physical_monitor/mod.rs +8 -0
diff --git a/src/physical_monitor/mod.rs b/src/physical_monitor/mod.rs
new file mode 100644
index 0000000..d0d2ee7
@@ -0,0 +1,8 @@
#[cfg(windows)]
mod windows;
use bevy::math::UVec2;
pub trait PhysicalMonitor {
fn physical_size_millimeters(&self) -> Option<UVec2>;
}
src/physical_monitor/windows.rs +55 -0
diff --git a/src/physical_monitor/windows.rs b/src/physical_monitor/windows.rs
new file mode 100644
index 0000000..39edccb
@@ -0,0 +1,55 @@
use std::mem;
use bevy::{math::UVec2, window::Monitor};
use windows::{
Devices::Display::DisplayMonitor,
Win32::{
Graphics::Gdi::{DISPLAY_DEVICE_ACTIVE, DISPLAY_DEVICEW, EnumDisplayDevicesW},
UI::WindowsAndMessaging::EDD_GET_DEVICE_INTERFACE_NAME,
},
core::HSTRING,
};
use super::PhysicalMonitor;
impl PhysicalMonitor for Monitor {
fn physical_size_millimeters(&self) -> Option<UVec2> {
let name = HSTRING::from(self.name.as_ref()?);
let id = get_monitor_interface_id(&name)?;
let monitor = DisplayMonitor::FromInterfaceIdAsync(&id)
.ok()?
.join()
.ok()?;
let size = monitor.PhysicalSizeInInches().ok()?.Value().ok()?;
Some(UVec2::new(
to_millimeters(size.Width),
to_millimeters(size.Height),
))
}
}
fn get_monitor_interface_id(name: &HSTRING) -> Option<HSTRING> {
for i in 0.. {
let mut dd = DISPLAY_DEVICEW {
cb: mem::size_of::<DISPLAY_DEVICEW>() as u32,
..DISPLAY_DEVICEW::default()
};
let ok = unsafe { EnumDisplayDevicesW(name, i, &mut dd, EDD_GET_DEVICE_INTERFACE_NAME) };
if !ok.as_bool() {
return None;
}
if dd.StateFlags.contains(DISPLAY_DEVICE_ACTIVE) {
let len = dd
.DeviceID
.iter()
.position(|c| *c == 0)
.unwrap_or(dd.DeviceID.len());
return Some(HSTRING::from_wide(&dd.DeviceID[..len]));
}
}
None
}
fn to_millimeters(inches: f32) -> u32 {
(inches * 25.4) as u32
}
src/virtual_window.rs +144 -3
diff --git a/src/virtual_window.rs b/src/virtual_window.rs
index 6c67d5f..c7b5a8d 100644
@@ -1,10 +1,151 @@
use bevy::{
ecs::component::Component,
app::{App, Plugin, PreUpdate},
camera::{Camera, RenderTarget},
ecs::{
component::Component,
entity::Entity,
query::With,
system::{NonSendMarker, Query},
},
log,
math::{Dir3, Vec3},
transform::components::Transform,
window::{Monitor, OnMonitor, PrimaryWindow, WindowRef},
winit::WINIT_WINDOWS,
};
use dpi::{PhysicalPosition, PhysicalSize};
use crate::physical_monitor::PhysicalMonitor;
pub struct VirtualWindowPlugin;
impl Plugin for VirtualWindowPlugin {
fn build(&self, app: &mut App) {
app.add_systems(PreUpdate, update_window);
}
}
#[derive(Component)]
pub struct VirtualWindow {
pub center: Vec3,
pub normal: Dir3,
camera_position: Vec3,
camera_direction: Dir3,
center: Vec3,
previous_cache_key: Option<MonitorWindowCacheKey>,
}
#[derive(PartialEq, Eq)]
struct MonitorWindowCacheKey {
position_in_pixels: PhysicalPosition<i32>,
size_in_pixels: PhysicalSize<u32>,
monitor_entity: Entity,
}
impl VirtualWindow {
pub fn new(camera_position: Vec3, camera_direction: Dir3) -> Self {
Self {
camera_position,
camera_direction,
center: camera_position,
previous_cache_key: None,
}
}
pub fn camera_position(&self) -> Vec3 {
self.camera_position
}
pub fn camera_normal(&self) -> Dir3 {
self.camera_direction
}
pub fn center(&self) -> Vec3 {
self.center
}
}
fn update_window(
camera_window: Query<(&RenderTarget, &mut VirtualWindow), With<Camera>>,
on_monitors: Query<&OnMonitor>,
primary_window: Query<Entity, With<PrimaryWindow>>,
monitors: Query<&Monitor>,
_main_thread: NonSendMarker,
) {
for (camera, mut virtual_window) in camera_window {
let RenderTarget::Window(window_ref) = camera else {
log::warn!("Window of camera cannot be found");
break;
};
let Ok((on_monitor, window_entity)) = (match window_ref {
WindowRef::Primary if let Ok(entity) = primary_window.single() => {
on_monitors.get(entity).map(|m| (m, entity))
}
WindowRef::Entity(entity) => on_monitors.get(*entity).map(|m| (m, *entity)),
WindowRef::Primary => {
log::warn!("Primary camera without a primary window");
break;
}
}) else {
log::warn!("Window is not on any monitor");
break;
};
let Some((position_in_pixels, size_in_pixels)) = WINIT_WINDOWS.with_borrow(|windows| {
windows.get_window(window_entity).and_then(|w| {
match w.inner_position().map(|p| (p, w.inner_size())) {
Ok(a) => Some(a),
Err(err) => {
log::warn!("Failed to get position and size of window: {err:?}");
None
}
}
})
}) else {
log::warn!("Cannot get position and size of window");
break;
};
let cache_key = Some(MonitorWindowCacheKey {
position_in_pixels,
size_in_pixels,
monitor_entity: on_monitor.0,
});
if virtual_window.previous_cache_key == cache_key {
break;
}
let Ok(monitor) = monitors.get(on_monitor.0) else {
log::warn!("Monitor of window cannot be found");
break;
};
let monitor_size_in_pixels = monitor.physical_size();
let Some(monitor_size_in_millimeters) = monitor.physical_size_millimeters() else {
log::warn!("No physical size for monitor");
break;
};
let window_center_in_pixels = -Vec3::new(
(position_in_pixels.x as f32) + (size_in_pixels.width as f32) / 2.0
- (monitor_size_in_pixels.x as f32) / 2.0,
(position_in_pixels.y as f32) + (size_in_pixels.height as f32) / 2.0,
0.0,
);
let meters_per_pixel =
(monitor_size_in_millimeters.as_vec2() / 1000.0) / monitor_size_in_pixels.as_vec2();
let window_center_in_meters = window_center_in_pixels * meters_per_pixel.extend(1.0);
let window_offset_in_meters = Transform::IDENTITY
.looking_to(virtual_window.camera_direction, Dir3::Y)
.rotation
* window_center_in_meters;
virtual_window.center = virtual_window.camera_position + window_offset_in_meters;
virtual_window.previous_cache_key = cache_key;
log::info!(
"Camera: {}; Window: {}; posY: {}; sizeH: {:?}; offsetY: {}; pixels/meter: {}",
virtual_window.camera_position,
virtual_window.center,
position_in_pixels.y,
(size_in_pixels.height, monitor_size_in_pixels.y),
window_offset_in_meters.y,
meters_per_pixel,
);
}
}