[Bf-blender-cvs] [a0c2d6bf85e] master: Transform: small optimization in snap to edit mesh

Germano Cavalcante noreply at git.blender.org
Mon Apr 18 23:26:32 CEST 2022


Commit: a0c2d6bf85e1ba38373ac9371fb557086181dda3
Author: Germano Cavalcante
Date:   Mon Apr 18 17:11:34 2022 -0300
Branches: master
https://developer.blender.org/rBa0c2d6bf85e1ba38373ac9371fb557086181dda3

Transform: small optimization in snap to edit mesh

In some cases, selected elements do not contribute to snapping.
So ignore these elements when creating the edit meshes bound box.

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

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

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

diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc
index d0c0d141f15..e5c0a68a0dc 100644
--- a/source/blender/editors/transform/transform_snap_object.cc
+++ b/source/blender/editors/transform/transform_snap_object.cc
@@ -178,13 +178,17 @@ static const Mesh *mesh_for_snap(Object *ob_eval, eSnapEditType edit_mode_type,
 /**
  * Calculate the minimum and maximum coordinates of the box that encompasses this mesh.
  */
-static void bm_mesh_minmax(BMesh *bm, float r_min[3], float r_max[3])
+static void snap_editmesh_minmax(SnapObjectContext *sctx, BMesh *bm, float r_min[3], float r_max[3])
 {
   INIT_MINMAX(r_min, r_max);
   BMIter iter;
   BMVert *v;
 
   BM_ITER_MESH (v, &iter, bm, BM_VERTS_OF_MESH) {
+    if (sctx->callbacks.edit_mesh.test_vert_fn &&
+        !sctx->callbacks.edit_mesh.test_vert_fn(v, sctx->callbacks.edit_mesh.user_data)) {
+      continue;
+    }
     minmax_v3v3_v3(r_min, r_max, v->co);
   }
 }
@@ -423,7 +427,7 @@ static SnapObjectData *snap_object_data_editmesh_get(SnapObjectContext *sctx,
     sod->type = SnapObjectData::Type::EditMesh;
     sod->treedata_editmesh.em = em;
     sod->mesh_runtime = snap_object_data_editmesh_runtime_get(ob_eval);
-    bm_mesh_minmax(em->bm, sod->min, sod->max);
+    snap_editmesh_minmax(sctx, em->bm, sod->min, sod->max);
   }
 
   return sod;



More information about the Bf-blender-cvs mailing list