From 6a3ac37696fcaafd4d62514fd9446e07960265d0 Mon Sep 17 00:00:00 2001 From: Slendi Date: Fri, 3 Oct 2025 19:13:14 +0300 Subject: [PATCH] Fix hud Signed-off-by: Slendi --- src/LunarWM_wayland.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/LunarWM_wayland.c b/src/LunarWM_wayland.c index 5650647..717649a 100644 --- a/src/LunarWM_wayland.c +++ b/src/LunarWM_wayland.c @@ -1594,6 +1594,18 @@ static void handle_output_frame(struct wl_listener *listener, void *data) if (!wm->xr.available && !wm->renderer.first_frame) { wm->renderer.camera.target = SphericalToVector3(wm->wm.pointer); + + Vector3 forward = Vector3Normalize(Vector3Subtract( + wm->renderer.camera.target, wm->renderer.camera.position)); + Vector3 worldUp = (Vector3) { 0, 1, 0 }; + + if (fabsf(Vector3DotProduct(forward, worldUp)) > 0.999f) { + worldUp = (Vector3) { 0, 0, 1 }; + } + + Vector3 right = Vector3Normalize(Vector3CrossProduct(forward, worldUp)); + wm->renderer.camera.up + = Vector3Normalize(Vector3CrossProduct(right, forward)); } int const hud_size = wm->cman->cfg.displays.hud.size;