[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12305] branches/bmesh/source/blender/ blenkernel/intern/DerivedMesh.c: -> Forgot file in last commit

Geoffrey Bantle hairbat at yahoo.com
Sat Oct 20 17:59:17 CEST 2007


Revision: 12305
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12305
Author:   briggs
Date:     2007-10-20 17:59:16 +0200 (Sat, 20 Oct 2007)

Log Message:
-----------
-> Forgot file in last commit

Whoops. Face select mode should *Really* work now.

Modified Paths:
--------------
    branches/bmesh/source/blender/blenkernel/intern/DerivedMesh.c

Modified: branches/bmesh/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/bmesh/source/blender/blenkernel/intern/DerivedMesh.c	2007-10-20 14:57:16 UTC (rev 12304)
+++ branches/bmesh/source/blender/blenkernel/intern/DerivedMesh.c	2007-10-20 15:59:16 UTC (rev 12305)
@@ -749,16 +749,50 @@
 	emdm->cdraw->endCache(emdm->cdraw);
 }
 
-static void emDM__calcFaceCent(EditFace *efa, float cent[3], float (*vertexCos)[3])
+static void emDM__calcFaceCent(BME_Poly *f, float cent[3], float (*vertexCos)[3])
 {
+        BME_Loop *l;
+		int i;
+		
+		l = f->loopbase;
+		cent[0] = cent[1] = cent[2] = 0.0;
+		i = 0;
+		do {
+			if(vertexCos)
+				VecAddf(cent, cent, vertexCos[l->v->eflag1]);
+			else
+				VecAddf(cent, cent, l->v->co);
 
+			
+			i++;
+			l = l->next;
+		} while (l != f->loopbase);
+		VecMulf(cent, 1.0f/(float)i);
 }
+
 static void emDM_foreachMappedFaceCenter(DerivedMesh *dm, void (*func)(void *userData, int index, float *co, float *no), void *userData)
 {
 	EditBMeshDerivedMesh *emdm = (EditBMeshDerivedMesh*) dm;
-	emdm->bmesh = emdm->bmesh;
+	BME_Mesh *bm = emdm->bmesh;
+	BME_Vert *eve;
+	BME_Poly *efa;
+	BME_Loop *l;
+	float cent[3];
+	int i;
 
+	if (emdm->vertexCos) {
+		for (i=0,eve=bm->verts.first; eve; eve= eve->next)
+			eve->eflag1 = i++; //abuse!
+	}
+
+	for(i=0,efa= bm->polys.first; efa; i++,efa= efa->next) {
+		emDM__calcFaceCent(efa, cent, emdm->vertexCos);
+		//func(userData, i, cent, emdm->vertexCos?emdm->faceNos[i]:efa->n);
+		func(userData, i, cent, NULL);
+
+	}
 }
+
 static void emDM_drawMappedFaces(DerivedMesh *dm, int (*setDrawOptions)(void *userData, int index, int *drawSmooth_r), void *userData, int useColors)
 {
 	EditBMeshDerivedMesh *emdm = (EditBMeshDerivedMesh*) dm;
@@ -846,7 +880,7 @@
 		}
 		MEM_freeN(dm);
 	}
-	emdm->recalc_cdraw = 1;
+	//emdm->recalc_cdraw = 1;
 }
 
 static DerivedMesh *getEditMeshDerivedMesh(BME_Mesh *em, Object *ob,





More information about the Bf-blender-cvs mailing list