From 59b082dc272feb6567a73a45b9eb9a742e4131d7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 23 Aug 2013 10:19:58 +0000 Subject: fix for error in recetly added bisect operator, in rare cases it could attempt to remove vertices twice. --- source/blender/bmesh/operators/bmo_bisect_plane.c | 34 +++++++++-------------- 1 file changed, 13 insertions(+), 21 deletions(-) (limited to 'source/blender') diff --git a/source/blender/bmesh/operators/bmo_bisect_plane.c b/source/blender/bmesh/operators/bmo_bisect_plane.c index 575e6888df0..6ebbf7d6a72 100644 --- a/source/blender/bmesh/operators/bmo_bisect_plane.c +++ b/source/blender/bmesh/operators/bmo_bisect_plane.c @@ -72,27 +72,19 @@ void bmo_bisect_plane_exec(BMesh *bm, BMOperator *op) if (clear_outer || clear_inner) { BMOIter siter; BMVert *v; - float plane_alt[4]; - - copy_v3_v3(plane_alt, plane); - - 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); - } - } - } - - 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); - } + float plane_inner[4]; + float plane_outer[4]; + + copy_v3_v3(plane_outer, plane); + copy_v3_v3(plane_inner, plane); + plane_outer[3] = plane[3] - dist; + plane_inner[3] = plane[3] + dist; + + 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); } } } -- cgit v1.2.3