Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormano-wii <germano.costa@ig.com.br>2019-09-04 08:16:50 +0300
committermano-wii <germano.costa@ig.com.br>2019-09-04 08:16:50 +0300
commit966c00060f8e2239e9149b0300a34a57080e0c0b (patch)
tree8e61c6ee5f9a6ba96a557d32d612a2c8f3dfc3f8 /source/blender/editors/transform/transform_snap_object.c
parentda25aca2677ec2b566cad1809eebceee22b28b53 (diff)
Transform: Improve hierarchy in mixed snap edge detection.
Diffstat (limited to 'source/blender/editors/transform/transform_snap_object.c')
-rw-r--r--source/blender/editors/transform/transform_snap_object.c15
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]);