diff --git a/Cargo.lock b/Cargo.lock index 6042d41..f57f23e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,9 +61,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.3.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e579a7752471abc2a8268df8b20005e3eadd975f585398f17efcfd8d4927371" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" dependencies = [ "anstyle", "anstyle-parse", @@ -100,9 +100,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcd8291a340dd8ac70e18878bc4501dd7b4ff970cfa21c207d36ece51ea88fd" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -110,9 +110,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" +checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8" [[package]] name = "appendlist" @@ -179,9 +179,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "axum" -version = "0.6.16" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "113713495a32dd0ab52baf5c10044725aa3aec00b31beda84218e469029b72a3" +checksum = "f8175979259124331c1d7bf6586ee7e0da434155e4b2d48ec2c8386281d8df39" dependencies = [ "async-trait", "axum-core", @@ -232,7 +232,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.6.2", "object", "rustc-demangle", ] @@ -361,9 +361,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.2.4" +version = "4.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "956ac1f6381d8d82ab4684768f89c0ea3afe66925ceadb4eeb3fc452ffc55d62" +checksum = "8a1f23fa97e1d1641371b51f35535cb26959b8e27ab50d167a8b996b5bada819" dependencies = [ "clap_builder", "clap_derive", @@ -372,9 +372,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.2.4" +version = "4.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84080e799e54cff944f4b4a4b0e71630b0e0443b25b985175c7dddc1a859b749" +checksum = "0fdc5d93c358224b4d6867ef1356d740de2303e9892edc06c5340daeccd96bab" dependencies = [ "anstream", "anstyle", @@ -601,31 +601,32 @@ dependencies = [ [[package]] name = "directories" -version = "5.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74be3be809c18e089de43bdc504652bb2bc473fca8756131f8689db8cf079ba9" +checksum = "9a49173b84e034382284f27f1af4dcbbd231ffa358c0fe316541a7337f376a35" dependencies = [ "dirs-sys", ] [[package]] name = "dirs" -version = "5.0.0" +version = "5.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dece029acd3353e3a58ac2e3eb3c8d6c35827a892edc6cc4138ef9c33df46ecd" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" dependencies = [ "dirs-sys", ] [[package]] name = "dirs-sys" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04414300db88f70d74c5ff54e50f9e1d1737d9a5b90f53fcf2e95ca2a9ab554b" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" dependencies = [ "libc", + "option-ext", "redox_users", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -707,12 +708,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.25" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8a2db397cb1c8772f31494cb8917e48cd1e64f0fa7efac59fbd741a0a8ce841" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.7.1", ] [[package]] @@ -823,15 +824,6 @@ dependencies = [ "xml-rs", ] -[[package]] -name = "glam" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12f597d56c1bd55a811a1be189459e8fad2bbc272616375602443bdfb37fa774" -dependencies = [ - "mint", -] - [[package]] name = "glam" version = "0.23.0" @@ -842,6 +834,15 @@ dependencies = [ "serde", ] +[[package]] +name = "glam" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad83ab008a4fa3b31dfa713dd41b5a9bdea1e94e4cf1e2fc274ffbd49b0271d3" +dependencies = [ + "mint", +] + [[package]] name = "glob" version = "0.3.1" @@ -1140,9 +1141,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eb31c1778188ae1e64398743890d0877fef36d11521ac60406b42016e8c2cf" +checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c" [[package]] name = "lock_api" @@ -1232,6 +1233,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + [[package]] name = "mint" version = "0.5.9" @@ -1401,6 +1411,12 @@ version = "1.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + [[package]] name = "ouroboros" version = "0.15.6" @@ -1762,9 +1778,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.37.14" +version = "0.37.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b864d3c18a5785a05953adeed93e2dca37ed30f18e69bba9f30079d51f363f" +checksum = "8bbfc1d1c7c40c01715f47d71444744a81669ca84e8b63e25a55e169b1f86433" dependencies = [ "bitflags", "errno", @@ -1915,7 +1931,7 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay" version = "0.3.0" -source = "git+https://github.com/smithay/smithay.git#dd36639310f8529f366f5750cf10a86b8bf12eea" +source = "git+https://github.com/smithay/smithay.git#3c56deb146b799612a41b71d2475cc4bada7f022" dependencies = [ "appendlist", "bitflags", @@ -1954,9 +1970,9 @@ dependencies = [ [[package]] name = "stardust-xr" -version = "0.11.3" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ce36e7f3285a6b1391a298c01bbbb92c9f3d77967a78d1beaac21c0043d23b" +checksum = "0efaf53544cca5e641ba51928f492a8639cf62399207f8d5c1e3f917e4fc4aa1" dependencies = [ "chrono", "cluFlock", @@ -1974,13 +1990,13 @@ dependencies = [ [[package]] name = "stardust-xr-schemas" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bebfbddbcba7db7ce8180bb373c9ad5a7d58ff60ee213ca07562820d7e8aab0" +checksum = "980c91ff833850cca57108b9ff33aa67bb9552e7caa288d8456808e0a5fbd705" dependencies = [ "flatbuffers", "flexbuffers", - "glam 0.22.0", + "glam 0.24.0", "mint", "ouroboros", "serde", @@ -2152,9 +2168,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.27.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0de47a4eecbe11f498978a9b29d792f0d2692d1dd003650c24c76510e3bc001" +checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" dependencies = [ "autocfg", "bytes", @@ -2167,7 +2183,7 @@ dependencies = [ "socket2", "tokio-macros", "tracing", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -2182,9 +2198,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a573bdc87985e9d6ddeed1b3d864e8a302c847e40d647746df2f1de209d1ce" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" dependencies = [ "proc-macro2", "quote", @@ -2193,9 +2209,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.12" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb52b74f05dbf495a8fba459fdc331812b96aa086d9eb78101fa0d4569c3313" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -2204,9 +2220,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5427d89453009325de0d8f342c9490009f76e999cb7672d77e46267448f7e6b2" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" dependencies = [ "bytes", "futures-core", @@ -2311,13 +2327,13 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.15", ] [[package]] @@ -2772,9 +2788,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" [[package]] name = "winnow" -version = "0.4.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8970b36c66498d8ff1d66685dc86b91b29db0c7739899012f63a63814b4b28" +checksum = "69af645a61644c6dd379ade8b77cc87efb5393c988707bad12d3c8e00c50f669" dependencies = [ "memchr", ] diff --git a/Cargo.toml b/Cargo.toml index e0544d8..a415c5e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,7 @@ tokio = { version = "1.27.0", features = ["rt-multi-thread", "signal"] } send_wrapper = "0.6.0" prisma = "0.1.1" xkbcommon = { version = "0.5.0", default-features = false, optional = true } -stardust-xr = "0.11.3" +stardust-xr = "0.11.4" directories = "5.0.0" serde = { version = "1.0.160", features = ["derive"] } tracing = "0.1.37" @@ -70,4 +70,6 @@ lto = true # [patch.crates-io.stereokit-sys] # path = "../stereokit-sys" # [patch.crates-io.stardust-xr] -# path = "../core/core" \ No newline at end of file +# path = "../core/core" +# [patch.crates-io.stardust-xr-schemas] +# path = "../core/schemas" \ No newline at end of file diff --git a/src/core/eventloop.rs b/src/core/eventloop.rs index 6a08ada..4c6618b 100644 --- a/src/core/eventloop.rs +++ b/src/core/eventloop.rs @@ -2,14 +2,11 @@ use super::client::Client; use super::task; use color_eyre::eyre::Result; use std::path::PathBuf; -use std::sync::atomic::AtomicU64; use std::sync::Arc; use tokio::net::UnixListener; use tokio::task::JoinHandle; use tracing::error; -pub static FRAME: AtomicU64 = AtomicU64::new(0); - pub struct EventLoop { join_handle: JoinHandle<()>, } diff --git a/src/nodes/input/mod.rs b/src/nodes/input/mod.rs index 25ce373..e716888 100644 --- a/src/nodes/input/mod.rs +++ b/src/nodes/input/mod.rs @@ -13,7 +13,6 @@ use super::{ Node, }; use crate::core::client::Client; -use crate::core::eventloop::FRAME; use crate::core::{node_collections::LifeLinkedNodeList, registry::Registry}; use color_eyre::eyre::{ensure, Result}; use glam::Mat4; @@ -151,11 +150,11 @@ impl DistanceLink { }) } - fn send_input(&self, frame: u64, datamap: Datamap) { - self.handler.send_input(frame, self, datamap); + fn send_input(&self, order: u32, datamap: Datamap) { + self.handler.send_input(order, self, datamap); } #[instrument(level = "debug", skip(self))] - fn serialize(&self, datamap: Datamap) -> Vec { + fn serialize(&self, order: u32, datamap: Datamap) -> Vec { let input = self.method.specialization.lock().serialize( self, Spatial::space_to_space_matrix(Some(&self.method.spatial), Some(&self.handler.spatial)), @@ -166,6 +165,7 @@ impl DistanceLink { input, distance: self.method.true_distance(&self.handler.field), datamap, + order, }; root.serialize() } @@ -198,9 +198,9 @@ impl InputHandler { } #[instrument(level = "debug", skip(self, distance_link))] - fn send_input(&self, frame: u64, distance_link: &DistanceLink, datamap: Datamap) { + fn send_input(&self, order: u32, distance_link: &DistanceLink, datamap: Datamap) { let Some(node) = self.node.upgrade() else {return}; - let _ = node.send_remote_signal("input", &distance_link.serialize(datamap)); + let _ = node.send_remote_signal("input", &distance_link.serialize(order, datamap)); } } impl PartialEq for InputHandler { @@ -277,13 +277,10 @@ pub fn process_input() { }); }); - // Get the current frame - let frame = FRAME.load(Ordering::Relaxed); - let captures = method.captures.take_valid_contents(); // Iterate over the distance links and send input to them - for distance_link in distance_links { - distance_link.send_input(frame, method.datamap.lock().clone().unwrap()); + for (i, distance_link) in distance_links.iter().enumerate() { + distance_link.send_input(i as u32, method.datamap.lock().clone().unwrap()); // If the current distance link is in the list of captured input handlers, // break out of the loop to avoid sending input to the remaining distance links