Revision: 15973
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15973
Author:   artificer
Date:     2008-08-05 16:42:04 +0200 (Tue, 05 Aug 2008)

Log Message:
-----------
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.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_texture.h
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/blenkernel/intern/texture.c

Modified: trunk/blender/source/blender/blenkernel/BKE_texture.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_texture.h       2008-08-05 
13:05:11 UTC (rev 15972)
+++ trunk/blender/source/blender/blenkernel/BKE_texture.h       2008-08-05 
14:42:04 UTC (rev 15973)
@@ -73,6 +73,7 @@
 struct EnvMap *BKE_add_envmap(void);
 struct EnvMap *BKE_copy_envmap(struct EnvMap *env);
 
+int     BKE_texture_dependsOnTime(const struct Tex *texture);
 
 #endif
 

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c   2008-08-05 
13:05:11 UTC (rev 15972)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c   2008-08-05 
14:42:04 UTC (rev 15973)
@@ -2999,6 +2999,20 @@
        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 @@
                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;

Modified: trunk/blender/source/blender/blenkernel/intern/texture.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/texture.c    2008-08-05 
13:05:11 UTC (rev 15972)
+++ trunk/blender/source/blender/blenkernel/intern/texture.c    2008-08-05 
14:42:04 UTC (rev 15973)
@@ -845,3 +845,31 @@
 }
 
 /* ------------------------------------------------------------------------- */
+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;
+       }
+}
+
+/* ------------------------------------------------------------------------- */


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to