[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26288] trunk/blender/source/blender/ editors: Fix #20803: convert button in particle modifier didn't work

Brecht Van Lommel brecht at blender.org
Tue Jan 26 12:15:46 CET 2010


Revision: 26288
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26288
Author:   blendix
Date:     2010-01-26 12:15:45 +0100 (Tue, 26 Jan 2010)

Log Message:
-----------
Fix #20803: convert button in particle modifier didn't work
for creating duplis yet.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_templates.c
    trunk/blender/source/blender/editors/object/object_add.c
    trunk/blender/source/blender/editors/object/object_modifier.c

Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-26 11:14:44 UTC (rev 26287)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c	2010-01-26 11:15:45 UTC (rev 26288)
@@ -797,8 +797,10 @@
 			if (md->type==eModifierType_ParticleSystem) {
 		    	ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys;
 				
-	    		if (!(ob->mode & OB_MODE_PARTICLE_EDIT)) {
-					if(ELEM3(psys->part->ren_as, PART_DRAW_PATH, PART_DRAW_GR, PART_DRAW_OB) && psys->pathcache)
+	    		if (!(ob->mode & OB_MODE_PARTICLE_EDIT) && psys->pathcache) {
+					if(ELEM(psys->part->ren_as, PART_DRAW_GR, PART_DRAW_OB))
+						uiItemO(row, "Convert", 0, "OBJECT_OT_duplicates_make_real");
+					else if(psys->part->ren_as == PART_DRAW_PATH)
 						uiItemO(row, "Convert", 0, "OBJECT_OT_modifier_convert");
 				}
 			}

Modified: trunk/blender/source/blender/editors/object/object_add.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_add.c	2010-01-26 11:14:44 UTC (rev 26287)
+++ trunk/blender/source/blender/editors/object/object_add.c	2010-01-26 11:15:45 UTC (rev 26288)
@@ -1152,7 +1152,6 @@
 	ot->idname= "OBJECT_OT_duplicates_make_real";
 	
 	/* api callbacks */
-	ot->invoke= WM_operator_confirm;
 	ot->exec= object_duplicates_make_real_exec;
 	
 	ot->poll= ED_operator_scene_editable;

Modified: trunk/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_modifier.c	2010-01-26 11:14:44 UTC (rev 26287)
+++ trunk/blender/source/blender/editors/object/object_modifier.c	2010-01-26 11:15:45 UTC (rev 26288)
@@ -265,78 +265,73 @@
 	psys=((ParticleSystemModifierData *)md)->psys;
 	part= psys->part;
 
-	if(part->ren_as == PART_DRAW_GR || part->ren_as == PART_DRAW_OB) {
-		; // XXX make_object_duplilist_real(NULL);
-	}
-	else {
-		if(part->ren_as != PART_DRAW_PATH || psys->pathcache == 0)
-			return 0;
+	if(part->ren_as != PART_DRAW_PATH || psys->pathcache == 0)
+		return 0;
 
-		totpart= psys->totcached;
-		totchild= psys->totchildcache;
+	totpart= psys->totcached;
+	totchild= psys->totchildcache;
 
-		if(totchild && (part->draw&PART_DRAW_PARENT)==0)
-			totpart= 0;
+	if(totchild && (part->draw&PART_DRAW_PARENT)==0)
+		totpart= 0;
 
-		/* count */
-		cache= psys->pathcache;
-		for(a=0; a<totpart; a++) {
-			key= cache[a];
-			totvert+= key->steps+1;
-			totedge+= key->steps;
-		}
+	/* count */
+	cache= psys->pathcache;
+	for(a=0; a<totpart; a++) {
+		key= cache[a];
+		totvert+= key->steps+1;
+		totedge+= key->steps;
+	}
 
-		cache= psys->childcache;
-		for(a=0; a<totchild; a++) {
-			key= cache[a];
-			totvert+= key->steps+1;
-			totedge+= key->steps;
-		}
+	cache= psys->childcache;
+	for(a=0; a<totchild; a++) {
+		key= cache[a];
+		totvert+= key->steps+1;
+		totedge+= key->steps;
+	}
 
-		if(totvert==0) return 0;
+	if(totvert==0) return 0;
 
-		/* add new mesh */
-		obn= add_object(scene, OB_MESH);
-		me= obn->data;
-		
-		me->totvert= totvert;
-		me->totedge= totedge;
-		
-		me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert);
-		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;
-		medge= me->medge;
+	/* add new mesh */
+	obn= add_object(scene, OB_MESH);
+	me= obn->data;
+	
+	me->totvert= totvert;
+	me->totedge= totedge;
+	
+	me->mvert= CustomData_add_layer(&me->vdata, CD_MVERT, CD_CALLOC, NULL, totvert);
+	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;
+	medge= me->medge;
 
-		/* copy coordinates */
-		cache= psys->pathcache;
-		for(a=0; a<totpart; a++) {
-			key= cache[a];
-			kmax= key->steps;
-			for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
-				VECCOPY(mvert->co,key->co);
-				if(k) {
-					medge->v1= cvert-1;
-					medge->v2= cvert;
-					medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
-					medge++;
-				}
+	/* copy coordinates */
+	cache= psys->pathcache;
+	for(a=0; a<totpart; a++) {
+		key= cache[a];
+		kmax= key->steps;
+		for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
+			VECCOPY(mvert->co,key->co);
+			if(k) {
+				medge->v1= cvert-1;
+				medge->v2= cvert;
+				medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
+				medge++;
 			}
 		}
+	}
 
-		cache=psys->childcache;
-		for(a=0; a<totchild; a++) {
-			key=cache[a];
-			kmax=key->steps;
-			for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
-				VECCOPY(mvert->co,key->co);
-				if(k) {
-					medge->v1=cvert-1;
-					medge->v2=cvert;
-					medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
-					medge++;
-				}
+	cache=psys->childcache;
+	for(a=0; a<totchild; a++) {
+		key=cache[a];
+		kmax=key->steps;
+		for(k=0; k<=kmax; k++,key++,cvert++,mvert++) {
+			VECCOPY(mvert->co,key->co);
+			if(k) {
+				medge->v1=cvert-1;
+				medge->v2=cvert;
+				medge->flag= ME_EDGEDRAW|ME_EDGERENDER|ME_LOOSEEDGE;
+				medge++;
 			}
 		}
 	}





More information about the Bf-blender-cvs mailing list