diff options
author | Germano <germano.costa@ig.com.br> | 2018-05-17 04:04:41 +0300 |
---|---|---|
committer | Germano <germano.costa@ig.com.br> | 2018-05-17 04:04:41 +0300 |
commit | efe3042368cfeff6004ccc08f9df3b2b21087722 (patch) | |
tree | ba6c7c1af72b37a8cdc87f4e72a7a37e37615370 | |
parent | 4b18858660f4e7068e8345315fa04b3215c85548 (diff) |
Transform: Use `isect_ray_seg_v3` instead `dist_squared_ray_to_seg_v3` in the function that tests the snap on edges.
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 20 |
1 files 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, |