diff options
author | Bastien Montagne <bastien@blender.org> | 2020-04-11 18:12:56 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2020-04-11 18:16:58 +0300 |
commit | 85de07e64c967e7d80e57d3df2db08fdec16794a (patch) | |
tree | 37497e1e0ee9924e947c1c93332eaf0b7dae3c8d /source/blender/modifiers/intern/MOD_wave.c | |
parent | 5cc7036aa39506f3af3608ad450f1fdf6b2f3347 (diff) |
Sanitize and cleanup a bit depsgraph relations building in some modifiers.
This commit mainly:
* Removes some uneeded dependencies to geometry of other objects (since
we only use positions of those objects...).
* Ensures `DEG_add_modifier_to_transform_relation` is only called once
per modifier (in one case at least it could be called twice).
* For modifiers using texture mask, only add dependencies to object used
to generate texture coordinates when there is actually a texture set.
No behavior change expected from this commit...
Diffstat (limited to 'source/blender/modifiers/intern/MOD_wave.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_wave.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c index 02950870e8e..fd481018cc2 100644 --- a/source/blender/modifiers/intern/MOD_wave.c +++ b/source/blender/modifiers/intern/MOD_wave.c @@ -98,18 +98,28 @@ static void foreachTexLink(ModifierData *md, Object *ob, TexWalkFunc walk, void static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { WaveModifierData *wmd = (WaveModifierData *)md; + bool need_transform_relation = false; if (wmd->objectcenter != NULL) { DEG_add_object_relation(ctx->node, wmd->objectcenter, DEG_OB_COMP_TRANSFORM, "Wave Modifier"); - } - MOD_depsgraph_update_object_bone_relation( - ctx->node, wmd->map_object, wmd->map_bone, "Wave Modifier"); - if (wmd->objectcenter != NULL || wmd->map_object != NULL) { - DEG_add_modifier_to_transform_relation(ctx->node, "Wave Modifier"); + need_transform_relation = true; } if (wmd->texture != NULL) { DEG_add_generic_id_relation(ctx->node, &wmd->texture->id, "Wave Modifier"); + + if ((wmd->texmapping == MOD_DISP_MAP_OBJECT) && wmd->map_object != NULL) { + MOD_depsgraph_update_object_bone_relation( + ctx->node, wmd->map_object, wmd->map_bone, "Wave Modifier"); + need_transform_relation = true; + } + else if (wmd->texmapping == MOD_DISP_MAP_GLOBAL) { + need_transform_relation = true; + } + } + + if (need_transform_relation) { + DEG_add_modifier_to_transform_relation(ctx->node, "Wave Modifier"); } } |