Browse Source

Do nothing when dragging CSGBox handle perpendicular to the camera

(cherry picked from commit 0f1e107ede5085aff017e8069697463598c5b512)
Haoyu Qiu 4 years ago
parent
commit
f4208ad1e8
1 changed files with 6 additions and 0 deletions
  1. 6 0
      modules/csg/csg_gizmos.cpp

+ 6 - 0
modules/csg/csg_gizmos.cpp

@@ -139,6 +139,12 @@ void CSGShapeSpatialGizmoPlugin::set_handle(EditorSpatialGizmo *p_gizmo, int p_i
 		Vector3 ra, rb;
 		Vector3 ra, rb;
 		Geometry::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
 		Geometry::get_closest_points_between_segments(Vector3(), axis * 4096, sg[0], sg[1], ra, rb);
 		float d = ra[p_idx];
 		float d = ra[p_idx];
+
+		if (Math::is_nan(d)) {
+			// The handle is perpendicular to the camera.
+			return;
+		}
+
 		if (SpatialEditor::get_singleton()->is_snap_enabled()) {
 		if (SpatialEditor::get_singleton()->is_snap_enabled()) {
 			d = Math::stepify(d, SpatialEditor::get_singleton()->get_translate_snap());
 			d = Math::stepify(d, SpatialEditor::get_singleton()->get_translate_snap());
 		}
 		}