From 9fe9832a8dce4c483397588a0b4053f60ecc06be Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Thu, 21 Mar 2024 21:47:08 +0100 Subject: [PATCH] openxr: separate release threshold for grab, click, altclick --- src/backend/openxr/input.rs | 24 +++++++++++++++++++++--- src/config.rs | 9 +++++++++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/backend/openxr/input.rs b/src/backend/openxr/input.rs index ccf6b8a..6bc0e35 100644 --- a/src/backend/openxr/input.rs +++ b/src/backend/openxr/input.rs @@ -131,19 +131,31 @@ impl OpenXrHand { pointer.pose = Affine3A::from_rotation_translation(quat, pos); } + let click_sensitivity = if pointer.before.click { + session.config.xr_click_sensitivity_release + } else { + session.config.xr_click_sensitivity + }; + pointer.now.click = self .source .action_click .state(&xr.session, xr::Path::NULL)? .current_state - > session.config.xr_click_sensitivity; + > click_sensitivity; + + let grab_sensitivity = if pointer.before.grab { + session.config.xr_grab_sensitivity_release + } else { + session.config.xr_grab_sensitivity + }; pointer.now.grab = self .source .action_grab .state(&xr.session, xr::Path::NULL)? .current_state - > session.config.xr_grab_sensitivity; + > grab_sensitivity; pointer.now.scroll = self .source @@ -151,12 +163,18 @@ impl OpenXrHand { .state(&xr.session, xr::Path::NULL)? .current_state; + let alt_click_sensitivity = if pointer.before.alt_click { + session.config.xr_alt_click_sensitivity_release + } else { + session.config.xr_alt_click_sensitivity + }; + pointer.now.alt_click = self .source .action_alt_click .state(&xr.session, xr::Path::NULL)? .current_state - > session.config.xr_alt_click_sensitivity; + > alt_click_sensitivity; pointer.now.show_hide = self .source diff --git a/src/config.rs b/src/config.rs index e25a274..2ae497a 100644 --- a/src/config.rs +++ b/src/config.rs @@ -126,6 +126,15 @@ pub struct GeneralConfig { #[serde(default = "def_point7")] pub xr_alt_click_sensitivity: f32, + + #[serde(default = "def_half")] + pub xr_grab_sensitivity_release: f32, + + #[serde(default = "def_half")] + pub xr_click_sensitivity_release: f32, + + #[serde(default = "def_half")] + pub xr_alt_click_sensitivity_release: f32, } impl GeneralConfig {