From e6353467c109873aa63fd2b2e51bed65fbc50621 Mon Sep 17 00:00:00 2001 From: Nova Date: Mon, 24 Feb 2025 15:21:03 -0800 Subject: [PATCH] refactor: upgrade stereokit-rust --- Cargo.lock | 61 ++++++++++++++++-------------- Cargo.toml | 2 +- src/core/error.rs | 2 +- src/main.rs | 2 +- src/nodes/drawable/model.rs | 24 +++++++----- src/objects/input/sk_controller.rs | 6 +-- src/objects/input/sk_hand.rs | 4 +- src/wayland/xdg_shell.rs | 6 +-- 8 files changed, 59 insertions(+), 48 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cdd8ca5..7d4e3cf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,7 +39,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" dependencies = [ "android-properties", - "bitflags 2.6.0", + "bitflags 2.8.0", "cc", "cesu8", "jni", @@ -466,9 +466,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" [[package]] name = "blocking" @@ -521,7 +521,7 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c58a38167d6fba8c67cce63c4a91f2a73ca42cbdaf6fb9ba164f1e07b43ecc10" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "log", "polling", "rustix", @@ -846,7 +846,7 @@ version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "bytemuck", "drm-ffi", "drm-fourcc", @@ -1147,9 +1147,9 @@ dependencies = [ [[package]] name = "glam" -version = "0.29.0" +version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a" +checksum = "17fcdf9683c406c2fc4d124afd29c0d595e22210d633cbdb8695ba9935ab1dc6" dependencies = [ "mint", "serde", @@ -1520,7 +1520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -1529,7 +1529,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "libc", ] @@ -1747,7 +1747,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "jni-sys", "log", "ndk-sys", @@ -1785,7 +1785,7 @@ version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "libc", "memoffset", @@ -1797,7 +1797,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -1809,7 +1809,7 @@ version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -1881,7 +1881,7 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 1.3.1", "proc-macro2", "quote", "syn 2.0.87", @@ -2331,7 +2331,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", ] [[package]] @@ -2416,7 +2416,7 @@ version = "0.38.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "errno", "libc", "linux-raw-sys 0.4.14", @@ -2593,7 +2593,7 @@ version = "0.4.0" source = "git+https://github.com/smithay/smithay.git#0c2230f858580b52d628087d6dae1795278b8756" dependencies = [ "appendlist", - "bitflags 2.6.0", + "bitflags 2.8.0", "calloop", "cgmath", "cursor-icon", @@ -2639,7 +2639,7 @@ checksum = "2f2b15926089e5526bb2dd738a2eb0e59034356e06eb71e1cd912358c0e62c4d" [[package]] name = "stardust-xr" version = "0.45.0" -source = "git+https://github.com/StardustXR/core.git?branch=dev#0e746ca4d0a04f668fc1958e38b9d799eb5e3370" +source = "git+https://github.com/StardustXR/core.git?branch=dev#504b05bfec397405fa86e0626d541f3909ab2e74" dependencies = [ "cluFlock", "color-eyre", @@ -2660,7 +2660,7 @@ dependencies = [ [[package]] name = "stardust-xr-schemas" version = "1.5.3" -source = "git+https://github.com/StardustXR/core.git?branch=dev#0e746ca4d0a04f668fc1958e38b9d799eb5e3370" +source = "git+https://github.com/StardustXR/core.git?branch=dev#504b05bfec397405fa86e0626d541f3909ab2e74" dependencies = [ "flatbuffers", "flexbuffers", @@ -2737,16 +2737,21 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" [[package]] name = "stereokit-macros" version = "0.1.0" -source = "git+https://github.com/mvvvv/StereoKit-rust.git#73ffaae6f42aa369e599a6ea0391f77840d682d8" +source = "git+https://github.com/mvvvv/StereoKit-rust.git#9db86737afc39ed0006cadf7842e6ff7533a9f39" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] [[package]] name = "stereokit-rust" version = "0.1.0" -source = "git+https://github.com/mvvvv/StereoKit-rust.git#73ffaae6f42aa369e599a6ea0391f77840d682d8" +source = "git+https://github.com/mvvvv/StereoKit-rust.git#9db86737afc39ed0006cadf7842e6ff7533a9f39" dependencies = [ "android-activity", "android_logger", - "bitflags 2.6.0", + "bitflags 2.8.0", "cmake", "glam", "jni", @@ -3290,7 +3295,7 @@ version = "0.32.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "wayland-backend", "wayland-scanner", "wayland-server", @@ -3302,7 +3307,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d40dd9d2f7f2713724d84b920d6f73ff878f6a353712942f75f78f4dadb72886" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "wayland-backend", "wayland-protocols", "wayland-scanner", @@ -3315,7 +3320,7 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "wayland-backend", "wayland-protocols", "wayland-scanner", @@ -3339,7 +3344,7 @@ version = "0.31.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c89532cc712a2adb119eb4d09694b402576052254d0bb284f82ac1c47fb786ad" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "downcast-rs", "io-lifetimes", "rustix", @@ -3380,7 +3385,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -3712,7 +3717,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d02316af6831aee03a1ecc7b887ec1e983f4cc43792b80faade552cd7e710c6" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.8.0", "indexmap 2.5.0", "lalrpop", "lalrpop-util", diff --git a/Cargo.toml b/Cargo.toml index de4bf71..170ec7c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -78,7 +78,7 @@ serde_repr = "0.1.19" toml = "0.8.19" # mathy stuffs -glam = { version = "0.29.0", features = ["mint", "serde"] } +glam = { version = "0.30.0", features = ["mint", "serde"] } mint = "0.5.9" tokio = { version = "1.39.2", features = ["rt-multi-thread", "signal", "time"] } prisma = "0.1.1" diff --git a/src/core/error.rs b/src/core/error.rs index 15b315f..4d8b7cf 100644 --- a/src/core/error.rs +++ b/src/core/error.rs @@ -17,7 +17,7 @@ pub type Result = std::result::Result; pub enum ServerError { #[error("Internal: Unable to get client")] NoClient, - #[error("Messenger does not exist for this node")] + #[error("Internal: Messenger does not exist for this node")] NoMessenger, #[error("Messenger error: {0}")] MessengerError(#[from] MessengerError), diff --git a/src/main.rs b/src/main.rs index 87281e0..89b5add 100644 --- a/src/main.rs +++ b/src/main.rs @@ -171,7 +171,7 @@ async fn main() { tokio::select! { _ = stereokit_loop => (), - _ = tokio::signal::ctrl_c() => unsafe {sk_quit(QuitReason::SystemClose)}, + _ = tokio::signal::ctrl_c() => unsafe {sk_quit(QuitReason::User)}, } info!("Stopping..."); if let Some(project_dirs) = project_dirs { diff --git a/src/nodes/drawable/model.rs b/src/nodes/drawable/model.rs index 3335abe..bd98d56 100644 --- a/src/nodes/drawable/model.rs +++ b/src/nodes/drawable/model.rs @@ -32,7 +32,11 @@ impl Hash for MaterialWrapper { self.0.get_shader().0.as_ptr().hash(state); for param in self.0.get_all_param_info() { param.name.hash(state); - param.to_string().hash(state); + (param.type_info as u32).hash(state); + self.0 + .get_all_param_info() + .get_data(¶m.name, param.type_info) + .hash(state); } self.0.get_chain().map(MaterialWrapper).hash(state) } @@ -45,15 +49,17 @@ impl PartialEq for MaterialWrapper { if self.0.get_all_param_info().count() != other.0.get_all_param_info().count() { return false; } - for self_param in self.0.get_all_param_info() { - let Some(other_param) = other + for param in self.0.get_all_param_info() { + let other_param = other .0 .get_all_param_info() - .get_data(self_param.get_name(), self_param.get_type()) - else { - return false; - }; - if self_param.to_string() != other_param.to_string() { + .get_data(¶m.name, param.type_info); + if other_param + != self + .0 + .get_all_param_info() + .get_data(¶m.name, param.type_info) + { return false; } } @@ -353,7 +359,7 @@ impl Model { MODEL_REGISTRY.add_raw(&model); // technically doing this in anything but the main thread isn't a good idea but dangit we need those model nodes ASAP - let sk_model = SKModel::copy(SKModel::from_file( + let sk_model = SKModel::copy(&SKModel::from_file( pending_model_path.to_str().unwrap(), None, )?); diff --git a/src/objects/input/sk_controller.rs b/src/objects/input/sk_controller.rs index 1d97066..6ef4f5f 100644 --- a/src/objects/input/sk_controller.rs +++ b/src/objects/input/sk_controller.rs @@ -52,7 +52,7 @@ impl SkController { _ => "right", }), ); - let model = Model::copy(Model::from_memory( + let model = Model::copy(&Model::from_memory( "cursor.glb", include_bytes!("cursor.glb"), None, @@ -88,9 +88,9 @@ impl SkController { ); self.material .color_tint(if self.capture_manager.capture.is_none() { - Color128::new_rgb(1.0, 1.0, 1.0) + Color128::new(1.0, 1.0, 1.0, 1.0) } else { - Color128::new_rgb(0.0, 1.0, 0.75) + Color128::new(0.0, 1.0, 0.75, 1.0) }); self.model.draw( token, diff --git a/src/objects/input/sk_hand.rs b/src/objects/input/sk_hand.rs index 9352465..a082541 100644 --- a/src/objects/input/sk_hand.rs +++ b/src/objects/input/sk_hand.rs @@ -123,9 +123,9 @@ impl SkHand { hand.elbow = None; let hand_color = if self.capture_manager.capture.is_none() { - Color128::new_rgb(1.0, 1.0, 1.0) + Color128::new(1.0, 1.0, 1.0, 1.0) } else { - Color128::new_rgb(0.0, 1.0, 0.75) + Color128::new(0.0, 1.0, 0.75, 1.0) }; material.color_tint(hand_color); } diff --git a/src/wayland/xdg_shell.rs b/src/wayland/xdg_shell.rs index e50561b..67e3b3d 100644 --- a/src/wayland/xdg_shell.rs +++ b/src/wayland/xdg_shell.rs @@ -5,7 +5,7 @@ use super::{ utils::*, }; use crate::{ - core::error::Result, + core::error::{Result, ServerError}, nodes::{ drawable::model::ModelPart, items::panel::{ @@ -406,7 +406,7 @@ impl XdgBackend { } } impl Backend for XdgBackend { - fn start_data(&self) -> Result { + fn start_data(&self) -> Result { let cursor = self .seat .cursor_info_rx @@ -426,7 +426,7 @@ impl Backend for XdgBackend { .lock() .as_ref() .and_then(|toplevel| toplevel.wl_surface().get_toplevel_info()) - .ok_or(eyre!("Internal: no toplevel or ToplevelInfo"))?; + .ok_or_else(|| ServerError::Report(eyre!("Internal: no toplevel or ToplevelInfo")))?; let children = self .children