[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20831] branches/bmesh/blender/source/ blender: moved the active face pointer to BMesh, where I think it belongs.
Joseph Eagar
joeedh at gmail.com
Fri Jun 12 16:02:37 CEST 2009
Revision: 20831
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20831
Author: joeedh
Date: 2009-06-12 16:02:37 +0200 (Fri, 12 Jun 2009)
Log Message:
-----------
moved the active face pointer to BMesh, where I think it belongs. also made some fixes to the ccgsubsurf derivedmesh, and some general modifier bugfixes. note that modifiers are still rather buggy and crashy at the moment, heh :) also made some functions for converting Mesh flags to BMesh flags, and back.
Modified Paths:
--------------
branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h
branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
branches/bmesh/blender/source/blender/blenlib/intern/edgehash.c
branches/bmesh/blender/source/blender/bmesh/bmesh.h
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
branches/bmesh/blender/source/blender/bmesh/intern/bmesh_opdefines.c
branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
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 2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/BKE_tessmesh.h 2009-06-12 14:02:37 UTC (rev 20831)
@@ -41,9 +41,6 @@
/*retopo data pointer*/
struct RetopoPaintData *retopo_paint_data;
- /*active face pointer*/
- struct BMFace *act_face;
-
/*index tables, to map indices to elements via
EDBM_init_index_arrays and associated functions. don't
touch this or read it directly.*/
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/cdderivedmesh.c 2009-06-12 14:02:37 UTC (rev 20831)
@@ -1676,7 +1676,7 @@
mp = cddm->mpoly;
ml = cddm->mloop;
l = 0;
- for (i=0; i<cddm->dm.numFaceData; i++, mf++) {
+ for (i=0; i<cddm->dm.numFaceData; i++, mf++, mp++) {
mp->flag = mf->flag;
mp->loopstart = l;
mp->mat_nr = mf->mat_nr;
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c 2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/editderivedbmesh.c 2009-06-12 14:02:37 UTC (rev 20831)
@@ -107,7 +107,6 @@
*tm2 = *tm;
tm2->derivedCage = tm2->derivedFinal = NULL;
- tm2->act_face = NULL;
tm2->looptris = NULL;
tm2->bm = BM_Copy_Mesh(tm->bm);
@@ -214,7 +213,6 @@
}
em->retopo_paint_data= NULL;
- em->act_face = NULL;
if (em->looptris) MEM_freeN(em->looptris);
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c 2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/modifier.c 2009-06-12 14:02:37 UTC (rev 20831)
@@ -575,7 +575,7 @@
if(source.v4)
source.v4 = GET_INT_FROM_POINTER(BLI_ghash_lookup(vertHash, SET_INT_IN_POINTER(source.v4)));
- DM_copy_face_data(dm, result, faceMap[i], i, 1);
+ DM_copy_tessface_data(dm, result, faceMap[i], i, 1);
*dest = source;
test_index_face(dest, &result->faceData, i, (orig_v4 ? 4 : 3));
@@ -930,7 +930,7 @@
if (source.v4)
source.v4 = GET_INT_FROM_POINTER(BLI_ghash_lookup(vertHash, SET_INT_IN_POINTER(source.v4)));
- DM_copy_face_data(dm, result, oldIndex, newIndex, 1);
+ DM_copy_tessface_data(dm, result, oldIndex, newIndex, 1);
*dest = source;
test_index_face(dest, &result->faceData, newIndex, (orig_v4 ? 4 : 3));
@@ -1366,7 +1366,7 @@
dm->getTessFace(dm, i, &inMF);
- DM_copy_face_data(dm, result, i, numFaces, 1);
+ DM_copy_tessface_data(dm, result, i, numFaces, 1);
*mf = inMF;
mf->v1 = indexMap[inMF.v1].new;
@@ -1402,7 +1402,7 @@
{
MFace *mf2 = &mface[numFaces];
- DM_copy_face_data(dm, result, i, numFaces, 1);
+ DM_copy_tessface_data(dm, result, i, numFaces, 1);
*mf2 = *mf;
mf2->v1 = calc_mapping(indexMap, inMF.v1, j);
@@ -1499,7 +1499,7 @@
}
origindex = result->getTessFaceDataArray(result, CD_ORIGINDEX);
for(i = 0; i < capFaces; i++) {
- DM_copy_face_data(start_cap, result, i, numFaces, 1);
+ DM_copy_tessface_data(start_cap, result, i, numFaces, 1);
mface[numFaces] = cap_mface[i];
mface[numFaces].v1 = vert_map[mface[numFaces].v1];
mface[numFaces].v2 = vert_map[mface[numFaces].v2];
@@ -1600,7 +1600,7 @@
}
origindex = result->getTessFaceDataArray(result, CD_ORIGINDEX);
for(i = 0; i < capFaces; i++) {
- DM_copy_face_data(end_cap, result, i, numFaces, 1);
+ DM_copy_tessface_data(end_cap, result, i, numFaces, 1);
mface[numFaces] = cap_mface[i];
mface[numFaces].v1 = vert_map[mface[numFaces].v1];
mface[numFaces].v2 = vert_map[mface[numFaces].v2];
@@ -1978,7 +1978,7 @@
dm->getTessFace(dm, i, &inMF);
- DM_copy_face_data(dm, result, i, numFaces, 1);
+ DM_copy_tessface_data(dm, result, i, numFaces, 1);
*mf = inMF;
numFaces++;
@@ -1994,7 +1994,7 @@
MFace *mf2 = CDDM_get_tessface(result, numFaces);
static int corner_indices[4] = {2, 1, 0, 3};
- DM_copy_face_data(dm, result, i, numFaces, 1);
+ DM_copy_tessface_data(dm, result, i, numFaces, 1);
*mf2 = *mf;
mf2->v1 += indexMap[inMF.v1][1];
@@ -2475,7 +2475,7 @@
SmoothFace *face = &mesh->faces[i];
MFace *newMF = &new_faces[face->newIndex];
- DM_copy_face_data(mesh->dm, result,
+ DM_copy_tessface_data(mesh->dm, result,
face->oldIndex, face->newIndex, 1);
mesh->dm->getTessFace(mesh->dm, face->oldIndex, newMF);
@@ -6590,7 +6590,7 @@
}
inMF = orig_mface + i%totface;
- DM_copy_face_data(dm, result, i%totface, i, 1);
+ DM_copy_tessface_data(dm, result, i%totface, i, 1);
*mf = *inMF;
mf->v1+=(i/totface)*totvert;
@@ -6870,7 +6870,7 @@
dm->getTessFace(dm, i, &source);
dest = CDDM_get_tessface(splitdm, i);
- DM_copy_face_data(dm, splitdm, i, i, 1);
+ DM_copy_tessface_data(dm, splitdm, i, i, 1);
*dest = source;
}
@@ -6913,7 +6913,7 @@
/* ouch! creating new faces & remapping them to new verts is no fun */
if(*fs==1){
df1=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df1=*mf;
curdupface++;
@@ -6937,12 +6937,12 @@
}
if(*fs==2){
df1=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df1=*mf;
curdupface++;
df2=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df2=*mf;
curdupface++;
@@ -7014,17 +7014,17 @@
}
else if(*fs==3){
df1=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df1=*mf;
curdupface++;
df2=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df2=*mf;
curdupface++;
df3=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df3=*mf;
curdupface++;
@@ -7115,17 +7115,17 @@
df1=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df1=*mf;
curdupface++;
df2=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df2=*mf;
curdupface++;
df3=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df3=*mf;
curdupface++;
@@ -7155,17 +7155,17 @@
}
else{
df1=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df1=*mf;
curdupface++;
df2=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df2=*mf;
curdupface++;
df3=CDDM_get_tessface(splitdm,curdupface);
- DM_copy_face_data(splitdm,splitdm,i,curdupface,1);
+ DM_copy_tessface_data(splitdm,splitdm,i,curdupface,1);
*df3=*mf;
curdupface++;
@@ -7365,7 +7365,7 @@
if(source.v4)
source.v4 = edgesplit_get(vertpahash, source.v4, mindex);
- DM_copy_face_data(dm,explode,i,i,1);
+ DM_copy_tessface_data(dm,explode,i,i,1);
*mf = source;
Modified: branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2009-06-12 13:53:08 UTC (rev 20830)
+++ branches/bmesh/blender/source/blender/blenkernel/intern/subsurf_ccg.c 2009-06-12 14:02:37 UTC (rev 20831)
@@ -1346,6 +1346,11 @@
{
ccgDM_faceIter *fiter = self;
+ if (!fiter->ccgdm || !fiter->ccgdm->ss) {
+ fiter->head.done = 1;
+ return;
+ }
+
if (fiter->head.index >= ccgSubSurf_getNumTessFaces(fiter->ccgdm->ss)) {
fiter->head.done = 1;
return;
@@ -2570,19 +2575,21 @@
++vertNum;
-#if 0 //BMESH_TODO
for(S = 0; S < numVerts; S++) {
int prevS = (S - 1 + numVerts) % numVerts;
int nextS = (S + 1) % numVerts;
int otherS = (numVerts == 4) ? (S + 2) % numVerts : 3;
+
for(x = 1; x < gridFaces; x++) {
float w[4];
+#if 0 //BMESH_TODO
w[prevS] = weight[x][0][0];
w[S] = weight[x][0][1];
w[nextS] = weight[x][0][2];
w[otherS] = weight[x][0][3];
DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w,
numVerts, vertNum);
+#endif
*vertOrigIndex = ORIGINDEX_NONE;
++vertOrigIndex;
++vertNum;
@@ -2596,24 +2603,25 @@
for(y = 1; y < gridFaces; y++) {
for(x = 1; x < gridFaces; x++) {
float w[4];
+#if 0 //BMESH_TODO
w[prevS] = weight[y * gridFaces + x][0][0];
w[S] = weight[y * gridFaces + x][0][1];
w[nextS] = weight[y * gridFaces + x][0][2];
w[otherS] = weight[y * gridFaces + x][0][3];
DM_interp_vert_data(dm, &ccgdm->dm, vertIdx, w,
numVerts, vertNum);
+#endif
*vertOrigIndex = ORIGINDEX_NONE;
++vertOrigIndex;
++vertNum;
}
}
}
-#endif
+
for(i = 0; i < numFinalEdges; ++i)
*(int *)DM_get_edge_data(&ccgdm->dm, edgeNum + i,
CD_ORIGINDEX) = ORIGINDEX_NONE;
-#if 0 //BMESH_TODO
for(S = 0; S < numVerts; S++) {
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list