Function apply_facing_stable_grab

Source
pub fn apply_facing_stable_grab(
    layer: OpenXrQuadLayerOptions,
    grab: &mut OpenXrPanelGrabState,
    grab_world: Vec3,
    head_pos: Option<Vec3>,
    facing: OpenXrPanelFacingOptions,
) -> OpenXrPanelGrabUpdate
Expand 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);