diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-11-27 23:14:35 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-11-27 23:17:06 +0300 |
commit | 9d4129eee649a62c5adb130dc1a6ebd6ca405a89 (patch) | |
tree | 94a812a6b2cf0db7128d4b76146f5c57ac7d8004 /source/blender/modifiers/intern/MOD_uvproject.c | |
parent | 0ebb632f698b3c0fbb7f9f95ccfdf7eb36f13ede (diff) |
Modifiers: fix bunch of missing 'self transform' deg relations.
When a modifier depends on some other object's position, then it also
depends in its own position, this has to be also told to depsgraph.
Fixes several modifiers where moving target would update the modifier,
while moving modified object itself would not.
Diffstat (limited to 'source/blender/modifiers/intern/MOD_uvproject.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_uvproject.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/modifiers/intern/MOD_uvproject.c b/source/blender/modifiers/intern/MOD_uvproject.c index 3aaf67792c6..8c9fbefa27a 100644 --- a/source/blender/modifiers/intern/MOD_uvproject.c +++ b/source/blender/modifiers/intern/MOD_uvproject.c @@ -104,12 +104,16 @@ static void foreachIDLink( static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { UVProjectModifierData *umd = (UVProjectModifierData *)md; - int i; - for (i = 0; i < umd->num_projectors; ++i) { + bool do_add_own_transform = false; + for (int i = 0; i < umd->num_projectors; ++i) { if (umd->projectors[i] != NULL) { DEG_add_object_relation(ctx->node, umd->projectors[i], DEG_OB_COMP_TRANSFORM, "UV Project Modifier"); + do_add_own_transform = true; } } + if (do_add_own_transform) { + DEG_add_object_relation(ctx->node, ctx->object, DEG_OB_COMP_TRANSFORM, "UV Project Modifier"); + } } typedef struct Projector { |