From bf248e192fdb9b833c463ca4c21c11c4913d867d Mon Sep 17 00:00:00 2001 From: Nova Date: Sun, 24 Sep 2023 11:44:16 -0400 Subject: [PATCH] fix(objects/input): disable_controller still lets hands exist --- src/main.rs | 4 ++-- src/objects/input/sk_hand.rs | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index febeb96..8eb6fcb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -251,8 +251,8 @@ fn main() { mouse_pointer.update(sk); } if let Some((left_hand, right_hand)) = &mut hands { - left_hand.update(sk); - right_hand.update(sk); + left_hand.update(!cli_args.disable_controller, sk); + right_hand.update(!cli_args.disable_controller, sk); } if let Some((left_controller, right_controller)) = &mut controllers { left_controller.update(sk); diff --git a/src/objects/input/sk_hand.rs b/src/objects/input/sk_hand.rs index 1404877..fd61136 100644 --- a/src/objects/input/sk_hand.rs +++ b/src/objects/input/sk_hand.rs @@ -54,12 +54,16 @@ impl SkHand { }) } #[instrument(level = "debug", name = "Update Hand Input Method", skip_all)] - pub fn update(&mut self, sk: &impl StereoKitMultiThread) { + pub fn update(&mut self, controller_enabled: bool, sk: &impl StereoKitMultiThread) { let sk_hand = sk.input_hand(self.handed); if let InputType::Hand(hand) = &mut *self.input.specialization.lock() { - let controller = sk.input_controller(self.handed); - *self.input.enabled.lock() = !controller.tracked.contains(ButtonState::ACTIVE) - && sk_hand.tracked_state.contains(ButtonState::ACTIVE); + let controller_active = controller_enabled + && sk + .input_controller(self.handed) + .tracked + .contains(ButtonState::ACTIVE); + *self.input.enabled.lock() = + !controller_active && sk_hand.tracked_state.contains(ButtonState::ACTIVE); sk.input_hand_visible(self.handed, *self.input.enabled.lock()); if *self.input.enabled.lock() { hand.base.thumb.tip = convert_joint(sk_hand.fingers[0][4]);