pub fn apply_facing_stable_grab(
layer: OpenXrQuadLayerOptions,
grab: &mut OpenXrPanelGrabState,
grab_world: Vec3,
head_pos: Option<Vec3>,
facing: OpenXrPanelFacingOptions,
) -> OpenXrPanelGrabUpdateExpand description
Applies the selected facing policy while preserving the grabbed world point.
Fixed mode preserves orientation; yaw-only modes ignore vertical separation; yaw-pitch mode normalizes and applies configured pitch bounds. Missing HMD position leaves the layer unchanged. Stability tolerance is one millimetre.
ยงExamples
use ailloli_ui_openxr::{OpenXrPanelFacingMode, OpenXrPanelFacingOptions, OpenXrQuadLayerOptions};
use ailloli_ui_openxr::math::Vec3;
use ailloli_ui_openxr::openxr_runtime::{OpenXrPanelGrabState, panel::apply_facing_stable_grab};
let layer = OpenXrQuadLayerOptions::default();
let mut grab = OpenXrPanelGrabState::new(Vec3::default(), layer.pose.orientation);
let update = apply_facing_stable_grab(layer, &mut grab, Vec3::new(0.0, 0.0, -2.0), Some(Vec3::default()), OpenXrPanelFacingOptions::new(OpenXrPanelFacingMode::Fixed, -1.0, 1.0));
assert!(update.hmd_pose_seen && update.grab_point_stable);