From e39085aa2b16b2e235016d9bb19e03075cfd06d7 Mon Sep 17 00:00:00 2001 From: Sapphire Date: Sat, 16 May 2026 16:18:22 -0500 Subject: [PATCH] openvr: Hide lasers and unblock input when dashboard is open --- wayvr/src/backend/input.rs | 6 ++++++ wayvr/src/backend/openvr/input.rs | 4 +++- wayvr/src/backend/openvr/mod.rs | 8 +++++++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/wayvr/src/backend/input.rs b/wayvr/src/backend/input.rs index 2e2e5385..cec98ab4 100644 --- a/wayvr/src/backend/input.rs +++ b/wayvr/src/backend/input.rs @@ -414,6 +414,8 @@ where let pending_haptics = pointer.pending_haptics.take(); if !pointer.tracked { + pointer.interaction.should_block_input = false; + pointer.interaction.should_block_poses = false; return (None, pending_haptics); // no hit } @@ -644,6 +646,10 @@ where O: Default, { let pointer = &mut app.input_state.pointers[pointer_idx]; + if !pointer.tracked { + return (None, None); + } + let ray_origin = pointer.pose; let mode = pointer.interaction.mode; let edit_mode = overlays.get_edit_mode(); diff --git a/wayvr/src/backend/openvr/input.rs b/wayvr/src/backend/openvr/input.rs index e587da41..d10f6c91 100644 --- a/wayvr/src/backend/openvr/input.rs +++ b/wayvr/src/backend/openvr/input.rs @@ -4,6 +4,7 @@ use anyhow::bail; use ovr_overlay::{ TrackedDeviceIndex, input::{ActionHandle, ActionSetHandle, ActiveActionSet, InputManager, InputValueHandle}, + overlay::OverlayManager, sys::{ ETrackedControllerRole, ETrackedDeviceClass, ETrackedDeviceProperty, ETrackingUniverseOrigin, @@ -144,6 +145,7 @@ impl OpenVrInputSource { &mut self, universe: ETrackingUniverseOrigin, input: &mut InputManager, + overlay: &mut OverlayManager, system: &mut SystemManager, app: &mut AppState, ) { @@ -189,7 +191,7 @@ impl OpenVrInputSource { let hand = &mut self.hands[i]; let app_hand = &mut app.input_state.pointers[i]; - if let Some(device) = hand.device { + if let Some(device) = hand.device.filter(|_| !overlay.is_dashboard_visible()) { app_hand.raw_pose = devices[device.0 as usize] .mDeviceToAbsoluteTracking .to_affine(); diff --git a/wayvr/src/backend/openvr/mod.rs b/wayvr/src/backend/openvr/mod.rs index b2773d97..d1e3870d 100644 --- a/wayvr/src/backend/openvr/mod.rs +++ b/wayvr/src/backend/openvr/mod.rs @@ -244,7 +244,13 @@ pub fn openvr_run( let universe = playspace.get_universe(); app.input_state.pre_update(); - input_source.update(universe.clone(), &mut input_mgr, &mut system_mgr, &mut app); + input_source.update( + universe.clone(), + &mut input_mgr, + &mut overlay_mgr, + &mut system_mgr, + &mut app, + ); app.input_state.post_update(&app.session); if app