[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59420] trunk/blender/source/blender/bmesh /tools: fix error in recently added symmetrize rewrite, verts already on the aligned to the mirror-plane would not be welded.

Campbell Barton ideasman42 at gmail.com
Fri Aug 23 15:27:44 CEST 2013


Revision: 59420
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59420
Author:   campbellbarton
Date:     2013-08-23 13:27:44 +0000 (Fri, 23 Aug 2013)
Log Message:
-----------
fix error in recently added symmetrize rewrite, verts already on the aligned to the mirror-plane would not be welded.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.c
    trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.h

Modified: trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.c
===================================================================
--- trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.c	2013-08-23 13:00:43 UTC (rev 59419)
+++ trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.c	2013-08-23 13:27:44 UTC (rev 59420)
@@ -115,7 +115,7 @@
 }
 
 
-static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], const short oflag_new)
+static void bm_face_bisect_verts(BMesh *bm, BMFace *f, const float plane[4], const short oflag_center)
 {
 	/* unlikely more then 2 verts are needed */
 	const unsigned int f_len_orig = (unsigned int)f->len;
@@ -153,10 +153,10 @@
 			l_new = NULL;
 			BM_face_split(bm, f, vert_split_arr[0], vert_split_arr[1], &l_new, NULL, true);
 			if (l_new) {
-				if (oflag_new) {
-					BMO_elem_flag_enable(bm, l_new->e, oflag_new);
-					BMO_elem_flag_enable(bm, l_new->f, oflag_new);
-					BMO_elem_flag_enable(bm, f,        oflag_new);
+				if (oflag_center) {
+					BMO_elem_flag_enable(bm, l_new->e, oflag_center);
+					BMO_elem_flag_enable(bm, l_new->f, oflag_center);
+					BMO_elem_flag_enable(bm, f,        oflag_center);
 				}
 			}
 		}
@@ -293,10 +293,11 @@
 /**
  * \param use_tag  Only bisect tagged edges and faces.
  * \param use_snap  Snap verts onto the plane.
+ * \param oflag_center  Operator flag, enabled for geometry on the axis (existing and created)
  */
 void BM_mesh_bisect_plane(BMesh *bm, float plane[4],
                           const bool use_snap_center, const bool use_tag,
-                          const short oflag_new, const float eps)
+                          const short oflag_center, const float eps)
 {
 	unsigned int einput_len;
 	unsigned int i;
@@ -313,8 +314,13 @@
 		vert_is_center_disable(v);
 
 		BM_VERT_DIR(v) = plane_point_test_v3(plane, v->co, eps, &(BM_VERT_DIST(v)));
-		if (use_snap_center && (BM_VERT_DIR(v) == 0)) {
-			closest_to_plane_v3(v->co, plane, v->co);
+		if (BM_VERT_DIR(v) == 0) {
+			if (oflag_center) {
+				BMO_elem_flag_enable(bm, v, oflag_center);
+			}
+			if (use_snap_center) {
+				closest_to_plane_v3(v->co, plane, v->co);
+			}
 		}
 	}
 
@@ -369,8 +375,8 @@
 
 			v_new = BM_edge_split(bm, e, e->v1, NULL, e_fac);
 			vert_is_center_enable(v_new);
-			if (oflag_new) {
-				BMO_elem_flag_enable(bm, v_new, oflag_new);
+			if (oflag_center) {
+				BMO_elem_flag_enable(bm, v_new, oflag_center);
 			}
 
 			BM_VERT_DIR(v_new) = 0;
@@ -404,7 +410,7 @@
 	MEM_freeN(edges_arr);
 
 	while ((f = BLI_LINKSTACK_POP(face_stack))) {
-		bm_face_bisect_verts(bm, f, plane, oflag_new);
+		bm_face_bisect_verts(bm, f, plane, oflag_center);
 	}
 
 	/* now we have all faces to split in the stack */

Modified: trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.h
===================================================================
--- trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.h	2013-08-23 13:00:43 UTC (rev 59419)
+++ trunk/blender/source/blender/bmesh/tools/bmesh_bisect_plane.h	2013-08-23 13:27:44 UTC (rev 59420)
@@ -29,6 +29,6 @@
 
 void BM_mesh_bisect_plane(BMesh *bm, float plane[4],
                           const bool use_snap_center, const bool use_tag,
-                          const short oflag_new, const float eps);
+                          const short oflag_center, const float eps);
 
 #endif /* __BMESH_BISECT_PLANE_H__ */




More information about the Bf-blender-cvs mailing list