[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41332] branches/bmesh/blender/source/ blender: BMEditMesh.mirror_cdlayer wasnt being set anywhere, adding any other type of layer would break editmesh mirror editing.

Campbell Barton ideasman42 at gmail.com
Fri Oct 28 08:23:12 CEST 2011


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)




More information about the Bf-blender-cvs mailing list