Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Batt <benbatt@gmail.com>2008-08-05 18:42:04 +0400
committerBen Batt <benbatt@gmail.com>2008-08-05 18:42:04 +0400
commitb277de28958e8113e2b0ec2f595546fa54b81f3b (patch)
tree1dbce65bec47896763ef2c002f588b2dc9f6a157 /source/blender
parentcd1d46c61d937f63684216f284777f75038f5ed3 (diff)
Fix for [#17421] Issue with Displace modifier not updating with
animated textures I have added a dependsOnTime function for the Displace modifier which checks if the displacement texture has IPOs, is a plugin, or uses an animated image.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_texture.h1
-rw-r--r--source/blender/blenkernel/intern/modifier.c15
-rw-r--r--source/blender/blenkernel/intern/texture.c28
3 files changed, 44 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_texture.h b/source/blender/blenkernel/BKE_texture.h
index fade0f8cbaa..c162a04e055 100644
--- a/source/blender/blenkernel/BKE_texture.h
+++ b/source/blender/blenkernel/BKE_texture.h
@@ -73,6 +73,7 @@ void BKE_free_envmap(struct EnvMap *env);
struct EnvMap *BKE_add_envmap(void);
struct EnvMap *BKE_copy_envmap(struct EnvMap *env);
+int BKE_texture_dependsOnTime(const struct Tex *texture);
#endif
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index 503654717ae..2cb64896d87 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -2999,6 +2999,20 @@ CustomDataMask displaceModifier_requiredDataMask(ModifierData *md)
return dataMask;
}
+static int displaceModifier_dependsOnTime(ModifierData *md)
+{
+ DisplaceModifierData *dmd = (DisplaceModifierData *)md;
+
+ if(dmd->texture)
+ {
+ return BKE_texture_dependsOnTime(dmd->texture);
+ }
+ else
+ {
+ return 0;
+ }
+}
+
static void displaceModifier_foreachObjectLink(ModifierData *md, Object *ob,
ObjectWalkFunc walk, void *userData)
{
@@ -7354,6 +7368,7 @@ ModifierTypeInfo *modifierType_getInfo(ModifierType type)
mti->initData = displaceModifier_initData;
mti->copyData = displaceModifier_copyData;
mti->requiredDataMask = displaceModifier_requiredDataMask;
+ mti->dependsOnTime = displaceModifier_dependsOnTime;
mti->foreachObjectLink = displaceModifier_foreachObjectLink;
mti->foreachIDLink = displaceModifier_foreachIDLink;
mti->updateDepgraph = displaceModifier_updateDepgraph;
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index ad139220785..44342c02676 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -845,3 +845,31 @@ void BKE_free_envmap(EnvMap *env)
}
/* ------------------------------------------------------------------------- */
+int BKE_texture_dependsOnTime(const struct Tex *texture)
+{
+ if(texture->plugin)
+ {
+ // assume all plugins depend on time
+ return 1;
+ }
+ else if(texture->ima)
+ {
+ if(texture->ima->source == IMA_SRC_SEQUENCE ||
+ texture->ima->source == IMA_SRC_MOVIE ||
+ texture->ima->source == IMA_SRC_GENERATED)
+ {
+ return 1;
+ }
+ }
+ else if(texture->ipo)
+ {
+ // assume any ipo means the texture is animated
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+/* ------------------------------------------------------------------------- */