From 0d41bf1a3e271fd78605710c652ef81a3cde4a61 Mon Sep 17 00:00:00 2001 From: galister <22305755+galister@users.noreply.github.com> Date: Tue, 19 Mar 2024 18:16:23 +0100 Subject: [PATCH] openvr: correct size for portrait overlays --- src/backend/openvr/lines.rs | 1 + src/backend/openvr/overlay.rs | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/src/backend/openvr/lines.rs b/src/backend/openvr/lines.rs index 730bcad6..547cb9fc 100644 --- a/src/backend/openvr/lines.rs +++ b/src/backend/openvr/lines.rs @@ -75,6 +75,7 @@ impl LinePool { }), data: OpenVrOverlayData { width: 0.002, + override_width: true, ..Default::default() }, ..Default::default() diff --git a/src/backend/openvr/overlay.rs b/src/backend/openvr/overlay.rs index 3ccfcf12..dcbb5f57 100644 --- a/src/backend/openvr/overlay.rs +++ b/src/backend/openvr/overlay.rs @@ -24,6 +24,7 @@ pub(super) struct OpenVrOverlayData { pub(super) curvature: f32, pub(super) sort_order: u32, pub(crate) width: f32, + pub(super) override_width: bool, pub(super) relative_to: RelativeTo, } @@ -233,6 +234,15 @@ impl OverlayData { } let dimensions = image.extent(); + if !self.data.override_width { + let new_width = ((dimensions[0] as f32) / (dimensions[1] as f32)).min(1.0); + if (new_width - self.data.width).abs() > f32::EPSILON { + log::info!("{}: New width {}", self.state.name, new_width); + self.data.width = new_width; + self.upload_width(overlay); + } + } + let format = image.format(); let mut texture = VRVulkanTextureData_t {