summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-05-12 19:01:27 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-05-12 19:01:27 -0400
commita0a3b3974cab754c10a1517d82762b99482970ce (patch)
tree8aeb0ca1e007bacecc8e12a263bd5aa321b8f69a
parent7f63ec5c10eb7e8dd4edaabd1a6a437328911d39 (diff)
downloadsystemic4x-main.tar.gz
systemic4x-main.tar.bz2
systemic4x-main.zip
update packages to latest versionsHEADmain
-rw-r--r--Cargo.lock1252
-rw-r--r--Cargo.toml11
-rw-r--r--assets/shaders/tacmap/fleet.wgsl4
-rw-r--r--shell.nix1
-rw-r--r--src/eguictx.rs3
-rw-r--r--src/fleet.rs31
-rw-r--r--src/main.rs17
-rw-r--r--src/solar_system.rs27
-rw-r--r--src/solar_system/body.rs8
-rw-r--r--src/solar_system/orbit.rs12
-rw-r--r--src/tacmap.rs27
-rw-r--r--src/tacmap/orbit_render.rs81
-rw-r--r--src/texture.rs2
-rw-r--r--src/ui.rs14
-rw-r--r--src/ui/bodies_window.rs114
-rw-r--r--src/ui/fleet_window.rs190
-rw-r--r--src/ui/topbar.rs9
-rw-r--r--src/wgpuctx/mod.rs19
-rw-r--r--src/wgpuctx/pipeline.rs10
-rw-r--r--src/window.rs98
20 files changed, 1167 insertions, 763 deletions
diff --git a/Cargo.lock b/Cargo.lock
index f18c765..9f72980 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -19,6 +19,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"
[[package]]
+name = "accesskit"
+version = "0.24.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5351dcebb14b579ccab05f288596b2ae097005be7ee50a7c3d4ca9d0d5a66f6a"
+dependencies = [
+ "uuid",
+]
+
+[[package]]
name = "adler2"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -47,24 +56,28 @@ dependencies = [
]
[[package]]
+name = "allocator-api2"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923"
+
+[[package]]
name = "android-activity"
-version = "0.6.0"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046"
+checksum = "0f2a1bb052857d5dd49572219344a7332b31b76405648eabac5bc68978251bcd"
dependencies = [
"android-properties",
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"cc",
- "cesu8",
"jni",
- "jni-sys",
"libc",
"log",
"ndk",
"ndk-context",
"ndk-sys",
"num_enum",
- "thiserror 1.0.69",
+ "thiserror 2.0.18",
]
[[package]]
@@ -84,9 +97,9 @@ dependencies = [
[[package]]
name = "anstream"
-version = "0.6.21"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43d5b281e737544384e969a5ccad3f1cdd24b48086a0fc1b2a5262a26b8f4f4a"
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -99,15 +112,15 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.13"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78"
+checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
[[package]]
name = "anstyle-parse"
-version = "0.2.7"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2"
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
dependencies = [
"utf8parse",
]
@@ -202,18 +215,18 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "bit-set"
-version = "0.8.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3"
+checksum = "34ddef2995421ab6a5c779542c81ee77c115206f4ad9d5a8e05f4ff49716a3dd"
dependencies = [
"bit-vec",
]
[[package]]
name = "bit-vec"
-version = "0.8.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7"
+checksum = "b71798fca2c1fe1086445a7258a4bc81e6e49dcd24c8d0dd9a1e57395b603f51"
[[package]]
name = "bitflags"
@@ -223,15 +236,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
-version = "2.11.0"
+version = "2.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af"
-
-[[package]]
-name = "block"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a"
+checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3"
[[package]]
name = "block2"
@@ -243,6 +250,15 @@ dependencies = [
]
[[package]]
+name = "block2"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5"
+dependencies = [
+ "objc2 0.6.4",
+]
+
+[[package]]
name = "bumpalo"
version = "3.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -286,7 +302,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"log",
"polling",
"rustix 0.38.44",
@@ -300,7 +316,7 @@ version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4dbf9978365bac10f54d1d4b04f7ce4427e51f71d61f2fe15e3fed5166474df7"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"polling",
"rustix 1.1.4",
"slab",
@@ -333,9 +349,9 @@ dependencies = [
[[package]]
name = "cc"
-version = "1.2.56"
+version = "1.2.62"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2"
+checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98"
dependencies = [
"find-msvc-tools",
"jobserver",
@@ -344,12 +360,6 @@ dependencies = [
]
[[package]]
-name = "cesu8"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
-
-[[package]]
name = "cfg-if"
version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -382,9 +392,9 @@ dependencies = [
[[package]]
name = "codespan-reporting"
-version = "0.12.0"
+version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81"
+checksum = "af491d569909a7e4dee0ad7db7f5341fef5c614d5b8ec8cf765732aba3cff681"
dependencies = [
"serde",
"termcolor",
@@ -392,10 +402,19 @@ dependencies = [
]
[[package]]
+name = "color"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2ec7c5eb7a16992b1904d76c517d170ab353b0e0b3d5a0c81a8a0cd1037893cf"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
name = "colorchoice"
-version = "1.0.4"
+version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
+checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
[[package]]
name = "combine"
@@ -450,7 +469,7 @@ checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
dependencies = [
"bitflags 1.3.2",
"core-foundation 0.9.4",
- "core-graphics-types 0.1.3",
+ "core-graphics-types",
"foreign-types",
"libc",
]
@@ -467,17 +486,6 @@ dependencies = [
]
[[package]]
-name = "core-graphics-types"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb"
-dependencies = [
- "bitflags 2.11.0",
- "core-foundation 0.10.1",
- "libc",
-]
-
-[[package]]
name = "crc32fast"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -537,7 +545,7 @@ version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"objc2 0.6.4",
]
@@ -584,9 +592,9 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76"
[[package]]
name = "ecolor"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71ddb8ac7643d1dba1bb02110e804406dd459a838efcb14011ced10556711a8e"
+checksum = "55f6cc0cb3b84a21232c468db972ebcddd34decbf1ff02cdebffd807c13bbd81"
dependencies = [
"bytemuck",
"emath",
@@ -594,12 +602,13 @@ dependencies = [
[[package]]
name = "egui"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a9b567d356674e9a5121ed3fedfb0a7c31e059fe71f6972b691bcd0bfc284e3"
+checksum = "3cbe28ac1a9c0761319aafb9ad37737720cc49d99c13a4a6b990768fa01ffe67"
dependencies = [
+ "accesskit",
"ahash",
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"emath",
"epaint",
"log",
@@ -611,9 +620,9 @@ dependencies = [
[[package]]
name = "egui-wgpu"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5e4d209971c84b2352a06174abdba701af1e552ce56b144d96f2bd50a3c91236"
+checksum = "2f311c0b9cdd8a38821ae6f245fbe6e1a3d7d157c77b7d22344f205b317232c8"
dependencies = [
"ahash",
"bytemuck",
@@ -631,17 +640,17 @@ dependencies = [
[[package]]
name = "egui-winit"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec6687e5bb551702f4ad10ac428bab12acf9d53047ebb1082d4a0ed8c6251a29"
+checksum = "e8e97625c2fe0fadc8b92ec690fbf515e15e2efd67ca50e063ad3302ec8ee626"
dependencies = [
"arboard",
"bytemuck",
"egui",
"log",
- "objc2 0.5.2",
- "objc2-foundation 0.2.2",
- "objc2-ui-kit",
+ "objc2 0.6.4",
+ "objc2-foundation 0.3.2",
+ "objc2-ui-kit 0.3.2",
"profiling",
"raw-window-handle",
"smithay-clipboard",
@@ -651,19 +660,53 @@ dependencies = [
]
[[package]]
+name = "egui_extras"
+version = "0.34.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8c609fc87f6c70ffd3afd679cbb294985096d2fc0be33e762ad5614bde4925bc"
+dependencies = [
+ "ahash",
+ "egui",
+ "enum-map",
+ "log",
+ "mime_guess2",
+ "profiling",
+]
+
+[[package]]
name = "emath"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "491bdf728bf25ddd9ad60d4cf1c48588fa82c013a2440b91aa7fc43e34a07c32"
+checksum = "a74fbbf7501c430b89df62d102b6bfa02162faaf3e155512c677c9d20f5708d1"
dependencies = [
"bytemuck",
]
[[package]]
+name = "enum-map"
+version = "2.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9"
+dependencies = [
+ "enum-map-derive",
+]
+
+[[package]]
+name = "enum-map-derive"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
name = "env_filter"
-version = "1.0.0"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a1c3cc8e57274ec99de65301228b537f1e4eedc1b8e0f9411c6caac8ae7308f"
+checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef"
dependencies = [
"log",
"regex",
@@ -671,9 +714,9 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.11.9"
+version = "0.11.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2daee4ea451f429a58296525ddf28b45a3b64f1acf6587e2067437bb11e218d"
+checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a"
dependencies = [
"anstream",
"anstyle",
@@ -684,27 +727,31 @@ dependencies = [
[[package]]
name = "epaint"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "009d0dd3c2163823a0abdb899451ecbc78798dec545ee91b43aff1fa790bab62"
+checksum = "92b452e348c2758115288802ca25f86ee286ce2cfae6643711ce116662311310"
dependencies = [
- "ab_glyph",
"ahash",
"bytemuck",
"ecolor",
"emath",
"epaint_default_fonts",
+ "font-types",
"log",
"nohash-hasher",
"parking_lot",
"profiling",
+ "self_cell",
+ "skrifa",
+ "smallvec",
+ "vello_cpu",
]
[[package]]
name = "epaint_default_fonts"
-version = "0.33.3"
+version = "0.34.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5c4fbe202b6578d3d56428fa185cdf114a05e49da05f477b3c7f0fbb221f1862"
+checksum = "1644e25dbe3d663fd9c2a4181772c64b23361e377e550c10422ecc3a7de1c3c2"
[[package]]
name = "equivalent"
@@ -729,30 +776,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59"
[[package]]
-name = "fastrand"
-version = "2.3.0"
+name = "euclid"
+version = "0.22.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+checksum = "f1a05365e3b1c6d1650318537c7460c6923f1abdd272ad6842baa2b509957a06"
+dependencies = [
+ "num-traits",
+]
[[package]]
-name = "fax"
-version = "0.2.6"
+name = "fastrand"
+version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f05de7d48f37cd6730705cbca900770cab77a89f413d23e100ad7fad7795a0ab"
-dependencies = [
- "fax_derive",
-]
+checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
[[package]]
-name = "fax_derive"
-version = "0.2.0"
+name = "fax"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0aca10fb742cb43f9e7bb8467c91aa9bcb8e3ffbc6a6f7389bb93ffc920577d"
-dependencies = [
- "proc-macro2",
- "quote",
- "syn",
-]
+checksum = "caf1079563223d5d59d83c85886a56e586cfd5c1a26292e971a0fa266531ac5a"
[[package]]
name = "fdeflate"
@@ -764,6 +806,15 @@ dependencies = [
]
[[package]]
+name = "fearless_simd"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8fb2907d1f08b2b316b9223ced5b0e89d87028ba8deae9764741dba8ff7f3903"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
name = "find-msvc-tools"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -792,6 +843,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
[[package]]
+name = "font-types"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5b38ad915f6dadd993ced50848a8291a543bd41ca62bc10740d5e64e2ab4cfd7"
+dependencies = [
+ "bytemuck",
+]
+
+[[package]]
name = "foreign-types"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -886,9 +946,9 @@ dependencies = [
[[package]]
name = "glow"
-version = "0.16.0"
+version = "0.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08"
+checksum = "29038e1c483364cc6bb3cf78feee1816002e127c331a1eec55a4d202b9e1adb5"
dependencies = [
"js-sys",
"slotmap",
@@ -906,33 +966,16 @@ dependencies = [
]
[[package]]
-name = "gpu-alloc"
-version = "0.6.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171"
-dependencies = [
- "bitflags 2.11.0",
- "gpu-alloc-types",
-]
-
-[[package]]
-name = "gpu-alloc-types"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4"
-dependencies = [
- "bitflags 2.11.0",
-]
-
-[[package]]
name = "gpu-allocator"
-version = "0.27.0"
+version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd"
+checksum = "51255ea7cfaadb6c5f1528d43e92a82acb2b96c43365989a28b2d44ee38f8795"
dependencies = [
+ "ash",
+ "hashbrown 0.16.1",
"log",
"presser",
- "thiserror 1.0.69",
+ "thiserror 2.0.18",
"windows",
]
@@ -942,7 +985,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b89c83349105e3732062a895becfc71a8f921bb71ecbbdd8ff99263e3b53a0ca"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"gpu-descriptor-types",
"hashbrown 0.15.5",
]
@@ -953,7 +996,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdf242682df893b86f33a73828fb09ca4b2d3bb6cc95249707fc684d27484b91"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
]
[[package]]
@@ -983,10 +1026,18 @@ version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
dependencies = [
+ "allocator-api2",
+ "equivalent",
"foldhash 0.2.0",
]
[[package]]
+name = "hashbrown"
+version = "0.17.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
+
+[[package]]
name = "hermit-abi"
version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1000,12 +1051,13 @@ checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df"
[[package]]
name = "icu_collections"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43"
+checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c"
dependencies = [
"displaydoc",
"potential_utf",
+ "utf8_iter",
"yoke",
"zerofrom",
"zerovec",
@@ -1013,9 +1065,9 @@ dependencies = [
[[package]]
name = "icu_locale_core"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6"
+checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29"
dependencies = [
"displaydoc",
"litemap",
@@ -1026,9 +1078,9 @@ dependencies = [
[[package]]
name = "icu_normalizer"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599"
+checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4"
dependencies = [
"icu_collections",
"icu_normalizer_data",
@@ -1040,15 +1092,15 @@ dependencies = [
[[package]]
name = "icu_normalizer_data"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a"
+checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38"
[[package]]
name = "icu_properties"
-version = "2.1.2"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec"
+checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de"
dependencies = [
"icu_collections",
"icu_locale_core",
@@ -1060,15 +1112,15 @@ dependencies = [
[[package]]
name = "icu_properties_data"
-version = "2.1.2"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af"
+checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14"
[[package]]
name = "icu_provider"
-version = "2.1.1"
+version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614"
+checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421"
dependencies = [
"displaydoc",
"icu_locale_core",
@@ -1092,9 +1144,9 @@ dependencies = [
[[package]]
name = "idna_adapter"
-version = "1.2.1"
+version = "1.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344"
+checksum = "cb68373c0d6620ef8105e855e7745e18b0d00d3bdb07fb532e434244cdb9a714"
dependencies = [
"icu_normalizer",
"icu_properties",
@@ -1102,9 +1154,9 @@ dependencies = [
[[package]]
name = "image"
-version = "0.25.9"
+version = "0.25.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6506c6c10786659413faa717ceebcb8f70731c0a60cbae39795fdf114519c1a"
+checksum = "85ab80394333c02fe689eaf900ab500fbd0c2213da414687ebf995a65d5a6104"
dependencies = [
"bytemuck",
"byteorder-lite",
@@ -1116,12 +1168,12 @@ dependencies = [
[[package]]
name = "indexmap"
-version = "2.13.0"
+version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
dependencies = [
"equivalent",
- "hashbrown 0.16.1",
+ "hashbrown 0.17.1",
]
[[package]]
@@ -1132,15 +1184,15 @@ checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
[[package]]
name = "itoa"
-version = "1.0.17"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
[[package]]
name = "jiff"
-version = "0.2.22"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "819b44bc7c87d9117eb522f14d46e918add69ff12713c475946b0a29363ed1c2"
+checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d"
dependencies = [
"jiff-static",
"log",
@@ -1151,9 +1203,9 @@ dependencies = [
[[package]]
name = "jiff-static"
-version = "0.2.22"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "470252db18ecc35fd766c0891b1e3ec6cbbcd62507e85276c01bf75d8e94d4a1"
+checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7"
dependencies = [
"proc-macro2",
"quote",
@@ -1162,25 +1214,61 @@ dependencies = [
[[package]]
name = "jni"
-version = "0.21.1"
+version = "0.22.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97"
+checksum = "5efd9a482cf3a427f00d6b35f14332adc7902ce91efb778580e180ff90fa3498"
dependencies = [
- "cesu8",
"cfg-if",
"combine",
- "jni-sys",
+ "jni-macros",
+ "jni-sys 0.4.1",
"log",
- "thiserror 1.0.69",
+ "simd_cesu8",
+ "thiserror 2.0.18",
"walkdir",
- "windows-sys 0.45.0",
+ "windows-link",
+]
+
+[[package]]
+name = "jni-macros"
+version = "0.22.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a00109accc170f0bdb141fed3e393c565b6f5e072365c3bd58f5b062591560a3"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "rustc_version",
+ "simd_cesu8",
+ "syn",
]
[[package]]
name = "jni-sys"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258"
+dependencies = [
+ "jni-sys 0.4.1",
+]
+
+[[package]]
+name = "jni-sys"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2"
+dependencies = [
+ "jni-sys-macros",
+]
+
+[[package]]
+name = "jni-sys-macros"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264"
+dependencies = [
+ "quote",
+ "syn",
+]
[[package]]
name = "jobserver"
@@ -1194,10 +1282,12 @@ dependencies = [
[[package]]
name = "js-sys"
-version = "0.3.91"
+version = "0.3.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b49715b7073f385ba4bc528e5747d02e66cb39c6146efb66b781f131f0fb399c"
+checksum = "67df7112613f8bfd9150013a0314e196f4800d3201ae742489d999db2f979f08"
dependencies = [
+ "cfg-if",
+ "futures-util",
"once_cell",
"wasm-bindgen",
]
@@ -1220,10 +1310,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc"
[[package]]
+name = "kurbo"
+version = "0.13.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7564e90fe3c0d5771e1f0bc95322b21baaeaa0d9213fa6a0b61c99f8b17b3bfb"
+dependencies = [
+ "arrayvec",
+ "euclid",
+ "smallvec",
+]
+
+[[package]]
name = "libc"
-version = "0.2.182"
+version = "0.2.186"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
+checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "libloading"
@@ -1243,17 +1344,23 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libredox"
-version = "0.1.14"
+version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1744e39d1d6a9948f4f388969627434e31128196de472883b39f148769bfe30a"
+checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"libc",
"plain",
- "redox_syscall 0.7.3",
+ "redox_syscall 0.7.5",
]
[[package]]
+name = "linebender_resource_handle"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d4a5ff6bcca6c4867b1c4fd4ef63e4db7436ef363e0ad7531d1558856bae64f4"
+
+[[package]]
name = "linux-raw-sys"
version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1267,9 +1374,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
[[package]]
name = "litemap"
-version = "0.8.1"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77"
+checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0"
[[package]]
name = "litrs"
@@ -1293,15 +1400,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
[[package]]
-name = "malloc_buf"
-version = "0.0.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb"
-dependencies = [
- "libc",
-]
-
-[[package]]
name = "memchr"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1317,18 +1415,21 @@ dependencies = [
]
[[package]]
-name = "metal"
-version = "0.32.0"
+name = "mime"
+version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"
+checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+
+[[package]]
+name = "mime_guess2"
+version = "2.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1706dc14a2e140dec0a7a07109d9a3d5890b81e85bd6c60b906b249a77adf0ca"
dependencies = [
- "bitflags 2.11.0",
- "block",
- "core-graphics-types 0.2.0",
- "foreign-types",
- "log",
- "objc",
- "paste",
+ "mime",
+ "phf 0.11.3",
+ "phf_shared 0.11.3",
+ "unicase",
]
[[package]]
@@ -1343,9 +1444,9 @@ dependencies = [
[[package]]
name = "moxcms"
-version = "0.7.11"
+version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac9557c559cd6fc9867e122e20d2cbefc9ca29d80d027a8e39310920ed2f0a97"
+checksum = "bb85c154ba489f01b25c0d36ae69a87e4a1c73a72631fc6c0eb6dde34a73e44b"
dependencies = [
"num-traits",
"pxfm",
@@ -1353,13 +1454,13 @@ dependencies = [
[[package]]
name = "naga"
-version = "27.0.3"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8"
+checksum = "0dd91265cc2454558f659b3b4b9640f0ddb8cc6521277f166b8a8c181c898079"
dependencies = [
"arrayvec",
"bit-set",
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"cfg-if",
"cfg_aliases",
"codespan-reporting",
@@ -1383,8 +1484,8 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [
- "bitflags 2.11.0",
- "jni-sys",
+ "bitflags 2.11.1",
+ "jni-sys 0.3.1",
"log",
"ndk-sys",
"num_enum",
@@ -1404,7 +1505,7 @@ version = "0.6.0+11769913"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873"
dependencies = [
- "jni-sys",
+ "jni-sys 0.3.1",
]
[[package]]
@@ -1425,9 +1526,9 @@ dependencies = [
[[package]]
name = "num_enum"
-version = "0.7.5"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
+checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26"
dependencies = [
"num_enum_derive",
"rustversion",
@@ -1435,9 +1536,9 @@ dependencies = [
[[package]]
name = "num_enum_derive"
-version = "0.7.5"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
+checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -1446,15 +1547,6 @@ dependencies = [
]
[[package]]
-name = "objc"
-version = "0.2.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1"
-dependencies = [
- "malloc_buf",
-]
-
-[[package]]
name = "objc-sys"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1485,14 +1577,14 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e4e89ad9e3d7d297152b17d39ed92cd50ca8063a89a9fa569046d41568891eff"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"libc",
"objc2 0.5.2",
"objc2-core-data",
"objc2-core-image",
"objc2-foundation 0.2.2",
- "objc2-quartz-core",
+ "objc2-quartz-core 0.2.2",
]
[[package]]
@@ -1501,7 +1593,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"objc2 0.6.4",
"objc2-core-graphics",
"objc2-foundation 0.3.2",
@@ -1513,8 +1605,8 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-core-location",
"objc2-foundation 0.2.2",
@@ -1526,7 +1618,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889"
dependencies = [
- "block2",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
]
@@ -1537,8 +1629,8 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "617fbf49e071c178c0b24c080767db52958f716d9eabdf0890523aeae54773ef"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
]
@@ -1549,7 +1641,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"dispatch2",
"objc2 0.6.4",
]
@@ -1560,7 +1652,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"dispatch2",
"objc2 0.6.4",
"objc2-core-foundation",
@@ -1573,10 +1665,10 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "55260963a527c99f1819c4f8e3b47fe04f9650694ef348ffd2227e8196d34c80"
dependencies = [
- "block2",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
- "objc2-metal",
+ "objc2-metal 0.2.2",
]
[[package]]
@@ -1585,7 +1677,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781"
dependencies = [
- "block2",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-contacts",
"objc2-foundation 0.2.2",
@@ -1603,8 +1695,8 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"dispatch",
"libc",
"objc2 0.5.2",
@@ -1616,7 +1708,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"objc2 0.6.4",
"objc2-core-foundation",
]
@@ -1627,7 +1719,7 @@ version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"objc2 0.6.4",
"objc2-core-foundation",
]
@@ -1638,7 +1730,7 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398"
dependencies = [
- "block2",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-app-kit 0.2.2",
"objc2-foundation 0.2.2",
@@ -1650,23 +1742,48 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd0cba1276f6023976a406a14ffa85e1fdd19df6b0f737b063b95f6c8c7aadd6"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
]
[[package]]
+name = "objc2-metal"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a0125f776a10d00af4152d74616409f0d4a2053a6f57fa5b7d6aa2854ac04794"
+dependencies = [
+ "bitflags 2.11.1",
+ "block2 0.6.2",
+ "objc2 0.6.4",
+ "objc2-foundation 0.3.2",
+]
+
+[[package]]
name = "objc2-quartz-core"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e42bee7bff906b14b167da2bac5efe6b6a07e6f7c0a21a7308d40c960242dc7a"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
- "objc2-metal",
+ "objc2-metal 0.2.2",
+]
+
+[[package]]
+name = "objc2-quartz-core"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f"
+dependencies = [
+ "bitflags 2.11.1",
+ "objc2 0.6.4",
+ "objc2-core-foundation",
+ "objc2-foundation 0.3.2",
+ "objc2-metal 0.3.2",
]
[[package]]
@@ -1685,8 +1802,8 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-cloud-kit",
"objc2-core-data",
@@ -1694,19 +1811,31 @@ dependencies = [
"objc2-core-location",
"objc2-foundation 0.2.2",
"objc2-link-presentation",
- "objc2-quartz-core",
+ "objc2-quartz-core 0.2.2",
"objc2-symbols",
"objc2-uniform-type-identifiers",
"objc2-user-notifications",
]
[[package]]
+name = "objc2-ui-kit"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22"
+dependencies = [
+ "bitflags 2.11.1",
+ "objc2 0.6.4",
+ "objc2-core-foundation",
+ "objc2-foundation 0.3.2",
+]
+
+[[package]]
name = "objc2-uniform-type-identifiers"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe"
dependencies = [
- "block2",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-foundation 0.2.2",
]
@@ -1717,8 +1846,8 @@ version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3"
dependencies = [
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"objc2 0.5.2",
"objc2-core-location",
"objc2-foundation 0.2.2",
@@ -1726,9 +1855,9 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.21.3"
+version = "1.21.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
[[package]]
name = "once_cell_polyfill"
@@ -1738,9 +1867,9 @@ checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "orbclient"
-version = "0.3.50"
+version = "0.3.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd"
+checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329"
dependencies = [
"libc",
"libredox",
@@ -1748,9 +1877,9 @@ dependencies = [
[[package]]
name = "ordered-float"
-version = "5.1.0"
+version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f4779c6901a562440c3786d08192c6fbda7c1c2060edd10006b05ee35d10f2d"
+checksum = "b7d950ca161dc355eaf28f82b11345ed76c6e1f6eb1f4f4479e0323b9e2fbd0e"
dependencies = [
"num-traits",
]
@@ -1788,10 +1917,17 @@ dependencies = [
]
[[package]]
-name = "paste"
-version = "1.0.15"
+name = "peniko"
+version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
+checksum = "9a2b6aadb221872732e87d465213e9be5af2849b0e8cc5300a8ba98fffa2e00a"
+dependencies = [
+ "bytemuck",
+ "color",
+ "kurbo",
+ "linebender_resource_handle",
+ "smallvec",
+]
[[package]]
name = "percent-encoding"
@@ -1801,23 +1937,57 @@ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "phf"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078"
+dependencies = [
+ "phf_macros 0.11.3",
+ "phf_shared 0.11.3",
+]
+
+[[package]]
+name = "phf"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf"
dependencies = [
- "phf_macros",
- "phf_shared",
+ "phf_macros 0.13.1",
+ "phf_shared 0.13.1",
"serde",
]
[[package]]
name = "phf_generator"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d"
+dependencies = [
+ "phf_shared 0.11.3",
+ "rand",
+]
+
+[[package]]
+name = "phf_generator"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737"
dependencies = [
"fastrand",
- "phf_shared",
+ "phf_shared 0.13.1",
+]
+
+[[package]]
+name = "phf_macros"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216"
+dependencies = [
+ "phf_generator 0.11.3",
+ "phf_shared 0.11.3",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "unicase",
]
[[package]]
@@ -1826,8 +1996,8 @@ version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef"
dependencies = [
- "phf_generator",
- "phf_shared",
+ "phf_generator 0.13.1",
+ "phf_shared 0.13.1",
"proc-macro2",
"quote",
"syn",
@@ -1835,6 +2005,16 @@ dependencies = [
[[package]]
name = "phf_shared"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5"
+dependencies = [
+ "siphasher",
+ "unicase",
+]
+
+[[package]]
+name = "phf_shared"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266"
@@ -1844,18 +2024,18 @@ dependencies = [
[[package]]
name = "pin-project"
-version = "1.1.11"
+version = "1.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f1749c7ed4bcaf4c3d0a3efc28538844fb29bcdd7d2b67b2be7e20ba861ff517"
+checksum = "cbf0d9e68100b3a7989b4901972f265cd542e560a3a8a724e1e20322f4d06ce9"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
-version = "1.1.11"
+version = "1.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6"
+checksum = "a990e22f43e84855daf260dded30524ef4a9021cc7541c26540500a50b624389"
dependencies = [
"proc-macro2",
"quote",
@@ -1870,9 +2050,9 @@ checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
[[package]]
name = "pkg-config"
-version = "0.3.32"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c"
+checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
[[package]]
name = "plain"
@@ -1886,7 +2066,7 @@ version = "0.18.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60769b8b31b2a9f263dae2776c37b1b28ae246943cf719eb6946a1db05128a61"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"crc32fast",
"fdeflate",
"flate2",
@@ -1921,18 +2101,18 @@ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
[[package]]
name = "portable-atomic-util"
-version = "0.2.5"
+version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7a9db96d7fa8782dd8c15ce32ffe8680bbd1e978a43bf51a34d39483540495f5"
+checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
dependencies = [
"portable-atomic",
]
[[package]]
name = "potential_utf"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77"
+checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564"
dependencies = [
"zerovec",
]
@@ -1945,9 +2125,9 @@ checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa"
[[package]]
name = "proc-macro-crate"
-version = "3.4.0"
+version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983"
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
dependencies = [
"toml_edit",
]
@@ -1963,15 +2143,15 @@ dependencies = [
[[package]]
name = "profiling"
-version = "1.0.17"
+version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
+checksum = "3d595e54a326bc53c1c197b32d295e14b169e3cfeaa8dc82b529f947fba6bcf5"
[[package]]
name = "pxfm"
-version = "0.1.28"
+version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b5a041e753da8b807c9255f28de81879c78c876392ff2469cde94799b2896b9d"
+checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f"
[[package]]
name = "quick-error"
@@ -1981,18 +2161,18 @@ checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3"
[[package]]
name = "quick-xml"
-version = "0.38.4"
+version = "0.39.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c"
+checksum = "cdcc8dd4e2f670d309a5f0e83fe36dfdc05af317008fea29144da1a2ac858e5e"
dependencies = [
"memchr",
]
[[package]]
name = "quote"
-version = "1.0.44"
+version = "1.0.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
dependencies = [
"proc-macro2",
]
@@ -2004,6 +2184,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
+name = "rand"
+version = "0.8.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a"
+dependencies = [
+ "rand_core",
+]
+
+[[package]]
+name = "rand_core"
+version = "0.6.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+
+[[package]]
name = "range-alloc"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2016,6 +2211,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
[[package]]
+name = "raw-window-metal"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "40d213455a5f1dc59214213c7330e074ddf8114c9a42411eb890c767357ce135"
+dependencies = [
+ "objc2 0.6.4",
+ "objc2-core-foundation",
+ "objc2-foundation 0.3.2",
+ "objc2-quartz-core 0.3.2",
+]
+
+[[package]]
+name = "read-fonts"
+version = "0.37.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5"
+dependencies = [
+ "bytemuck",
+ "font-types",
+]
+
+[[package]]
name = "redox_syscall"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2030,16 +2247,16 @@ version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
]
[[package]]
name = "redox_syscall"
-version = "0.7.3"
+version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ce70a74e890531977d37e532c34d45e9055d2409ed08ddba14529471ed0be16"
+checksum = "4666a1a60d8412eab19d94f6d13dcc9cea0a5ef4fdf6a5db306537413c661b1b"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
]
[[package]]
@@ -2085,9 +2302,18 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "rustc-hash"
-version = "2.1.1"
+version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
+checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe"
+
+[[package]]
+name = "rustc_version"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
+dependencies = [
+ "semver",
+]
[[package]]
name = "rustix"
@@ -2095,7 +2321,7 @@ version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"errno",
"libc",
"linux-raw-sys 0.4.15",
@@ -2108,7 +2334,7 @@ version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"errno",
"libc",
"linux-raw-sys 0.12.1",
@@ -2162,6 +2388,18 @@ dependencies = [
]
[[package]]
+name = "self_cell"
+version = "1.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89"
+
+[[package]]
+name = "semver"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
+
+[[package]]
name = "serde"
version = "1.0.228"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2199,15 +2437,41 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "simd-adler32"
-version = "0.3.8"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
+
+[[package]]
+name = "simd_cesu8"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33"
+dependencies = [
+ "rustc_version",
+ "simdutf8",
+]
+
+[[package]]
+name = "simdutf8"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2"
+checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e"
[[package]]
name = "siphasher"
-version = "1.0.2"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ee5873ec9cce0195efcb7a4e9507a04cd49aec9c83d0389df45b1ef7ba2e649"
+
+[[package]]
+name = "skrifa"
+version = "0.40.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e"
+checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac"
+dependencies = [
+ "bytemuck",
+ "read-fonts",
+]
[[package]]
name = "slab"
@@ -2236,7 +2500,7 @@ version = "0.19.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3457dea1f0eb631b4034d61d4d8c32074caa6cd1ab2d59f2327bd8461e2c0016"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"calloop 0.13.0",
"calloop-wayland-source 0.3.0",
"cursor-icon",
@@ -2261,7 +2525,7 @@ version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"calloop 0.14.4",
"calloop-wayland-source 0.4.1",
"cursor-icon",
@@ -2304,11 +2568,11 @@ dependencies = [
[[package]]
name = "spirv"
-version = "0.3.0+sdk-1.3.268.0"
+version = "0.4.0+sdk-1.4.341.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844"
+checksum = "d9571ea910ebd84c86af4b3ed27f9dbdc6ad06f17c5f96146b2b671e2976744f"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
]
[[package]]
@@ -2367,9 +2631,10 @@ dependencies = [
"egui",
"egui-wgpu",
"egui-winit",
+ "egui_extras",
"env_logger",
"log",
- "phf",
+ "phf 0.13.1",
"pollster",
"serde",
"stringreader",
@@ -2428,9 +2693,9 @@ dependencies = [
[[package]]
name = "tiff"
-version = "0.10.3"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "af9605de7fee8d9551863fd692cce7637f548dbd9db9180fcc07ccc6d26c336f"
+checksum = "b63feaf3343d35b6ca4d50483f94843803b0f51634937cc2ec519fc32232bc52"
dependencies = [
"fax",
"flate2",
@@ -2467,9 +2732,9 @@ dependencies = [
[[package]]
name = "tinystr"
-version = "0.8.2"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869"
+checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d"
dependencies = [
"displaydoc",
"zerovec",
@@ -2477,18 +2742,18 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.7.5+spec-1.1.0"
+version = "1.1.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
dependencies = [
"serde_core",
]
[[package]]
name = "toml_edit"
-version = "0.23.10+spec-1.0.0"
+version = "0.25.11+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269"
+checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"
dependencies = [
"indexmap",
"toml_datetime",
@@ -2498,9 +2763,9 @@ dependencies = [
[[package]]
name = "toml_parser"
-version = "1.0.9+spec-1.1.0"
+version = "1.1.2+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
dependencies = [
"winnow",
]
@@ -2534,10 +2799,16 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb30dbbd9036155e74adad6812e9898d03ec374946234fbcebd5dfc7b9187b90"
dependencies = [
- "rustc-hash 2.1.1",
+ "rustc-hash 2.1.2",
]
[[package]]
+name = "unicase"
+version = "2.9.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "dbc4bc3a9f746d862c45cb89d705aa10f187bb96c76001afab07a0d35ce60142"
+
+[[package]]
name = "unicode-ident"
version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2545,9 +2816,9 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-segmentation"
-version = "1.12.0"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493"
+checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"
[[package]]
name = "unicode-width"
@@ -2580,6 +2851,38 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821"
[[package]]
+name = "uuid"
+version = "1.23.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76"
+
+[[package]]
+name = "vello_common"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bd1a4c633ce09e7d713df1a6e036644a125e15e0c169cfb5180ddf5836ca04b"
+dependencies = [
+ "bytemuck",
+ "fearless_simd",
+ "hashbrown 0.16.1",
+ "log",
+ "peniko",
+ "skrifa",
+ "smallvec",
+]
+
+[[package]]
+name = "vello_cpu"
+version = "0.0.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0162bfe48aabf6a9fdcd401b628c7d9f260c2cbabb343c70a65feba6f7849edc"
+dependencies = [
+ "bytemuck",
+ "hashbrown 0.16.1",
+ "vello_common",
+]
+
+[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2597,18 +2900,18 @@ dependencies = [
[[package]]
name = "wasip2"
-version = "1.0.2+wasi-0.2.9"
+version = "1.0.3+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
+checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
dependencies = [
"wit-bindgen",
]
[[package]]
name = "wasm-bindgen"
-version = "0.2.114"
+version = "0.2.121"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e"
+checksum = "49ace1d07c165b0864824eee619580c4689389afa9dc9ed3a4c75040d82e6790"
dependencies = [
"cfg-if",
"once_cell",
@@ -2619,23 +2922,19 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.64"
+version = "0.4.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9c5522b3a28661442748e09d40924dfb9ca614b21c00d3fd135720e48b67db8"
+checksum = "96492d0d3ffba25305a7dc88720d250b1401d7edca02cc3bcd50633b424673b8"
dependencies = [
- "cfg-if",
- "futures-util",
"js-sys",
- "once_cell",
"wasm-bindgen",
- "web-sys",
]
[[package]]
name = "wasm-bindgen-macro"
-version = "0.2.114"
+version = "0.2.121"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6"
+checksum = "8e68e6f4afd367a562002c05637acb8578ff2dea1943df76afb9e83d177c8578"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -2643,9 +2942,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
-version = "0.2.114"
+version = "0.2.121"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3"
+checksum = "d95a9ec35c64b2a7cb35d3fead40c4238d0940c86d107136999567a4703259f2"
dependencies = [
"bumpalo",
"proc-macro2",
@@ -2656,18 +2955,18 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
-version = "0.2.114"
+version = "0.2.121"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16"
+checksum = "c4e0100b01e9f0d03189a92b96772a1fb998639d981193d7dbab487302513441"
dependencies = [
"unicode-ident",
]
[[package]]
name = "wayland-backend"
-version = "0.3.12"
+version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fee64194ccd96bf648f42a65a7e589547096dfa702f7cadef84347b66ad164f9"
+checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d"
dependencies = [
"cc",
"downcast-rs",
@@ -2679,11 +2978,11 @@ dependencies = [
[[package]]
name = "wayland-client"
-version = "0.31.12"
+version = "0.31.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8e6faa537fbb6c186cb9f1d41f2f811a4120d1b57ec61f50da451a0c5122bec"
+checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"rustix 1.1.4",
"wayland-backend",
"wayland-scanner",
@@ -2695,16 +2994,16 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"cursor-icon",
"wayland-backend",
]
[[package]]
name = "wayland-cursor"
-version = "0.31.12"
+version = "0.31.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5864c4b5b6064b06b1e8b74ead4a98a6c45a285fe7a0e784d24735f011fdb078"
+checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d"
dependencies = [
"rustix 1.1.4",
"wayland-client",
@@ -2713,11 +3012,11 @@ dependencies = [
[[package]]
name = "wayland-protocols"
-version = "0.32.10"
+version = "0.32.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baeda9ffbcfc8cd6ddaade385eaf2393bd2115a69523c735f12242353c3df4f3"
+checksum = "563a85523cade2429938e790815fd7319062103b9f4a2dc806e9b53b95982d8f"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"wayland-backend",
"wayland-client",
"wayland-scanner",
@@ -2729,7 +3028,7 @@ version = "20250721.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "40a1f863128dcaaec790d7b4b396cc9b9a7a079e878e18c47e6c2d2c5a8dcbb1"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2738,11 +3037,11 @@ dependencies = [
[[package]]
name = "wayland-protocols-misc"
-version = "0.3.10"
+version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "791c58fdeec5406aa37169dd815327d1e47f334219b523444bc26d70ceb4c34e"
+checksum = "6e9567599ef23e09b8dad6e429e5738d4509dfc46b3b21f32841a304d16b29c8"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2751,11 +3050,11 @@ dependencies = [
[[package]]
name = "wayland-protocols-plasma"
-version = "0.3.10"
+version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aa98634619300a535a9a97f338aed9a5ff1e01a461943e8346ff4ae26007306b"
+checksum = "2b6d8cf1eb2c1c31ed1f5643c88a6e53538129d4af80030c8cabd1f9fa884d91"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2764,11 +3063,11 @@ dependencies = [
[[package]]
name = "wayland-protocols-wlr"
-version = "0.3.10"
+version = "0.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e9597cdf02cf0c34cd5823786dce6b5ae8598f05c2daf5621b6e178d4f7345f3"
+checksum = "eb04e52f7836d7c7976c78ca0250d61e33873c34156a2a1fc9474828ec268234"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"wayland-backend",
"wayland-client",
"wayland-protocols",
@@ -2777,9 +3076,9 @@ dependencies = [
[[package]]
name = "wayland-scanner"
-version = "0.31.8"
+version = "0.31.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5423e94b6a63e68e439803a3e153a9252d5ead12fd853334e2ad33997e3889e3"
+checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a"
dependencies = [
"proc-macro2",
"quick-xml",
@@ -2788,9 +3087,9 @@ dependencies = [
[[package]]
name = "wayland-sys"
-version = "0.31.8"
+version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e6dbfc3ac5ef974c92a2235805cc0114033018ae1290a72e474aa8b28cbbdfd"
+checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be"
dependencies = [
"dlib",
"log",
@@ -2800,9 +3099,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.91"
+version = "0.3.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "854ba17bb104abfb26ba36da9729addc7ce7f06f5c0f90f3c391f8461cca21f9"
+checksum = "4b572dff8bcf38bad0fa19729c89bb5748b2b9b1d8be70cf90df697e3a8f32aa"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -2820,9 +3119,9 @@ dependencies = [
[[package]]
name = "webbrowser"
-version = "1.1.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f00bb839c1cf1e3036066614cbdcd035ecf215206691ea646aa3c60a24f68f2"
+checksum = "0fc95580916af1e68ff6a7be07446fc5db73ebf71cf092de939bbf5f7e189f72"
dependencies = [
"core-foundation 0.10.1",
"jni",
@@ -2842,12 +3141,13 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
[[package]]
name = "wgpu"
-version = "27.0.1"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77"
+checksum = "bb3feacc458f7bee8bc1737149b42b6c731aa461039a4264a67bb6681646b250"
dependencies = [
"arrayvec",
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
+ "bytemuck",
"cfg-if",
"cfg_aliases",
"document-features",
@@ -2871,14 +3171,14 @@ dependencies = [
[[package]]
name = "wgpu-core"
-version = "27.0.3"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7"
+checksum = "02da3ad1b568337f25513b317870960ef87073ea0945502e44b864b67a8c77b7"
dependencies = [
"arrayvec",
"bit-set",
"bit-vec",
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"bytemuck",
"cfg_aliases",
"document-features",
@@ -2896,57 +3196,66 @@ dependencies = [
"thiserror 2.0.18",
"wgpu-core-deps-apple",
"wgpu-core-deps-emscripten",
+ "wgpu-core-deps-wasm",
"wgpu-core-deps-windows-linux-android",
"wgpu-hal",
+ "wgpu-naga-bridge",
"wgpu-types",
]
[[package]]
name = "wgpu-core-deps-apple"
-version = "27.0.0"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233"
+checksum = "62e51b5447e144b3dbba4feb01f80f4fa21696fa0cd99afb2c3df1affd6fdb28"
dependencies = [
"wgpu-hal",
]
[[package]]
name = "wgpu-core-deps-emscripten"
-version = "27.0.0"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5"
+checksum = "3487cd6293a963bc5c0c0396f6a2192043c50003c07f4efdccbad3d90ec9d819"
+dependencies = [
+ "wgpu-hal",
+]
+
+[[package]]
+name = "wgpu-core-deps-wasm"
+version = "29.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c2f2fb042f36920771deb0b966543c5751b18f3d327760ffc90f74e20b2dcd4"
dependencies = [
"wgpu-hal",
]
[[package]]
name = "wgpu-core-deps-windows-linux-android"
-version = "27.0.0"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3"
+checksum = "1bfb01076d0aa08b0ba9bd741e178b5cc440f5abe99d9581323a4c8b5d1a1916"
dependencies = [
"wgpu-hal",
]
[[package]]
name = "wgpu-hal"
-version = "27.0.4"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce"
+checksum = "31f8e1a9e7a8512f276f7c62e018c7fa8d60954303fed2e5750114332049193f"
dependencies = [
"android_system_properties",
"arrayvec",
"ash",
"bit-set",
- "bitflags 2.11.0",
- "block",
+ "bitflags 2.11.1",
+ "block2 0.6.2",
"bytemuck",
"cfg-if",
"cfg_aliases",
- "core-graphics-types 0.2.0",
"glow",
"glutin_wgl_sys",
- "gpu-alloc",
"gpu-allocator",
"gpu-descriptor",
"hashbrown 0.16.1",
@@ -2955,10 +3264,13 @@ dependencies = [
"libc",
"libloading",
"log",
- "metal",
"naga",
"ndk-sys",
- "objc",
+ "objc2 0.6.4",
+ "objc2-core-foundation",
+ "objc2-foundation 0.3.2",
+ "objc2-metal 0.3.2",
+ "objc2-quartz-core 0.3.2",
"once_cell",
"ordered-float",
"parking_lot",
@@ -2967,27 +3279,41 @@ dependencies = [
"profiling",
"range-alloc",
"raw-window-handle",
+ "raw-window-metal",
"renderdoc-sys",
"smallvec",
"thiserror 2.0.18",
"wasm-bindgen",
+ "wayland-sys",
"web-sys",
+ "wgpu-naga-bridge",
"wgpu-types",
"windows",
"windows-core",
+ "windows-result",
+]
+
+[[package]]
+name = "wgpu-naga-bridge"
+version = "29.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "59c654c483f058800972c3645e95388a7eca31bf9fe1933bc20e036588a0be02"
+dependencies = [
+ "naga",
+ "wgpu-types",
]
[[package]]
name = "wgpu-types"
-version = "27.0.1"
+version = "29.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb"
+checksum = "a9bcc31518a0e9735aefebedb5f7a9ef3ed1c42549c9f4c882fa9060ceaac639"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"bytemuck",
"js-sys",
"log",
- "thiserror 2.0.18",
+ "raw-window-handle",
"web-sys",
]
@@ -3002,32 +3328,54 @@ dependencies = [
[[package]]
name = "windows"
-version = "0.58.0"
+version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6"
+checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580"
+dependencies = [
+ "windows-collections",
+ "windows-core",
+ "windows-future",
+ "windows-numerics",
+]
+
+[[package]]
+name = "windows-collections"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610"
dependencies = [
"windows-core",
- "windows-targets 0.52.6",
]
[[package]]
name = "windows-core"
-version = "0.58.0"
+version = "0.62.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99"
+checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb"
dependencies = [
"windows-implement",
"windows-interface",
+ "windows-link",
"windows-result",
"windows-strings",
- "windows-targets 0.52.6",
+]
+
+[[package]]
+name = "windows-future"
+version = "0.3.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb"
+dependencies = [
+ "windows-core",
+ "windows-link",
+ "windows-threading",
]
[[package]]
name = "windows-implement"
-version = "0.58.0"
+version = "0.60.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b"
+checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf"
dependencies = [
"proc-macro2",
"quote",
@@ -3036,9 +3384,9 @@ dependencies = [
[[package]]
name = "windows-interface"
-version = "0.58.0"
+version = "0.59.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515"
+checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358"
dependencies = [
"proc-macro2",
"quote",
@@ -3052,31 +3400,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
[[package]]
-name = "windows-result"
-version = "0.2.0"
+name = "windows-numerics"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e"
+checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26"
dependencies = [
- "windows-targets 0.52.6",
+ "windows-core",
+ "windows-link",
]
[[package]]
-name = "windows-strings"
-version = "0.1.0"
+name = "windows-result"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10"
+checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5"
dependencies = [
- "windows-result",
- "windows-targets 0.52.6",
+ "windows-link",
]
[[package]]
-name = "windows-sys"
-version = "0.45.0"
+name = "windows-strings"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0"
+checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091"
dependencies = [
- "windows-targets 0.42.2",
+ "windows-link",
]
[[package]]
@@ -3117,21 +3465,6 @@ dependencies = [
[[package]]
name = "windows-targets"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071"
-dependencies = [
- "windows_aarch64_gnullvm 0.42.2",
- "windows_aarch64_msvc 0.42.2",
- "windows_i686_gnu 0.42.2",
- "windows_i686_msvc 0.42.2",
- "windows_x86_64_gnu 0.42.2",
- "windows_x86_64_gnullvm 0.42.2",
- "windows_x86_64_msvc 0.42.2",
-]
-
-[[package]]
-name = "windows-targets"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973"
@@ -3164,10 +3497,13 @@ dependencies = [
]
[[package]]
-name = "windows_aarch64_gnullvm"
-version = "0.42.2"
+name = "windows-threading"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8"
+checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37"
+dependencies = [
+ "windows-link",
+]
[[package]]
name = "windows_aarch64_gnullvm"
@@ -3183,12 +3519,6 @@ checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53"
[[package]]
name = "windows_aarch64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43"
-
-[[package]]
-name = "windows_aarch64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469"
@@ -3201,12 +3531,6 @@ checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006"
[[package]]
name = "windows_i686_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f"
-
-[[package]]
-name = "windows_i686_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b"
@@ -3231,12 +3555,6 @@ checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c"
[[package]]
name = "windows_i686_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060"
-
-[[package]]
-name = "windows_i686_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66"
@@ -3249,12 +3567,6 @@ checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2"
[[package]]
name = "windows_x86_64_gnu"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36"
-
-[[package]]
-name = "windows_x86_64_gnu"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78"
@@ -3267,12 +3579,6 @@ checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499"
[[package]]
name = "windows_x86_64_gnullvm"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3"
-
-[[package]]
-name = "windows_x86_64_gnullvm"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d"
@@ -3285,12 +3591,6 @@ checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1"
[[package]]
name = "windows_x86_64_msvc"
-version = "0.42.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0"
-
-[[package]]
-name = "windows_x86_64_msvc"
version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
@@ -3310,8 +3610,8 @@ dependencies = [
"ahash",
"android-activity",
"atomic-waker",
- "bitflags 2.11.0",
- "block2",
+ "bitflags 2.11.1",
+ "block2 0.5.1",
"bytemuck",
"calloop 0.13.0",
"cfg_aliases",
@@ -3327,7 +3627,7 @@ dependencies = [
"objc2 0.5.2",
"objc2-app-kit 0.2.2",
"objc2-foundation 0.2.2",
- "objc2-ui-kit",
+ "objc2-ui-kit 0.2.2",
"orbclient",
"percent-encoding",
"pin-project",
@@ -3355,24 +3655,24 @@ dependencies = [
[[package]]
name = "winnow"
-version = "0.7.14"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
+checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0"
dependencies = [
"memchr",
]
[[package]]
name = "wit-bindgen"
-version = "0.51.0"
+version = "0.57.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
[[package]]
name = "writeable"
-version = "0.6.2"
+version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9"
+checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4"
[[package]]
name = "x11-dl"
@@ -3418,7 +3718,7 @@ version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5"
dependencies = [
- "bitflags 2.11.0",
+ "bitflags 2.11.1",
"dlib",
"log",
"once_cell",
@@ -3439,9 +3739,9 @@ checksum = "3ae8337f8a065cfc972643663ea4279e04e7256de865aa66fe25cec5fb912d3f"
[[package]]
name = "yoke"
-version = "0.8.1"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954"
+checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca"
dependencies = [
"stable_deref_trait",
"yoke-derive",
@@ -3450,9 +3750,9 @@ dependencies = [
[[package]]
name = "yoke-derive"
-version = "0.8.1"
+version = "0.8.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d"
+checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e"
dependencies = [
"proc-macro2",
"quote",
@@ -3462,18 +3762,18 @@ dependencies = [
[[package]]
name = "zerocopy"
-version = "0.8.40"
+version = "0.8.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a789c6e490b576db9f7e6b6d661bcc9799f7c0ac8352f56ea20193b2681532e5"
+checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
-version = "0.8.40"
+version = "0.8.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f65c489a7071a749c849713807783f70672b28094011623e200cb86dcb835953"
+checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
dependencies = [
"proc-macro2",
"quote",
@@ -3482,18 +3782,18 @@ dependencies = [
[[package]]
name = "zerofrom"
-version = "0.1.6"
+version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5"
+checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
dependencies = [
"zerofrom-derive",
]
[[package]]
name = "zerofrom-derive"
-version = "0.1.6"
+version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502"
+checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1"
dependencies = [
"proc-macro2",
"quote",
@@ -3503,9 +3803,9 @@ dependencies = [
[[package]]
name = "zerotrie"
-version = "0.2.3"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851"
+checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf"
dependencies = [
"displaydoc",
"yoke",
@@ -3514,9 +3814,9 @@ dependencies = [
[[package]]
name = "zerovec"
-version = "0.11.5"
+version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002"
+checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239"
dependencies = [
"yoke",
"zerofrom",
@@ -3525,9 +3825,9 @@ dependencies = [
[[package]]
name = "zerovec-derive"
-version = "0.11.2"
+version = "0.11.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3"
+checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555"
dependencies = [
"proc-macro2",
"quote",
@@ -3536,15 +3836,15 @@ dependencies = [
[[package]]
name = "zune-core"
-version = "0.4.12"
+version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a"
+checksum = "cb8a0807f7c01457d0379ba880ba6322660448ddebc890ce29bb64da71fb40f9"
[[package]]
name = "zune-jpeg"
-version = "0.4.21"
+version = "0.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "29ce2c8a9384ad323cf564b67da86e21d3cfdff87908bc1223ed5c99bc792713"
+checksum = "27bc9d5b815bc103f142aa054f561d9187d191692ec7c2d1e2b4737f8dbd7296"
dependencies = [
"zune-core",
]
diff --git a/Cargo.toml b/Cargo.toml
index 95edc86..6b84c4a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -4,17 +4,18 @@ version = "0.1.0"
edition = "2024"
[dependencies]
+wgpu = "29.0.3"
+winit = { version = "0.30.13", features = ["wayland"]}
bytemuck = { version = "1.25.0", features = ["derive"]}
cgmath = "0.18.0"
csv = "1.4.0"
-egui = "0.33.3"
-egui-wgpu = { version = "0.33.3", features = [ "winit" ]}
-egui-winit = "0.33.3"
+egui = "0.34.2"
+egui-wgpu = { version = "0.34.2", features = [ "winit" ]}
+egui-winit = "0.34.2"
env_logger = "0.11.8"
log = "0.4.29"
phf = { version = "0.13.1", features = ["macros"]}
pollster = "0.4.0"
serde = { version = "1.0.228", features = ["derive"]}
stringreader = "0.1.1"
-wgpu = "27.0.1"
-winit = { version = "0.30.12", features = ["wayland"]}
+egui_extras = "0.34.2"
diff --git a/assets/shaders/tacmap/fleet.wgsl b/assets/shaders/tacmap/fleet.wgsl
index 8a87fb9..a79024d 100644
--- a/assets/shaders/tacmap/fleet.wgsl
+++ b/assets/shaders/tacmap/fleet.wgsl
@@ -44,7 +44,7 @@ fn vs_main(
instance.rotmat_1,
instance.rotmat_2
);
- let model_pos = rotmat * FLEET_VERTICES[index] * 0.025;
+ let model_pos = rotmat * FLEET_VERTICES[index] * 0.01;
var view = camera.view;
let min_size = 0.025;
@@ -61,7 +61,7 @@ fn vs_main(
let instance_vp_pos = view_proj * vec4<f32>(instance_pos, 1.0);
let model_vp_pos = view_proj * vec4<f32>(model_pos, 0.0);
- out.clip_position = instance_vp_pos + model_vp_pos;
+ out.clip_position = instance_vp_pos + model_vp_pos / normalize(instance_vp_pos).w;
out.color = vec3<f32>(0.75, 1.0, 0.75);
return out;
}
diff --git a/shell.nix b/shell.nix
index 1ae9742..3fbeaac 100644
--- a/shell.nix
+++ b/shell.nix
@@ -13,6 +13,7 @@ in {
pkg-config
];
buildInputs = [
+ gdb
clang
llvmPackages.bintools
rustup
diff --git a/src/eguictx.rs b/src/eguictx.rs
index 3bc2841..39f0ba2 100644
--- a/src/eguictx.rs
+++ b/src/eguictx.rs
@@ -126,7 +126,8 @@ impl EguiCtx
})],
depth_stencil_attachment: None,
timestamp_writes: None,
- occlusion_query_set: None
+ occlusion_query_set: None,
+ multiview_mask: None
});
self.renderer.render(
diff --git a/src/fleet.rs b/src/fleet.rs
index 39558cd..344aef3 100644
--- a/src/fleet.rs
+++ b/src/fleet.rs
@@ -15,8 +15,6 @@ use crate::ui::fleet_window::NewFleet;
pub type FleetId = usize;
-pub const FLEET_TICK_DURATION: Second = timeman::HOUR;
-
pub struct Fleet
{
id: FleetId,
@@ -56,8 +54,6 @@ impl StaticOrbiter for Fleet {
impl Fleet
{
- pub const TICK_DURATION: Second = FLEET_TICK_DURATION;
-
pub fn new(
id: FleetId,
name: String)
@@ -191,32 +187,7 @@ impl FleetsManager
time_now: Second)
-> Result<(), Second>
{
- let tick_interval = Fleet::TICK_DURATION;
-
- let time_then_offset = time_then % tick_interval;
- let time_now_offset = time_now % tick_interval;
-
- let tick_start = time_then + tick_interval - time_then_offset;
- let tick_end = time_now - time_now_offset;
-
- let num_ticks = (tick_end - tick_start) / tick_interval;
- let mut tick_interrupt: Option<Second> = None;
-
- for tick_i in 0..num_ticks+1 {
- let tick_time = tick_start + tick_i * tick_interval;
- if self.subtick_fleet(star_systems, tick_time).is_err() {
- tick_interrupt = Some(tick_time);
- }
- }
-
- let final_tick = match tick_interrupt {
- Some(v) => v,
- None => tick_end
- };
-
- if final_tick != tick_end {
- self.subtick_fleet(star_systems, final_tick);
- }
+ self.subtick_fleet(star_systems, time_now);
Ok(())
}
diff --git a/src/main.rs b/src/main.rs
index a50eec1..68ecd55 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -139,7 +139,7 @@ impl ApplicationHandler for SystemicApp
None => return
};
- window.on_event(&event);
+ let event_resp = window.on_event(&event);
match event {
WindowEvent::CloseRequested => {
@@ -156,14 +156,17 @@ impl ApplicationHandler for SystemicApp
game_state.borrow_mut().update(delta_time);
window.update(game_state, delta_time);
- match window.render(game_state) {
+ match window.render(game_state, event_resp) {
Ok(_) => {}
- Err(wgpu::SurfaceError::Outdated | wgpu::SurfaceError::Lost) => {
+ Err(wgpu::CurrentSurfaceTexture::Suboptimal(_) |
+ wgpu::CurrentSurfaceTexture::Outdated |
+ wgpu::CurrentSurfaceTexture::Lost
+ ) => {
let size = window.size();
window.resize(size.width, size.height);
},
- Err(e) => {
- log::error!("Unable to render: {}", e);
+ Err(_) => {
+ log::error!("Uncaught error while trying to render!");
}
}
if delta_time < TARGET_DT {
@@ -178,7 +181,9 @@ impl ApplicationHandler for SystemicApp
},
..
} => {
- window.keyboard_input(key_code, key_state);
+ if !event_resp.consumed {
+ window.keyboard_input(key_code, key_state);
+ }
}
_ => {}
}
diff --git a/src/solar_system.rs b/src/solar_system.rs
index 94508fd..7799a59 100644
--- a/src/solar_system.rs
+++ b/src/solar_system.rs
@@ -6,6 +6,8 @@ use self::orbit::*;
use serde::{Deserialize};
use crate::known_stars::*;
+use crate::ntree::NTree;
+use crate::ntree::NTreeNode;
use crate::timeman::Second;
use std::error::Error;
@@ -42,10 +44,26 @@ pub struct SolarSystem
name: String,
bodies: Vec<OrbitalBody>,
+ heirarchy: NTreeNode<BodyId>
}
impl SolarSystem
{
+ fn rebuild_system_heirarchy(
+ bodies: &[OrbitalBody],
+ root: &mut NTreeNode<BodyId>)
+ {
+ for body in bodies {
+ if let Some(orbit) = body.orbit() {
+ if orbit.parent() == *root.value() {
+ let mut subtree = NTreeNode::new(body.id());
+ SolarSystem::rebuild_system_heirarchy(bodies, &mut subtree);
+ root.insert_node(subtree);
+ }
+ }
+ }
+ }
+
pub fn new_from_csv(
id: SystemId,
data: &'static str)
@@ -69,13 +87,17 @@ impl SolarSystem
//if record.radius == 0.0 { continue; }
println!("New body: {:?}", record);
- bodies.push(OrbitalBody::new_from_record(bodies.len(), record));
+ bodies.push(OrbitalBody::new_from_record(bodies.len(), id, record));
}
+ let mut heirarchy_root = NTreeNode::new(0);
+ SolarSystem::rebuild_system_heirarchy(&bodies, &mut heirarchy_root);
+
Ok(Self {
id: id,
name: bodies[0].name().clone(),
bodies: bodies,
+ heirarchy: heirarchy_root
})
}
@@ -102,6 +124,9 @@ impl SolarSystem
pub fn body(&self, id: BodyId) -> &OrbitalBody
{ &self.bodies[id] }
+ pub fn heirarchy(&self) -> &NTreeNode<BodyId>
+ { &self.heirarchy }
+
pub fn body_position(
&self,
body: &OrbitalBody,
diff --git a/src/solar_system/body.rs b/src/solar_system/body.rs
index 3e61486..f3aef8c 100644
--- a/src/solar_system/body.rs
+++ b/src/solar_system/body.rs
@@ -9,6 +9,8 @@ pub const BODY_TICK_DURATION: Second = timeman::DAY;
pub struct OrbitalBody
{
id: BodyId,
+ system: SystemId,
+
name: String,
mass: Kilograms,
radius: Kilometers,
@@ -34,10 +36,12 @@ impl OrbitalBody
pub fn new_from_record(
id: BodyId,
+ system: SystemId,
record: CSVOrbitalBody)
-> Self {
Self {
- id: id,
+ id,
+ system,
name: record.name,
mass: record.mass,
radius: record.radius,
@@ -45,6 +49,7 @@ impl OrbitalBody
orbit: match record.orbits {
Some(parent) => Some(StaticOrbit::new(
parent,
+ system,
record.eccentricity,
record.inclination,
record.long_asc_node,
@@ -59,6 +64,7 @@ impl OrbitalBody
}
pub fn id(&self) -> BodyId { self.id }
+ pub fn system(&self) -> SystemId { self.system }
pub fn name(&self) -> &String { &self.name }
pub fn radius(&self) -> f32 { self.radius as f32 }
pub fn mass(&self) -> Kilograms { self.mass }
diff --git a/src/solar_system/orbit.rs b/src/solar_system/orbit.rs
index f5a564c..b29e2c2 100644
--- a/src/solar_system/orbit.rs
+++ b/src/solar_system/orbit.rs
@@ -1,9 +1,11 @@
-use crate::solar_system::{Angle, BodyId, Kilometers, OrbitalBody, Percentage};
+use crate::solar_system::{Angle, BodyId, Kilometers, OrbitalBody, Percentage, SystemId};
use crate::timeman::{Second};
pub struct StaticOrbit
{
parent: BodyId,
+ system: SystemId,
+
eccentricity: Percentage,
inclination: Angle,
long_asc_node: Angle,
@@ -23,6 +25,7 @@ impl StaticOrbit
{
pub fn new(
parent: BodyId,
+ system: SystemId,
eccentricity: Percentage,
inclination: Angle,
long_asc_node: Angle,
@@ -32,6 +35,7 @@ impl StaticOrbit
-> Self {
Self {
parent,
+ system,
eccentricity,
inclination,
long_asc_node,
@@ -48,6 +52,7 @@ impl StaticOrbit
{
Self {
parent: parent.id(),
+ system: parent.system(),
eccentricity: 1e-6,
inclination: 0.0,
long_asc_node: 0.0,
@@ -65,9 +70,8 @@ impl StaticOrbit
((self.semi_major_axis.powf(3.0) / this_body.sgp()).sqrt() * std::f64::consts::TAU) as Second
}
- pub fn parent(&self) -> BodyId {
- self.parent
- }
+ pub fn parent(&self) -> BodyId { self.parent }
+ pub fn system(&self) -> SystemId { self.system }
pub fn sma(&self) -> Kilometers { self.semi_major_axis }
diff --git a/src/tacmap.rs b/src/tacmap.rs
index 9ff69f6..05747d4 100644
--- a/src/tacmap.rs
+++ b/src/tacmap.rs
@@ -101,16 +101,18 @@ impl TacticalMap
self.camera_controller.keyboard_input(key_code, key_state);
}
- pub fn draw(
+ pub fn prepare(
&mut self,
+ scene: &mut SceneCtx,
wgpuctx: &WgpuCtx,
- fleets_manager: &FleetsManager,
+ fleets_man: &FleetsManager,
solar_system: &SolarSystem,
timeman: &TimeMan,
- ) -> Result<(), wgpu::SurfaceError>
+ ) -> Result<(), ()>
{
self.camera.update_buffer(wgpuctx, &self.pmatrix);
-
+ self.camera.stage_changes(scene.encoder_mut());
+
if self.system_for_render.is_none()
|| self.system_for_render.unwrap() != solar_system.id() {
@@ -123,8 +125,12 @@ impl TacticalMap
self.body_renderer.rebuild(wgpuctx, solar_system);
self.orbit_renderer.rebuild(wgpuctx, solar_system);
- match self.orbit_renderer.update(wgpuctx, solar_system, timeman.seconds())
- {
+ match self.orbit_renderer.update(
+ wgpuctx,
+ fleets_man,
+ solar_system,
+ timeman.seconds()
+ ){
Ok(()) => {},
Err(e) => println!("Tactical map orbit render update error: {}", e)
}
@@ -137,7 +143,7 @@ impl TacticalMap
match self.fleet_renderer.update(
wgpuctx,
- fleets_manager,
+ fleets_man,
solar_system,
timeman.seconds())
{
@@ -148,13 +154,6 @@ impl TacticalMap
Ok(())
}
- pub fn prepare(
- &self,
- scene: &mut SceneCtx)
- {
- self.camera.stage_changes(scene.encoder_mut());
- }
-
pub fn paint(
&self,
pass: &mut wgpu::RenderPass<'_>)
diff --git a/src/tacmap/orbit_render.rs b/src/tacmap/orbit_render.rs
index 7c0a089..32c0abb 100644
--- a/src/tacmap/orbit_render.rs
+++ b/src/tacmap/orbit_render.rs
@@ -2,6 +2,7 @@ use std::error::Error;
use super::*;
+use crate::fleet::FleetId;
use crate::solar_system::body::{BodyId, OrbitalBody};
use crate::solar_system::orbit::StaticOrbiter;
use crate::timeman::{self, Second};
@@ -10,12 +11,15 @@ use crate::wgpuctx::{WgpuCtx, pipeline::RenderPipelineBuilder};
pub struct OrbitRenderer
{
needs_rebuild: bool,
- last_tick: Option<Second>,
+ last_time: Option<Second>,
pipeline: wgpu::RenderPipeline,
- orbit_vertex_buffers: Option<Vec<(BodyId, wgpu::Buffer)>>,
+ body_orbit_vertex_buffers: Option<Vec<(BodyId, wgpu::Buffer)>>,
+ fleet_orbit_vertex_buffers: Option<Vec<(FleetId, wgpu::Buffer)>>,
+
origin_buffer: Option<wgpu::Buffer>,
+
origin_bind_group: Option<wgpu::BindGroup>,
origin_bind_group_layout: wgpu::BindGroupLayout
}
@@ -59,9 +63,12 @@ impl OrbitRenderer
Self {
needs_rebuild: true,
- last_tick: None,
+ last_time: None,
pipeline: render_pipeline,
- orbit_vertex_buffers: None,
+
+ body_orbit_vertex_buffers: None,
+ fleet_orbit_vertex_buffers: None,
+
origin_buffer: None,
origin_bind_group: None,
origin_bind_group_layout: origin_bind_group_layout
@@ -123,19 +130,23 @@ impl OrbitRenderer
wgpuctx: &WgpuCtx,
solar_system: &SolarSystem)
{
- if self.orbit_vertex_buffers.is_some() && !self.needs_rebuild {
+ if self.body_orbit_vertex_buffers.is_some() && !self.needs_rebuild {
return;
}
self.needs_rebuild = false;
- match &self.orbit_vertex_buffers {
- Some(buffers) => {
- for buffer in buffers {
- buffer.1.destroy();
- }
- self.orbit_vertex_buffers = None;
- },
- None => {}
+ if let Some(buffers) = &self.body_orbit_vertex_buffers {
+ for buffer in buffers {
+ buffer.1.destroy();
+ }
+ self.body_orbit_vertex_buffers = None;
+ };
+
+ if let Some(buffers) = &self.fleet_orbit_vertex_buffers {
+ for buffer in buffers {
+ buffer.1.destroy();
+ }
+ self.fleet_orbit_vertex_buffers = None;
};
//From the solar system's bodies, calculate the orbits.
@@ -171,7 +182,7 @@ impl OrbitRenderer
));
self.origin_buffer = Some(origin_buffer);
- self.orbit_vertex_buffers = Some(bodies.iter().filter_map(|body| {
+ self.body_orbit_vertex_buffers = Some(bodies.iter().filter_map(|body| {
self.create_orbit_buffer(wgpuctx, body, 0)
}).collect::<Vec<_>>());
}
@@ -179,16 +190,29 @@ impl OrbitRenderer
pub fn update(
&mut self,
wgpuctx: &WgpuCtx,
+ fleets_man: &FleetsManager,
solar_system: &SolarSystem,
time: Second)
-> Result<(), Box<dyn Error>>
{
- let tick = time / OrbitalBody::TICK_DURATION;
- if self.last_tick.is_some_and(|t| { t == tick }) {
+ if self.last_time.is_some_and(|t| { t == time }) {
return Ok(());
}
+
+ self.fleet_orbit_vertex_buffers =
+ Some(fleets_man.all_in_system(solar_system.id()).iter().filter_map(|id| {
+ let fleet = fleets_man.entry(*id).unwrap();
+ self.create_orbit_buffer(wgpuctx, fleet, time)
+ }).collect::<Vec<_>>());
- self.last_tick = Some(time);
+ let body_tick = time / OrbitalBody::TICK_DURATION;
+ let last_body_tick = self.last_time.unwrap_or(i64::MAX) / OrbitalBody::TICK_DURATION;
+ self.last_time = Some(time);
+
+ if body_tick == last_body_tick {
+ return Ok(());
+ }
+
let positions = solar_system.bodies().iter().map(|body| {
let pos = solar_system.body_position(body, time);
[ pos.x as f32, pos.y as f32, pos.z as f32 ]
@@ -201,10 +225,6 @@ impl OrbitRenderer
None => { return Err(Box::new(NeedsRebuildError)); }
};
- //let bodies = solar_system.bodies();
- /*self.orbit_vertex_buffers = Some(bodies.iter().map(|body| {
- self.create_orbit_buffer_for_body(wgpuctx, body, tick_time)
- }).collect::<Vec<_>>());*/
Ok(())
}
@@ -213,11 +233,6 @@ impl OrbitRenderer
pass: &mut wgpu::RenderPass,
camera: &Camera)
{
- let buffers = match &self.orbit_vertex_buffers {
- Some(v) => v,
- None => return
- };
-
pass.set_pipeline(&self.pipeline);
pass.set_bind_group(0, camera.bindgroup(), &[]);
@@ -226,9 +241,17 @@ impl OrbitRenderer
None => { return; }
}
- for (num_points, buffer) in buffers {
- pass.set_vertex_buffer(0, buffer.slice(..));
- pass.draw(0..(*num_points as u32), 0..1);
+ if let Some(body_buffers) = &self.body_orbit_vertex_buffers {
+ for (num_points, buffer) in body_buffers {
+ pass.set_vertex_buffer(0, buffer.slice(..));
+ pass.draw(0..(*num_points as u32), 0..1);
+ }
+ }
+ if let Some(fleet_buffers) = &self.fleet_orbit_vertex_buffers {
+ for (num_points, buffer) in fleet_buffers {
+ pass.set_vertex_buffer(0, buffer.slice(..));
+ pass.draw(0..(*num_points as u32), 0..1);
+ }
}
}
}
diff --git a/src/texture.rs b/src/texture.rs
index f5165a7..cef96d6 100644
--- a/src/texture.rs
+++ b/src/texture.rs
@@ -24,7 +24,7 @@ impl Texture
address_mode_w: wgpu::AddressMode::ClampToEdge,
mag_filter: wgpu::FilterMode::Linear,
min_filter: wgpu::FilterMode::Nearest,
- mipmap_filter: wgpu::FilterMode::Nearest,
+ mipmap_filter: wgpu::MipmapFilterMode::Nearest,
..Default::default()
}
);
diff --git a/src/ui.rs b/src/ui.rs
index c2c4b05..73389a8 100644
--- a/src/ui.rs
+++ b/src/ui.rs
@@ -23,15 +23,15 @@ pub struct State
impl State
{
- pub fn render(
+ pub fn paint(
&mut self,
game_state: &RefCell<GameState>,
- eguictx: &EguiCtx)
+ ui: &mut egui::Ui)
{
let mut game_state = game_state.borrow_mut();
let topbar_action = self.topbar_sate.paint(
- eguictx,
+ ui,
&game_state,
&self.bodies_window,
&self.fleet_window);
@@ -48,13 +48,17 @@ impl State
};
let bodies_window_action =
- self.bodies_window.render(current_system, eguictx);
+ self.bodies_window.paint(ui, current_system);
if bodies_window_action.focus_body.is_some() {
self.camera_target = bodies_window_action.focus_body;
}
let fleet_window_action =
- self.fleet_window.paint(game_state.borrow(), eguictx, &self.camera_target);
+ self.fleet_window.paint(
+ ui,
+ game_state.borrow(),
+ &self.topbar_sate.current_system,
+ &self.camera_target);
if let Some(new_fleet) = fleet_window_action.new_fleet {
game_state.new_fleet_from_ui(new_fleet);
diff --git a/src/ui/bodies_window.rs b/src/ui/bodies_window.rs
index 21a2060..7e24948 100644
--- a/src/ui/bodies_window.rs
+++ b/src/ui/bodies_window.rs
@@ -1,6 +1,3 @@
-use egui::Sense;
-
-use crate::eguictx::EguiCtx;
use crate::ntree::{NTree, NTreeNode};
use crate::solar_system::body::{BodyId, OrbitalBody};
use crate::solar_system::{SolarSystem, SystemId};
@@ -11,8 +8,6 @@ use crate::timeman::TimeMan;
pub struct BodiesWindowState
{
pub open: bool,
- last_system: Option<SystemId>,
- system_heirarchy: NTree<SystemId>,
selected_body: Option<BodyId>
}
@@ -24,64 +19,19 @@ pub struct BodiesWindowAction
impl BodiesWindowState
{
- fn build_system_heirarchy_rec(
- bodies: &[OrbitalBody],
- node: &mut NTreeNode<BodyId>)
- {
- for body in bodies {
- let orbit = body.get_orbit();
- match orbit {
- Some(orbit) => {
- if orbit.parent() != *node.value() {
- continue;
- }
- },
- None => {
- continue;
- }
- }
- let mut subnode = NTreeNode::new(body.id());
- BodiesWindowState::build_system_heirarchy_rec(bodies, &mut subnode);
- node.insert_node(subnode);
- }
- }
-
- fn rebuild_system_heirarchy(
+ pub fn paint(
&mut self,
- star_system: &SolarSystem)
- {
- let mut root_node = NTreeNode::<BodyId>::new(0);
-
- let bodies = star_system.bodies();
- BodiesWindowState::build_system_heirarchy_rec(bodies, &mut root_node);
- self.system_heirarchy.set_root(root_node);
- }
-
- pub fn render(
- &mut self,
- current_system: &SolarSystem,
- eguictx: &EguiCtx)
+ ui: &mut egui::Ui,
+ current_system: &SolarSystem)
-> BodiesWindowAction
{
- match self.last_system {
- Some(last_system) => {
- if last_system != current_system.id() {
- self.rebuild_system_heirarchy(current_system);
- }
- },
- None => {
- self.rebuild_system_heirarchy(current_system);
- }
- }
- self.last_system = Some(current_system.id());
-
let mut action = BodiesWindowAction::default();
let mut bodies_window_open = self.open;
egui::Window::new("Bodies")
.open(&mut &mut bodies_window_open)
.resizable(true)
- .show(eguictx.context(), |ui| {
+ .show(ui.ctx(), |ui| {
ui.horizontal(|ui| {
self.paint_bodies_list(current_system, ui);
@@ -142,8 +92,8 @@ impl BodiesWindowState
.min_scrolled_height(200.0)
.show(ui, |ui| {
ui.vertical(|ui| {
- let root = self.system_heirarchy.root();
- let new_sel = self.paint_bodies_node_rec(star_system, root.as_ref().unwrap(), ui);
+ let root = star_system.heirarchy();
+ let new_sel = self.paint_bodies_node_rec(star_system, root, ui);
if new_sel.is_some() {
self.selected_body = new_sel;
}
@@ -176,26 +126,40 @@ impl BodiesWindowState
});
ui.vertical(|ui| {
- ui.vertical_centered(|ui| {
- ui.label("Physical Properties");
- });
- ui.label(format!("Mass: {:.4E} kg", selected_body.mass()));
- ui.label(format!("Radius: {} km", selected_body.radius()));
-
- if let Some(orbit) = selected_body.get_orbit() {
- ui.vertical_centered(|ui| {
- ui.label("Orbital Properties");
+ ui.style_mut().interaction.selectable_labels = false;
+ egui_extras::TableBuilder::new(ui)
+ .column(egui_extras::Column::auto())
+ .column(egui_extras::Column::remainder())
+ .body(|mut body| {
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Mass"); });
+ row.col(|col| { col.label(format!("{:.4E}", selected_body.mass())); });
});
- ui.label(format!("Orbiting {}",
- star_system.body(orbit.parent()).name()
- ));
- ui.label(format!("Period: {}",
- TimeMan::format_duration(orbit.period(selected_body))
- ));
- ui.label(format!("Semi-major Axis: {:.4E} km",
- orbit.sma()
- ));
- }
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Radius"); });
+ row.col(|col| { col.label(format!("{:.4E}", selected_body.radius())); });
+ });
+
+ if let Some(orbit) = selected_body.get_orbit() {
+ let parent = star_system.body(orbit.parent());
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Orbiting"); });
+ row.col(|col| { col.label(parent.name()); });
+ });
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Period"); });
+ row.col(|col| {
+ col.label(format!("{}",
+ TimeMan::format_duration(orbit.period(selected_body))
+ ));
+ });
+ });
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Semi-major Axis"); });
+ row.col(|col| { col.label(format!("{:.4E} km", orbit.sma())); });
+ });
+ }
+ });
});
});
diff --git a/src/ui/fleet_window.rs b/src/ui/fleet_window.rs
index eb8ccde..55e3d59 100644
--- a/src/ui/fleet_window.rs
+++ b/src/ui/fleet_window.rs
@@ -1,17 +1,22 @@
-use std::cell::RefCell;
-
use crate::GameState;
-use crate::eguictx::EguiCtx;
-use crate::fleet::{Fleet, FleetsManager};
+use crate::fleet::{Fleet, FleetId, FleetsManager};
+use crate::solar_system::orbit::StaticOrbiter;
use crate::solar_system::{Kilometers, SolarSystem, SystemId};
use crate::solar_system::body::BodyId;
+#[derive(Default, Clone, PartialEq)]
+enum FleetMenuPanelSel {
+ #[default]
+ Info,
+ Schedule
+}
#[derive(Default, Clone)]
pub struct FleetWindowState
{
pub open: bool,
- pub selected_system: Option<SystemId>,
+ pub selected_fleet: Option<FleetId>,
+ pub menu_panel: FleetMenuPanelSel,
pub new_fleet_window: Option<NewFleetWindowState>
}
@@ -33,7 +38,7 @@ pub struct NewFleetWindowState
pub fleet_sma: Kilometers
}
-#[derive(Default, Clone)]
+#[derive(Clone)]
pub struct NewFleet
{
pub system: SystemId,
@@ -46,8 +51,9 @@ impl FleetWindowState
{
pub fn paint(
&mut self,
+ ui: &mut egui::Ui,
game_state: &GameState,
- eguictx: &EguiCtx,
+ focused_system: &Option<SystemId>,
focused_body: &Option<BodyId>)
-> FleetWindowAction
{
@@ -59,22 +65,30 @@ impl FleetWindowState
let mut mgr_open = self.open;
egui::Window::new("Fleet Manager")
.open(&mut mgr_open)
- .show(eguictx.context(), |ui| {
+ .show(ui.ctx(), |ui| {
- ui.horizontal(|ui| {
- self.paint_systems_list(
- &mut action,
- ui,
- fleets_manager,
- star_systems,
- focused_body
- );
+ ui.vertical(|ui| {
+ ui.horizontal(|ui| {
+ self.paint_fleet_list(fleets_manager, ui);
+ self.paint_fleet_menu(star_systems, fleets_manager, ui);
+ });
+
+ if focused_system.is_some() {
+ if ui.button("New Fleet").clicked() {
+ if self.new_fleet_window.is_none() {
+ self.new_fleet_window = Some(NewFleetWindowState::new(
+ focused_system.unwrap(),
+ focused_body.unwrap_or(0)
+ ));
+ }
+ }
+ }
});
});
match &mut self.new_fleet_window {
Some(new_fleet_window) => {
- action.new_fleet = new_fleet_window.paint(game_state, eguictx);
+ action.new_fleet = new_fleet_window.paint(ui, game_state);
if action.new_fleet.is_some() || !new_fleet_window.open {
self.new_fleet_window = None;
}
@@ -86,53 +100,106 @@ impl FleetWindowState
action
}
- fn paint_systems_list(
+ fn paint_fleet_menu(
&mut self,
- action: &mut FleetWindowAction,
- ui: &mut egui::Ui,
- fleets_manager: &FleetsManager,
star_systems: &[SolarSystem],
- focused_body: &Option<BodyId>)
- -> egui::InnerResponse<()>
+ fleets_man: &FleetsManager,
+ ui: &mut egui::Ui)
{
- ui.vertical(|ui| {
- for system in star_systems {
- self.paint_fleet_list(fleets_manager, &system, ui);
+ let fleet = match self.selected_fleet {
+ Some(id) => { fleets_man.entry(id) },
+ None => { return; }
+ };
+ let fleet = match fleet {
+ Some(entry) => entry,
+ None => {
+ self.selected_fleet = None;
+ return;
}
+ };
- if self.selected_system.is_none() { return; }
- if ui.button("New Fleet").clicked() {
- if self.new_fleet_window.is_none() {
- self.new_fleet_window = Some(NewFleetWindowState::new(
- self.selected_system.unwrap(),
- focused_body.unwrap_or(0)
- ));
+ ui.separator();
+ ui.vertical(|ui| {
+ ui.horizontal(|ui| {
+ if ui.button("Info").clicked() {
+ self.menu_panel = FleetMenuPanelSel::Info;
}
+ if ui.button("Schedule").clicked() {
+ self.menu_panel = FleetMenuPanelSel::Schedule;
+ }
+ });
+ self.paint_fleet_menu_info(star_systems, fleets_man, fleet, ui);
+ });
+ }
+
+ fn paint_fleet_menu_info(
+ &mut self,
+ star_systems: &[SolarSystem],
+ fleets_man: &FleetsManager,
+ fleet: &Fleet,
+ ui: &mut egui::Ui)
+ {
+ if self.menu_panel != FleetMenuPanelSel::Info {
+ return;
+ }
+ egui::Frame::canvas(ui.style()).show(ui, |ui| {
+ ui.set_min_width(200.0);
+ ui.style_mut().interaction.selectable_labels = false;
+
+ if let Some(orbit) = fleet.orbit() {
+ let star_system = &star_systems[orbit.system()];
+ let parent = star_system.body(orbit.parent());
+
+ ui.push_id("orbital_info_table", |ui| {
+ egui_extras::TableBuilder::new(ui)
+ .column(egui_extras::Column::auto())
+ .column(egui_extras::Column::remainder())
+ .body(|mut body| {
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("System"); });
+ row.col(|col| { col.label(star_system.name()); });
+ });
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Orbiting"); });
+ row.col(|col| { col.label(parent.name()); });
+ });
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Radius"); });
+ row.col(|col| { col.label(format!("{:.1}", orbit.sma())); });
+ });
+ });
+ });
+
+ ui.separator();
}
- })
+
+ let heading = fleet.heading();
+ egui_extras::TableBuilder::new(ui)
+ .column(egui_extras::Column::auto())
+ .column(egui_extras::Column::remainder())
+ .body(|mut body| {
+ body.row(16.0, |mut row| {
+ row.col(|col| { col.label("Heading"); });
+ row.col(|col| {
+ col.label(format!("{:?} by {:?}",
+ cgmath::Deg::<f32>::from(heading.x),
+ cgmath::Deg::<f32>::from(heading.y)
+ ));
+ });
+ });
+ });
+ });
}
fn paint_fleet_list(
&mut self,
- fleets_manager: &FleetsManager,
- star_system: &SolarSystem,
+ fleets_man: &FleetsManager,
ui: &mut egui::Ui)
{
- let fleet_ids = star_system.fleets(fleets_manager);
- egui::collapsing_header::CollapsingState::load_with_default_open(
- ui.ctx(),
- ui.make_persistent_id(format!("fleet_window_star_{}", star_system.id())),
- true
- )
- .show_header(ui, |ui| {
- let selected = self.selected_system.is_some_and(|id| { id == star_system.id() });
- if ui.selectable_label(selected, star_system.name()).clicked() {
- self.selected_system = if !selected { Some(star_system.id()) } else { None };
- }
- })
- .body(|ui| {
+ let fleet_ids = fleets_man.all();
+ ui.vertical(|ui| {
for id in fleet_ids {
- if let Some(fleet) = fleets_manager.entry(id) {
+ if let Some(fleet) = fleets_man.entry(id) {
self.paint_fleet_entry(fleet, ui);
}
}
@@ -144,7 +211,10 @@ impl FleetWindowState
fleet: &Fleet,
ui: &mut egui::Ui)
{
- ui.label(fleet.name());
+ let selected = self.selected_fleet.is_some_and(|id| { id == fleet.id() });
+ if ui.selectable_label(selected, fleet.name()).clicked() {
+ self.selected_fleet = if selected { None } else { Some(fleet.id()) };
+ }
}
} // FleetWindowAction
@@ -164,8 +234,8 @@ impl NewFleetWindowState
pub fn paint(
&mut self,
- game_state: &GameState,
- eguictx: &EguiCtx)
+ ui: &mut egui::Ui,
+ game_state: &GameState,)
-> Option<NewFleet>
{
let solar_system = &game_state.solar_systems()[self.parent_system];
@@ -174,7 +244,7 @@ impl NewFleetWindowState
match egui::Window::new("New Fleet")
.collapsible(false)
.open(&mut self.open)
- .show(eguictx.context(), |ui| {
+ .show(ui.ctx(), |ui| {
ui.vertical(|ui| {
ui.horizontal(|ui| {
ui.label("Name: ");
@@ -205,4 +275,16 @@ impl NewFleetWindowState
None => None
}
}
+} // impl FleetWindowState
+
+impl Default for NewFleet
+{
+ fn default() -> Self {
+ Self {
+ system: Default::default(),
+ orbiting: Default::default(),
+ name: "New Fleet".to_string(),
+ sma: Default::default()
+ }
+ }
}
diff --git a/src/ui/topbar.rs b/src/ui/topbar.rs
index ba26d7c..511c67e 100644
--- a/src/ui/topbar.rs
+++ b/src/ui/topbar.rs
@@ -22,7 +22,7 @@ impl TopBarState
{
pub fn paint(
&mut self,
- eguictx: &EguiCtx,
+ ui: &mut egui::Ui,
game_state: &GameState,
bodies_window_state: &BodiesWindowState,
fleets_window_state: &FleetWindowState)
@@ -33,8 +33,8 @@ impl TopBarState
let solar_systems = game_state.solar_systems();
let timeman = game_state.timeman();
- egui::TopBottomPanel::top("topbar").show(
- eguictx.context(),
+ egui::Panel::top("topbar").show_inside(
+ ui,
|ui| {
ui.horizontal(|ui| {
@@ -62,7 +62,7 @@ impl TopBarState
});
});
- self.paint_tick_buttons(&mut action, timeman, ui);
+ self.paint_tick_buttons(&mut action, ui);
});
ui.vertical_centered_justified(|ui| {
@@ -95,7 +95,6 @@ impl TopBarState
pub fn paint_tick_buttons(
&mut self,
action: &mut TopBarAction,
- timeman: &TimeMan,
ui: &mut egui::Ui)
{
let button_seconds = [
diff --git a/src/wgpuctx/mod.rs b/src/wgpuctx/mod.rs
index 5f8e381..ef2abfc 100644
--- a/src/wgpuctx/mod.rs
+++ b/src/wgpuctx/mod.rs
@@ -1,5 +1,5 @@
use std::sync::Arc;
-use wgpu::util::DeviceExt;
+use wgpu::{CurrentSurfaceTexture, util::DeviceExt};
use winit::window::{Window};
use crate::texture::Texture;
@@ -106,13 +106,17 @@ impl WgpuCtx
pub fn prepare_surface(
&mut self,
view_descr: &wgpu::TextureViewDescriptor)
- -> Result<wgpu::TextureView, wgpu::SurfaceError>
+ -> Result<wgpu::TextureView, CurrentSurfaceTexture>
{
- let texture = self.surface.get_current_texture()?;
- let view = texture.texture.create_view(view_descr);
-
- self.surface_texture = Some(texture);
- Ok(view)
+ let surface_texture = self.surface.get_current_texture();
+ match surface_texture {
+ CurrentSurfaceTexture::Success(texture) => {
+ let view = texture.texture.create_view(view_descr);
+ self.surface_texture = Some(texture);
+ Ok(view)
+ },
+ _ => Err(surface_texture)
+ }
}
pub fn create_encoder(
@@ -277,6 +281,7 @@ impl<'encoder> RenderPassBuilder<'encoder>
depth_stencil_attachment: None,
occlusion_query_set: None,
timestamp_writes: None,
+ multiview_mask: None,
}
)
}
diff --git a/src/wgpuctx/pipeline.rs b/src/wgpuctx/pipeline.rs
index d698ac4..460b71d 100644
--- a/src/wgpuctx/pipeline.rs
+++ b/src/wgpuctx/pipeline.rs
@@ -3,7 +3,7 @@ use crate::wgpuctx::WgpuCtx;
pub struct RenderPipelineBuilder<'a>
{
- bind_groups: Vec<&'a wgpu::BindGroupLayout>,
+ bind_groups: Vec<Option<&'a wgpu::BindGroupLayout>>,
shader: &'a wgpu::ShaderModule,
vertex_entry_point: Option<&'static str>,
@@ -44,7 +44,7 @@ impl<'a> RenderPipelineBuilder<'a>
mut self,
bindgroup: &'a wgpu::BindGroupLayout)
-> Self {
- self.bind_groups.push(bindgroup);
+ self.bind_groups.push(Some(bindgroup));
self
}
@@ -79,7 +79,7 @@ impl<'a> RenderPipelineBuilder<'a>
let layout_descr = wgpu::PipelineLayoutDescriptor {
label: label,
bind_group_layouts: self.bind_groups.as_slice(),
- push_constant_ranges: &[]
+ immediate_size: 0,
};
let layout = wgpuctx.create_pipeline_layout(&layout_descr);
@@ -134,8 +134,8 @@ impl<'a> RenderPipelineBuilder<'a>
mask: !0,
alpha_to_coverage_enabled: false
},
- multiview: None,
- cache: None
+ cache: None,
+ multiview_mask: None,
}
)
diff --git a/src/window.rs b/src/window.rs
index 29c347f..3c395d5 100644
--- a/src/window.rs
+++ b/src/window.rs
@@ -12,10 +12,11 @@ use crate::eguictx::EguiCtx;
pub struct GameWindow
{
- window: Arc<winit::window::Window>,
wgpuctx: WgpuCtx,
eguictx: EguiCtx,
+ window: Arc<winit::window::Window>,
+
tactical_map: TacticalMap,
ui_state: ui::State
@@ -92,52 +93,66 @@ impl GameWindow
pub fn render(
&mut self,
- game_state: &RefCell<GameState>)
- -> Result<(), wgpu::SurfaceError> {
+ game_state: &RefCell<GameState>,
+ egui_event_resp: egui_winit::EventResponse)
+ -> Result<(), wgpu::CurrentSurfaceTexture> {
if !self.wgpuctx.is_ready() {
return Ok(());
}
-
- let view = self.wgpuctx.prepare_surface(&wgpu::TextureViewDescriptor::default())?;
- let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene"));
- self.eguictx.prepare(&self.window);
let screen_size = egui::vec2(
self.wgpuctx.surface_config().width as f32,
self.wgpuctx.surface_config().height as f32);
+
+ let view = self.wgpuctx.prepare_surface(&wgpu::TextureViewDescriptor::default())?;
+ let mut scene = SceneCtx::from_view_default(&self.wgpuctx, &view, Some("Systemic window scene"));
- self.ui_state.render(game_state, &self.eguictx);
- if self.ui_state.topbar_sate.current_system.is_some() {
- let game_state = game_state.borrow();
- let fleets_manager = game_state.fleets();
- let current_system = &game_state.solar_systems()[self.ui_state.topbar_sate.current_system.unwrap()];
-
- self.tactical_map.draw(
- &self.wgpuctx,
- fleets_manager,
- current_system,
- game_state.timeman())?;
-
- self.tactical_map.prepare(&mut scene);
-
- let mut pass = RenderPassBuilder::new(Some("Systemic window render pass"), &view)
- .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.1, a: 1.0 })
- .build_from_scene(&mut scene);
-
- //Draw the tactical map canvas.
- self.tactical_map.paint(&mut pass);
-
- egui::CentralPanel::default()
- .frame(egui::Frame::new())
- .show(self.eguictx.context(), |ui| {
- self.tactical_map.paint_labels(
- current_system,
- game_state.timeman().seconds(),
- screen_size,
- ui
- );
- });
- }
+ self.eguictx.prepare(&self.window);
+
+ egui::Window::new("Systemic 4X")
+ .fixed_rect(egui::Rect::from_min_size(egui::pos2(0.0, 0.0), screen_size))
+ .resizable(false)
+ .collapsible(false)
+ .title_bar(false)
+ .interactable(false)
+ .frame(egui::Frame::NONE)
+ .show(self.eguictx.context(), |ui| {
+ self.ui_state.paint(game_state, ui);
+
+ if self.ui_state.topbar_sate.current_system.is_some() {
+ let game_state = game_state.borrow();
+ let fleets_manager = game_state.fleets();
+ let current_system = &game_state.solar_systems()[self.ui_state.topbar_sate.current_system.unwrap()];
+
+ match self.tactical_map.prepare(
+ &mut scene,
+ &self.wgpuctx,
+ fleets_manager,
+ current_system,
+ game_state.timeman())
+ {
+ Ok(_) => {},
+ Err(_) => {
+ println!("Error in tactical map prepare");
+ panic!();
+ }
+ }
+
+ let mut pass = RenderPassBuilder::new(Some("Systemic window render pass"), &view)
+ .clear_color(wgpu::Color { r: 0.0, g: 0.0, b: 0.1, a: 1.0 })
+ .build_from_scene(&mut scene);
+
+ //Draw the tactical map canvas.
+ self.tactical_map.paint(&mut pass);
+
+ self.tactical_map.paint_labels(
+ current_system,
+ game_state.timeman().seconds(),
+ screen_size,
+ ui
+ );
+ }
+ });
self.eguictx.present(
&self.window,
&self.wgpuctx,
@@ -154,10 +169,9 @@ impl GameWindow
pub fn on_event(
&mut self,
event: &WindowEvent)
+ -> egui_winit::EventResponse
{
- if self.eguictx.window_event(&self.window, event).consumed {
- return;
- }
+ self.eguictx.window_event(&self.window, event)
}
pub fn resize(