refactor: upgrade stereokit-rust

This commit is contained in:
Nova
2025-02-24 15:21:03 -08:00
parent eeb5e0fb98
commit e6353467c1
8 changed files with 59 additions and 48 deletions

61
Cargo.lock generated
View File

@@ -39,7 +39,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046" checksum = "ef6978589202a00cd7e118380c448a08b6ed394c3a8df3a430d0898e3a42d046"
dependencies = [ dependencies = [
"android-properties", "android-properties",
"bitflags 2.6.0", "bitflags 2.8.0",
"cc", "cc",
"cesu8", "cesu8",
"jni", "jni",
@@ -466,9 +466,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]] [[package]]
name = "bitflags" name = "bitflags"
version = "2.6.0" version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
[[package]] [[package]]
name = "blocking" name = "blocking"
@@ -521,7 +521,7 @@ version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c58a38167d6fba8c67cce63c4a91f2a73ca42cbdaf6fb9ba164f1e07b43ecc10" checksum = "c58a38167d6fba8c67cce63c4a91f2a73ca42cbdaf6fb9ba164f1e07b43ecc10"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"log", "log",
"polling", "polling",
"rustix", "rustix",
@@ -846,7 +846,7 @@ version = "0.14.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f" checksum = "80bc8c5c6c2941f70a55c15f8d9f00f9710ebda3ffda98075f996a0e6c92756f"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"bytemuck", "bytemuck",
"drm-ffi", "drm-ffi",
"drm-fourcc", "drm-fourcc",
@@ -1147,9 +1147,9 @@ dependencies = [
[[package]] [[package]]
name = "glam" name = "glam"
version = "0.29.0" version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a" checksum = "17fcdf9683c406c2fc4d124afd29c0d595e22210d633cbdb8695ba9935ab1dc6"
dependencies = [ dependencies = [
"mint", "mint",
"serde", "serde",
@@ -1520,7 +1520,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4"
dependencies = [ dependencies = [
"cfg-if", "cfg-if",
"windows-targets 0.52.6", "windows-targets 0.48.5",
] ]
[[package]] [[package]]
@@ -1529,7 +1529,7 @@ version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"libc", "libc",
] ]
@@ -1747,7 +1747,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"jni-sys", "jni-sys",
"log", "log",
"ndk-sys", "ndk-sys",
@@ -1785,7 +1785,7 @@ version = "0.27.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"cfg-if", "cfg-if",
"libc", "libc",
"memoffset", "memoffset",
@@ -1797,7 +1797,7 @@ version = "0.28.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"cfg-if", "cfg-if",
"cfg_aliases 0.1.1", "cfg_aliases 0.1.1",
"libc", "libc",
@@ -1809,7 +1809,7 @@ version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"cfg-if", "cfg-if",
"cfg_aliases 0.2.1", "cfg_aliases 0.2.1",
"libc", "libc",
@@ -1881,7 +1881,7 @@ version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56"
dependencies = [ dependencies = [
"proc-macro-crate 3.2.0", "proc-macro-crate 1.3.1",
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.87", "syn 2.0.87",
@@ -2331,7 +2331,7 @@ version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
] ]
[[package]] [[package]]
@@ -2416,7 +2416,7 @@ version = "0.38.35"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f" checksum = "a85d50532239da68e9addb745ba38ff4612a242c1c7ceea689c4bc7c2f43c36f"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"errno", "errno",
"libc", "libc",
"linux-raw-sys 0.4.14", "linux-raw-sys 0.4.14",
@@ -2593,7 +2593,7 @@ version = "0.4.0"
source = "git+https://github.com/smithay/smithay.git#0c2230f858580b52d628087d6dae1795278b8756" source = "git+https://github.com/smithay/smithay.git#0c2230f858580b52d628087d6dae1795278b8756"
dependencies = [ dependencies = [
"appendlist", "appendlist",
"bitflags 2.6.0", "bitflags 2.8.0",
"calloop", "calloop",
"cgmath", "cgmath",
"cursor-icon", "cursor-icon",
@@ -2639,7 +2639,7 @@ checksum = "2f2b15926089e5526bb2dd738a2eb0e59034356e06eb71e1cd912358c0e62c4d"
[[package]] [[package]]
name = "stardust-xr" name = "stardust-xr"
version = "0.45.0" 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 = [ dependencies = [
"cluFlock", "cluFlock",
"color-eyre", "color-eyre",
@@ -2660,7 +2660,7 @@ dependencies = [
[[package]] [[package]]
name = "stardust-xr-schemas" name = "stardust-xr-schemas"
version = "1.5.3" 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 = [ dependencies = [
"flatbuffers", "flatbuffers",
"flexbuffers", "flexbuffers",
@@ -2737,16 +2737,21 @@ checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
[[package]] [[package]]
name = "stereokit-macros" name = "stereokit-macros"
version = "0.1.0" 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]] [[package]]
name = "stereokit-rust" name = "stereokit-rust"
version = "0.1.0" 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 = [ dependencies = [
"android-activity", "android-activity",
"android_logger", "android_logger",
"bitflags 2.6.0", "bitflags 2.8.0",
"cmake", "cmake",
"glam", "glam",
"jni", "jni",
@@ -3290,7 +3295,7 @@ version = "0.32.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e" checksum = "7cd0ade57c4e6e9a8952741325c30bf82f4246885dca8bf561898b86d0c1f58e"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"wayland-backend", "wayland-backend",
"wayland-scanner", "wayland-scanner",
"wayland-server", "wayland-server",
@@ -3302,7 +3307,7 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d40dd9d2f7f2713724d84b920d6f73ff878f6a353712942f75f78f4dadb72886" checksum = "d40dd9d2f7f2713724d84b920d6f73ff878f6a353712942f75f78f4dadb72886"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"wayland-backend", "wayland-backend",
"wayland-protocols", "wayland-protocols",
"wayland-scanner", "wayland-scanner",
@@ -3315,7 +3320,7 @@ version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109" checksum = "dad87b5fd1b1d3ca2f792df8f686a2a11e3fe1077b71096f7a175ab699f89109"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"wayland-backend", "wayland-backend",
"wayland-protocols", "wayland-protocols",
"wayland-scanner", "wayland-scanner",
@@ -3339,7 +3344,7 @@ version = "0.31.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c89532cc712a2adb119eb4d09694b402576052254d0bb284f82ac1c47fb786ad" checksum = "c89532cc712a2adb119eb4d09694b402576052254d0bb284f82ac1c47fb786ad"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"downcast-rs", "downcast-rs",
"io-lifetimes", "io-lifetimes",
"rustix", "rustix",
@@ -3380,7 +3385,7 @@ version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.48.0",
] ]
[[package]] [[package]]
@@ -3712,7 +3717,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d02316af6831aee03a1ecc7b887ec1e983f4cc43792b80faade552cd7e710c6" checksum = "1d02316af6831aee03a1ecc7b887ec1e983f4cc43792b80faade552cd7e710c6"
dependencies = [ dependencies = [
"bitflags 2.6.0", "bitflags 2.8.0",
"indexmap 2.5.0", "indexmap 2.5.0",
"lalrpop", "lalrpop",
"lalrpop-util", "lalrpop-util",

View File

@@ -78,7 +78,7 @@ serde_repr = "0.1.19"
toml = "0.8.19" toml = "0.8.19"
# mathy stuffs # mathy stuffs
glam = { version = "0.29.0", features = ["mint", "serde"] } glam = { version = "0.30.0", features = ["mint", "serde"] }
mint = "0.5.9" mint = "0.5.9"
tokio = { version = "1.39.2", features = ["rt-multi-thread", "signal", "time"] } tokio = { version = "1.39.2", features = ["rt-multi-thread", "signal", "time"] }
prisma = "0.1.1" prisma = "0.1.1"

View File

@@ -17,7 +17,7 @@ pub type Result<T, E = ServerError> = std::result::Result<T, E>;
pub enum ServerError { pub enum ServerError {
#[error("Internal: Unable to get client")] #[error("Internal: Unable to get client")]
NoClient, NoClient,
#[error("Messenger does not exist for this node")] #[error("Internal: Messenger does not exist for this node")]
NoMessenger, NoMessenger,
#[error("Messenger error: {0}")] #[error("Messenger error: {0}")]
MessengerError(#[from] MessengerError), MessengerError(#[from] MessengerError),

View File

@@ -171,7 +171,7 @@ async fn main() {
tokio::select! { tokio::select! {
_ = stereokit_loop => (), _ = stereokit_loop => (),
_ = tokio::signal::ctrl_c() => unsafe {sk_quit(QuitReason::SystemClose)}, _ = tokio::signal::ctrl_c() => unsafe {sk_quit(QuitReason::User)},
} }
info!("Stopping..."); info!("Stopping...");
if let Some(project_dirs) = project_dirs { if let Some(project_dirs) = project_dirs {

View File

@@ -32,7 +32,11 @@ impl Hash for MaterialWrapper {
self.0.get_shader().0.as_ptr().hash(state); self.0.get_shader().0.as_ptr().hash(state);
for param in self.0.get_all_param_info() { for param in self.0.get_all_param_info() {
param.name.hash(state); param.name.hash(state);
param.to_string().hash(state); (param.type_info as u32).hash(state);
self.0
.get_all_param_info()
.get_data(&param.name, param.type_info)
.hash(state);
} }
self.0.get_chain().map(MaterialWrapper).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() { if self.0.get_all_param_info().count() != other.0.get_all_param_info().count() {
return false; return false;
} }
for self_param in self.0.get_all_param_info() { for param in self.0.get_all_param_info() {
let Some(other_param) = other let other_param = other
.0 .0
.get_all_param_info() .get_all_param_info()
.get_data(self_param.get_name(), self_param.get_type()) .get_data(&param.name, param.type_info);
else { if other_param
return false; != self
}; .0
if self_param.to_string() != other_param.to_string() { .get_all_param_info()
.get_data(&param.name, param.type_info)
{
return false; return false;
} }
} }
@@ -353,7 +359,7 @@ impl Model {
MODEL_REGISTRY.add_raw(&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 // 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(), pending_model_path.to_str().unwrap(),
None, None,
)?); )?);

View File

@@ -52,7 +52,7 @@ impl SkController {
_ => "right", _ => "right",
}), }),
); );
let model = Model::copy(Model::from_memory( let model = Model::copy(&Model::from_memory(
"cursor.glb", "cursor.glb",
include_bytes!("cursor.glb"), include_bytes!("cursor.glb"),
None, None,
@@ -88,9 +88,9 @@ impl SkController {
); );
self.material self.material
.color_tint(if self.capture_manager.capture.is_none() { .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 { } else {
Color128::new_rgb(0.0, 1.0, 0.75) Color128::new(0.0, 1.0, 0.75, 1.0)
}); });
self.model.draw( self.model.draw(
token, token,

View File

@@ -123,9 +123,9 @@ impl SkHand {
hand.elbow = None; hand.elbow = None;
let hand_color = if self.capture_manager.capture.is_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 { } 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); material.color_tint(hand_color);
} }

View File

@@ -5,7 +5,7 @@ use super::{
utils::*, utils::*,
}; };
use crate::{ use crate::{
core::error::Result, core::error::{Result, ServerError},
nodes::{ nodes::{
drawable::model::ModelPart, drawable::model::ModelPart,
items::panel::{ items::panel::{
@@ -406,7 +406,7 @@ impl XdgBackend {
} }
} }
impl Backend for XdgBackend { impl Backend for XdgBackend {
fn start_data(&self) -> Result<PanelItemInitData> { fn start_data(&self) -> Result<PanelItemInitData, ServerError> {
let cursor = self let cursor = self
.seat .seat
.cursor_info_rx .cursor_info_rx
@@ -426,7 +426,7 @@ impl Backend for XdgBackend {
.lock() .lock()
.as_ref() .as_ref()
.and_then(|toplevel| toplevel.wl_surface().get_toplevel_info()) .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 let children = self
.children .children