[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15973] trunk/blender/source/blender/ blenkernel: Fix for [#17421] Issue with Displace modifier not updating with

Ben Batt benbatt at gmail.com
Tue Aug 5 16:42:05 CEST 2008


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;
+	}
+}
+
+/* ------------------------------------------------------------------------- */





More information about the Bf-blender-cvs mailing list