[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [12689] trunk/blender/source/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Nov 27 13:35:00 CET 2007


Revision: 12689
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=12689
Author:   blendix
Date:     2007-11-27 13:34:59 +0100 (Tue, 27 Nov 2007)

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

Particles
=========

- Bugfix: synchronize modifier enable with particle enable flag to
  prevent crash.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/render/intern/source/convertblender.c
    trunk/blender/source/blender/src/buttons_editing.c

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2007-11-27 11:57:18 UTC (rev 12688)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2007-11-27 12:34:59 UTC (rev 12689)
@@ -5089,7 +5089,7 @@
 	ParticleSystemModifierData *psmd= (ParticleSystemModifierData*) md;
 	ParticleSystem * psys=0;
 	int totvert=0,totedge=0,totface=0,needsFree=0;
-	
+
 	if(ob->particlesystem.first)
 		psys=psmd->psys;
 	else
@@ -6759,9 +6759,10 @@
 
 		mti = INIT_TYPE(ParticleSystem);
 		mti->type = eModifierTypeType_OnlyDeform;
-		mti->flags = eModifierTypeFlag_AcceptsMesh;
+		mti->flags = eModifierTypeFlag_AcceptsMesh
+					| eModifierTypeFlag_SupportsMapping;
 #if 0
-					|eModifierTypeFlag_SupportsEditmode
+					| eModifierTypeFlag_SupportsEditmode;
 					|eModifierTypeFlag_EnableInEditmode;
 #endif
 		mti->initData = particleSystemModifier_initData;
@@ -6850,9 +6851,8 @@
 {
 	ModifierTypeInfo *mti = modifierType_getInfo(md->type);
 
-	return (	(mti->flags & eModifierTypeFlag_SupportsEditmode) &&
-				(	(mti->type==eModifierTypeType_OnlyDeform ||
-					(mti->flags & eModifierTypeFlag_SupportsMapping))) );
+	return (mti->type==eModifierTypeType_OnlyDeform ||
+	        (mti->flags & eModifierTypeFlag_SupportsMapping));
 }
 
 ModifierData *modifiers_findByType(Object *ob, ModifierType type)

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2007-11-27 11:57:18 UTC (rev 12688)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2007-11-27 12:34:59 UTC (rev 12689)
@@ -1755,11 +1755,13 @@
 			return 1;
 	}
 
+	psmd= psys_get_modifier(ob,psys);
+	if(!(psmd->modifier.mode & eModifierMode_Render))
+		return 0;
+
 	psys->flag|=PSYS_DRAWING;
 
 	BLI_srandom(psys->seed);
-
-	psmd= psys_get_modifier(ob,psys);
 	
 	ma= give_render_material(re, ob, part->omat);
 

Modified: trunk/blender/source/blender/src/buttons_editing.c
===================================================================
--- trunk/blender/source/blender/src/buttons_editing.c	2007-11-27 11:57:18 UTC (rev 12688)
+++ trunk/blender/source/blender/src/buttons_editing.c	2007-11-27 12:34:59 UTC (rev 12689)
@@ -1609,6 +1609,16 @@
 	emd->flag |= eExplodeFlag_CalcFaces;
 }
 
+static void modifiers_psysEnable(void *ob_v, void *md_v)
+{
+	ParticleSystemModifierData *psmd = (ParticleSystemModifierData*) md_v;
+
+	if(psmd->modifier.mode & eModifierMode_Realtime)
+		psmd->psys->flag |= PSYS_ENABLED;
+	else
+		psmd->psys->flag &= ~PSYS_ENABLED;
+}
+
 static void draw_modifier(uiBlock *block, Object *ob, ModifierData *md, int *xco, int *yco, int index, int cageIndex, int lastCageIndex)
 {
 	ModifierTypeInfo *mti = modifierType_getInfo(md->type);
@@ -1647,7 +1657,9 @@
 			/* Softbody not allowed in this situation, enforce! */
 		if (md->type!=eModifierType_Softbody || !(ob->pd && ob->pd->deflect)) {
 			uiDefIconButBitI(block, TOG, eModifierMode_Render, B_MODIFIER_RECALC, ICON_SCENE, x+10+buttonWidth-60, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during rendering");
-			uiDefIconButBitI(block, TOG, eModifierMode_Realtime, B_MODIFIER_RECALC, VICON_VIEW3D, x+10+buttonWidth-40, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
+			but= uiDefIconButBitI(block, TOG, eModifierMode_Realtime, B_MODIFIER_RECALC, VICON_VIEW3D, x+10+buttonWidth-40, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during interactive display");
+			if (md->type==eModifierType_ParticleSystem)
+				uiButSetFunc(but, modifiers_psysEnable, ob, md);
 			if (mti->flags&eModifierTypeFlag_SupportsEditmode) {
 				uiDefIconButBitI(block, TOG, eModifierMode_Editmode, B_MODIFIER_RECALC, VICON_EDIT, x+10+buttonWidth-20, y-1, 19, 19,&md->mode, 0, 0, 1, 0, "Enable modifier during Editmode (only if enabled for display)");
 			}





More information about the Bf-blender-cvs mailing list