diff options
Diffstat (limited to 'source/blender/modifiers/intern/MOD_fluidsim.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_fluidsim.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/source/blender/modifiers/intern/MOD_fluidsim.c b/source/blender/modifiers/intern/MOD_fluidsim.c index 9f05d357299..8d2774a346f 100644 --- a/source/blender/modifiers/intern/MOD_fluidsim.c +++ b/source/blender/modifiers/intern/MOD_fluidsim.c @@ -44,6 +44,7 @@ #include "BKE_modifier.h" #include "depsgraph_private.h" +#include "DEG_depsgraph_build.h" #include "MOD_fluidsim_util.h" #include "MEM_guardedalloc.h" @@ -126,6 +127,32 @@ static void updateDepgraph( } } +static void updateDepsgraph(ModifierData *md, + struct Main *UNUSED(bmain), + struct Scene *scene, + Object *ob, + struct DepsNodeHandle *node) +{ + FluidsimModifierData *fluidmd = (FluidsimModifierData *) md; + if (fluidmd && fluidmd->fss) { + if (fluidmd->fss->type == OB_FLUIDSIM_DOMAIN) { + Base *base; + for (base = scene->base.first; base; base = base->next) { + Object *ob1 = base->object; + if (ob1 != ob) { + FluidsimModifierData *fluidmdtmp = + (FluidsimModifierData *)modifiers_findByType(ob1, eModifierType_Fluidsim); + + /* Only put dependencies from NON-DOMAIN fluids in here. */ + if (fluidmdtmp && fluidmdtmp->fss && (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN)) { + DEG_add_object_relation(node, ob1, DEG_OB_COMP_TRANSFORM, "Fluidsim Object"); + } + } + } + } + } +} + static bool dependsOnTime(ModifierData *UNUSED(md)) { return true; @@ -154,6 +181,7 @@ ModifierTypeInfo modifierType_Fluidsim = { /* freeData */ freeData, /* isDisabled */ NULL, /* updateDepgraph */ updateDepgraph, + /* updateDepsgraph */ updateDepsgraph, /* dependsOnTime */ dependsOnTime, /* dependsOnNormals */ NULL, /* foreachObjectLink */ NULL, |