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. @@

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

Reply via email to