From 6a24399a9ccec228e7e5cc1a68689b01a94f8d0a Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Mon, 29 Jun 2026 14:41:58 +0900 Subject: [PATCH] persist static overlays in world space --- wayvr/src/windowing/window.rs | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/wayvr/src/windowing/window.rs b/wayvr/src/windowing/window.rs index 9b48ac7f..4a016c1c 100644 --- a/wayvr/src/windowing/window.rs +++ b/wayvr/src/windowing/window.rs @@ -222,20 +222,20 @@ impl OverlayWindowConfig { .saved_transform .unwrap_or(self.default_state.transform); - let (parent_transform, align_to_hmd) = match state.positioning { - Positioning::Floating | Positioning::FollowHead { .. } => (app.input_state.hmd, false), - Positioning::FollowHand { - hand, align_to_hmd, .. - } => (app.input_state.pointers[hand as usize].pose, align_to_hmd), - Positioning::Anchored => (app.anchor, false), - Positioning::Static => { - if hard_reset { - (app.input_state.hmd, false) - } else { - return; - } + let (parent_transform, align_to_hmd) = match state.positioning { + Positioning::Floating | Positioning::FollowHead { .. } => (app.input_state.hmd, false), + Positioning::FollowHand { + hand, align_to_hmd, .. + } => (app.input_state.pointers[hand as usize].pose, align_to_hmd), + Positioning::Anchored => (app.anchor, false), + Positioning::Static => { + if hard_reset { + (app.input_state.hmd, false) + } else { + (Affine3A::IDENTITY, false) } - }; + } + }; if hard_reset { state.saved_transform = None; @@ -295,7 +295,7 @@ pub fn save_transform(state: &mut OverlayWindowState, app: &mut AppState) { Positioning::FollowHead { .. } => app.input_state.hmd, Positioning::FollowHand { hand, .. } => app.input_state.pointers[hand as usize].pose, Positioning::Anchored => snap_upright(app.anchor, Vec3A::Y), - Positioning::Static => return, + Positioning::Static => Affine3A::IDENTITY, }; state.saved_transform = Some(parent_transform.inverse() * state.transform);