From 7e4d635c2ff0b2b197bbe15274d14dacd92425d2 Mon Sep 17 00:00:00 2001 From: aaronp64 Date: Tue, 21 Jan 2025 12:19:53 -0500 Subject: [PATCH] Fix Camera3D gizmo representation to accurately reflect FOV Updated gizmo drawing to keep depth proportional to width or height based on whether FOV is horizontal or vertical. --- editor/plugins/gizmos/camera_3d_gizmo_plugin.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/editor/plugins/gizmos/camera_3d_gizmo_plugin.cpp b/editor/plugins/gizmos/camera_3d_gizmo_plugin.cpp index 257db67410b..c85f8221aaa 100644 --- a/editor/plugins/gizmos/camera_3d_gizmo_plugin.cpp +++ b/editor/plugins/gizmos/camera_3d_gizmo_plugin.cpp @@ -180,7 +180,13 @@ void Camera3DGizmoPlugin::redraw(EditorNode3DGizmo *p_gizmo) { const float hsize = Math::sin(Math::deg_to_rad(fov)); const float depth = -Math::cos(Math::deg_to_rad(fov)); - Vector3 side = Vector3(hsize * size_factor.x, 0, depth); + + Vector3 side; + if (camera->get_keep_aspect_mode() == Camera3D::KEEP_WIDTH) { + side = Vector3(hsize * size_factor.x, 0, depth * size_factor.x); + } else { + side = Vector3(hsize * size_factor.x, 0, depth * size_factor.y); + } Vector3 nside = Vector3(-side.x, side.y, side.z); Vector3 up = Vector3(0, hsize * size_factor.y, 0);