Merge pull request #31048 from Calinou/fix-gizmo-size-low-viewport-height

Fix 3D manipulator the gizmo growing too large on small viewports
This commit is contained in:
Rémi Verschelde 2019-08-05 08:07:13 +02:00 committed by GitHub
commit 00efb61fbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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);