From 796ee1a34e1f4b6e975ec01ce717e4424b1163bd Mon Sep 17 00:00:00 2001 From: Nova Date: Wed, 24 Jul 2024 10:21:54 -0400 Subject: [PATCH] feat(main): disable hands/controllers args --- src/main.rs | 14 +++++++++++++- src/objects/mod.rs | 23 ++++++++++++++++++----- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index dd43c896..52fe59fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -43,6 +43,13 @@ struct CliArgs { #[clap(short, long, action)] flatscreen: bool, + /// If monado insists on emulating them, set this flag...we want the raw input + #[clap(long)] + disable_controllers: bool, + /// If monado insists on emulating , set this flag...we want the raw input + #[clap(long)] + disable_hands: bool, + /// Run Stardust XR as an overlay with given priority #[clap(id = "PRIORITY", short = 'o', long = "overlay", action)] overlay_priority: Option, @@ -216,7 +223,12 @@ fn stereokit_loop( sk_ready_notifier.notify_waiters(); info!("Stardust ready!"); - let mut objects = ServerObjects::new(dbus_connection.clone(), &sk); + let mut objects = ServerObjects::new( + dbus_connection.clone(), + &sk, + args.disable_controllers, + args.disable_hands, + ); let mut last_frame_delta = Duration::ZERO; let mut sleep_duration = Duration::ZERO; diff --git a/src/objects/mod.rs b/src/objects/mod.rs index b4756c16..4e65854e 100644 --- a/src/objects/mod.rs +++ b/src/objects/mod.rs @@ -46,9 +46,16 @@ pub struct ServerObjects { hmd: (Arc, ObjectHandle), play_space: Option<(Arc, ObjectHandle)>, inputs: Inputs, + disable_controllers: bool, + disable_hands: bool, } impl ServerObjects { - pub fn new(connection: Connection, sk: &Sk) -> ServerObjects { + pub fn new( + connection: Connection, + sk: &Sk, + disable_controllers: bool, + disable_hands: bool, + ) -> ServerObjects { let hmd = SpatialRef::create(&connection, "/org/stardustxr/HMD"); let play_space = (World::has_bounds() @@ -100,6 +107,8 @@ impl ServerObjects { hmd, play_space, inputs, + disable_controllers, + disable_hands, } } @@ -149,10 +158,14 @@ impl ServerObjects { hand_right, eye_pointer, } => { - controller_left.update(token); - controller_right.update(token); - hand_left.update(sk, token); - hand_right.update(sk, token); + if !self.disable_controllers { + controller_left.update(token); + controller_right.update(token); + } + if !self.disable_hands { + hand_left.update(sk, token); + hand_right.update(sk, token); + } if let Some(eye_pointer) = eye_pointer { eye_pointer.update(); }