Revision: 40981
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40981
Author:   ender79
Date:     2011-10-13 04:58:34 +0000 (Thu, 13 Oct 2011)
Log Message:
-----------
Add nodoubles arg to BM_Make_Face

Modified Paths:
--------------
    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_mods.c
    branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
    branches/bmesh/blender/source/blender/bmesh/operators/bevel.c
    branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c
    branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c
    branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
    branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c

Modified: branches/bmesh/blender/source/blender/bmesh/bmesh.h
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/bmesh.h 2011-10-13 04:44:39 UTC 
(rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/bmesh.h 2011-10-13 04:58:34 UTC 
(rev 40981)
@@ -131,7 +131,7 @@
 struct BMEdge *BM_Make_Edge ( struct BMesh *bm, struct BMVert *v1, struct 
BMVert *v2, const struct BMEdge *example, int nodouble );
 struct BMFace *BM_Make_Quadtriangle ( struct BMesh *bm, struct BMVert **verts, 
BMEdge **edges, int len, const struct BMFace *example, int nodouble );
 
-BMFace *BM_Make_Face(BMesh *bm, BMVert **verts, BMEdge **edges, int len);
+BMFace *BM_Make_Face(BMesh *bm, BMVert **verts, BMEdge **edges, int len, int 
nodouble);
 
 /*more easier to use version of BM_Make_Quadtriangle.
   creates edges if necassary.*/

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c        
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_construct.c        
2011-10-13 04:58:34 UTC (rev 40981)
@@ -207,7 +207,7 @@
                        if(!edar[2]) edar[2] = BM_Make_Edge(bm, verts[2], 
verts[0], NULL, 0);
                }
        
-               f = BM_Make_Face(bm, verts, edar, len);
+               f = BM_Make_Face(bm, verts, edar, len, 0);
        
                if(example && f)
                        BM_Copy_Attributes(bm, bm, example, f);
@@ -353,16 +353,8 @@
                        goto err;
        }
 
-       /*check if face already exists*/
-       if(nodouble)
-               overlap = BM_Face_Exists(bm, verts, len, &f);
+       f = BM_Make_Face(bm, verts, edges2, len, nodouble);
 
-       /*create the face, if necassary*/
-       if (!f && !overlap)
-               f = BM_Make_Face(bm, verts, edges2, len);
-       else if (!overlap)
-               f = NULL;
-
        /*clean up flags*/
        for (i=0; i<len; i++) {
                bmesh_api_clearflag(edges2[i], _FLAG_MF);

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c     
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_mods.c     
2011-10-13 04:58:34 UTC (rev 40981)
@@ -470,7 +470,7 @@
                        l = l->next;
                } while (l != bm_firstfaceloop(f));
                
-               f2 = BM_Make_Face(bm, verts, edges, BLI_array_count(verts));
+               f2 = BM_Make_Face(bm, verts, edges, BLI_array_count(verts), 0);
                l = bm_firstfaceloop(f2);
                i = 0;
                do {

Modified: branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c  
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/intern/bmesh_newcore.c  
2011-10-13 04:58:34 UTC (rev 40981)
@@ -179,7 +179,7 @@
                l = l->next;
        } while (l != bm_firstfaceloop(f));
        
-       f2 = BM_Make_Face(bm, verts, edges, f->len);
+       f2 = BM_Make_Face(bm, verts, edges, f->len, 0);
        
        BM_Copy_Attributes(bm, bm, f, f2);
        
@@ -194,16 +194,27 @@
        return f2;
 }
 
-BMFace *BM_Make_Face(BMesh *bm, BMVert **verts, BMEdge **edges, int len) {
-       BMFace *f;
+BMFace *BM_Make_Face(BMesh *bm, BMVert **verts, BMEdge **edges, int len, int 
nodouble) {
+       BMFace *f = NULL;
        BMLoop *l, *startl, *lastl;
-       int i;
+       int i, overlap;
        
        if (len == 0) {
                /*just return NULL for now*/
                return NULL;
        }
 
+       if (nodouble) {
+               /* Check if face already exists */
+               overlap = BM_Face_Exists(bm, verts, len, &f);
+               if (overlap) {
+                       return f;
+               }
+               else {
+                       BLI_assert(f == NULL);
+               }
+       }
+       
        f = BLI_mempool_calloc(bm->fpool);
        bm->totface += 1;
        f->head.type = BM_FACE;
@@ -1752,7 +1763,7 @@
 /*
  * BMESH UNGLUE REGION MAKE VERT
  *
- * Disconnects a face from its vertex fan at loop sl.
+ * Disconnects sf from the vertex fan at sv
  */
 BMVert *bmesh_urmv(BMesh *bm, BMFace *sf, BMVert *sv)
 {

Modified: branches/bmesh/blender/source/blender/bmesh/operators/bevel.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/bevel.c       
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/operators/bevel.c       
2011-10-13 04:58:34 UTC (rev 40981)
@@ -128,10 +128,8 @@
        }
 #else
        /*oddly, this simplistic method seems to work the best*/
-       mul_v3_fl(vec1, fac);
-       mul_v3_fl(vec2, fac);
        add_v3_v3(vec1, vec2);
-       mul_v3_fl(vec1, 0.5);
+       mul_v3_fl(vec1, fac * 0.5);
 
        if (inv)
                negate_v3(vec1);
@@ -151,7 +149,7 @@
        BMVert *v;
        BMFace **faces = NULL, *f;
        LoopTag *tags=NULL, *tag;
-       EdgeTag *etags = NULL, *etag;
+       EdgeTag *etags = NULL;
        BMVert **verts = NULL;
        BMEdge **edges = NULL;
        BLI_array_declare(faces);
@@ -186,7 +184,7 @@
                        BMEdge *edges[2] = {e, BM_Make_Edge(bm, e->v1, e->v2, 
e, 0)};
                        
                        BMO_SetFlag(bm, edges[1], BEVEL_FLAG);
-                       BM_Make_Face(bm, verts, edges, 2);
+                       BM_Make_Face(bm, verts, edges, 2, 0);
                }
 #endif
        }
@@ -383,7 +381,7 @@
                }
        }
        
-       /*create new faces*/
+       /*create new faces inset from original faces*/
        for (i=0; i<BLI_array_count(faces); i++) {
                BMLoop *l;
                BMIter liter;
@@ -411,8 +409,7 @@
                        }
                        lastv=tag->newv;
                        
-                       etag = etags + BM_GetIndex(l->e);
-                       v2 = l->next->v == l->e->v1 ? etag->newv1 : etag->newv2;
+                       v2 = ETAG_GET(l->e, l->next->v);
                        
                        tag = tags + BM_GetIndex(l->next);
                        if (!BMO_TestFlag(bm, l->e, BEVEL_FLAG) && v2 && v2 != 
tag->newv) {
@@ -431,9 +428,9 @@
                        BM_Copy_Attributes(bm, bm, 
bm_firstfaceloop(faces[i])->prev->e, e);
                BLI_array_append(edges, e);
                
-               f = BM_Make_Ngon(bm, verts[0], verts[1], edges, 
BLI_array_count(verts), 0);
+               f = BM_Make_Ngon(bm, verts[0], verts[1], edges, 
BLI_array_count(edges), 0);
                if (!f) {
-                       printf("eck!!\n");
+                       printf("eek!!\n");
                        continue;
                }
                        
@@ -463,6 +460,7 @@
                                        v4 = 
tags[BM_GetIndex(l->radial_next->next)].newv;
                                }
                        } else {
+                               /*the loop is on a boundary*/
                                v3 = l->next->v;
                                v4 = l->v;
                                
@@ -628,7 +626,7 @@
                }
                
                /*find edges that exist between vertices in verts.  this is 
basically
-          a topological walk of the edges connecting them.*/
+                 a topological walk of the edges connecting them.*/
                vstart = vstart ? vstart : verts[0];
                vv = vstart;
                do {
@@ -661,8 +659,8 @@
                        continue;
                
                /*there may not be a complete loop of edges, so start again and 
make
-          final edge afterwards.  in this case, the previous loop worked to
-          find one of the two edges at the extremes.*/
+                 final edge afterwards.  in this case, the previous loop 
worked to
+                 find one of the two edges at the extremes.*/
                if (vv != vstart) {
                        /*undo previous tagging*/
                        for (i=0; i<BLI_array_count(verts); i++) {
@@ -791,7 +789,7 @@
                }
        }
 #if 0
-       /*clean up any remainin 2-edged faces*/
+       /*clean up any remaining 2-edged faces*/
        BM_ITER(f, &iter, bm, BM_FACES_OF_MESH, NULL) {
                if (f->len == 2) {
                        BMFace *faces[2] = {f, 
bm_firstfaceloop(f)->radial_next->f};

Modified: branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c       
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/operators/bmesh_dupeops.c       
2011-10-13 04:58:34 UTC (rev 40981)
@@ -124,7 +124,7 @@
        }
        
        /*create new face*/
-       target_face = BM_Make_Face(target_mesh, vtar, edar, source_face->len);
+       target_face = BM_Make_Face(target_mesh, vtar, edar, source_face->len, 
0);
        BMO_Insert_MapPointer(source_mesh, op, 
                 "facemap", source_face, target_face);
        BMO_Insert_MapPointer(source_mesh, op, 
@@ -259,6 +259,7 @@
        if (edar) {
                MEM_freeN(edar);
        }
+       /*free vert pointer array*/
        if (vtar) {
                MEM_freeN(vtar);
        }

Modified: branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c 
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/operators/edgesplitop.c 
2011-10-13 04:58:34 UTC (rev 40981)
@@ -90,7 +90,7 @@
 
        edges_tmp[i] = BM_Make_Edge(bm, lastv1, lastv2, NULL, 1);
 
-       f2 = BM_Make_Face(bm, verts, edges_tmp, f->len);
+       f2 = BM_Make_Face(bm, verts, edges_tmp, f->len, 0);
        if (!f2) {
                return NULL;
        }

Modified: branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c
===================================================================
--- branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c   
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/bmesh/operators/mesh_conv.c   
2011-10-13 04:58:34 UTC (rev 40981)
@@ -59,7 +59,7 @@
        float (*keyco)[3]= NULL;
        int *keyi;
        int set_key = BMO_Get_Int(op, "set_shapekey");
-       int totuv, i, j, li, allocsize[4] = {512, 512, 2048, 512};
+       int totuv, i, j, allocsize[4] = {512, 512, 2048, 512};
 
        if (!me || !me->totvert) return; /*sanity check*/
        
@@ -191,7 +191,6 @@
        }
 
        mpoly = me->mpoly;
-       li = 0;
        for (i=0; i<me->totpoly; i++, mpoly++) {
                BMVert *v1, *v2;
                BMIter iter;
@@ -220,7 +219,7 @@
                        v2 = fedges[0]->v1;
                }
        
-               f = BM_Make_Face(bm, verts, fedges, mpoly->totloop);
+               f = BM_Make_Face(bm, verts, fedges, mpoly->totloop, 0);
 
                if (!f) {
                        printf("Warning! Bad face in mesh"
@@ -241,7 +240,6 @@
                j = 0;
                BM_ITER(l, &iter, bm, BM_LOOPS_OF_FACE, f) {
                        CustomData_to_bmesh_block(&me->ldata, &bm->ldata, 
mpoly->loopstart+j, &l->head.data);
-                       li++;
                        j++;
                }
 

Modified: branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c    
2011-10-13 04:44:39 UTC (rev 40980)
+++ branches/bmesh/blender/source/blender/editors/mesh/bmesh_tools.c    
2011-10-13 04:58:34 UTC (rev 40981)
@@ -2355,7 +2355,6 @@
        BMLoop *l;
        BMEdge *e, *e2, *closest = NULL;
        BMVert *v, *ripvert = NULL;
-       BMFace *f;
        int side = 0, i, singlesel = 0;
        float projectMat[4][4], fmval[3] = {event->mval[0], event->mval[1]};
        float dist = FLT_MAX, d;

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

Reply via email to