[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59411] trunk/blender/source/blender/bmesh /operators/bmo_bisect_plane.c: fix for error in recetly added bisect operator, in rare cases it could attempt to remove vertices twice.

Campbell Barton ideasman42 at gmail.com
Fri Aug 23 12:19:58 CEST 2013


Revision: 59411
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59411
Author:   campbellbarton
Date:     2013-08-23 10:19:58 +0000 (Fri, 23 Aug 2013)
Log Message:
-----------
fix for error in recetly added bisect operator, in rare cases it could attempt to remove vertices twice.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_bisect_plane.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_bisect_plane.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_bisect_plane.c	2013-08-23 10:18:15 UTC (rev 59410)
+++ trunk/blender/source/blender/bmesh/operators/bmo_bisect_plane.c	2013-08-23 10:19:58 UTC (rev 59411)
@@ -72,29 +72,21 @@
 	if (clear_outer || clear_inner) {
 		BMOIter siter;
 		BMVert *v;
-		float plane_alt[4];
+		float plane_inner[4];
+		float plane_outer[4];
 
-		copy_v3_v3(plane_alt, plane);
+		copy_v3_v3(plane_outer, plane);
+		copy_v3_v3(plane_inner, plane);
+		plane_outer[3] = plane[3] - dist;
+		plane_inner[3] = plane[3] + dist;
 
-		if (clear_outer) {
-			plane_alt[3] = plane[3] - dist;
-
-			BMO_ITER (v, &siter, op->slots_in, "geom", BM_VERT) {
-				if (plane_point_side_v3(plane_alt, v->co) > 0.0f) {
-					BM_vert_kill(bm, v);
-				}
+		BMO_ITER (v, &siter, op->slots_in, "geom", BM_VERT) {
+			if ((clear_outer && plane_point_side_v3(plane_outer, v->co) > 0.0f) ||
+			    (clear_inner && plane_point_side_v3(plane_inner, v->co) < 0.0f))
+			{
+				BM_vert_kill(bm, v);
 			}
 		}
-
-		if (clear_inner) {
-			plane_alt[3] = plane[3] + dist;
-
-			BMO_ITER (v, &siter, op->slots_in, "geom", BM_VERT) {
-				if (plane_point_side_v3(plane_alt, v->co) < 0.0f) {
-					BM_vert_kill(bm, v);
-				}
-			}
-		}
 	}
 
 	BMO_slot_buffer_from_enabled_flag(bm, op, op->slots_out, "geom.out", BM_ALL_NOLOOP, ELE_NEW | ELE_INPUT);




More information about the Bf-blender-cvs mailing list