[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39869] branches/bmesh/blender/source/ blender/blenkernel/intern/editderivedbmesh.c: Bmesh: fix array copies ( fixes snapping), from patch #28429 by Andrew Wiggin (ender79
Howard Trickey
howard.trickey at gmail.com
Fri Sep 2 12:43:17 CEST 2011
Revision: 39869
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39869
Author: howardt
Date: 2011-09-02 10:43:16 +0000 (Fri, 02 Sep 2011)
Log Message:
-----------
Bmesh: fix array copies (fixes snapping), from patch #28429 by Andrew Wiggin (ender79
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c 2011-09-02 09:39:21 UTC (rev 39868)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c 2011-09-02 10:43:16 UTC (rev 39869)
@@ -1174,12 +1174,9 @@
edge_r->crease = (unsigned char) (BM_GetCDf(&bm->edata, e, CD_CREASE)*255.0f);
}
- edge_r->flag = ME_EDGEDRAW|ME_EDGERENDER;
+ /* Should this be set in BMFlags_To_MEFlags? */
+ edge_r->flag = ME_EDGERENDER;
edge_r->flag |= BMFlags_To_MEFlags(e);
-#if 0
- /* this needs setup of f2 field */
- if (!ee->f2) edge_r->flag |= ME_LOOSEEDGE;
-#endif
edge_r->v1 = GET_INT_FROM_POINTER(BLI_ghash_lookup(bmdm->vhash, e->v1));
edge_r->v2 = GET_INT_FROM_POINTER(BLI_ghash_lookup(bmdm->vhash, e->v2));
@@ -1248,7 +1245,7 @@
BM_SetIndex(ev, i);
ee = BMIter_New(&iter, bm, BM_EDGES_OF_MESH, NULL);
- for( ; ee; ee=BMIter_Step(&iter)) {
+ for( ; ee; ee=BMIter_Step(&iter), edge_r++) {
if (has_bweight) {
edge_r->bweight = (unsigned char) (BM_GetCDf(&bm->edata, ee, CD_BWEIGHT)*255.0f);
}
@@ -1257,13 +1254,9 @@
edge_r->crease = (unsigned char) (BM_GetCDf(&bm->edata, ee, CD_CREASE)*255.0f);
}
- edge_r->flag = ME_EDGEDRAW|ME_EDGERENDER;
- if (ee->head.flag & BM_SEAM) edge_r->flag |= ME_SEAM;
- if (ee->head.flag & BM_SHARP) edge_r->flag |= ME_SHARP;
-#if 0
- /* this needs setup of f2 (edge draw flags, if I remember right) field */
- if (!ee->f2) edge_r->flag |= ME_LOOSEEDGE;
-#endif
+ /* Should this be set in BMFlags_To_MEFlags? */
+ edge_r->flag = ME_EDGERENDER;
+ edge_r->flag |= BMFlags_To_MEFlags(ee);
edge_r->v1 = (int)BM_GetIndex(ee->v1);
edge_r->v2 = (int)BM_GetIndex(ee->v2);
@@ -1281,22 +1274,24 @@
int i;
/* store vertexes indices in tmp union */
- ev = BMIter_New(&iter, bm, BM_VERTS_OF_MESH, NULL);
- for (i=0; ev; ev=BMIter_Step(&iter), i++)
- BM_SetIndex(ev, i);
+ i = 0;
+ BM_ITER(ev, &iter, bm, BM_VERTS_OF_MESH, NULL)
+ BM_SetIndex(ev, i++);
- for (i=0; i<bmdm->tc->tottri; i++) {
+ for (i=0; i<bmdm->tc->tottri; i++, face_r++) {
l = bmdm->tc->looptris[i];
ef = l[0]->f;
face_r->mat_nr = (unsigned char) ef->mat_nr;
- /*HACK/BMESH_TODO: need to convert this*/
- face_r->flag = ef->head.flag;
+ face_r->flag = BMFlags_To_MEFlags(ef);
face_r->v1 = BM_GetIndex(l[0]->v);
face_r->v2 = BM_GetIndex(l[1]->v);
face_r->v3 = BM_GetIndex(l[2]->v);
+ /*BMESH_TODO: zero is not the best way to signal that
+ the face is a triangle and not a quad, since 0 is
+ also the index assigned to a real vertex*/
face_r->v4 = 0;
test_index_face(face_r, NULL, 0, 3);
@@ -1331,6 +1326,7 @@
loop_r[i].v = BM_GetIndex(l->v);
loop_r[i].e = BM_GetIndex(l->e);
i++;
+ loop_r++;
}
}
}
@@ -1351,6 +1347,7 @@
poly_r[i].mat_nr = f->mat_nr;
i++;
+ poly_r++;
j += f->len;
}
}
More information about the Bf-blender-cvs
mailing list