[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