[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