[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14149] trunk/blender/source/blender/src/ buttons_editing.c:

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Mar 17 11:15:39 CET 2008


Revision: 14149
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14149
Author:   blendix
Date:     2008-03-17 11:15:38 +0100 (Mon, 17 Mar 2008)

Log Message:
-----------

Fix for bug #8537: converting particles to a mesh didn't work well.

Modified Paths:
--------------
    trunk/blender/source/blender/src/buttons_editing.c

Modified: trunk/blender/source/blender/src/buttons_editing.c
===================================================================
--- trunk/blender/source/blender/src/buttons_editing.c	2008-03-17 03:50:22 UTC (rev 14148)
+++ trunk/blender/source/blender/src/buttons_editing.c	2008-03-17 10:15:38 UTC (rev 14149)
@@ -1254,9 +1254,9 @@
 	ParticleCacheKey *key, **cache;
 	Mesh *me;
 	MVert *mvert;
-	MFace *mface;
+	MEdge *medge;
 	int a, k, kmax;
-	int totvert=0, totface=0, cvert=0;
+	int totvert=0, totedge=0, cvert=0;
 	int totpart=0, totchild=0;
 
 	if(md->type != eModifierType_ParticleSystem) return;
@@ -1277,15 +1277,15 @@
 	cache= psys->pathcache;
 	for(a=0; a<totpart; a++) {
 		key= cache[a];
-		totvert+= (int)(key->col[3])+1;
-		totface+= (int)(key->col[3]);
+		totvert+= key->steps+1;
+		totedge+= key->steps;
 	}
 
 	cache= psys->childcache;
 	for(a=0; a<totchild; a++) {
 		key= cache[a];
-		totvert+= (int)(key->col[3])+1;
-		totface+= (int)(key->col[3]);
+		totvert+= key->steps+1;
+		totedge+= key->steps;
 	}
 
 	if(totvert==0) return;
@@ -1295,25 +1295,27 @@
 	me= obn->data;
 	
 	me->totvert= totvert;
-	me->totface= totface;
+	me->totedge= totedge;
 	
 	me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert);
-	me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, totface);
+	me->medge= CustomData_add_layer(&me->edata, CD_MEDGE, CD_CALLOC, NULL, totedge);
+	me->mface= CustomData_add_layer(&me->fdata, CD_MFACE, CD_CALLOC, NULL, 0);
 	
 	mvert= me->mvert;
-	mface= me->mface;
+	medge= me->medge;
 
 	/* copy coordinates */
 	cache= psys->pathcache;
-	for(a=0; a<totpart; a++){
+	for(a=0; a<totpart; a++) {
 		key= cache[a];
-		kmax= (int)(key->col[3]);
+		kmax= key->steps;
 		for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
 			VECCOPY(mvert->co,key->co);
-			if(k){
-				mface->v1= cvert-1;
-				mface->v2= cvert;
-				mface++;
+			if(k) {
+				medge->v1= cvert-1;
+				medge->v2= cvert;
+				medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
+				medge++;
 			}
 		}
 	}
@@ -1321,18 +1323,21 @@
 	cache=psys->childcache;
 	for(a=0; a<totchild; a++) {
 		key=cache[a];
-		kmax=(int)(key->col[3]);
+		kmax=key->steps;
 		for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
 			VECCOPY(mvert->co,key->co);
-			if(k){
-				mface->v1=cvert-1;
-				mface->v2=cvert;
-				mface++;
+			if(k) {
+				medge->v1=cvert-1;
+				medge->v2=cvert;
+				medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
+				medge++;
 			}
 		}
 	}
-	make_edges(me, 0);
+
+	DAG_scene_sort(G.scene);
 }
+
 static void modifiers_applyModifier(void *obv, void *mdv)
 {
 	Object *ob = obv;





More information about the Bf-blender-cvs mailing list