From efe3042368cfeff6004ccc08f9df3b2b21087722 Mon Sep 17 00:00:00 2001 From: Germano Date: Wed, 16 May 2018 22:04:41 -0300 Subject: [PATCH] Transform: Use `isect_ray_seg_v3` instead `dist_squared_ray_to_seg_v3` in the function that tests the snap on edges. --- .../editors/transform/transform_snap_object.c | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index 5f6fafaeff3..84a4c7dbf14 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -916,11 +916,25 @@ static bool test_projected_edge_dist( const bool is_persp, const float va[3], const float vb[3], float *dist_px_sq, float r_co[3]) { - float near_co[3], dummy_depth; - dist_squared_ray_to_seg_v3( + float near_co[3], lambda; + if (!isect_ray_seg_v3( precalc->ray_origin, precalc->ray_direction, - va, vb, near_co, &dummy_depth); + va, vb, &lambda)) + { + copy_v3_v3(near_co, va); + } + else { + if (lambda <= 0.0f) { + copy_v3_v3(near_co, va); + } + else if (lambda >= 1.0f) { + copy_v3_v3(near_co, vb); + } + else { + interp_v3_v3v3(near_co, va, vb, lambda); + } + } return test_projected_vert_dist( precalc, clip_plane, clip_plane_len,