Revision: 41332
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41332
Author:   campbellbarton
Date:     2011-10-28 06:23:12 +0000 (Fri, 28 Oct 2011)
Log Message:
-----------
BMEditMesh.mirror_cdlayer wasnt being set anywhere, adding any other type of 
layer would break editmesh mirror editing.

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
    branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c

Modified: branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h     
2011-10-28 06:12:00 UTC (rev 41331)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h     
2011-10-28 06:23:12 UTC (rev 41332)
@@ -58,7 +58,7 @@
        struct Object *ob;
 
        /*temp variables for x-mirror editing*/
-       int mirror_cdlayer;
+       int mirror_cdlayer; /* -1 is invalid */
        int mirr_free_arrays;
 } BMEditMesh;
 

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c     
2011-10-28 06:12:00 UTC (rev 41331)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmeshutils.c     
2011-10-28 06:23:12 UTC (rev 41332)
@@ -788,6 +788,7 @@
 /* BM_SEARCH_MAXDIST is too big, copied from 2.6x MOC_THRESH, should become a
  * preference */
 #define BM_SEARCH_MAXDIST_MIRR 0.00002f
+#define BM_CD_LAYER_ID "__mirror_index"
 void EDBM_CacheMirrorVerts(BMEditMesh *em)
 {
        Mesh *me = em->me;
@@ -806,11 +807,12 @@
                em->mirr_free_arrays = 1;
        }
 
-       if (!CustomData_get_layer_named(&em->bm->vdata, CD_PROP_INT, 
"__mirror_index")) {
-               BM_add_data_layer_named(em->bm, &em->bm->vdata, CD_PROP_INT, 
"__mirror_index");
+       if (!CustomData_get_layer_named(&em->bm->vdata, CD_PROP_INT, 
BM_CD_LAYER_ID)) {
+               BM_add_data_layer_named(em->bm, &em->bm->vdata, CD_PROP_INT, 
BM_CD_LAYER_ID);
        }
 
-       li = CustomData_get_named_layer_index(&em->bm->vdata, CD_PROP_INT, 
"__mirror_index");
+       li= CustomData_get_named_layer_index(&em->bm->vdata, CD_PROP_INT, 
BM_CD_LAYER_ID);
+
        em->bm->vdata.layers[li].flag |= CD_FLAG_TEMPORARY;
 
        /* BMESH_TODO, we should STOP overwriting the vertex index data with bad
@@ -847,12 +849,16 @@
        }
 
        BMBVH_FreeBVH(tree);
+
+       em->mirror_cdlayer= li;
 }
 
 BMVert *EDBM_GetMirrorVert(BMEditMesh *em, BMVert *v)
 {
        int *mirr = CustomData_bmesh_get_layer_n(&em->bm->vdata, v->head.data, 
em->mirror_cdlayer);
-       
+
+       BLI_assert(em->mirror_cdlayer != -1); /* invalid use */
+
        if (mirr && *mirr >=0 && *mirr < em->bm->totvert) {
                if (!em->vert_index) {
                        printf("err: should only be called between "
@@ -872,6 +878,8 @@
                MEM_freeN(em->vert_index);
                em->vert_index = NULL;
        }
+
+       em->mirror_cdlayer= -1;
 }
 
 void EDBM_ApplyMirrorCache(BMEditMesh *em, const int sel_from, const int 
sel_to)

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

Reply via email to