From 958cf139f6587df631944f6ec0fcb4111c7e58fa Mon Sep 17 00:00:00 2001 From: Daniel Genrich Date: Wed, 4 Jul 2012 16:55:17 +0000 Subject: Bugfix Smoke / DynamicPaint: Missing update call from depsgraph was missing when force fields were used. --- source/blender/blenkernel/BKE_modifier.h | 1 + source/blender/blenkernel/intern/depsgraph.c | 6 +++++- source/blender/blenkernel/intern/modifier.c | 7 +++++++ 3 files changed, 13 insertions(+), 1 deletion(-) (limited to 'source') diff --git a/source/blender/blenkernel/BKE_modifier.h b/source/blender/blenkernel/BKE_modifier.h index 551a31509a3..3b675f3b620 100644 --- a/source/blender/blenkernel/BKE_modifier.h +++ b/source/blender/blenkernel/BKE_modifier.h @@ -345,6 +345,7 @@ void modifiers_clearErrors(struct Object *ob); int modifiers_getCageIndex(struct Scene *scene, struct Object *ob, int *lastPossibleCageIndex_r, int virtual_); +int modifiers_isModifierEnabled(struct Object *ob, int modifierType); int modifiers_isSoftbodyEnabled(struct Object *ob); int modifiers_isClothEnabled(struct Object *ob); int modifiers_isParticleEnabled(struct Object *ob); diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index a1553a24ad2..2faa882e3ea 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -559,7 +559,11 @@ static void build_dag_object(DagForest *dag, DagNode *scenenode, Scene *scene, O /* softbody collision */ if ((ob->type == OB_MESH) || (ob->type == OB_CURVE) || (ob->type == OB_LATTICE)) { - if (modifiers_isSoftbodyEnabled(ob) || modifiers_isClothEnabled(ob) || ob->particlesystem.first) + if (modifiers_isModifierEnabled(ob, eModifierType_Softbody) + || modifiers_isModifierEnabled(ob, eModifierType_Cloth) + || modifiers_isModifierEnabled(ob, eModifierType_Smoke) + || modifiers_isModifierEnabled(ob, eModifierType_DynamicPaint) + || ob->particlesystem.first) dag_add_collision_field_relation(dag, scene, ob, node); /* TODO: use effectorweight->group */ } diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index b4c30203000..65538e5bea2 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -331,6 +331,13 @@ int modifiers_isClothEnabled(Object *ob) return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)); } +int modifiers_isModifierEnabled(Object *ob, int modifierType) +{ + ModifierData *md = modifiers_findByType(ob, modifierType); + + return (md && md->mode & (eModifierMode_Realtime | eModifierMode_Render)); +} + int modifiers_isParticleEnabled(Object *ob) { ModifierData *md = modifiers_findByType(ob, eModifierType_ParticleSystem); -- cgit v1.2.3