[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