openxr: separate release threshold for grab, click, altclick

This commit is contained in:
galister
2024-03-21 21:47:08 +01:00
parent 0b813aeb10
commit 9fe9832a8d
2 changed files with 30 additions and 3 deletions

View File

@@ -131,19 +131,31 @@ impl OpenXrHand {
pointer.pose = Affine3A::from_rotation_translation(quat, pos); 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 pointer.now.click = self
.source .source
.action_click .action_click
.state(&xr.session, xr::Path::NULL)? .state(&xr.session, xr::Path::NULL)?
.current_state .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 pointer.now.grab = self
.source .source
.action_grab .action_grab
.state(&xr.session, xr::Path::NULL)? .state(&xr.session, xr::Path::NULL)?
.current_state .current_state
> session.config.xr_grab_sensitivity; > grab_sensitivity;
pointer.now.scroll = self pointer.now.scroll = self
.source .source
@@ -151,12 +163,18 @@ impl OpenXrHand {
.state(&xr.session, xr::Path::NULL)? .state(&xr.session, xr::Path::NULL)?
.current_state; .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 pointer.now.alt_click = self
.source .source
.action_alt_click .action_alt_click
.state(&xr.session, xr::Path::NULL)? .state(&xr.session, xr::Path::NULL)?
.current_state .current_state
> session.config.xr_alt_click_sensitivity; > alt_click_sensitivity;
pointer.now.show_hide = self pointer.now.show_hide = self
.source .source

View File

@@ -126,6 +126,15 @@ pub struct GeneralConfig {
#[serde(default = "def_point7")] #[serde(default = "def_point7")]
pub xr_alt_click_sensitivity: f32, 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 { impl GeneralConfig {