Revision: 47731
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47731
Author:   nicholasbishop
Date:     2012-06-11 09:41:08 +0000 (Mon, 11 Jun 2012)
Log Message:
-----------
Fix incorrectly deleted elements in array modifier caps.

Add check for merging vertices into vertices that are themselves
marked for merge, was already done for array eleements but not end
caps.

Fixes bug [#31695] Array Modifier: End Cap fails if all vertices are merged

Also corrected some reversed assert arguments.

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
    trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
    trunk/blender/source/blender/modifiers/intern/MOD_array.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_marking.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-06-11 
09:24:25 UTC (rev 47730)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_marking.c   2012-06-11 
09:41:08 UTC (rev 47731)
@@ -458,7 +458,7 @@
        BMIter iter;
        int tot = 0;
 
-       BLI_assert(ELEM(TRUE, FALSE, test_for_enabled));
+       BLI_assert(ELEM(test_for_enabled, TRUE, FALSE));
 
        if (htype & BM_VERT) {
                for (ele = BM_iter_new(&iter, bm, BM_VERTS_OF_MESH, NULL); ele; 
ele = BM_iter_step(&iter)) {

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_operators.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_operators.c 2012-06-11 
09:24:25 UTC (rev 47730)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_operators.c 2012-06-11 
09:41:08 UTC (rev 47731)
@@ -698,7 +698,7 @@
        BMOpSlot *output = BMO_slot_get(op, slotname);
        int totelement = 0, i = 0;
 
-       BLI_assert(ELEM(TRUE, FALSE, test_for_enabled));
+       BLI_assert(ELEM(test_for_enabled, TRUE, FALSE));
 
        if (test_for_enabled)
                totelement = BM_mesh_elem_hflag_count_enabled(bm, htype, hflag, 
TRUE);

Modified: trunk/blender/source/blender/modifiers/intern/MOD_array.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_array.c   2012-06-11 
09:24:25 UTC (rev 47730)
+++ trunk/blender/source/blender/modifiers/intern/MOD_array.c   2012-06-11 
09:41:08 UTC (rev 47731)
@@ -220,9 +220,12 @@
                                   const char *dupe_slot_name,
                                   BMOperator *weld_op)
 {
-       BMVert *v, *v2;
+       BMVert *v, *v2, *v3;
        BMIter iter;
 
+       /* Add the DerivedMesh's elements to the BMesh. The pre-existing
+          elements were already tagged, so the new elements can be
+          identified by not having the BM_ELEM_TAG flag set. */
        DM_to_bmesh_ex(dm, bm);
 
        if (amd->flags & MOD_ARR_MERGE) {
@@ -252,6 +255,11 @@
                /* add new merge targets to weld operator */
                BMO_ITER (v, &oiter, bm, &find_op, "targetmapout", 0) {
                        v2 = BMO_iter_map_value_p(&oiter);
+                       /* check in case the target vertex (v2) is already 
marked
+                        * for merging */
+                       while ((v3 = BMO_slot_map_ptr_get(bm, weld_op, 
"targetmap", v2))) {
+                               v2 = v3;
+                       }
                        BMO_slot_map_ptr_insert(bm, weld_op, "targetmap", v, 
v2);
                }
 

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to