Avoid errors when the editor camera is inside the focused object

Prevent the gizmo distance from being zero by MAX-ing it with CMP_EPSILON

(cherry picked from commit ed2bbdbbef)
This commit is contained in:
Aaron Franke 2020-06-22 04:53:22 -04:00 committed by Rémi Verschelde
parent e2675e9462
commit 44c3908c7b

View file

@ -3196,7 +3196,7 @@ void SpatialEditorViewport::update_transform_gizmo_view() {
Vector3 camz = -camera_xform.get_basis().get_axis(2).normalized(); Vector3 camz = -camera_xform.get_basis().get_axis(2).normalized();
Vector3 camy = -camera_xform.get_basis().get_axis(1).normalized(); Vector3 camy = -camera_xform.get_basis().get_axis(1).normalized();
Plane p(camera_xform.origin, camz); Plane p(camera_xform.origin, camz);
float gizmo_d = Math::abs(p.distance_to(xform.origin)); float gizmo_d = MAX(Math::abs(p.distance_to(xform.origin)), CMP_EPSILON);
float d0 = camera->unproject_position(camera_xform.origin + camz * gizmo_d).y; float d0 = camera->unproject_position(camera_xform.origin + camz * gizmo_d).y;
float d1 = camera->unproject_position(camera_xform.origin + camz * gizmo_d + camy).y; float d1 = camera->unproject_position(camera_xform.origin + camz * gizmo_d + camy).y;
float dd = Math::abs(d0 - d1); float dd = Math::abs(d0 - d1);