diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2019-08-05 08:07:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-05 08:07:13 +0200 |
commit | 00efb61fbd122ab885117f9c714877a5dba1b6ea (patch) | |
tree | f6794b4801b2b81c716d51bd9542e9ca12b855bf | |
parent | be3b2f3ff9693171bae8bd4f689bb1b18cdaab43 (diff) | |
parent | 20154d3b2a7c6442f1d882cd070fcdbedd060cde (diff) |
Merge pull request #31048 from Calinou/fix-gizmo-size-low-viewport-height
Fix 3D manipulator the gizmo growing too large on small viewports
-rw-r--r-- | editor/plugins/spatial_editor_plugin.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/editor/plugins/spatial_editor_plugin.cpp b/editor/plugins/spatial_editor_plugin.cpp index 6af6d48618..d2b1cfc5af 100644 --- a/editor/plugins/spatial_editor_plugin.cpp +++ b/editor/plugins/spatial_editor_plugin.cpp @@ -2922,8 +2922,14 @@ void SpatialEditorViewport::update_transform_gizmo_view() { if (dd == 0) dd = 0.0001; - float gsize = EditorSettings::get_singleton()->get("editors/3d/manipulator_gizmo_size"); - gizmo_scale = (gsize / Math::abs(dd)) * MAX(1, EDSCALE) / viewport_container->get_stretch_shrink(); + float gizmo_size = EditorSettings::get_singleton()->get("editors/3d/manipulator_gizmo_size"); + // At low viewport heights, multiply the gizmo scale based on the viewport height. + // This prevents the gizmo from growing very large and going outside the viewport. + const int viewport_base_height = 400 * MAX(1, EDSCALE); + gizmo_scale = + (gizmo_size / Math::abs(dd)) * MAX(1, EDSCALE) * + MIN(viewport_base_height, viewport_container->get_size().height) / viewport_base_height / + viewport_container->get_stretch_shrink(); Vector3 scale = Vector3(1, 1, 1) * gizmo_scale; xform.basis.scale(scale); |