[Bf-blender-cvs] [966c00060f8] master: Transform: Improve hierarchy in mixed snap edge detection.

mano-wii noreply at git.blender.org
Wed Sep 4 07:17:40 CEST 2019


Commit: 966c00060f8e2239e9149b0300a34a57080e0c0b
Author: mano-wii
Date:   Wed Sep 4 02:16:50 2019 -0300
Branches: master
https://developer.blender.org/rB966c00060f8e2239e9149b0300a34a57080e0c0b

Transform: Improve hierarchy in mixed snap edge detection.

===================================================================

M	source/blender/editors/transform/transform_snap_object.c

===================================================================

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]);



More information about the Bf-blender-cvs mailing list