diff options
author | mano-wii <germano.costa@ig.com.br> | 2019-09-04 08:16:50 +0300 |
---|---|---|
committer | mano-wii <germano.costa@ig.com.br> | 2019-09-04 08:16:50 +0300 |
commit | 966c00060f8e2239e9149b0300a34a57080e0c0b (patch) | |
tree | 8e61c6ee5f9a6ba96a557d32d612a2c8f3dfc3f8 /source/blender/editors/transform | |
parent | da25aca2677ec2b566cad1809eebceee22b28b53 (diff) |
Transform: Improve hierarchy in mixed snap edge detection.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r-- | source/blender/editors/transform/transform_snap_object.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/editors/transform/transform_snap_object.c b/source/blender/editors/transform/transform_snap_object.c index d3cf52ce3fd..7790c1f37f5 100644 --- a/source/blender/editors/transform/transform_snap_object.c +++ b/source/blender/editors/transform/transform_snap_object.c @@ -1436,8 +1436,14 @@ static short snap_mesh_edge_verts_mixed(SnapObjectContext *sctx, /* do nothing */ } else { - if (snapdata->snap_to_flag & SCE_SNAP_MODE_VERTEX) { - if (lambda < 0.25f || 0.75f < lambda) { + short snap_to_flag = snapdata->snap_to_flag; + int e_mode_len = ((snap_to_flag & SCE_SNAP_MODE_EDGE) != 0) + + ((snap_to_flag & SCE_SNAP_MODE_VERTEX) != 0) + + ((snap_to_flag & SCE_SNAP_MODE_EDGE_MIDPOINT) != 0); + + float range = 1.0f / (2 * e_mode_len - 1); + if (snap_to_flag & SCE_SNAP_MODE_VERTEX) { + if (lambda < (range) || (1.0f - range) < lambda) { int v_id = lambda < 0.5f ? 0 : 1; if (test_projected_vert_dist(&neasrest_precalc, @@ -1454,8 +1460,9 @@ static short snap_mesh_edge_verts_mixed(SnapObjectContext *sctx, } } - if (snapdata->snap_to_flag & SCE_SNAP_MODE_EDGE_MIDPOINT) { - if (0.375f < lambda && lambda < 0.625f) { + if (snap_to_flag & SCE_SNAP_MODE_EDGE_MIDPOINT) { + range *= e_mode_len - 1; + if ((range) < lambda && lambda < (1.0f - range)) { float vmid[3]; mid_v3_v3v3(vmid, v_pair[0], v_pair[1]); |