diff --git a/Cargo.lock b/Cargo.lock index f918b2e..7703e25 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -114,9 +114,9 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a64c907d4e79225ac72e2a354c9ce84d50ebb4586dee56c82b3ee73004f537f5" +checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" dependencies = [ "windows-sys 0.52.0", ] @@ -159,6 +159,156 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +[[package]] +name = "async-broadcast" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +dependencies = [ + "event-listener", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8828ec6e544c02b0d6691d21ed9f9218d0384a82542855073c2a3f58304aaf0" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" +dependencies = [ + "async-lock", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" +dependencies = [ + "async-lock", + "cfg-if", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-process" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7eda79bbd84e29c2b308d1dc099d7de8dcc7035e48f4bf5dc4a531a44ff5e2a" +dependencies = [ + "async-channel", + "async-io", + "async-lock", + "async-signal", + "async-task", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-recursion" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.68", +] + +[[package]] +name = "async-signal" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794f185324c2f00e771cd9f1ae8b5ac68be2ca7abb129a87afd6e86d228bc54d" +dependencies = [ + "async-io", + "async-lock", + "atomic-waker", + "cfg-if", + "futures-core", + "futures-io", + "rustix", + "signal-hook-registry", + "slab", + "windows-sys 0.52.0", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.68", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.3.0" @@ -206,9 +356,31 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel", + "async-task", + "futures-io", + "futures-lite", + "piper", +] [[package]] name = "bumpalo" @@ -218,9 +390,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.16.0" +version = "1.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" +checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" [[package]] name = "byteorder" @@ -236,9 +408,9 @@ checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "cc" -version = "1.0.97" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +checksum = "ac367972e516d45567c7eafc73d24e1c193dcf200a8d94e9db7b3d38b349572d" [[package]] name = "cfg-if" @@ -246,6 +418,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.38" @@ -261,9 +439,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "84b3edb18336f4df585bc9aa31dd99c036dfa5dc5e9a2939a722a188f3a8970d" dependencies = [ "clap_builder", "clap_derive", @@ -271,9 +449,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "c1c09dd5ada6c6c78075d6fd0da3f90d8080651e2d6cc8eb2f1aaa4034ced708" dependencies = [ "anstream", "anstyle", @@ -283,21 +461,21 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "2bac35c6dafb060fd4d275d9a4ffae97917c13a6327903a8be2153cd964f7085" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" [[package]] name = "cluFlock" @@ -333,18 +511,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "color-rs" -version = "0.8.0" -source = "git+https://github.com/arturoc/color-rs.git#d50d5e37aaf91ccd39d0832f43a417e3405d2ece" -dependencies = [ - "angle", - "half 1.8.3", - "num-traits", - "serde", - "serde_derive", -] - [[package]] name = "color-spantrace" version = "0.2.1" @@ -369,6 +535,15 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "convert_case" version = "0.6.0" @@ -385,10 +560,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] -name = "crc32fast" -version = "1.4.0" +name = "cpufeatures" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] @@ -414,9 +598,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crunchy" @@ -424,6 +608,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "darling" version = "0.20.9" @@ -445,7 +639,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -456,7 +650,7 @@ checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" dependencies = [ "darling_core", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -475,6 +669,16 @@ dependencies = [ "serde", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + [[package]] name = "directories" version = "5.0.1" @@ -542,9 +746,36 @@ checksum = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257" [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "endi" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" + +[[package]] +name = "enumflags2" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d232db7f5956f3f14313dc2f87985c58bd2c695ce124c8cdd984e08e15ac133d" +dependencies = [ + "enumflags2_derive", + "serde", +] + +[[package]] +name = "enumflags2_derive" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de0d48a183585823424a4ce1aa132d174a6a81bd540895822eb4c8373a8e49e8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.68", +] [[package]] name = "equivalent" @@ -552,6 +783,37 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener", + "pin-project-lite", +] + [[package]] name = "exr" version = "1.72.0" @@ -587,6 +849,12 @@ dependencies = [ "color-maps", ] +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + [[package]] name = "fdeflate" version = "0.3.4" @@ -598,9 +866,9 @@ dependencies = [ [[package]] name = "flatbuffers" -version = "23.5.26" +version = "24.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" +checksum = "8add37afff2d4ffa83bc748a70b4b1370984f6980768554182424ef71447c35f" dependencies = [ "bitflags 1.3.2", "rustc_version", @@ -702,6 +970,69 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-io", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "getrandom" version = "0.2.15" @@ -757,6 +1088,15 @@ dependencies = [ "mint", ] +[[package]] +name = "glam" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e05e7e6723e3455f4818c7b26e855439f7546cf617ef669d1adedb8669e5cb9" +dependencies = [ + "mint", +] + [[package]] name = "global_counter" version = "0.2.2" @@ -813,6 +1153,12 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + [[package]] name = "hex" version = "0.4.3" @@ -1005,9 +1351,9 @@ 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 = "lebe" @@ -1036,7 +1382,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", ] @@ -1050,6 +1396,12 @@ dependencies = [ "rust-ini 0.17.0", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + [[package]] name = "lock_api" version = "0.4.12" @@ -1062,9 +1414,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "manifest-dir-macros" @@ -1075,7 +1427,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -1098,9 +1450,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memmap2" @@ -1140,7 +1492,7 @@ checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -1151,9 +1503,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", @@ -1179,27 +1531,31 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "nanoid" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ffa00dec017b5b1a8b7cf5e2c008bfda1aa7e0697ac1508b491fdf2622fb4d8" -dependencies = [ - "rand 0.8.5", -] - [[package]] name = "nix" version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "cfg-if", "libc", "memoffset", ] +[[package]] +name = "nix" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" +dependencies = [ + "bitflags 2.6.0", + "cfg-if", + "cfg_aliases", + "libc", + "memoffset", +] + [[package]] name = "nom" version = "7.1.3" @@ -1250,7 +1606,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 1.0.109", @@ -1297,6 +1653,16 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "ordered-stream" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" +dependencies = [ + "futures-core", + "pin-project-lite", +] + [[package]] name = "overload" version = "0.1.1" @@ -1309,6 +1675,12 @@ version = "3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +[[package]] +name = "parking" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" + [[package]] name = "parking_lot" version = "0.11.2" @@ -1322,9 +1694,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core 0.9.10", @@ -1352,7 +1724,7 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.1", + "redox_syscall 0.5.2", "smallvec", "windows-targets 0.52.5", ] @@ -1369,6 +1741,23 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + [[package]] name = "png" version = "0.17.13" @@ -1382,6 +1771,21 @@ dependencies = [ "miniz_oxide", ] +[[package]] +name = "polling" +version = "3.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" +dependencies = [ + "cfg-if", + "concurrent-queue", + "hermit-abi", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.52.0", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1405,10 +1809,19 @@ dependencies = [ ] [[package]] -name = "proc-macro2" -version = "1.0.82" +name = "proc-macro-crate" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" +dependencies = [ + "toml_edit 0.21.1", +] + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1430,10 +1843,10 @@ dependencies = [ "linicon-theme", "manifest-dir-macros", "mint", - "nix", + "nix 0.27.1", "regex", "resvg", - "rustc-hash", + "rustc-hash 1.1.0", "serde", "serde_with", "stardust-xr-fusion", @@ -1569,11 +1982,11 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -1589,14 +2002,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -1610,13 +2023,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", ] [[package]] @@ -1627,9 +2040,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "remove_dir_all" @@ -1661,9 +2074,9 @@ dependencies = [ [[package]] name = "rgb" -version = "0.8.37" +version = "0.8.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05aaa8004b64fd573fc9d002f4e632d51ad4f026c2b5ba95fcb6c2f32c2c47d8" +checksum = "a7439be6844e40133eda024efd85bf07f59d0dd2f59b10c00dd6cfb92cc5c741" dependencies = [ "bytemuck", ] @@ -1728,6 +2141,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" +[[package]] +name = "rustc-hash" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" + [[package]] name = "rustc_version" version = "0.4.0" @@ -1737,6 +2156,19 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + [[package]] name = "rustybuzz" version = "0.7.0" @@ -1782,29 +2214,29 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.202" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "226b61a0d411b2ba5ff6d7f73a476ac4f8bb900373459cd00fab8512828ba395" +checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.202" +version = "1.0.203" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6048858004bcff69094cd972ed40a32500f153bd3be9f716b2eed2e8217c4838" +checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" dependencies = [ "itoa", "ryu", @@ -1819,7 +2251,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -1858,7 +2290,18 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", +] + +[[package]] +name = "sha1" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", ] [[package]] @@ -1870,6 +2313,19 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shiva-color-rs" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7bea807e4f40f1a3df2717cc134562397b6a8f869f22568388fd5eb14bb1b69" +dependencies = [ + "angle", + "half 1.8.3", + "num-traits", + "serde", + "serde_derive", +] + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -1934,6 +2390,15 @@ dependencies = [ "walkdir", ] +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -1968,17 +2433,17 @@ checksum = "2f2b15926089e5526bb2dd738a2eb0e59034356e06eb71e1cd912358c0e62c4d" [[package]] name = "stardust-xr" version = "0.45.0" -source = "git+https://github.com/StardustXR/core.git#6ee323df1a1e76666609c1ebfd79f3390ce43c29" +source = "git+https://github.com/StardustXR/core.git?branch=dev#4aef2a192195397d360ce33c99a0e9e8dd90253b" dependencies = [ "cluFlock", - "color-rs", "dirs 5.0.1", "global_counter", "mint", - "nix", - "parking_lot 0.12.2", - "rustc-hash", + "nix 0.27.1", + "parking_lot 0.12.3", + "rustc-hash 2.0.0", "serde", + "shiva-color-rs", "stardust-xr-schemas", "thiserror", "tokio", @@ -1988,13 +2453,13 @@ dependencies = [ [[package]] name = "stardust-xr-fusion" version = "0.45.0" -source = "git+https://github.com/StardustXR/core.git#6ee323df1a1e76666609c1ebfd79f3390ce43c29" +source = "git+https://github.com/StardustXR/core.git?branch=dev#4aef2a192195397d360ce33c99a0e9e8dd90253b" dependencies = [ "color-eyre", "glam 0.24.2", - "nanoid", - "parking_lot 0.12.2", - "rustc-hash", + "global_counter", + "parking_lot 0.12.3", + "rustc-hash 1.1.0", "serde", "serde_repr", "stardust-xr", @@ -2007,7 +2472,7 @@ dependencies = [ [[package]] name = "stardust-xr-fusion-codegen" version = "0.1.0" -source = "git+https://github.com/StardustXR/core.git#6ee323df1a1e76666609c1ebfd79f3390ce43c29" +source = "git+https://github.com/StardustXR/core.git?branch=dev#4aef2a192195397d360ce33c99a0e9e8dd90253b" dependencies = [ "convert_case", "mint", @@ -2020,13 +2485,13 @@ dependencies = [ [[package]] name = "stardust-xr-molecules" version = "0.45.0" -source = "git+https://github.com/StardustXR/molecules.git#55e7d75088c7b0d4b2d170f9a1106680d393dccc" +source = "git+https://github.com/StardustXR/molecules.git?branch=dev#0f50742e8a9466a80677ae6d2f5aeede6b869180" dependencies = [ - "glam 0.25.0", + "glam 0.27.0", "lazy_static", "lerp", "map-range", - "rustc-hash", + "rustc-hash 1.1.0", "serde", "stardust-xr-fusion", "tokio", @@ -2036,17 +2501,25 @@ dependencies = [ [[package]] name = "stardust-xr-schemas" version = "1.5.3" -source = "git+https://github.com/StardustXR/core.git#6ee323df1a1e76666609c1ebfd79f3390ce43c29" +source = "git+https://github.com/StardustXR/core.git?branch=dev#4aef2a192195397d360ce33c99a0e9e8dd90253b" dependencies = [ "flatbuffers", "flexbuffers", + "fnv", "kdl", "manifest-dir-macros", "serde", "serde_repr", "thiserror", + "zbus", ] +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + [[package]] name = "strict-num" version = "0.1.1" @@ -2105,9 +2578,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.64" +version = "2.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ad3dee41f36859875573074334c200d1add8e4a87bb37113ebd31d926b7b11f" +checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" dependencies = [ "proc-macro2", "quote", @@ -2124,6 +2597,18 @@ dependencies = [ "remove_dir_all", ] +[[package]] +name = "tempfile" +version = "3.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +dependencies = [ + "cfg-if", + "fastrand", + "rustix", + "windows-sys 0.52.0", +] + [[package]] name = "thiserror" version = "1.0.61" @@ -2141,7 +2626,7 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -2223,15 +2708,15 @@ dependencies = [ [[package]] name = "tokio" -version = "1.37.0" +version = "1.38.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" dependencies = [ "backtrace", "bytes", "libc", "mio", - "parking_lot 0.12.2", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", "socket2", @@ -2241,25 +2726,25 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] name = "toml" -version = "0.8.13" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4e43f8cc456c9704c851ae29c67e17ef65d2c30017c17a9765b89c382dc8bba" +checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.13", + "toml_edit 0.22.14", ] [[package]] @@ -2284,15 +2769,26 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.13" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c127785850e8c20836d49732ae6abfa47616e60bf9d9f57c43c250361a9db96c" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" +dependencies = [ + "indexmap 2.2.6", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", + "winnow 0.6.13", ] [[package]] @@ -2314,7 +2810,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -2378,6 +2874,23 @@ version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "782d1e33eba0670d92d03e4da87f7304490493fc983d229dff383934c23f2d16" +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "uds_windows" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" +dependencies = [ + "memoffset", + "tempfile", + "winapi", +] + [[package]] name = "unicode-bidi" version = "0.3.15" @@ -2428,9 +2941,9 @@ checksum = "b1d386ff53b415b7fe27b50bb44679e2cc4660272694b7b6f3326d8480823a94" [[package]] name = "unicode-width" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "ustr" @@ -2441,7 +2954,7 @@ dependencies = [ "ahash 0.8.11", "byteorder", "lazy_static", - "parking_lot 0.12.2", + "parking_lot 0.12.3", ] [[package]] @@ -2479,9 +2992,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "valuable" @@ -2532,7 +3045,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", "wasm-bindgen-shared", ] @@ -2554,7 +3067,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2761,9 +3274,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" dependencies = [ "memchr", ] @@ -2774,12 +3287,84 @@ version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" +[[package]] +name = "xdg-home" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca91dcf8f93db085f3a0a29358cd0b9d670915468f4290e8b85d118a34211ab8" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "xmlparser" version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" +[[package]] +name = "zbus" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23915fcb26e7a9a9dc05fd93a9870d336d6d032cd7e8cebf1c5c37666489fdd5" +dependencies = [ + "async-broadcast", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-process", + "async-recursion", + "async-task", + "async-trait", + "blocking", + "enumflags2", + "event-listener", + "futures-core", + "futures-sink", + "futures-util", + "hex", + "nix 0.28.0", + "ordered-stream", + "rand 0.8.5", + "serde", + "serde_repr", + "sha1", + "static_assertions", + "tracing", + "uds_windows", + "windows-sys 0.52.0", + "xdg-home", + "zbus_macros", + "zbus_names", + "zvariant", +] + +[[package]] +name = "zbus_macros" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02bcca0b586d2f8589da32347b4784ba424c4891ed86aa5b50d5e88f6b2c4f5d" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.68", + "zvariant_utils", +] + +[[package]] +name = "zbus_names" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" +dependencies = [ + "serde", + "static_assertions", + "zvariant", +] + [[package]] name = "zerocopy" version = "0.7.34" @@ -2797,7 +3382,7 @@ checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.64", + "syn 2.0.68", ] [[package]] @@ -2808,3 +3393,40 @@ checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" dependencies = [ "simd-adler32", ] + +[[package]] +name = "zvariant" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aa6d31a02fbfb602bfde791de7fedeb9c2c18115b3d00f3a36e489f46ffbbc7" +dependencies = [ + "endi", + "enumflags2", + "serde", + "static_assertions", + "zvariant_derive", +] + +[[package]] +name = "zvariant_derive" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "642bf1b6b6d527988b3e8193d20969d53700a36eac734d21ae6639db168701c8" +dependencies = [ + "proc-macro-crate 3.1.0", + "proc-macro2", + "quote", + "syn 2.0.68", + "zvariant_utils", +] + +[[package]] +name = "zvariant_utils" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc242db087efc22bd9ade7aa7809e4ba828132edc312871584a6b4391bdf8786" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.68", +] diff --git a/Cargo.toml b/Cargo.toml index ee1fae6..0e0fee3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,8 +7,8 @@ serde = "1.0.197" [workspace.dependencies.stardust-xr-fusion] git = "https://github.com/StardustXR/core.git" -# path = "../../core/fusion" +branch = "dev" [workspace.dependencies.stardust-xr-molecules] git = "https://github.com/StardustXR/molecules.git" -# path = "../../molecules" +branch = "dev" diff --git a/app_grid/Cargo.toml b/app_grid/Cargo.toml index 0a8f1e1..c873568 100644 --- a/app_grid/Cargo.toml +++ b/app_grid/Cargo.toml @@ -12,11 +12,5 @@ manifest-dir-macros = "0.1.18" glam = "0.24.2" tween = "2.0.1" tracing-subscriber = "0.3.17" - -[dependencies.stardust-xr-fusion] -git = "https://github.com/StardustXR/core.git" -# path = "../../core/fusion" - -[dependencies.stardust-xr-molecules] -git = "https://github.com/StardustXR/molecules.git" -# path = "../../molecules" +stardust-xr-fusion = { workspace = true } +stardust-xr-molecules = { workspace = true } diff --git a/app_grid/src/main.rs b/app_grid/src/main.rs index 1bccc4e..2d0673b 100644 --- a/app_grid/src/main.rs +++ b/app_grid/src/main.rs @@ -6,14 +6,15 @@ use protostar::{ xdg::{get_desktop_files, parse_desktop_file, DesktopFile, Icon, IconType}, }; use stardust_xr_fusion::{ - client::{Client, ClientState, FrameInfo, RootHandler}, + client::Client, core::values::{color::rgba_linear, ResourceID, Vector3}, drawable::{ MaterialParameter, Model, ModelPartAspect, Text, TextBounds, TextFit, TextStyle, XAlign, YAlign, }, - fields::BoxField, + fields::{Field, Shape}, node::NodeType, + root::{ClientState, FrameInfo, RootAspect, RootHandler}, spatial::{Spatial, SpatialAspect, SpatialRefAspect, Transform}, }; use stardust_xr_molecules::{Grabbable, GrabbableSettings}; @@ -32,9 +33,11 @@ async fn main() -> Result<()> { .pretty() .init(); let (client, event_loop) = Client::connect_with_async_loop().await?; - client.set_base_prefixes(&[directory_relative_path!("../res")]); + client + .set_base_prefixes(&[directory_relative_path!("../res")]) + .unwrap(); - let _root = client.wrap_root(AppGrid::new(&client))?; + let _root = client.get_root().alias().wrap(AppGrid::new(&client))?; tokio::select! { _ = tokio::signal::ctrl_c() => (), @@ -44,7 +47,6 @@ async fn main() -> Result<()> { } struct AppGrid { - root: Spatial, apps: Vec, //style: TextStyle, } @@ -69,20 +71,17 @@ impl AppGrid { .ok() }) .collect::>(); - AppGrid { - root: client.get_root().alias(), - apps, - } + AppGrid { apps } } } impl RootHandler for AppGrid { fn frame(&mut self, info: FrameInfo) { for app in &mut self.apps { - app.frame(info); + app.frame(&info); } } - fn save_state(&mut self) -> ClientState { - ClientState::from_root(&self.root) + fn save_state(&mut self) -> Result { + Ok(ClientState::default()) } } @@ -99,11 +98,11 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { Transform::from_rotation(Quat::from_rotation_y(PI)), &ResourceID::new_namespaced("protostar", "cartridge"), )?; - model.model_part("Cartridge")?.set_material_parameter( + model.part("Cartridge")?.set_material_parameter( "color", MaterialParameter::Color(rgba_linear!(0.0, 1.0, 1.0, 1.0)), )?; - model.model_part("Icon")?.set_material_parameter( + model.part("Icon")?.set_material_parameter( "diffuse", MaterialParameter::Texture(ResourceID::Direct(icon.path.clone())), )?; @@ -122,18 +121,18 @@ pub struct App { root: Spatial, application: Application, grabbable: Grabbable, - _field: BoxField, + _field: Field, _icon: Model, _label: Option, } impl App { pub fn create_from_desktop_file( - parent: &impl SpatialAspect, + parent: &impl SpatialRefAspect, position: impl Into>, desktop_file: DesktopFile, ) -> Result { let root = Spatial::create(parent, Transform::from_translation(position), false)?; - let field = BoxField::create(&root, Transform::none(), [APP_SIZE; 3])?; + let field = Field::create(&root, Transform::none(), Shape::Box([APP_SIZE; 3].into()))?; let application = Application::create(desktop_file)?; let icon = application.icon(128, true); let grabbable = Grabbable::create( @@ -171,7 +170,7 @@ impl App { }; let label = application.name().and_then(|name| { Text::create( - &icon.model_part("Label").ok()?, + &icon.part("Label").ok()?, Transform::none(), name, label_style, @@ -198,7 +197,7 @@ impl App { // .unwrap(); // } - fn frame(&mut self, info: FrameInfo) { + fn frame(&mut self, info: &FrameInfo) { let _ = self.grabbable.update(&info); if self.grabbable.grab_action().actor_stopped() { diff --git a/assets/hexagon.blend b/assets/hexagon.blend index 21655d5..fffd9ca 100644 Binary files a/assets/hexagon.blend and b/assets/hexagon.blend differ diff --git a/hexagon_launcher/src/app.rs b/hexagon_launcher/src/app.rs index 31ef630..fa609bc 100644 --- a/hexagon_launcher/src/app.rs +++ b/hexagon_launcher/src/app.rs @@ -5,14 +5,14 @@ use protostar::{ xdg::{DesktopFile, Icon, IconType}, }; use stardust_xr_fusion::{ - client::FrameInfo, core::values::{ResourceID, Vector3}, drawable::{ MaterialParameter, Model, ModelPartAspect, Text, TextBounds, TextFit, TextStyle, XAlign, YAlign, }, - fields::BoxField, + fields::{Field, Shape}, node::NodeType, + root::FrameInfo, spatial::{Spatial, SpatialAspect, SpatialRefAspect, Transform}, }; use stardust_xr_molecules::{Grabbable, GrabbableSettings}; @@ -36,9 +36,9 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), )?; model - .model_part("Hex")? + .part("Hex")? .set_material_parameter("color", MaterialParameter::Color(DEFAULT_HEX_COLOR))?; - model.model_part("Icon")?.set_material_parameter( + model.part("Icon")?.set_material_parameter( "diffuse", MaterialParameter::Texture(ResourceID::Direct(icon.path.clone())), )?; @@ -58,7 +58,7 @@ pub struct App { parent: Spatial, position: Vector3, grabbable: Grabbable, - _field: BoxField, + _field: Field, icon: Model, label: Option, grabbable_shrink: Option>, @@ -73,7 +73,11 @@ impl App { state: &State, ) -> Result { let position = position.into(); - let field = BoxField::create(parent, Transform::identity(), [APP_SIZE; 3])?; + let field = Field::create( + parent, + Transform::identity(), + Shape::Box([APP_SIZE; 3].into()), + )?; let application = Application::create(desktop_file)?; let icon = application.icon(128, false); let grabbable = Grabbable::create( @@ -81,7 +85,7 @@ impl App { Transform::from_translation(position), &field, GrabbableSettings { - max_distance: 0.01, + max_distance: 0.025, zoneable: false, ..Default::default() }, @@ -167,12 +171,12 @@ impl App { } } - pub fn frame(&mut self, info: FrameInfo, state: &State) { + pub fn frame(&mut self, info: &FrameInfo, state: &State) { let _ = self.grabbable.update(&info); if let Some(grabbable_move) = &mut self.grabbable_move { if !grabbable_move.is_finished() { - let scale = grabbable_move.move_by(info.delta); + let scale = grabbable_move.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform( @@ -192,7 +196,7 @@ impl App { } if let Some(grabbable_shrink) = &mut self.grabbable_shrink { if !grabbable_shrink.is_finished() { - let scale = grabbable_shrink.move_by(info.delta); + let scale = grabbable_shrink.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform(&self.parent, Transform::from_scale([scale; 3])) @@ -227,7 +231,7 @@ impl App { } } else if let Some(grabbable_grow) = &mut self.grabbable_grow { if !grabbable_grow.is_finished() { - let scale = grabbable_grow.move_by(info.delta); + let scale = grabbable_grow.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform(&self.parent, Transform::from_scale([scale; 3])) diff --git a/hexagon_launcher/src/main.rs b/hexagon_launcher/src/main.rs index 641bf8a..775fc53 100644 --- a/hexagon_launcher/src/main.rs +++ b/hexagon_launcher/src/main.rs @@ -9,23 +9,21 @@ use manifest_dir_macros::directory_relative_path; use protostar::xdg::{get_desktop_files, parse_desktop_file, DesktopFile}; use serde::{Deserialize, Serialize}; use stardust_xr_fusion::{ - client::{Client, ClientState, FrameInfo, RootHandler}, - core::{ - schemas::flex::flexbuffers, - values::{ - color::{color_space::LinearRgb, rgba_linear, Rgba}, - ResourceID, - }, + client::Client, + core::values::{ + color::{color_space::LinearRgb, rgba_linear, Rgba}, + ResourceID, }, drawable::{MaterialParameter, Model, ModelPartAspect}, node::{NodeError, NodeType}, + root::{ClientState, FrameInfo, RootAspect, RootHandler}, spatial::{Spatial, SpatialAspect, Transform}, }; use stardust_xr_molecules::{ button::{Button, ButtonSettings}, Grabbable, GrabbableSettings, PointerMode, }; -use std::{f32::consts::PI, time::Duration}; +use std::{f32::consts::PI, sync::Arc, time::Duration}; const APP_SIZE: f32 = 0.06; const PADDING: f32 = 0.005; @@ -44,9 +42,14 @@ async fn main() -> Result<()> { .pretty() .init(); let (client, event_loop) = Client::connect_with_async_loop().await?; - client.set_base_prefixes(&[directory_relative_path!("../res")]); + client + .set_base_prefixes(&[directory_relative_path!("../res")]) + .unwrap(); - let _root = client.wrap_root(AppHexGrid::new(&client).await)?; + let _root = client + .get_root() + .alias() + .wrap(AppHexGrid::new(&client).await)?; tokio::select! { _ = tokio::signal::ctrl_c() => (), @@ -55,7 +58,7 @@ async fn main() -> Result<()> { Ok(()) } -#[derive(Debug, Default, Serialize, Deserialize)] +#[derive(Debug, Default, Clone, Serialize, Deserialize)] pub struct State { unfurled: bool, } @@ -67,13 +70,13 @@ struct AppHexGrid { state: State, } impl AppHexGrid { - async fn new(client: &Client) -> Self { - let state = flexbuffers::from_slice(&client.state().data).unwrap_or_default(); + async fn new(client: &Arc) -> Self { + let state = client.get_state().data().unwrap_or_default(); let movable_root = Spatial::create(client.get_root(), Transform::identity(), false).unwrap(); - let button = CenterButton::new(client, &client.state()).unwrap(); + let button = CenterButton::new(client, &client.get_state()).unwrap(); tokio::time::sleep(Duration::from_millis(10)).await; // give it a bit of time to send the messages properly let mut desktop_files: Vec = get_desktop_files() @@ -119,11 +122,11 @@ impl AppHexGrid { } impl RootHandler for AppHexGrid { fn frame(&mut self, info: FrameInfo) { - self.button.frame(info); + self.button.frame(&info); if self.button.button.pressed() { self.button .model - .model_part("Hex") + .part("Hex") .unwrap() .set_material_parameter("color", MaterialParameter::Color(BTN_SELECTED_COLOR)) .unwrap(); @@ -134,33 +137,33 @@ impl RootHandler for AppHexGrid { } else if self.button.button.released() { self.button .model - .model_part("Hex") + .part("Hex") .unwrap() .set_material_parameter("color", MaterialParameter::Color(BTN_COLOR)) .unwrap(); } for app in &mut self.apps { - app.frame(info, &self.state); + app.frame(&info, &self.state); } } - fn save_state(&mut self) -> ClientState { + fn save_state(&mut self) -> Result { self.movable_root .set_relative_transform( self.button.grabbable.content_parent(), Transform::from_translation([0.0; 3]), ) .unwrap(); - ClientState { - data: flexbuffers::to_vec(&self.state).unwrap(), - root: self.movable_root.alias(), - spatial_anchors: [( + ClientState::new( + Some(self.state.clone()), + &self.movable_root, + [( "content_parent".to_string(), - self.button.grabbable.content_parent().alias(), + self.button.grabbable.content_parent(), )] .into_iter() .collect(), - } + ) } } @@ -170,7 +173,7 @@ struct CenterButton { model: Model, } impl CenterButton { - fn new(client: &Client, state: &ClientState) -> Result { + fn new(client: &Arc, state: &ClientState) -> Result { // (APP_SIZE + PADDING) / 2.0, let button = Button::create( client.get_root(), @@ -206,9 +209,9 @@ impl CenterButton { &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), )?; model - .model_part("Hex")? + .part("Hex")? .set_material_parameter("color", MaterialParameter::Color(BTN_COLOR))?; - if let Some(content_parent) = state.spatial_anchors.get("content_parent") { + if let Some(content_parent) = state.spatial_anchors(client).get("content_parent") { grabbable .content_parent() .set_relative_transform(content_parent, Transform::identity())?; @@ -220,7 +223,7 @@ impl CenterButton { }) } - fn frame(&mut self, info: FrameInfo) { + fn frame(&mut self, info: &FrameInfo) { let _ = self.grabbable.update(&info); self.button.update(); } diff --git a/protostar/src/application.rs b/protostar/src/application.rs index 45d7079..d54cfbc 100644 --- a/protostar/src/application.rs +++ b/protostar/src/application.rs @@ -2,9 +2,9 @@ use crate::xdg::{DesktopFile, Icon, IconType}; use nix::libc::setsid; use regex::Regex; use stardust_xr_fusion::{ - client::ClientState, - node::{NodeError, NodeType}, - spatial::Spatial, + node::{NodeError, NodeResult}, + root::{ClientState, RootAspect}, + spatial::SpatialRefAspect, }; use std::{ os::unix::process::CommandExt, @@ -44,7 +44,7 @@ impl Application { icon.and_then(|i| i.cached_process(preferred_px_size).ok()) } - pub fn launch(&self, launch_space: &Spatial) -> Result<(), NodeError> { + pub fn launch(&self, launch_space: &impl SpatialRefAspect) -> NodeResult<()> { let client = launch_space.node().client()?; let launch_space = launch_space.alias(); @@ -55,16 +55,14 @@ impl Application { .ok_or(NodeError::DoesNotExist)?; tokio::task::spawn(async move { let Ok(startup_token) = client - .state_token(&ClientState::from_root(&launch_space)) + .get_root() + .generate_state_token(ClientState::from_root(&launch_space).unwrap()) .await else { return; }; - let Ok(future_connection_env) = client.get_connection_environment() else { - return; - }; - let Ok(connection_env) = future_connection_env.await else { + let Ok(connection_env) = client.get_root().get_connection_environment().await else { return; }; for (k, v) in connection_env.into_iter() { diff --git a/single/src/main.rs b/single/src/main.rs index 3ff6755..be1fa87 100644 --- a/single/src/main.rs +++ b/single/src/main.rs @@ -4,7 +4,7 @@ use clap::Parser; use color_eyre::{eyre::Result, Report}; use manifest_dir_macros::directory_relative_path; use protostar::xdg::parse_desktop_file; -use stardust_xr_fusion::client::Client; +use stardust_xr_fusion::{client::Client, node::NodeType, root::RootAspect}; use std::path::PathBuf; use tracing_subscriber::EnvFilter; @@ -26,7 +26,7 @@ async fn main() -> Result<()> { color_eyre::install()?; let args = Args::parse(); let (client, event_loop) = Client::connect_with_async_loop().await?; - client.set_base_prefixes(&[directory_relative_path!("../res")]); + client.set_base_prefixes(&[directory_relative_path!("../res")])?; let protostar = Single::create_from_desktop_file( client.get_root(), @@ -34,7 +34,7 @@ async fn main() -> Result<()> { parse_desktop_file(args.desktop_file).map_err(Report::msg)?, )?; - let _root = client.wrap_root(protostar)?; + let _root = client.get_root().alias().wrap(protostar)?; tokio::select! { _ = tokio::signal::ctrl_c() => (), diff --git a/single/src/single.rs b/single/src/single.rs index e1c5744..05c6591 100644 --- a/single/src/single.rs +++ b/single/src/single.rs @@ -5,14 +5,14 @@ use protostar::{ xdg::{DesktopFile, Icon, IconType}, }; use stardust_xr_fusion::{ - client::{ClientState, FrameInfo, RootHandler}, core::values::{color::rgba_linear, ResourceID, Vector3}, drawable::{ MaterialParameter, Model, ModelPartAspect, Text, TextBounds, TextFit, TextStyle, XAlign, YAlign, }, - fields::BoxField, + fields::{Field, Shape}, node::NodeType, + root::{ClientState, FrameInfo, RootHandler}, spatial::{Spatial, SpatialAspect, SpatialRefAspect, Transform}, }; use stardust_xr_molecules::{Grabbable, GrabbableSettings}; @@ -35,11 +35,11 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { t, &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), )?; - model.model_part("Hex")?.set_material_parameter( + model.part("Hex")?.set_material_parameter( "color", MaterialParameter::Color(rgba_linear!(0.0, 1.0, 1.0, 1.0)), )?; - model.model_part("Icon")?.set_material_parameter( + model.part("Icon")?.set_material_parameter( "diffuse", MaterialParameter::Texture(ResourceID::Direct(icon.path.clone())), )?; @@ -59,7 +59,7 @@ pub struct Single { root: Spatial, position: Vector3, grabbable: Grabbable, - _field: BoxField, + _field: Field, icon: Model, label: Option, grabbable_shrink: Option>, @@ -70,13 +70,17 @@ pub struct Single { impl Single { pub fn create_from_desktop_file( - parent: &impl SpatialAspect, + parent: &impl SpatialRefAspect, position: impl Into>, desktop_file: DesktopFile, ) -> Result { let root = Spatial::create(parent, Transform::identity(), false)?; let position = position.into(); - let field = BoxField::create(&root, Transform::identity(), [MODEL_SCALE * 2.0; 3])?; + let field = Field::create( + &root, + Transform::identity(), + Shape::Box([MODEL_SCALE * 2.0; 3].into()), + )?; let application = Application::create(desktop_file)?; let icon = application.icon(128, false); let grabbable = Grabbable::create( @@ -148,7 +152,7 @@ impl RootHandler for Single { if let Some(grabbable_move) = &mut self.grabbable_move { if !grabbable_move.is_finished() { - let scale = grabbable_move.move_by(info.delta); + let scale = grabbable_move.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform( @@ -172,7 +176,7 @@ impl RootHandler for Single { } if let Some(grabbable_shrink) = &mut self.grabbable_shrink { if !grabbable_shrink.is_finished() { - let scale = grabbable_shrink.move_by(info.delta); + let scale = grabbable_shrink.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform(&self.root, Transform::from_scale([scale; 3])) @@ -204,7 +208,7 @@ impl RootHandler for Single { } } else if let Some(grabbable_grow) = &mut self.grabbable_grow { if !grabbable_grow.is_finished() { - let scale = grabbable_grow.move_by(info.delta); + let scale = grabbable_grow.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform(&self.root, Transform::from_scale([scale; 3])) @@ -240,7 +244,7 @@ impl RootHandler for Single { } } - fn save_state(&mut self) -> ClientState { + fn save_state(&mut self) -> color_eyre::eyre::Result { ClientState::from_root(self.content_parent()) } } diff --git a/sirius/src/main.rs b/sirius/src/main.rs index e316cb0..88c3358 100644 --- a/sirius/src/main.rs +++ b/sirius/src/main.rs @@ -8,17 +8,15 @@ use protostar::{ }; use serde::{Deserialize, Serialize}; use stardust_xr_fusion::{ - client::{Client, ClientState, FrameInfo, RootHandler}, - core::{ - schemas::flex::flexbuffers, - values::{color::rgba_linear, ResourceID, Vector3}, - }, + client::Client, + core::values::{color::rgba_linear, ResourceID, Vector3}, drawable::{ MaterialParameter, Model, ModelPartAspect, Text, TextBounds, TextFit, TextStyle, XAlign, YAlign, }, - fields::BoxField, + fields::{Field, Shape}, node::{NodeError, NodeType}, + root::{ClientState, FrameInfo, RootAspect, RootHandler}, spatial::{Spatial, SpatialAspect, SpatialRefAspect, Transform}, }; use stardust_xr_molecules::{ @@ -53,9 +51,12 @@ async fn main() -> Result<()> { } let (client, event_loop) = Client::connect_with_async_loop().await?; - client.set_base_prefixes(&[directory_relative_path!("../res")]); + client.set_base_prefixes(&[directory_relative_path!("../res")])?; - let _wrapped_root = client.wrap_root(Sirius::new(&client, args)?)?; + let _wrapped_root = client + .get_root() + .alias() + .wrap(Sirius::new(&client, args)?)?; tokio::select! { _ = tokio::signal::ctrl_c() => (), @@ -64,7 +65,7 @@ async fn main() -> Result<()> { Ok(()) } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] struct State { visible: bool, } @@ -80,7 +81,8 @@ impl Sirius { fn new(client: &Client, args: Args) -> Result { let root = Spatial::create(client.get_root(), Transform::identity(), false).unwrap(); - let field = BoxField::create(&root, Transform::identity(), [0.1; 3]).unwrap(); + let field = + Field::create(&root, Transform::identity(), Shape::Box([0.1; 3].into())).unwrap(); let grabbable = Grabbable::create( &root, Transform::identity(), @@ -142,7 +144,7 @@ impl Sirius { impl RootHandler for Sirius { fn frame(&mut self, info: FrameInfo) { for app in &mut self.clients { - app.frame(info); + app.frame(&info); } self.grabbable.update(&info).unwrap(); @@ -179,7 +181,7 @@ impl RootHandler for Sirius { } } self.model - .model_part("?????") + .part("?????") .unwrap() .set_material_parameter( "color", @@ -187,7 +189,7 @@ impl RootHandler for Sirius { ) .unwrap(); self.model - .model_part("?????") + .part("?????") .unwrap() .set_material_parameter( "emission_factor", @@ -199,7 +201,7 @@ impl RootHandler for Sirius { if self.button.released() { println!("Touch ended"); self.model - .model_part("?????") + .part("?????") .unwrap() .set_material_parameter( "color", @@ -207,7 +209,7 @@ impl RootHandler for Sirius { ) .unwrap(); self.model - .model_part("?????") + .part("?????") .unwrap() .set_material_parameter( "emission_factor", @@ -217,17 +219,17 @@ impl RootHandler for Sirius { } } - fn save_state(&mut self) -> ClientState { - ClientState { - data: flexbuffers::to_vec(&self.state).unwrap(), - root: self.grabbable.content_parent().alias(), - spatial_anchors: [( + fn save_state(&mut self) -> Result { + ClientState::new( + Some(self.state.clone()), + self.grabbable.content_parent(), + [( "content_parent".to_string(), - self.grabbable.content_parent().alias(), + self.grabbable.content_parent(), )] .into_iter() .collect(), - } + ) } } @@ -244,11 +246,11 @@ fn model_from_icon(parent: &Spatial, icon: &Icon) -> Result { t, &ResourceID::new_namespaced("protostar", "hexagon/hexagon"), )?; - model.model_part("Hex")?.set_material_parameter( + model.part("Hex")?.set_material_parameter( "color", MaterialParameter::Color(rgba_linear!(0.0, 1.0, 1.0, 1.0)), )?; - model.model_part("Icon")?.set_material_parameter( + model.part("Icon")?.set_material_parameter( "diffuse", MaterialParameter::Texture(ResourceID::Direct(icon.path.clone())), )?; @@ -268,7 +270,7 @@ pub struct App { parent: Spatial, position: Vector3, grabbable: Grabbable, - _field: BoxField, + _field: Field, icon: Model, label: Option, grabbable_shrink: Option>, @@ -283,7 +285,11 @@ impl App { desktop_file: DesktopFile, ) -> Result { let position = position.into(); - let field = BoxField::create(parent, Transform::identity(), [APP_SIZE; 3])?; + let field = Field::create( + parent, + Transform::identity(), + Shape::Box([APP_SIZE; 3].into()), + )?; let application = Application::create(desktop_file)?; let icon = application.icon(128, false); let grabbable = Grabbable::create( @@ -367,12 +373,12 @@ impl App { self.currently_shown = !self.currently_shown; } - fn frame(&mut self, info: FrameInfo) { + fn frame(&mut self, info: &FrameInfo) { let _ = self.grabbable.update(&info); if let Some(grabbable_move) = &mut self.grabbable_move { if !grabbable_move.is_finished() { - let scale = grabbable_move.move_by(info.delta); + let scale = grabbable_move.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform( @@ -392,7 +398,7 @@ impl App { } if let Some(grabbable_shrink) = &mut self.grabbable_shrink { if !grabbable_shrink.is_finished() { - let scale = grabbable_shrink.move_by(info.delta); + let scale = grabbable_shrink.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform(&self.parent, Transform::from_scale([scale; 3])) @@ -427,7 +433,7 @@ impl App { } } else if let Some(grabbable_grow) = &mut self.grabbable_grow { if !grabbable_grow.is_finished() { - let scale = grabbable_grow.move_by(info.delta); + let scale = grabbable_grow.move_by(info.delta.into()); self.grabbable .content_parent() .set_relative_transform(&self.parent, Transform::from_scale([scale; 3]))