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:
parent
e2675e9462
commit
44c3908c7b
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue