summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cargo.lock1166
-rw-r--r--Cargo.toml8
-rw-r--r--flake.lock12
-rw-r--r--index.html5
-rw-r--r--src/assets/audio/mrbeast.mp3bin0 -> 33837 bytes
-rw-r--r--src/assets/meshes/cube.obj34
-rw-r--r--src/assets/shaders/flat/frag.glsl11
-rw-r--r--src/assets/shaders/flat/vert.glsl4
-rw-r--r--src/assets/shaders/plane/frag.glsl23
-rw-r--r--src/assets/shaders/plane/vert.glsl11
-rw-r--r--src/assets/textures/test.pngbin714 -> 772 bytes
-rw-r--r--src/game.rs178
-rw-r--r--src/helpers.js13
-rw-r--r--src/index.css34
-rw-r--r--src/lib.rs5
-rw-r--r--src/main.rs6
-rw-r--r--src/room.rs346
-rw-r--r--todo.org7
18 files changed, 1373 insertions, 490 deletions
diff --git a/Cargo.lock b/Cargo.lock
index e09e82f..653ab59 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4,9 +4,9 @@ version = 4
[[package]]
name = "ab_glyph"
-version = "0.2.23"
+version = "0.2.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "80179d7dd5d7e8c285d67c4a1e652972a92de7475beddfb92028c76463b13225"
+checksum = "01c0457472c38ea5bd1c3b5ada5e368271cb550be7a4ca4a0b4634e9913f6cc2"
dependencies = [
"ab_glyph_rasterizer",
"owned_ttf_parser",
@@ -14,9 +14,9 @@ dependencies = [
[[package]]
name = "ab_glyph_rasterizer"
-version = "0.1.8"
+version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046"
+checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618"
[[package]]
name = "adler2"
@@ -31,17 +31,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b79b82693f705137f8fb9b37871d99e4f9a7df12b917eed79c3d3954830a60b"
dependencies = [
"cfg-if",
- "getrandom 0.2.12",
+ "getrandom 0.2.17",
"once_cell",
"version_check",
- "zerocopy",
+ "zerocopy 0.7.35",
]
[[package]]
name = "aho-corasick"
-version = "1.1.3"
+version = "1.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
+checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301"
dependencies = [
"memchr",
]
@@ -85,14 +85,14 @@ dependencies = [
"cc",
"cesu8",
"jni",
- "jni-sys",
+ "jni-sys 0.3.1",
"libc",
"log",
"ndk",
"ndk-context",
"ndk-sys",
"num_enum",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
]
[[package]]
@@ -103,9 +103,9 @@ checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04"
[[package]]
name = "anstream"
-version = "0.6.18"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b"
+checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d"
dependencies = [
"anstyle",
"anstyle-parse",
@@ -118,39 +118,46 @@ dependencies = [
[[package]]
name = "anstyle"
-version = "1.0.10"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9"
+checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
[[package]]
name = "anstyle-parse"
-version = "0.2.6"
+version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9"
+checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
-version = "1.1.2"
+version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c"
+checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc"
dependencies = [
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "anstyle-wincon"
-version = "3.0.6"
+version = "3.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125"
+checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d"
dependencies = [
"anstyle",
- "windows-sys 0.59.0",
+ "once_cell_polyfill",
+ "windows-sys 0.61.2",
]
[[package]]
+name = "anyhow"
+version = "1.0.102"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c"
+
+[[package]]
name = "approx"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -161,15 +168,15 @@ dependencies = [
[[package]]
name = "arrayref"
-version = "0.3.7"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545"
+checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb"
[[package]]
name = "arrayvec"
-version = "0.7.4"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50"
[[package]]
name = "as-raw-xcb-connection"
@@ -185,9 +192,9 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
[[package]]
name = "autocfg"
-version = "1.1.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "base64"
@@ -229,9 +236,9 @@ dependencies = [
[[package]]
name = "bindgen"
-version = "0.70.1"
+version = "0.72.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
+checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
dependencies = [
"bitflags 2.11.1",
"cexpr",
@@ -240,7 +247,7 @@ dependencies = [
"proc-macro2",
"quote",
"regex",
- "rustc-hash 1.1.0",
+ "rustc-hash",
"shlex",
"syn",
]
@@ -296,15 +303,15 @@ dependencies = [
[[package]]
name = "bumpalo"
-version = "3.15.3"
+version = "3.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ea184aa71bb362a1157c896979544cc23974e08fd265f29ea96b59f0b4a555b"
+checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
[[package]]
name = "bytemuck"
-version = "1.14.3"
+version = "1.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f"
+checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec"
[[package]]
name = "byteorder"
@@ -320,9 +327,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495"
[[package]]
name = "bytes"
-version = "1.5.0"
+version = "1.11.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
[[package]]
name = "calloop"
@@ -333,9 +340,9 @@ dependencies = [
"bitflags 2.11.1",
"log",
"polling",
- "rustix 0.38.31",
+ "rustix 0.38.44",
"slab",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
]
[[package]]
@@ -345,17 +352,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02"
dependencies = [
"calloop",
- "rustix 0.38.31",
+ "rustix 0.38.44",
"wayland-backend",
"wayland-client",
]
[[package]]
name = "cc"
-version = "1.1.30"
+version = "1.2.61"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b16803a61b81d9eabb7eae2588776c4c1e584b738ede45fdbb4c972cec1e9945"
+checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d"
dependencies = [
+ "find-msvc-tools",
"jobserver",
"libc",
"shlex",
@@ -378,9 +386,9 @@ dependencies = [
[[package]]
name = "cfg-if"
-version = "1.0.0"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
[[package]]
name = "cfg_aliases"
@@ -401,15 +409,15 @@ dependencies = [
[[package]]
name = "colorchoice"
-version = "1.0.3"
+version = "1.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
+checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570"
[[package]]
name = "combine"
-version = "4.6.6"
+version = "4.6.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4"
+checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd"
dependencies = [
"bytes",
"memchr",
@@ -417,9 +425,9 @@ dependencies = [
[[package]]
name = "concurrent-queue"
-version = "2.4.0"
+version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363"
+checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973"
dependencies = [
"crossbeam-utils",
]
@@ -445,6 +453,26 @@ dependencies = [
]
[[package]]
+name = "const-random"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359"
+dependencies = [
+ "const-random-macro",
+]
+
+[[package]]
+name = "const-random-macro"
+version = "0.1.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e"
+dependencies = [
+ "getrandom 0.2.17",
+ "once_cell",
+ "tiny-keccak",
+]
+
+[[package]]
name = "core-foundation"
version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -455,19 +483,29 @@ dependencies = [
]
[[package]]
+name = "core-foundation"
+version = "0.10.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6"
+dependencies = [
+ "core-foundation-sys",
+ "libc",
+]
+
+[[package]]
name = "core-foundation-sys"
-version = "0.8.6"
+version = "0.8.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f"
+checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
[[package]]
name = "core-graphics"
-version = "0.23.1"
+version = "0.23.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "970a29baf4110c26fedbc7f82107d42c23f7e88e404c4577ed73fe99ff85a212"
+checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081"
dependencies = [
"bitflags 1.3.2",
- "core-foundation",
+ "core-foundation 0.9.4",
"core-graphics-types",
"foreign-types 0.5.0",
"libc",
@@ -480,7 +518,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf"
dependencies = [
"bitflags 1.3.2",
- "core-foundation",
+ "core-foundation 0.9.4",
"libc",
]
@@ -497,9 +535,9 @@ dependencies = [
[[package]]
name = "coreaudio-sys"
-version = "0.2.16"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2ce857aa0b77d77287acc1ac3e37a05a8c95a2af3647d23b15f263bdaeb7562b"
+checksum = "ceec7a6067e62d6f931a2baf6f3a751f4a892595bcec1461a3c94ef9949864b6"
dependencies = [
"bindgen",
]
@@ -538,9 +576,9 @@ dependencies = [
[[package]]
name = "crc32fast"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa"
+checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
dependencies = [
"cfg-if",
]
@@ -560,18 +598,18 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
-version = "0.5.14"
+version = "0.5.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471"
+checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-deque"
-version = "0.8.5"
+version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
+checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
@@ -597,9 +635,15 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
-version = "0.8.19"
+version = "0.8.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
+
+[[package]]
+name = "crunchy"
+version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
+checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
[[package]]
name = "crypto-common"
@@ -613,9 +657,9 @@ dependencies = [
[[package]]
name = "cursor-icon"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991"
+checksum = "f27ae1dd37df86211c42e150270f82743308803d90a6f6e6651cd730d5e1732f"
dependencies = [
"serde",
]
@@ -659,7 +703,7 @@ dependencies = [
"libc",
"option-ext",
"redox_users",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -670,39 +714,48 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b"
[[package]]
name = "dlib"
-version = "0.5.2"
+version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412"
+checksum = "ab8ecd87370524b461f8557c119c405552c396ed91fc0a8eec68679eab26f94a"
dependencies = [
"libloading",
]
[[package]]
+name = "dlv-list"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f"
+dependencies = [
+ "const-random",
+]
+
+[[package]]
name = "downcast-rs"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650"
+checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2"
[[package]]
name = "either"
-version = "1.10.0"
+version = "1.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a"
+checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
[[package]]
name = "ena"
-version = "0.14.3"
+version = "0.14.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3d248bdd43ce613d87415282f69b9bb99d947d290b10962dd6c56233312c2ad5"
+checksum = "eabffdaee24bd1bf95c5ef7cec31260444317e72ea56c4c91750e8b7ee58d5f1"
dependencies = [
"log",
]
[[package]]
name = "encoding_rs"
-version = "0.8.34"
+version = "0.8.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59"
+checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
dependencies = [
"cfg-if",
]
@@ -729,9 +782,9 @@ dependencies = [
[[package]]
name = "env_filter"
-version = "0.1.2"
+version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f2c92ceda6ceec50f43169f9ee8424fe2db276791afde7b2cd8bc084cb376ab"
+checksum = "32e90c2accc4b07a8456ea0debdc2e7587bdd890680d71173a15d4ae604f6eef"
dependencies = [
"log",
"regex",
@@ -739,22 +792,22 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.11.5"
+version = "0.11.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e13fa619b91fb2381732789fc5de83b45675e882f66623b7d8cb4f643017018d"
+checksum = "0621c04f2196ac3f488dd583365b9c09be011a4ab8b9f37248ffcc8f6198b56a"
dependencies = [
"anstream",
"anstyle",
"env_filter",
- "humantime",
+ "jiff",
"log",
]
[[package]]
name = "equivalent"
-version = "1.0.1"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
[[package]]
name = "errno"
@@ -763,7 +816,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
dependencies = [
"libc",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -790,14 +843,20 @@ checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6"
[[package]]
name = "fdeflate"
-version = "0.3.4"
+version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
+checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c"
dependencies = [
"simd-adler32",
]
[[package]]
+name = "find-msvc-tools"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
+
+[[package]]
name = "flate2"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -814,6 +873,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
[[package]]
+name = "foldhash"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb"
+
+[[package]]
name = "foreign-types"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -867,19 +932,19 @@ dependencies = [
[[package]]
name = "gethostname"
-version = "0.4.3"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818"
+checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8"
dependencies = [
- "libc",
- "windows-targets 0.48.5",
+ "rustix 1.1.4",
+ "windows-link",
]
[[package]]
name = "getrandom"
-version = "0.2.12"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5"
+checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
dependencies = [
"cfg-if",
"js-sys",
@@ -896,15 +961,28 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
dependencies = [
"cfg-if",
"libc",
- "r-efi",
+ "r-efi 5.3.0",
+ "wasip2",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi 6.0.0",
"wasip2",
+ "wasip3",
]
[[package]]
name = "glam"
-version = "0.29.2"
+version = "0.29.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc46dd3ec48fdd8e693a98d2b8bafae273a2d54c1de02a2a7e3d57d501f39677"
+checksum = "8babf46d4c1c9d92deac9f7be466f76dfc4482b6452fc5024b5e8daf6ffeb3ee"
dependencies = [
"mint",
"serde",
@@ -913,7 +991,7 @@ dependencies = [
[[package]]
name = "glfw"
version = "0.59.0"
-source = "git+https://github.com/lcolonq/glfw-rs#e7904991ea1ef6d34501d9d31c2d6f27b3ca957e"
+source = "git+https://github.com/lcolonq/glfw-rs#1ce13a2bcf3ef3bf6184bcb4c2a90d9034956841"
dependencies = [
"bitflags 1.3.2",
"objc2 0.5.2",
@@ -924,9 +1002,9 @@ dependencies = [
[[package]]
name = "glob"
-version = "0.3.2"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2"
+checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
[[package]]
name = "glow"
@@ -987,22 +1065,37 @@ dependencies = [
[[package]]
name = "hashbrown"
-version = "0.14.3"
+version = "0.14.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"
+
+[[package]]
+name = "hashbrown"
+version = "0.15.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
+checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
+dependencies = [
+ "foldhash 0.1.5",
+]
[[package]]
name = "hashbrown"
-version = "0.15.2"
+version = "0.16.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289"
+checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
dependencies = [
"allocator-api2",
"equivalent",
- "foldhash",
+ "foldhash 0.2.0",
]
[[package]]
+name = "hashbrown"
+version = "0.17.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51"
+
+[[package]]
name = "heapless"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1041,12 +1134,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
[[package]]
-name = "humantime"
-version = "2.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
-
-[[package]]
name = "icrate"
version = "0.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1058,6 +1145,12 @@ dependencies = [
]
[[package]]
+name = "id-arena"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
+
+[[package]]
name = "image"
version = "0.25.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1074,18 +1167,20 @@ dependencies = [
[[package]]
name = "indenter"
-version = "0.3.3"
+version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
+checksum = "964de6e86d545b246d84badc0fef527924ace5134f30641c203ef52ba83f58d5"
[[package]]
name = "indexmap"
-version = "2.2.5"
+version = "2.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b0b929d511467233429c45a44ac1dcaa21ba0f5ba11e4879e6ed28ddb4f9df4"
+checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
dependencies = [
"equivalent",
- "hashbrown 0.14.3",
+ "hashbrown 0.17.0",
+ "serde",
+ "serde_core",
]
[[package]]
@@ -1096,9 +1191,9 @@ checksum = "a257582fdcde896fd96463bf2d40eefea0580021c0712a0e2b028b60b47a837a"
[[package]]
name = "is_terminal_polyfill"
-version = "1.70.1"
+version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf"
+checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695"
[[package]]
name = "itertools"
@@ -1111,9 +1206,33 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.11"
+version = "1.0.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682"
+
+[[package]]
+name = "jiff"
+version = "0.2.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f00b5dbd620d61dfdcb6007c9c1f6054ebd75319f163d886a9055cec1155073d"
+dependencies = [
+ "jiff-static",
+ "log",
+ "portable-atomic",
+ "portable-atomic-util",
+ "serde_core",
+]
+
+[[package]]
+name = "jiff-static"
+version = "0.2.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b"
+checksum = "e000de030ff8022ea1da3f466fbb0f3a809f5e51ed31f6dd931c35181ad8e6d7"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
[[package]]
name = "jni"
@@ -1124,34 +1243,58 @@ dependencies = [
"cesu8",
"cfg-if",
"combine",
- "jni-sys",
+ "jni-sys 0.3.1",
"log",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
"walkdir",
"windows-sys 0.45.0",
]
[[package]]
name = "jni-sys"
-version = "0.3.0"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+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 = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130"
+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"
-version = "0.1.32"
+version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0"
+checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33"
dependencies = [
+ "getrandom 0.3.4",
"libc",
]
[[package]]
name = "js-sys"
-version = "0.3.68"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
+checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f"
dependencies = [
+ "once_cell",
"wasm-bindgen",
]
@@ -1164,6 +1307,7 @@ dependencies = [
"lazy_static",
"log",
"rand",
+ "rust-ini",
"strum",
"teleia",
"wasm-bindgen",
@@ -1187,9 +1331,15 @@ dependencies = [
[[package]]
name = "lazy_static"
-version = "1.4.0"
+version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
+
+[[package]]
+name = "leb128fmt"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
[[package]]
name = "libc"
@@ -1199,46 +1349,37 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
[[package]]
name = "libloading"
-version = "0.8.2"
+version = "0.8.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2caa5afb8bf9f3a2652760ce7d4f62d21c4d5a423e68466fca30df82f2330164"
+checksum = "d7c4b02199fee7c5d21a5ae7d8cfa79a6ef5bb2fc834d6e9058e89c825efdc55"
dependencies = [
"cfg-if",
- "windows-targets 0.52.6",
+ "windows-link",
]
[[package]]
name = "libm"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
-
-[[package]]
-name = "libredox"
-version = "0.0.2"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607"
-dependencies = [
- "bitflags 2.11.1",
- "libc",
- "redox_syscall 0.4.1",
-]
+checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981"
[[package]]
name = "libredox"
-version = "0.1.3"
+version = "0.1.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
+checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c"
dependencies = [
"bitflags 2.11.1",
"libc",
+ "plain",
+ "redox_syscall 0.7.4",
]
[[package]]
name = "linux-raw-sys"
-version = "0.4.13"
+version = "0.4.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c"
+checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab"
[[package]]
name = "linux-raw-sys"
@@ -1248,24 +1389,24 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
[[package]]
name = "log"
-version = "0.4.21"
+version = "0.4.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c"
+checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
[[package]]
name = "mach2"
-version = "0.4.2"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709"
+checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44"
dependencies = [
"libc",
]
[[package]]
name = "matrixmultiply"
-version = "0.3.9"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a"
+checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08"
dependencies = [
"autocfg",
"rawpointer",
@@ -1273,15 +1414,15 @@ dependencies = [
[[package]]
name = "memchr"
-version = "2.7.1"
+version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149"
+checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
[[package]]
name = "memmap2"
-version = "0.9.4"
+version = "0.9.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322"
+checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
dependencies = [
"libc",
]
@@ -1320,9 +1461,9 @@ dependencies = [
[[package]]
name = "nalgebra"
-version = "0.33.2"
+version = "0.33.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26aecdf64b707efd1310e3544d709c5c0ac61c13756046aaaba41be5c4f66a3b"
+checksum = "9d43ddcacf343185dfd6de2ee786d9e8b1c2301622afab66b6c73baf9882abfd"
dependencies = [
"approx",
"glam",
@@ -1348,9 +1489,9 @@ dependencies = [
[[package]]
name = "native-tls"
-version = "0.2.14"
+version = "0.2.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e"
+checksum = "465500e14ea162429d264d44189adc38b199b62b1c21eea9f69e4b73cb03bbf2"
dependencies = [
"libc",
"log",
@@ -1370,12 +1511,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7"
dependencies = [
"bitflags 2.11.1",
- "jni-sys",
+ "jni-sys 0.3.1",
"log",
"ndk-sys",
"num_enum",
"raw-window-handle",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
]
[[package]]
@@ -1390,7 +1531,7 @@ version = "0.5.0+25.2.9519653"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691"
dependencies = [
- "jni-sys",
+ "jni-sys 0.3.1",
]
[[package]]
@@ -1455,9 +1596,9 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.18"
+version = "0.2.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
dependencies = [
"autocfg",
"libm",
@@ -1465,18 +1606,19 @@ dependencies = [
[[package]]
name = "num_enum"
-version = "0.7.2"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845"
+checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26"
dependencies = [
"num_enum_derive",
+ "rustversion",
]
[[package]]
name = "num_enum_derive"
-version = "0.7.2"
+version = "0.7.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b"
+checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -1547,9 +1689,15 @@ dependencies = [
[[package]]
name = "once_cell"
-version = "1.19.0"
+version = "1.21.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
+
+[[package]]
+name = "once_cell_polyfill"
+version = "1.70.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe"
[[package]]
name = "openssl"
@@ -1579,9 +1727,9 @@ dependencies = [
[[package]]
name = "openssl-probe"
-version = "0.1.6"
+version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
+checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe"
[[package]]
name = "openssl-sys"
@@ -1603,11 +1751,12 @@ checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "orbclient"
-version = "0.3.47"
+version = "0.3.54"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166"
+checksum = "a570f6bca41d29acb2139229a7c873ec99bc9a313bd10804081d89bfac8ff329"
dependencies = [
- "libredox 0.0.2",
+ "libc",
+ "libredox",
]
[[package]]
@@ -1620,10 +1769,20 @@ dependencies = [
]
[[package]]
+name = "ordered-multimap"
+version = "0.7.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79"
+dependencies = [
+ "dlv-list",
+ "hashbrown 0.14.5",
+]
+
+[[package]]
name = "owned_ttf_parser"
-version = "0.20.0"
+version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7"
+checksum = "36820e9051aca1014ddc75770aab4d68bc1e9e632f0f5627c4086bc216fb583b"
dependencies = [
"ttf-parser",
]
@@ -1646,12 +1805,12 @@ dependencies = [
"num-traits",
"ordered-float",
"rstar",
- "rustc-hash 2.1.1",
+ "rustc-hash",
"simba",
"slab",
"smallvec",
"spade",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
]
[[package]]
@@ -1662,21 +1821,27 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "percent-encoding"
-version = "2.3.1"
+version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
[[package]]
name = "pin-project-lite"
-version = "0.2.13"
+version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
[[package]]
name = "pkg-config"
-version = "0.3.30"
+version = "0.3.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec"
+checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
+
+[[package]]
+name = "plain"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
[[package]]
name = "png"
@@ -1706,43 +1871,71 @@ dependencies = [
]
[[package]]
+name = "portable-atomic"
+version = "1.13.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
+
+[[package]]
+name = "portable-atomic-util"
+version = "0.2.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
+dependencies = [
+ "portable-atomic",
+]
+
+[[package]]
name = "ppv-lite86"
-version = "0.2.17"
+version = "0.2.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy 0.8.48",
+]
+
+[[package]]
+name = "prettyplease"
+version = "0.2.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
+dependencies = [
+ "proc-macro2",
+ "syn",
+]
[[package]]
name = "proc-macro-crate"
-version = "3.1.0"
+version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
+checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
dependencies = [
"toml_edit",
]
[[package]]
name = "proc-macro2"
-version = "1.0.93"
+version = "1.0.106"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
+checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
dependencies = [
"unicode-ident",
]
[[package]]
name = "profiling"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "afbdc74edc00b6f6a218ca6a5364d6226a259d4b8ea1af4a0ea063f27e179f4d"
+checksum = "3eb8486b569e12e2c32ad3e204dbaba5e4b5b216e9367044f25f1dba42341773"
dependencies = [
"profiling-procmacros",
]
[[package]]
name = "profiling-procmacros"
-version = "1.0.16"
+version = "1.0.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a65f2e60fbf1063868558d69c6beacf412dc755f9fc020f514b7955fc914fe30"
+checksum = "52717f9a02b6965224f95ca2a81e2e0c5c43baacd28ca057577988930b6c3d5b"
dependencies = [
"quote",
"syn",
@@ -1756,18 +1949,18 @@ checksum = "e0c5ccf5294c6ccd63a74f1565028353830a9c2f5eb0c682c355c471726a6e3f"
[[package]]
name = "quick-xml"
-version = "0.31.0"
+version = "0.39.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33"
+checksum = "958f21e8e7ceb5a1aa7fa87fab28e7c75976e0bfe7e23ff069e0a260f894067d"
dependencies = [
"memchr",
]
[[package]]
name = "quote"
-version = "1.0.35"
+version = "1.0.45"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
dependencies = [
"proc-macro2",
]
@@ -1779,6 +1972,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
+name = "r-efi"
+version = "6.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
+
+[[package]]
name = "rand"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1805,7 +2004,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
- "getrandom 0.2.12",
+ "getrandom 0.2.17",
]
[[package]]
@@ -1827,16 +2026,16 @@ dependencies = [
"ordered-float",
"parry3d",
"profiling",
- "rustc-hash 2.1.1",
+ "rustc-hash",
"simba",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
]
[[package]]
name = "raw-window-handle"
-version = "0.6.0"
+version = "0.6.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "42a9830a0e1b9fb145ebb365b8bc4ccd75f290f98c0247deafbbe2c75cefb544"
+checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539"
[[package]]
name = "rawpointer"
@@ -1855,29 +2054,29 @@ dependencies = [
[[package]]
name = "redox_syscall"
-version = "0.4.1"
+version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+checksum = "f450ad9c3b1da563fb6948a8e0fb0fb9269711c9c73d9ea1de5058c79c8d643a"
dependencies = [
- "bitflags 1.3.2",
+ "bitflags 2.11.1",
]
[[package]]
name = "redox_users"
-version = "0.5.0"
+version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dd6f9d3d47bdd2ad6945c5015a226ec6155d0bcdfd8f7cd29f86b71f8de99d2b"
+checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac"
dependencies = [
- "getrandom 0.2.12",
- "libredox 0.1.3",
- "thiserror 2.0.11",
+ "getrandom 0.2.17",
+ "libredox",
+ "thiserror 2.0.18",
]
[[package]]
name = "regex"
-version = "1.11.1"
+version = "1.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
+checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276"
dependencies = [
"aho-corasick",
"memchr",
@@ -1887,9 +2086,9 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.4.9"
+version = "0.4.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
+checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f"
dependencies = [
"aho-corasick",
"memchr",
@@ -1898,9 +2097,9 @@ dependencies = [
[[package]]
name = "regex-syntax"
-version = "0.8.5"
+version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
+checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a"
[[package]]
name = "ringbuf"
@@ -1913,9 +2112,9 @@ dependencies = [
[[package]]
name = "robust"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30"
+checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839"
[[package]]
name = "rstar"
@@ -1929,28 +2128,32 @@ dependencies = [
]
[[package]]
-name = "rustc-hash"
-version = "1.1.0"
+name = "rust-ini"
+version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+checksum = "796e8d2b6696392a43bea58116b667fb4c29727dc5abd27d6acf338bb4f688c7"
+dependencies = [
+ "cfg-if",
+ "ordered-multimap",
+]
[[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 = "rustix"
-version = "0.38.31"
+version = "0.38.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949"
+checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154"
dependencies = [
"bitflags 2.11.1",
"errno",
"libc",
- "linux-raw-sys 0.4.13",
- "windows-sys 0.52.0",
+ "linux-raw-sys 0.4.15",
+ "windows-sys 0.59.0",
]
[[package]]
@@ -1963,20 +2166,14 @@ dependencies = [
"errno",
"libc",
"linux-raw-sys 0.12.1",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "rustversion"
-version = "1.0.17"
+version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6"
-
-[[package]]
-name = "ryu"
-version = "1.0.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
+checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
[[package]]
name = "safe_arch"
@@ -2013,9 +2210,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]]
name = "sctk-adwaita"
-version = "0.8.1"
+version = "0.8.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550"
+checksum = "70b31447ca297092c5a9916fc3b955203157b37c19ca8edde4f52e9843e602c7"
dependencies = [
"ab_glyph",
"log",
@@ -2026,12 +2223,12 @@ dependencies = [
[[package]]
name = "security-framework"
-version = "2.11.1"
+version = "3.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02"
+checksum = "b7f4bc775c73d9a02cde8bf7b2ec4c9d12743edf609006c7facc23998404cd1d"
dependencies = [
"bitflags 2.11.1",
- "core-foundation",
+ "core-foundation 0.10.1",
"core-foundation-sys",
"libc",
"security-framework-sys",
@@ -2039,15 +2236,21 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.16.0"
+version = "2.17.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "321c8673b092a9a42605034a9879d73cb79101ed5fd117bc9a597b89b4e9e61a"
+checksum = "6ce2691df843ecc5d231c0b14ece2acc3efb62c0a398c7e1d875f3983ce020e3"
dependencies = [
"core-foundation-sys",
"libc",
]
[[package]]
+name = "semver"
+version = "1.0.28"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd"
+
+[[package]]
name = "send_wrapper"
version = "0.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2085,14 +2288,15 @@ dependencies = [
[[package]]
name = "serde_json"
-version = "1.0.128"
+version = "1.0.149"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8"
+checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
dependencies = [
"itoa",
"memchr",
- "ryu",
"serde",
+ "serde_core",
+ "zmij",
]
[[package]]
@@ -2123,9 +2327,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
[[package]]
name = "simba"
-version = "0.9.0"
+version = "0.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3a386a501cd104797982c15ae17aafe8b9261315b5d07e3ec803f2ea26be0fa"
+checksum = "c99284beb21666094ba2b75bbceda012e610f5479dfcc2d6e2426f53197ffd95"
dependencies = [
"approx",
"num-complex",
@@ -2136,9 +2340,9 @@ dependencies = [
[[package]]
name = "simd-adler32"
-version = "0.3.7"
+version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
+checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
[[package]]
name = "simple-eyre"
@@ -2152,27 +2356,24 @@ dependencies = [
[[package]]
name = "slab"
-version = "0.4.9"
+version = "0.4.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
-dependencies = [
- "autocfg",
-]
+checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5"
[[package]]
name = "slotmap"
-version = "1.0.7"
+version = "1.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a"
+checksum = "bdd58c3c93c3d278ca835519292445cb4b0d4dc59ccfdf7ceadaab3f8aeb4038"
dependencies = [
"version_check",
]
[[package]]
name = "smallvec"
-version = "1.13.1"
+version = "1.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
+checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
[[package]]
name = "smithay-client-toolkit"
@@ -2187,8 +2388,8 @@ dependencies = [
"libc",
"log",
"memmap2",
- "rustix 0.38.31",
- "thiserror 1.0.57",
+ "rustix 0.38.44",
+ "thiserror 1.0.69",
"wayland-backend",
"wayland-client",
"wayland-csd-frame",
@@ -2201,20 +2402,20 @@ dependencies = [
[[package]]
name = "smol_str"
-version = "0.2.1"
+version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49"
+checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead"
dependencies = [
"serde",
]
[[package]]
name = "spade"
-version = "2.13.1"
+version = "2.15.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1ece03ff43cd2a9b57ebf776ea5e78bd30b3b4185a619f041079f4109f385034"
+checksum = "9699399fd9349b00b184f5635b074f9ec93afffef30c853f8c875b32c0f8c7fa"
dependencies = [
- "hashbrown 0.15.2",
+ "hashbrown 0.16.1",
"num-traits",
"robust",
"smallvec",
@@ -2222,9 +2423,9 @@ dependencies = [
[[package]]
name = "stable_deref_trait"
-version = "1.2.0"
+version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3"
+checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596"
[[package]]
name = "strict-num"
@@ -2255,11 +2456,12 @@ dependencies = [
[[package]]
name = "symphonia"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9"
+checksum = "5773a4c030a19d9bfaa090f49746ff35c75dfddfa700df7a5939d5e076a57039"
dependencies = [
"lazy_static",
+ "symphonia-bundle-mp3",
"symphonia-codec-pcm",
"symphonia-codec-vorbis",
"symphonia-core",
@@ -2269,10 +2471,22 @@ dependencies = [
]
[[package]]
+name = "symphonia-bundle-mp3"
+version = "0.5.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4872dd6bb56bf5eac799e3e957aa1981086c3e613b27e0ac23b176054f7c57ed"
+dependencies = [
+ "lazy_static",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
+[[package]]
name = "symphonia-codec-pcm"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f395a67057c2ebc5e84d7bb1be71cce1a7ba99f64e0f0f0e303a03f79116f89b"
+checksum = "4e89d716c01541ad3ebe7c91ce4c8d38a7cf266a3f7b2f090b108fb0cb031d95"
dependencies = [
"log",
"symphonia-core",
@@ -2280,9 +2494,9 @@ dependencies = [
[[package]]
name = "symphonia-codec-vorbis"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a98765fb46a0a6732b007f7e2870c2129b6f78d87db7987e6533c8f164a9f30"
+checksum = "f025837c309cd69ffef572750b4a2257b59552c5399a5e49707cc5b1b85d1c73"
dependencies = [
"log",
"symphonia-core",
@@ -2291,9 +2505,9 @@ dependencies = [
[[package]]
name = "symphonia-core"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3"
+checksum = "ea00cc4f79b7f6bb7ff87eddc065a1066f3a43fe1875979056672c9ef948c2af"
dependencies = [
"arrayvec",
"bitflags 1.3.2",
@@ -2304,9 +2518,9 @@ dependencies = [
[[package]]
name = "symphonia-format-ogg"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ada3505789516bcf00fc1157c67729eded428b455c27ca370e41f4d785bfa931"
+checksum = "2b4955c67c1ed3aa8ae8428d04ca8397fbef6a19b2b051e73b5da8b1435639cb"
dependencies = [
"log",
"symphonia-core",
@@ -2316,9 +2530,9 @@ dependencies = [
[[package]]
name = "symphonia-format-riff"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "05f7be232f962f937f4b7115cbe62c330929345434c834359425e043bfd15f50"
+checksum = "c2d7c3df0e7d94efb68401d81906eae73c02b40d5ec1a141962c592d0f11a96f"
dependencies = [
"extended",
"log",
@@ -2328,9 +2542,9 @@ dependencies = [
[[package]]
name = "symphonia-metadata"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c"
+checksum = "36306ff42b9ffe6e5afc99d49e121e0bd62fe79b9db7b9681d48e29fa19e6b16"
dependencies = [
"encoding_rs",
"lazy_static",
@@ -2340,9 +2554,9 @@ dependencies = [
[[package]]
name = "symphonia-utils-xiph"
-version = "0.5.4"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "484472580fa49991afda5f6550ece662237b00c6f562c7d9638d1b086ed010fe"
+checksum = "ee27c85ab799a338446b68eec77abf42e1a6f1bb490656e121c6e27bfbab9f16"
dependencies = [
"symphonia-core",
"symphonia-metadata",
@@ -2350,9 +2564,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.98"
+version = "2.0.117"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
+checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
dependencies = [
"proc-macro2",
"quote",
@@ -2362,8 +2576,8 @@ dependencies = [
[[package]]
name = "teleia"
version = "0.1.0"
-source = "git+https://github.com/lcolonq/teleia#0f28caa550f09b6e6ed5a54e07de53b23df11faa"
dependencies = [
+ "ahash",
"base64 0.22.1",
"bimap",
"bincode",
@@ -2375,7 +2589,7 @@ dependencies = [
"directories",
"enum-map",
"env_logger",
- "getrandom 0.2.12",
+ "getrandom 0.2.17",
"glam",
"glfw",
"glow",
@@ -2409,35 +2623,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
dependencies = [
"fastrand",
- "getrandom 0.3.4",
+ "getrandom 0.4.2",
"once_cell",
"rustix 1.1.4",
- "windows-sys 0.59.0",
+ "windows-sys 0.61.2",
]
[[package]]
name = "thiserror"
-version = "1.0.57"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
dependencies = [
- "thiserror-impl 1.0.57",
+ "thiserror-impl 1.0.69",
]
[[package]]
name = "thiserror"
-version = "2.0.11"
+version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc"
+checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
dependencies = [
- "thiserror-impl 2.0.11",
+ "thiserror-impl 2.0.18",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.57"
+version = "1.0.69"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
dependencies = [
"proc-macro2",
"quote",
@@ -2446,9 +2660,9 @@ dependencies = [
[[package]]
name = "thiserror-impl"
-version = "2.0.11"
+version = "2.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2"
+checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
dependencies = [
"proc-macro2",
"quote",
@@ -2457,12 +2671,20 @@ dependencies = [
[[package]]
name = "thread_local"
-version = "1.1.8"
+version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c"
+checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
- "once_cell",
+]
+
+[[package]]
+name = "tiny-keccak"
+version = "2.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237"
+dependencies = [
+ "crunchy",
]
[[package]]
@@ -2501,26 +2723,39 @@ dependencies = [
[[package]]
name = "toml_datetime"
-version = "0.6.5"
+version = "1.1.1+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7"
+dependencies = [
+ "serde_core",
+]
[[package]]
name = "toml_edit"
-version = "0.21.1"
+version = "0.25.11+spec-1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
+checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b"
dependencies = [
"indexmap",
"toml_datetime",
+ "toml_parser",
+ "winnow",
+]
+
+[[package]]
+name = "toml_parser"
+version = "1.1.2+spec-1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526"
+dependencies = [
"winnow",
]
[[package]]
name = "tracing"
-version = "0.1.40"
+version = "0.1.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100"
dependencies = [
"pin-project-lite",
"tracing-attributes",
@@ -2529,9 +2764,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
-version = "0.1.27"
+version = "0.1.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da"
dependencies = [
"proc-macro2",
"quote",
@@ -2540,18 +2775,18 @@ dependencies = [
[[package]]
name = "tracing-core"
-version = "0.1.32"
+version = "0.1.36"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a"
dependencies = [
"once_cell",
]
[[package]]
name = "tracing-subscriber"
-version = "0.3.18"
+version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b"
+checksum = "cb7f578e5945fb242538965c2d0b04418d38ec25c79d160cd279bf0731c8d319"
dependencies = [
"sharded-slab",
"thread_local",
@@ -2571,18 +2806,18 @@ dependencies = [
[[package]]
name = "triple_buffer"
-version = "8.0.0"
+version = "8.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9e66931c8eca6381f0d34656a9341f09bd462010488c1a3bc0acd3f2d08dffce"
+checksum = "420466259f9fa5decc654c490b9ab538400e5420df8237f84ecbe20368bcf72b"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "ttf-parser"
-version = "0.20.0"
+version = "0.25.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4"
+checksum = "d2df906b07856748fa3f6e0ad0cbaa047052d4a7dd609e231c4f72cee8c36f31"
[[package]]
name = "tungstenite"
@@ -2599,27 +2834,33 @@ dependencies = [
"native-tls",
"rand",
"sha1",
- "thiserror 1.0.57",
+ "thiserror 1.0.69",
"utf-8",
]
[[package]]
name = "typenum"
-version = "1.18.0"
+version = "1.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
+checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
[[package]]
name = "unicode-ident"
-version = "1.0.12"
+version = "1.0.24"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
[[package]]
name = "unicode-segmentation"
-version = "1.11.0"
+version = "1.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202"
+checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c"
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
[[package]]
name = "unty"
@@ -2653,9 +2894,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426"
[[package]]
name = "version_check"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "virtue"
@@ -2675,9 +2916,9 @@ dependencies = [
[[package]]
name = "wasi"
-version = "0.11.0+wasi-snapshot-preview1"
+version = "0.11.1+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
[[package]]
name = "wasip2"
@@ -2685,7 +2926,16 @@ version = "1.0.3+wasi-0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6"
dependencies = [
- "wit-bindgen",
+ "wit-bindgen 0.57.1",
+]
+
+[[package]]
+name = "wasip3"
+version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
+dependencies = [
+ "wit-bindgen 0.51.0",
]
[[package]]
@@ -2716,12 +2966,13 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
-version = "0.4.41"
+version = "0.4.50"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "877b9c3f61ceea0e56331985743b13f3d25c406a7098d45180fb5f09bc19ed97"
+checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61"
dependencies = [
"cfg-if",
"js-sys",
+ "once_cell",
"wasm-bindgen",
"web-sys",
]
@@ -2759,14 +3010,48 @@ dependencies = [
]
[[package]]
+name = "wasm-encoder"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
+dependencies = [
+ "leb128fmt",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasm-metadata"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
+dependencies = [
+ "anyhow",
+ "indexmap",
+ "wasm-encoder",
+ "wasmparser",
+]
+
+[[package]]
+name = "wasmparser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
+dependencies = [
+ "bitflags 2.11.1",
+ "hashbrown 0.15.5",
+ "indexmap",
+ "semver",
+]
+
+[[package]]
name = "wayland-backend"
-version = "0.3.3"
+version = "0.3.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40"
+checksum = "2857dd20b54e916ec7253b3d6b4d5c4d7d4ca2c33c2e11c6c76a99bd8744755d"
dependencies = [
"cc",
"downcast-rs",
- "rustix 0.38.31",
+ "rustix 1.1.4",
"scoped-tls",
"smallvec",
"wayland-sys",
@@ -2774,12 +3059,12 @@ dependencies = [
[[package]]
name = "wayland-client"
-version = "0.31.2"
+version = "0.31.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f"
+checksum = "645c7c96bb74690c3189b5c9cb4ca1627062bb23693a4fad9d8c3de958260144"
dependencies = [
"bitflags 2.11.1",
- "rustix 0.38.31",
+ "rustix 1.1.4",
"wayland-backend",
"wayland-scanner",
]
@@ -2797,11 +3082,11 @@ dependencies = [
[[package]]
name = "wayland-cursor"
-version = "0.31.1"
+version = "0.31.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba"
+checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d"
dependencies = [
- "rustix 0.38.31",
+ "rustix 1.1.4",
"wayland-client",
"xcursor",
]
@@ -2846,9 +3131,9 @@ dependencies = [
[[package]]
name = "wayland-scanner"
-version = "0.31.1"
+version = "0.31.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283"
+checksum = "9c324a910fd86ebdc364a3e61ec1f11737d3b1d6c273c0239ee8ff4bc0d24b4a"
dependencies = [
"proc-macro2",
"quick-xml",
@@ -2857,9 +3142,9 @@ dependencies = [
[[package]]
name = "wayland-sys"
-version = "0.31.1"
+version = "0.31.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af"
+checksum = "d8eab23fefc9e41f8e841df4a9c707e8a8c4ed26e944ef69297184de2785e3be"
dependencies = [
"dlib",
"log",
@@ -2869,9 +3154,9 @@ dependencies = [
[[package]]
name = "web-sys"
-version = "0.3.68"
+version = "0.3.77"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
+checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2"
dependencies = [
"js-sys",
"wasm-bindgen",
@@ -2889,9 +3174,9 @@ dependencies = [
[[package]]
name = "wide"
-version = "0.7.32"
+version = "0.7.33"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "41b5576b9a81633f3e8df296ce0063042a73507636cbe956c61133dd7034ab22"
+checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03"
dependencies = [
"bytemuck",
"safe_arch",
@@ -2915,11 +3200,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
-version = "0.1.6"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
dependencies = [
- "winapi",
+ "windows-sys 0.61.2",
]
[[package]]
@@ -2983,15 +3268,6 @@ dependencies = [
[[package]]
name = "windows-sys"
-version = "0.52.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
-dependencies = [
- "windows-targets 0.52.6",
-]
-
-[[package]]
-name = "windows-sys"
version = "0.59.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b"
@@ -3199,7 +3475,7 @@ dependencies = [
"bytemuck",
"calloop",
"cfg_aliases",
- "core-foundation",
+ "core-foundation 0.9.4",
"core-graphics",
"cursor-icon",
"icrate",
@@ -3215,7 +3491,7 @@ dependencies = [
"percent-encoding",
"raw-window-handle",
"redox_syscall 0.3.5",
- "rustix 0.38.31",
+ "rustix 0.38.44",
"sctk-adwaita",
"serde",
"smithay-client-toolkit",
@@ -3237,20 +3513,108 @@ dependencies = [
[[package]]
name = "winnow"
-version = "0.5.40"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876"
+checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0"
dependencies = [
"memchr",
]
[[package]]
name = "wit-bindgen"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
+dependencies = [
+ "wit-bindgen-rust-macro",
+]
+
+[[package]]
+name = "wit-bindgen"
version = "0.57.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e"
[[package]]
+name = "wit-bindgen-core"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
+dependencies = [
+ "anyhow",
+ "heck",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-bindgen-rust"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
+dependencies = [
+ "anyhow",
+ "heck",
+ "indexmap",
+ "prettyplease",
+ "syn",
+ "wasm-metadata",
+ "wit-bindgen-core",
+ "wit-component",
+]
+
+[[package]]
+name = "wit-bindgen-rust-macro"
+version = "0.51.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
+dependencies = [
+ "anyhow",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "syn",
+ "wit-bindgen-core",
+ "wit-bindgen-rust",
+]
+
+[[package]]
+name = "wit-component"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
+dependencies = [
+ "anyhow",
+ "bitflags 2.11.1",
+ "indexmap",
+ "log",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "wasm-encoder",
+ "wasm-metadata",
+ "wasmparser",
+ "wit-parser",
+]
+
+[[package]]
+name = "wit-parser"
+version = "0.244.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
+dependencies = [
+ "anyhow",
+ "id-arena",
+ "indexmap",
+ "log",
+ "semver",
+ "serde",
+ "serde_derive",
+ "serde_json",
+ "unicode-xid",
+ "wasmparser",
+]
+
+[[package]]
name = "x11-dl"
version = "2.21.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3263,30 +3627,30 @@ dependencies = [
[[package]]
name = "x11rb"
-version = "0.13.0"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f8f25ead8c7e4cba123243a6367da5d3990e0d3affa708ea19dce96356bd9f1a"
+checksum = "9993aa5be5a26815fe2c3eacfc1fde061fc1a1f094bf1ad2a18bf9c495dd7414"
dependencies = [
"as-raw-xcb-connection",
"gethostname",
"libc",
"libloading",
"once_cell",
- "rustix 0.38.31",
+ "rustix 1.1.4",
"x11rb-protocol",
]
[[package]]
name = "x11rb-protocol"
-version = "0.13.0"
+version = "0.13.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e63e71c4b8bd9ffec2c963173a4dc4cbde9ee96961d4fcb4429db9929b606c34"
+checksum = "ea6fc2961e4ef194dcbfe56bb845534d0dc8098940c7e5c012a258bfec6701bd"
[[package]]
name = "xcursor"
-version = "0.3.5"
+version = "0.3.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911"
+checksum = "bec9e4a500ca8864c5b47b8b482a73d62e4237670e5b5f1d6b9e3cae50f28f2b"
[[package]]
name = "xkbcommon-dl"
@@ -3303,24 +3667,33 @@ dependencies = [
[[package]]
name = "xkeysym"
-version = "0.2.0"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b9cc00251562a284751c9973bace760d86c0276c471b4be569fe6b068ee97a56"
+
+[[package]]
+name = "zerocopy"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621"
+checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0"
+dependencies = [
+ "zerocopy-derive 0.7.35",
+]
[[package]]
name = "zerocopy"
-version = "0.7.32"
+version = "0.8.48"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be"
+checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
dependencies = [
- "zerocopy-derive",
+ "zerocopy-derive 0.8.48",
]
[[package]]
name = "zerocopy-derive"
-version = "0.7.32"
+version = "0.7.35"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
+checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
@@ -3328,6 +3701,23 @@ dependencies = [
]
[[package]]
+name = "zerocopy-derive"
+version = "0.8.48"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "zmij"
+version = "1.0.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa"
+
+[[package]]
name = "zune-core"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 504845a..5cad026 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -2,13 +2,13 @@
name = "kharcho"
version = "0.1.0"
authors = ["LLLL Colonq <llll@colonq.computer>"]
-edition = "2021"
+edition = "2024"
[lib]
crate-type = ["cdylib", "rlib"]
[[bin]]
-name = "kharcho"
+name = "kharcho_bin"
path = "src/main.rs"
[profile.release]
@@ -25,13 +25,15 @@ debug = false
opt-level = 2
[dependencies]
-teleia = { git = "https://github.com/lcolonq/teleia" } # engine
+# teleia = { git = "https://github.com/lcolonq/teleia" } # engine
+teleia = { path = "../teleia/crates/teleia" }
glam = {version = "0.29.2", features = ["serde"]} # linear algebra
bitflags = { version = "2.6.0", features = ["serde"] } # C-style bitwise flags
rand = { version = "=0.8.5", features = ["small_rng"] } # rng
log = "0.4.21" # logging
lazy_static = "*" # global constants
strum = {version = "0.27.1", features = ["derive"]} # utility macros for enums
+rust-ini = "0.21.3" # ini parser
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "=0.2.100" # wasm bindings \ No newline at end of file
diff --git a/flake.lock b/flake.lock
index 1c3b77a..515599d 100644
--- a/flake.lock
+++ b/flake.lock
@@ -53,11 +53,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1753432016,
- "narHash": "sha256-cnL5WWn/xkZoyH/03NNUS7QgW5vI7D1i74g48qplCvg=",
+ "lastModified": 1777425547,
+ "narHash": "sha256-d57AbflkNfZNoFaZDzssEq1RfPoM9dLtOGI2O+N/68Q=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "6027c30c8e9810896b92429f0092f624f7b1aace",
+ "rev": "ebc08544afa77957cc348ba72dc490ec73b87f68",
"type": "github"
},
"original": {
@@ -158,11 +158,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
- "lastModified": 1777330620,
- "narHash": "sha256-/Bm4EoF8Tpa3YKz3Z47j28nIB6vauQ+ELcTdWynmatw=",
+ "lastModified": 1777601333,
+ "narHash": "sha256-pOr1roqZnzGw6qoFwLEb4QSGQFsWL9v65LHbrWTUsYk=",
"owner": "lcolonq",
"repo": "teleia",
- "rev": "0f28caa550f09b6e6ed5a54e07de53b23df11faa",
+ "rev": "4c9541f35913bb8e68a07ad6ab4628d241099482",
"type": "github"
},
"original": {
diff --git a/index.html b/index.html
index 333edc1..5b63cf4 100644
--- a/index.html
+++ b/index.html
@@ -4,15 +4,12 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<head>
<meta charset="UTF-8">
- <link data-trunk rel="copy-file" href="src/helpers.js" />
- <script type="module" src="helpers.js"></script>
- <link data-trunk rel="rust" data-wasm-opt="2" data-target-name="game_lib" />
+ <link data-trunk rel="rust" data-wasm-opt="2" data-target-name="kharcho" />
<!-- <link data-trunk rel="rust" data-keep-debug="true" /> -->
<base data-trunk-public-url />
<meta name="theme-color" media="(prefers-color-scheme: light)" content="white">
<meta name="theme-color" media="(prefers-color-scheme: dark)" content="#404040">
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
- <link data-trunk rel="css" href="src/index.css" />
<title>TODO TITLE</title>
</head>
<body>
diff --git a/src/assets/audio/mrbeast.mp3 b/src/assets/audio/mrbeast.mp3
new file mode 100644
index 0000000..8cf3d8a
--- /dev/null
+++ b/src/assets/audio/mrbeast.mp3
Binary files differ
diff --git a/src/assets/meshes/cube.obj b/src/assets/meshes/cube.obj
new file mode 100644
index 0000000..6c93e45
--- /dev/null
+++ b/src/assets/meshes/cube.obj
@@ -0,0 +1,34 @@
+# Blender 3.6.2
+# www.blender.org
+o Cube
+v 1.000000 1.000000 -1.000000
+v 1.000000 -1.000000 -1.000000
+v 1.000000 1.000000 1.000000
+v 1.000000 -1.000000 1.000000
+v -1.000000 1.000000 -1.000000
+v -1.000000 -1.000000 -1.000000
+v -1.000000 1.000000 1.000000
+v -1.000000 -1.000000 1.000000
+vn -0.0000 1.0000 -0.0000
+vn -0.0000 -0.0000 1.0000
+vn -1.0000 -0.0000 -0.0000
+vn -0.0000 -1.0000 -0.0000
+vn 1.0000 -0.0000 -0.0000
+vn -0.0000 -0.0000 -1.0000
+vt 1.000000 0.000000
+vt 0.000000 1.000000
+vt 0.000000 0.000000
+vt 1.000000 1.000000
+s 0
+f 5/1/1 3/2/1 1/3/1
+f 3/1/2 8/2/2 4/3/2
+f 7/1/3 6/2/3 8/3/3
+f 2/1/4 8/2/4 6/3/4
+f 1/1/5 4/2/5 2/3/5
+f 5/1/6 2/2/6 6/3/6
+f 5/1/1 7/4/1 3/2/1
+f 3/1/2 7/4/2 8/2/2
+f 7/1/3 5/4/3 6/2/3
+f 2/1/4 4/4/4 8/2/4
+f 1/1/5 3/4/5 4/2/5
+f 5/1/6 1/4/6 2/2/6
diff --git a/src/assets/shaders/flat/frag.glsl b/src/assets/shaders/flat/frag.glsl
deleted file mode 100644
index 7006a2b..0000000
--- a/src/assets/shaders/flat/frag.glsl
+++ /dev/null
@@ -1,11 +0,0 @@
-uniform sampler2D texture_data;
-
-void main()
-{
- vec2 tcfull = vec2(vertex_texcoord.x, 1.0 - vertex_texcoord.y);
- vec4 texel = texture(texture_data, tcfull);
- if (texel.a != 1.0) {
- discard;
- }
- frag_color = texel;
-}
diff --git a/src/assets/shaders/flat/vert.glsl b/src/assets/shaders/flat/vert.glsl
deleted file mode 100644
index e324f7e..0000000
--- a/src/assets/shaders/flat/vert.glsl
+++ /dev/null
@@ -1,4 +0,0 @@
-void main()
-{
- default_main();
-} \ No newline at end of file
diff --git a/src/assets/shaders/plane/frag.glsl b/src/assets/shaders/plane/frag.glsl
new file mode 100644
index 0000000..a323cc8
--- /dev/null
+++ b/src/assets/shaders/plane/frag.glsl
@@ -0,0 +1,23 @@
+uniform sampler2D texture_data;
+
+uniform vec2 texture_scale;
+uniform vec2 texture_offset;
+uniform float fog_distance;
+uniform vec3 fog_color;
+uniform float opacity;
+
+in float vertex_depth;
+
+void main()
+{
+ vec2 tcfull = vec2(vertex_texcoord.x, 1.0 - vertex_texcoord.y);
+ vec4 texel = texture(texture_data, tcfull * texture_scale + texture_offset);
+ if (fog_distance > 0.0) {
+ float t = clamp(vertex_depth / fog_distance, 0.0, 1.0);
+ texel.rgb = mix(texel.rgb, fog_color, t);
+ if (t == 1.0) texel.a = 1.0;
+ }
+ texel.a *= opacity;
+ if (texel.a == 0.0) discard;
+ frag_color = texel;
+}
diff --git a/src/assets/shaders/plane/vert.glsl b/src/assets/shaders/plane/vert.glsl
new file mode 100644
index 0000000..c8932a5
--- /dev/null
+++ b/src/assets/shaders/plane/vert.glsl
@@ -0,0 +1,11 @@
+out float vertex_depth;
+
+void main()
+{
+ vertex_texcoord = texcoord;
+ vec3 pos = (position * vec4(vertex, 1.0)).xyz;
+ vertex_fragpos = pos;
+ vec4 vpos = view * vec4(pos, 1.0);
+ vertex_depth = vpos.z;
+ gl_Position = projection * vpos;
+}
diff --git a/src/assets/textures/test.png b/src/assets/textures/test.png
index 1f1edca..2b0227b 100644
--- a/src/assets/textures/test.png
+++ b/src/assets/textures/test.png
Binary files differ
diff --git a/src/game.rs b/src/game.rs
index 1abe66e..0596a2b 100644
--- a/src/game.rs
+++ b/src/game.rs
@@ -1,11 +1,16 @@
#![allow(dead_code, unused_variables)]
-use std::collections::HashMap;
+use std::{collections::HashMap, f32::consts::PI};
use teleia::*;
+use crate::room;
+
+const MOUSE_SENSITIVITY: f32 = 0.01;
+const PLAYER_SPEED: f32 = 0.1;
+const PLAYER_RADIUS: f32 = 0.5;
+
struct Assets {
font: font::Bitmap,
- shader_flat: shader::Shader,
- mesh_square: mesh::Mesh,
+ mesh_cube: mesh::Mesh,
texture_test: texture::Texture,
}
@@ -13,53 +18,176 @@ impl Assets {
fn new(ctx: &context::Context) -> Self {
Self {
font: font::Bitmap::default(ctx),
- shader_flat: shader::Shader::new(
- ctx,
- include_str!("assets/shaders/flat/vert.glsl"),
- include_str!("assets/shaders/flat/frag.glsl"),
- ),
- mesh_square: mesh::Mesh::from_obj(ctx, include_bytes!("assets/meshes/square.obj")),
+ mesh_cube: mesh::Mesh::from_obj(ctx, include_bytes!("assets/meshes/cube.obj")),
texture_test: texture::Texture::new(ctx, include_bytes!("assets/textures/test.png")),
}
}
}
+#[derive(Debug, Clone, PartialEq, Eq)]
+pub enum Mode {
+ Titlescreen,
+ Game,
+}
+
pub struct Game {
+ mode: Mode,
assets: Assets,
+ room_path: String,
+ room: room::Room,
+ mouse: (i32, i32),
+ camera_pitch: f32,
+ camera_yaw: f32,
+ player_pos: glam::Vec3,
}
impl Game {
- pub fn new(ctx: &context::Context) -> Self {
+ pub fn new(ctx: &context::Context, room_path: &str) -> Self {
Self {
+ mode: Mode::Titlescreen,
assets: Assets::new(ctx),
+ room_path: room_path.to_owned(),
+ room: room::Room::new(ctx, shader::Shader::new(ctx,
+ include_str!("assets/shaders/plane/vert.glsl"),
+ include_str!("assets/shaders/plane/frag.glsl"),
+ )),
+ mouse: (ctx.render_width as i32 / 2, ctx.render_height as i32 / 2),
+ camera_pitch: 0.0,
+ camera_yaw: 0.0,
+ player_pos: glam::Vec3::new(0.0, 0.0, 0.0),
}
}
+ fn looking_at_art(&self, ctx: &context::Context, st: &mut state::State) -> bool {
+ let q = glam::Quat::from_rotation_y(self.camera_yaw);
+ let dir = q.mul_vec3(glam::Vec3::new(0.0, 0.0, 1.0));
+ let p = self.player_pos + dir;
+ p.distance(glam::Vec3::ZERO) < 2.0
+ }
+ fn player_height(&self) -> f32 {
+ 1.0 / self.room.config.size
+ }
+ fn player_speed(&self) -> f32 {
+ PLAYER_SPEED / self.room.config.size * self.room.config.speed
+ }
}
impl teleia::state::Game for Game {
+ fn initialize(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> {
+ Ok(())
+ }
fn initialize_audio(&self, ctx: &context::Context, st: &state::State, actx: &audio::Context) -> HashMap<String, audio::Audio> {
HashMap::from_iter(vec![
- ("test".to_owned(), audio::Audio::new(&actx, include_bytes!("assets/audio/test.wav"))),
+ ("mrbeast".to_owned(), audio::Audio::new(&actx, include_bytes!("assets/audio/mrbeast.mp3"))),
])
}
- fn update(&mut self, _ctx: &context::Context, _st: &mut state::State) -> Erm<()> {
+ fn finish_title(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> {
+ if self.mode == Mode::Titlescreen {
+ self.mode = Mode::Game;
+ ctx.lock_mouse();
+ // TODO
+ if cfg!(target_arch = "wasm32") {
+ self.room.load_from_bytes(ctx, st,
+ Some(include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/room.ini")),
+ include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/FLOOR.png"),
+ include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/WALL.png"),
+ include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/ROOF.png"),
+ include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/ART.png"),
+ include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/CREDIT.png"),
+ Some(include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/MINI.png")),
+ Some(include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/INTERACT.png")),
+ Some(include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/LAYER.png")),
+ Some(include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/MUSIC.mp3")),
+ Some(include_bytes!("/home/llll/src/bapalon/DATA/NIGHT_1/ROOM_4/FOOT.wav")),
+ )?;
+ } else {
+ self.room.load(ctx, st, &self.room_path)?;
+ }
+ }
+ Ok(())
+ }
+ fn mouse_press(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> {
+ match self.mode {
+ Mode::Titlescreen => {
+ }
+ Mode::Game => {
+ self.room.credit_mode.toggle(st.tick);
+ },
+ }
+ Ok(())
+ }
+ fn mouse_move(&mut self, ctx: &context::Context, st: &mut state::State, x: i32, y: i32) -> Erm<()> {
+ match self.mode {
+ Mode::Titlescreen => {
+ }
+ Mode::Game => {
+ let dx = x - self.mouse.0;
+ let dy = y - self.mouse.1;
+ self.camera_yaw += dx as f32 * MOUSE_SENSITIVITY;
+ self.camera_pitch += dy as f32 * MOUSE_SENSITIVITY;
+ self.camera_pitch = self.camera_pitch.clamp(-PI/2.0 + 0.001, PI/2.0 - 0.001);
+ self.mouse = (x, y);
+ }
+ }
+ Ok(())
+ }
+ fn update(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> {
+ match self.mode {
+ Mode::Titlescreen => {
+ }
+ Mode::Game => {
+ let mut player_dir = glam::Vec3::ZERO;
+ if st.keys.up() { player_dir += glam::Vec3::new(0.0, 0.0, 1.0); }
+ if st.keys.down() { player_dir += glam::Vec3::new(0.0, 0.0, -1.0); }
+ if st.keys.left() { player_dir += glam::Vec3::new(-1.0, 0.0, 0.0); }
+ if st.keys.right() { player_dir += glam::Vec3::new(1.0, 0.0, 0.0); }
+ if player_dir != glam::Vec3::ZERO {
+ self.room.footstep(ctx, st)?;
+ player_dir = player_dir.normalize();
+ self.player_pos += self.player_speed()
+ * glam::Quat::from_rotation_y(self.camera_yaw).mul_vec3(player_dir);
+ self.player_pos.x = self.player_pos.x.clamp(
+ -room::PLANE_SIZE + PLAYER_RADIUS,
+ room::PLANE_SIZE - PLAYER_RADIUS
+ );
+ self.player_pos.z = self.player_pos.z.clamp(
+ -room::PLANE_SIZE + PLAYER_RADIUS,
+ room::PLANE_SIZE - PLAYER_RADIUS
+ );
+ }
+ if self.looking_at_art(ctx, st) {
+ if !self.room.interact_mode.is_active() {
+ self.room.interact_mode.toggle(st.tick);
+ }
+ } else {
+ if self.room.interact_mode.is_active() {
+ self.room.interact_mode.toggle(st.tick);
+ }
+ }
+ let q = glam::Quat::from_euler(glam::EulerRot::YXZ, self.camera_yaw, self.camera_pitch, 0.0);
+ let dir = q.mul_vec3(glam::Vec3::new(0.0, 0.0, 1.0));
+ st.move_camera(ctx,
+ &(self.player_pos + glam::Vec3::new(0.0, self.player_height(), 0.0)),
+ &dir,
+ &glam::Vec3::new(0.0, 1.0, 0.0),
+ );
+ }
+ }
Ok(())
}
fn render(&mut self, ctx: &context::Context, st: &mut state::State) -> Erm<()> {
ctx.clear();
- self.assets.font.render_text(
- ctx, st,
- &glam::Vec2::new(0.0, 0.0),
- "hello computer",
- );
- st.bind_2d(ctx, &self.assets.shader_flat);
- self.assets.texture_test.bind(ctx);
- self.assets.shader_flat.set_position_2d(
- ctx, st,
- &glam::Vec2::new(40.0, 40.0),
- &glam::Vec2::new(16.0, 16.0),
- );
- self.assets.mesh_square.render(ctx);
+ match self.mode {
+ Mode::Titlescreen => {
+ self.assets.font.render_text(
+ ctx, st,
+ &glam::Vec2::new(0.0, 0.0),
+ "click to continue",
+ );
+ }
+ Mode::Game => {
+ self.room.render(ctx, st, self.camera_yaw)?;
+ }
+ }
Ok(())
}
}
diff --git a/src/helpers.js b/src/helpers.js
deleted file mode 100644
index 20b86f4..0000000
--- a/src/helpers.js
+++ /dev/null
@@ -1,13 +0,0 @@
-let resized = false;
-
-export async function js_track_resized_setup() {
- window.addEventListener("resize", () => {
- resized = true;
- });
-};
-
-export function js_poll_resized() {
- let ret = resized;
- resized = false;
- return ret;
-}
diff --git a/src/index.css b/src/index.css
deleted file mode 100644
index 323fa50..0000000
--- a/src/index.css
+++ /dev/null
@@ -1,34 +0,0 @@
-html {
- touch-action: manipulation;
-}
-body {
- background: #000000;
-}
-html, body {
- overflow: hidden;
- margin: 0 !important;
- padding: 0 !important;
- height: 100%;
- width: 100%;
-}
-canvas {
- margin-right: auto;
- margin-left: auto;
- display: block;
- position: absolute;
- top: 0%;
- left: 50%;
- transform: translate(-50%, 0%);
- color: #000000;
-}
-.centered {
- margin-right: auto;
- margin-left: auto;
- display: block;
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- text-align: center;
- image-transform: pixelated;
-}
diff --git a/src/lib.rs b/src/lib.rs
index 66f9771..0060ab3 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,4 +1,5 @@
mod game;
+mod room;
#[cfg(target_arch = "wasm32")]
use wasm_bindgen::prelude::*;
@@ -6,5 +7,7 @@ use wasm_bindgen::prelude::*;
#[cfg(target_arch = "wasm32")]
#[wasm_bindgen]
pub fn main_js() {
- teleia::run(240, 160, teleia::Options::empty(), game::Game::new);
+ teleia::run(240, 160, teleia::Options::empty(),
+ |ctx| game::Game::new(ctx, "broken path")
+ );
}
diff --git a/src/main.rs b/src/main.rs
index 25a240d..3c8ed4f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,8 +1,12 @@
mod game;
+mod room;
#[cfg(not(target_arch = "wasm32"))]
pub fn main() -> teleia::Erm<()> {
- teleia::run("game", 240, 160, teleia::Options::empty(), game::Game::new)
+ let room_path = std::env::args().nth(1).unwrap();
+ teleia::run("game", 640, 480, teleia::Options::FULLSCREEN_MOUSE,
+ |ctx| game::Game::new(ctx, &room_path)
+ )
}
#[cfg(target_arch = "wasm32")]
diff --git a/src/room.rs b/src/room.rs
new file mode 100644
index 0000000..81ed88b
--- /dev/null
+++ b/src/room.rs
@@ -0,0 +1,346 @@
+use std::{f32::consts::PI, path::{Path, PathBuf}};
+
+use teleia::*;
+
+use rand::Rng;
+
+pub const PLANE_SIZE: f32 = 12.0;
+pub const FOOTSTEP_TIME: u64 = 90;
+
+#[derive(Debug)]
+pub struct Config {
+ pub name: String,
+ pub credits: String,
+ pub links: String,
+ pub size: f32,
+ pub speed: f32,
+ pub fov: f32,
+ pub texture_repeat: f32,
+ pub room_height: f32,
+ pub layer_frames: f32,
+ pub fog_color: glam::Vec3,
+ pub fog_end: f32,
+ pub mini_speed: f32,
+}
+impl Default for Config {
+ fn default() -> Self {
+ Self {
+ name: "".to_owned(),
+ credits: "".to_owned(),
+ links: "".to_owned(),
+ size: 1.0,
+ speed: 1.0,
+ fov: 55.0,
+ texture_repeat: 3.0,
+ room_height: 350.0,
+ layer_frames: 1.0,
+ fog_color: glam::Vec3::ZERO,
+ fog_end: -1.0,
+ mini_speed: 1.0,
+ }
+ }
+}
+impl Config {
+ pub fn from_room_ini(bs: Vec<u8>) -> Erm<Self> {
+ let mut ret = Self::default();
+ let contents = String::from_utf8(bs)?;
+ let i = ini::Ini::load_from_str(&contents)?;
+ let Some(sec) = i.section::<&str>(None) else { return utils::erm_msg("failed to get properties"); };
+ if let Some(x) = sec.get("name") { ret.name = x.to_owned(); }
+ if let Some(x) = sec.get("credits") { ret.credits = x.to_owned(); }
+ if let Some(x) = sec.get("links") { ret.links = x.to_owned(); }
+ if let Some(x) = sec.get("size") { ret.size = x.parse()?; }
+ if let Some(x) = sec.get("speed") { ret.speed = x.parse()?; }
+ if let Some(x) = sec.get("FOV") { ret.fov = x.parse()?; }
+ if let Some(x) = sec.get("Texture_Repeat") { ret.texture_repeat = x.parse()?; }
+ if let Some(x) = sec.get("Room_Height") { ret.room_height = x.parse::<f32>()? / 350.0; }
+ if let Some(x) = sec.get("Layer_Frames") { ret.layer_frames = x.parse()?; }
+ if let Some(x) = sec.get("Fog_Color") {
+ let num: u64 = x.parse()?;
+ ret.fog_color = glam::Vec3::new(
+ (num & 0xff) as f32 / 255.0,
+ (num >> 8 & 0xff) as f32 / 255.0,
+ (num >> 16 & 0xff) as f32 / 255.0,
+ );
+ }
+ if let Some(x) = sec.get("Fog_End") { ret.fog_end = x.parse::<f32>()? / 10.0; }
+ if let Some(x) = sec.get("Mini_speed") { ret.mini_speed = x.parse::<f32>()? / 60.0; }
+ Ok(ret)
+ }
+}
+
+pub struct Room {
+ pub config: Config,
+ pub shader: shader::Shader,
+ pub floor: texture::Texture,
+ pub wall: texture::Texture,
+ pub roof: texture::Texture,
+ pub art: texture::Texture,
+ pub credit: texture::Texture,
+ pub mini: texture::Texture, pub has_mini: bool, pub mini_frame: u64,
+ pub mini_pos: glam::Vec2, pub mini_dir: glam::Vec2,
+ pub interact: texture::Texture, pub has_interact: bool,
+ pub layer: texture::Texture, pub has_layer: bool, pub layer_frame: u64,
+ pub interact_mode: ui::Mode,
+ pub credit_mode: ui::Mode,
+ pub music: Option<(audio::Audio, audio::AudioPlayingHandle)>,
+ pub foot: Option<audio::Audio>, pub foot_countdown: u64,
+}
+impl Room {
+ pub fn new(ctx: &context::Context, shader: shader::Shader) -> Self {
+ Self {
+ config: Config::default(),
+ shader,
+ floor: texture::Texture::new_empty(ctx),
+ wall: texture::Texture::new_empty(ctx),
+ roof: texture::Texture::new_empty(ctx),
+ art: texture::Texture::new_empty(ctx),
+ credit: texture::Texture::new_empty(ctx),
+ mini: texture::Texture::new_empty(ctx), has_mini: false, mini_frame: 0,
+ mini_pos: glam::Vec2::new(4.0, 4.0), mini_dir: glam::Vec2::new(1.0, 0.0),
+ interact: texture::Texture::new_empty(ctx), has_interact: false,
+ layer: texture::Texture::new_empty(ctx), has_layer: false, layer_frame: 0,
+ interact_mode: ui::Mode::new(20),
+ credit_mode: ui::Mode::new(10),
+ music: None,
+ foot: None,
+ foot_countdown: 0,
+ }
+ }
+ fn load_file(base: impl AsRef<Path>, needle: &str) -> Erm<Vec<u8>> {
+ let base = base.as_ref();
+ let uneedle = needle.to_uppercase();
+ for mp in std::fs::read_dir(base)? {
+ if let Ok(p) = mp && let Some(onm) = p.path().file_name() && let Some(nm) = onm.to_str() {
+ if nm.to_uppercase().contains(&uneedle) {
+ return Ok(std::fs::read(p.path())?);
+ }
+ }
+ }
+ utils::erm_msg(&format!("failed to find {} in {}", needle, base.display()))
+ }
+ pub fn load_from_bytes(
+ &mut self, ctx: &context::Context, st: &mut state::State,
+ config: Option<&[u8]>,
+ floor: &[u8], wall: &[u8], roof: &[u8], art: &[u8], credit: &[u8],
+ mini: Option<&[u8]>, interact: Option<&[u8]>, layer: Option<&[u8]>,
+ music: Option<&[u8]>, foot: Option<&[u8]>,
+ ) -> Erm<()> {
+ self.config = Config::default();
+ if let Some(bs) = config {
+ self.config = Config::from_room_ini(bs.to_owned())?;
+ }
+ self.floor.upload(ctx, floor); self.floor.set_repeat(ctx);
+ self.wall.upload(ctx, wall); self.wall.set_repeat(ctx);
+ self.roof.upload(ctx, roof); self.roof.set_repeat(ctx);
+ self.art.upload(ctx, art);
+ self.credit.upload(ctx, credit);
+ if let Some(bs) = mini {
+ self.mini.upload(ctx, &bs);
+ self.has_mini = true;
+ } else { self.has_mini = false; }
+ if let Some(bs) = interact {
+ self.interact.upload(ctx, &bs);
+ self.has_interact = true;
+ } else { self.has_interact = false; }
+ if let Some(bs) = layer {
+ self.layer.upload(ctx, &bs);
+ self.has_layer = true;
+ } else { self.has_layer = false; }
+ if let Some(bs) = music && let Some(audio) = st.audio.as_mut() {
+ let m = audio::Audio::new(&audio.ctx, &bs);
+ if let Some(handle) = m.play(&mut audio.ctx, Some((None, None))) {
+ self.music = Some((m, handle))
+ }
+ } else { self.music = None; }
+ if let Some(bs) = foot && let Some(audio) = st.audio.as_mut() {
+ let m = audio::Audio::new(&audio.ctx, &bs);
+ self.foot = Some(m);
+ } else { self.foot = None; }
+ Ok(())
+ }
+ pub fn load(&mut self, ctx: &context::Context, st: &mut state::State, dir: &str) -> Erm<()> {
+ let base = PathBuf::from(dir);
+ self.load_from_bytes(ctx, st,
+ Self::load_file(&base, "ROOM").ok().as_deref(),
+ &Self::load_file(&base, "FLOOR")?,
+ &Self::load_file(&base, "WALL")?,
+ &Self::load_file(&base, "ROOF")?,
+ &Self::load_file(&base, "ART")?,
+ &Self::load_file(&base, "CREDIT")?,
+ Self::load_file(&base, "MINI").ok().as_deref(),
+ Self::load_file(&base, "INTERACT").ok().as_deref(),
+ Self::load_file(&base, "LAYER").ok().as_deref(),
+ Self::load_file(&base, "MUSIC").ok().as_deref(),
+ Self::load_file(&base, "FOOT").ok().as_deref(),
+ )?;
+ Ok(())
+ }
+ pub fn footstep(&mut self, _ctx: &context::Context, st: &mut state::State) -> Erm<()> {
+ if let Some(f) = &self.foot && let Some(audio) = st.audio.as_mut() {
+ if self.foot_countdown == 0 {
+ f.play(&mut audio.ctx, None);
+ self.foot_countdown = FOOTSTEP_TIME;
+ } else {
+ self.foot_countdown -= 1;
+ }
+ }
+ Ok(())
+ }
+ pub fn render(&mut self, ctx: &context::Context, st: &mut state::State, yaw: f32) -> Erm<()> {
+ let scale = st.render_dims.x / 640.0;
+ st.projection = glam::Mat4::perspective_lh(
+ self.config.fov * PI / 180.0,
+ st.render_dims.x / st.render_dims.y,
+ 0.5,
+ 50.0,
+ );
+ st.bind_3d(ctx, &self.shader);
+ self.shader.set_vec2(ctx, "texture_scale",
+ &glam::Vec2::new(self.config.texture_repeat, self.config.texture_repeat)
+ );
+ self.shader.set_f32(ctx, "fog_distance", self.config.fog_end);
+ self.shader.set_vec3(ctx, "fog_color", &self.config.fog_color);
+ self.floor.bind(ctx);
+ self.shader.set_position_3d(
+ ctx, st,
+ &glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 1.0),
+ glam::Quat::from_rotation_x(PI / 2.0),
+ glam::Vec3::new(0.0, 0.0, 0.0),
+ ),
+ );
+ st.mesh_square.render(ctx);
+ self.roof.bind(ctx);
+ self.shader.set_position_3d(
+ ctx, st,
+ &glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 1.0),
+ glam::Quat::from_rotation_x(3.0 * PI / 2.0),
+ glam::Vec3::new(0.0, self.config.room_height * PLANE_SIZE * 2.0, 0.0),
+ ),
+ );
+ st.mesh_square.render(ctx);
+ self.wall.bind(ctx);
+ let wallpos = [
+ glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 1.0),
+ glam::Quat::from_rotation_y(0.0),
+ glam::Vec3::new(0.0, PLANE_SIZE, PLANE_SIZE),
+ ),
+ glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 1.0),
+ glam::Quat::from_rotation_y(PI),
+ glam::Vec3::new(0.0, PLANE_SIZE, -PLANE_SIZE),
+ ),
+ glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 1.0),
+ glam::Quat::from_rotation_y(PI / 2.0),
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 0.0),
+ ),
+ glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(PLANE_SIZE, PLANE_SIZE, 1.0),
+ glam::Quat::from_rotation_y(3.0 * PI / 2.0),
+ glam::Vec3::new(-PLANE_SIZE, PLANE_SIZE, 0.0),
+ ),
+ ];
+ for wp in wallpos {
+ self.shader.set_position_3d(ctx, st, &wp);
+ st.mesh_square.render(ctx);
+ }
+ self.shader.set_vec2(ctx, "texture_scale", &glam::Vec2::new(1.0, 1.0));
+ self.art.bind(ctx);
+ self.shader.set_position_3d(
+ ctx, st,
+ &glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(1.0, 1.0, 1.0),
+ glam::Quat::from_rotation_y(yaw),
+ glam::Vec3::new(0.0, 1.0, 0.0),
+ ),
+ );
+ st.mesh_square.render(ctx);
+ if self.has_mini {
+ self.mini.bind(ctx);
+ let xscale = 1.0 / 4.0;
+ let xoffset = xscale * self.mini_frame as f32;
+ if st.tick % 10 == 0 {
+ self.mini_frame += 1;
+ self.mini_frame %= 4;
+ }
+ self.shader.set_vec2(ctx, "texture_scale", &glam::Vec2::new(xscale, 1.0));
+ self.shader.set_vec2(ctx, "texture_offset", &glam::Vec2::new(xoffset, 0.0));
+ self.shader.set_position_3d(
+ ctx, st,
+ &glam::Mat4::from_scale_rotation_translation(
+ glam::Vec3::new(0.25, 0.25, 1.0),
+ glam::Quat::from_rotation_y(yaw),
+ glam::Vec3::new(self.mini_pos.x, 0.25, self.mini_pos.y),
+ ),
+ );
+ st.mesh_square.render(ctx);
+ self.shader.set_vec2(ctx, "texture_scale", &glam::Vec2::new(1.0, 1.0));
+ self.shader.set_vec2(ctx, "texture_offset", &glam::Vec2::new(0.0, 0.0));
+ let newpos = self.mini_pos + self.config.mini_speed * self.mini_dir;
+ if newpos.x.abs() > PLANE_SIZE || newpos.y.abs() > PLANE_SIZE {
+ let angle = rand::thread_rng().gen_range(0..360) as f32 * PI / 180.0;
+ self.mini_dir = glam::Vec2::new(angle.cos(), angle.sin());
+ } else {
+ self.mini_pos = newpos;
+ }
+ }
+
+ ctx.clear_depth();
+ self.shader.set_f32(ctx, "fog_distance", -1.0);
+ if self.has_layer {
+ st.bind_2d(ctx, &self.shader);
+ let xscale = 1.0 / self.config.layer_frames;
+ let xoffset = xscale * self.layer_frame as f32;
+ if st.tick % 10 == 0 {
+ self.layer_frame += 1;
+ self.layer_frame %= self.config.layer_frames as u64;
+ }
+ self.shader.set_vec2(ctx, "texture_scale", &glam::Vec2::new(xscale, 1.0));
+ self.shader.set_vec2(ctx, "texture_offset", &glam::Vec2::new(xoffset, 0.0));
+ self.layer.bind(ctx);
+ self.shader.set_position_2d(
+ ctx, st,
+ &glam::Vec2::new(0.0, 0.0),
+ &st.render_dims,
+ );
+ st.mesh_square.render(ctx);
+ self.shader.set_vec2(ctx, "texture_scale", &glam::Vec2::new(1.0, 1.0));
+ self.shader.set_vec2(ctx, "texture_offset", &glam::Vec2::new(0.0, 0.0));
+ }
+ if self.has_interact {
+ st.bind_2d(ctx, &self.shader);
+ self.shader.set_f32(ctx, "opacity", self.interact_mode.progress(st.tick));
+ self.interact.bind(ctx);
+ let iwidth = self.interact.width as f32 * scale;
+ let iheight = iwidth * (self.interact.height as f32 / self.interact.width as f32);
+ self.shader.set_position_2d(
+ ctx, st,
+ &glam::Vec2::new(0.0, 0.0),
+ &glam::Vec2::new(iwidth, iheight),
+ );
+ st.mesh_square.render(ctx);
+ self.shader.set_f32(ctx, "opacity", 1.0);
+ }
+ st.bind_2d(ctx, &self.shader);
+ self.credit.bind(ctx);
+ let cwidth = self.credit.width as f32 * scale;
+ let cheight = cwidth * (self.credit.height as f32 / self.credit.width as f32);
+ self.shader.set_position_2d(
+ ctx, st,
+ &glam::Vec2::new(st.render_dims.x - cwidth,
+ utils::lerp(
+ st.render_dims.y,
+ st.render_dims.y - cheight,
+ self.credit_mode.progress(st.tick),
+ ),
+ ),
+ &glam::Vec2::new(cwidth, cheight),
+ );
+ st.mesh_square.render(ctx);
+ Ok(())
+ }
+}
diff --git a/todo.org b/todo.org
new file mode 100644
index 0000000..b833f9a
--- /dev/null
+++ b/todo.org
@@ -0,0 +1,7 @@
+* The Soup Situation
+- we can show the rooms and play the sounds
+- we gotta parse the ini files and handle stuff thereby (multi-frame guys, fov, etc.)
+- Our Big Goal
+ + support all of the built-in bapalon guys
+ + make it run in the browser
+ - we need an idea for how to load these in the browser