diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-03-31 15:21:21 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-03-31 15:21:21 +0400 |
commit | c7183d2622a0cba5e07653daa4a5aca9ad9ed9cc (patch) | |
tree | 9c59cb1fef580eedefaf22d15fa2b1be26c00bb8 /source/blender/modifiers/intern/MOD_smoke.c | |
parent | 75cd392a570ded2c8b1e2abf1d98383aaab706a5 (diff) |
library linked modifiers were not having their ID linked expanded properly.
was missing array cap ends, wave map object and shrinkwrap objects.
use modifiers_foreachIDLink() rather then having to list all modifiers ID's in this function.
also add foreachIDLink() for smoke domain.
This fixes a bug where a linked object has as a modifier using an indirectly linked object for the missing cases mentioned above.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_smoke.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_smoke.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_smoke.c b/source/blender/modifiers/intern/MOD_smoke.c index b13d86a609e..d8e94e92bfa 100644 --- a/source/blender/modifiers/intern/MOD_smoke.c +++ b/source/blender/modifiers/intern/MOD_smoke.c @@ -147,6 +147,17 @@ static void updateDepgraph(ModifierData *md, DagForest *forest, } } +static void foreachIDLink(ModifierData *md, Object *ob, + IDWalkFunc walk, void *userData) +{ + SmokeModifierData *smd = (SmokeModifierData*) md; + + if(smd->type==MOD_SMOKE_TYPE_DOMAIN && smd->domain) { + walk(userData, ob, (ID **)&smd->domain->coll_group); + walk(userData, ob, (ID **)&smd->domain->fluid_group); + walk(userData, ob, (ID **)&smd->domain->eff_group); + } +} ModifierTypeInfo modifierType_Smoke = { /* name */ "Smoke", @@ -172,5 +183,5 @@ ModifierTypeInfo modifierType_Smoke = { /* dependsOnTime */ dependsOnTime, /* dependsOnNormals */ NULL, /* foreachObjectLink */ NULL, - /* foreachIDLink */ NULL, + /* foreachIDLink */ foreachIDLink, }; |