[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39342] trunk/blender/source/blender: Modifiers: add callback to loop over each texture assigned to a modifier.

Brecht Van Lommel brechtvanlommel at pandora.be
Fri Aug 12 20:11:22 CEST 2011


Revision: 39342
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39342
Author:   blendix
Date:     2011-08-12 18:11:22 +0000 (Fri, 12 Aug 2011)
Log Message:
-----------
Modifiers: add callback to loop over each texture assigned to a modifier.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_modifier.h
    trunk/blender/source/blender/blenkernel/intern/modifier.c
    trunk/blender/source/blender/modifiers/intern/MOD_armature.c
    trunk/blender/source/blender/modifiers/intern/MOD_array.c
    trunk/blender/source/blender/modifiers/intern/MOD_bevel.c
    trunk/blender/source/blender/modifiers/intern/MOD_boolean.c
    trunk/blender/source/blender/modifiers/intern/MOD_build.c
    trunk/blender/source/blender/modifiers/intern/MOD_cast.c
    trunk/blender/source/blender/modifiers/intern/MOD_cloth.c
    trunk/blender/source/blender/modifiers/intern/MOD_collision.c
    trunk/blender/source/blender/modifiers/intern/MOD_curve.c
    trunk/blender/source/blender/modifiers/intern/MOD_decimate.c
    trunk/blender/source/blender/modifiers/intern/MOD_displace.c
    trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c
    trunk/blender/source/blender/modifiers/intern/MOD_explode.c
    trunk/blender/source/blender/modifiers/intern/MOD_fluidsim.c
    trunk/blender/source/blender/modifiers/intern/MOD_hook.c
    trunk/blender/source/blender/modifiers/intern/MOD_lattice.c
    trunk/blender/source/blender/modifiers/intern/MOD_mask.c
    trunk/blender/source/blender/modifiers/intern/MOD_meshdeform.c
    trunk/blender/source/blender/modifiers/intern/MOD_mirror.c
    trunk/blender/source/blender/modifiers/intern/MOD_multires.c
    trunk/blender/source/blender/modifiers/intern/MOD_none.c
    trunk/blender/source/blender/modifiers/intern/MOD_particleinstance.c
    trunk/blender/source/blender/modifiers/intern/MOD_particlesystem.c
    trunk/blender/source/blender/modifiers/intern/MOD_screw.c
    trunk/blender/source/blender/modifiers/intern/MOD_shapekey.c
    trunk/blender/source/blender/modifiers/intern/MOD_shrinkwrap.c
    trunk/blender/source/blender/modifiers/intern/MOD_simpledeform.c
    trunk/blender/source/blender/modifiers/intern/MOD_smoke.c
    trunk/blender/source/blender/modifiers/intern/MOD_smooth.c
    trunk/blender/source/blender/modifiers/intern/MOD_softbody.c
    trunk/blender/source/blender/modifiers/intern/MOD_solidify.c
    trunk/blender/source/blender/modifiers/intern/MOD_subsurf.c
    trunk/blender/source/blender/modifiers/intern/MOD_surface.c
    trunk/blender/source/blender/modifiers/intern/MOD_uvproject.c
    trunk/blender/source/blender/modifiers/intern/MOD_warp.c
    trunk/blender/source/blender/modifiers/intern/MOD_wave.c

Modified: trunk/blender/source/blender/blenkernel/BKE_modifier.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_modifier.h	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/blenkernel/BKE_modifier.h	2011-08-12 18:11:22 UTC (rev 39342)
@@ -101,6 +101,7 @@
 
 typedef void (*ObjectWalkFunc)(void *userData, struct Object *ob, struct Object **obpoin);
 typedef void (*IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin);
+typedef void (*TexWalkFunc)(void *userData, struct Object *ob, struct ModifierData *md, const char *propname);
 
 typedef struct ModifierTypeInfo {
 	/* The user visible name for this modifier */
@@ -284,6 +285,16 @@
 	 */
 	void (*foreachIDLink)(struct ModifierData *md, struct Object *ob,
 						  IDWalkFunc walk, void *userData);
+
+	/* Should call the given walk function for each texture that the
+	 * modifier data stores. This is used for finding all textures in
+	 * the context for the UI.
+	 *
+	 * This function is optional. If it is not present, it will be
+	 * assumed the modifier has no textures.
+	 */
+	void (*foreachTexLink)(struct ModifierData *md, struct Object *ob,
+						  TexWalkFunc walk, void *userData);
 } ModifierTypeInfo;
 
 ModifierTypeInfo *modifierType_getInfo (ModifierType type);
@@ -315,6 +326,10 @@
 void          modifiers_foreachIDLink(struct Object *ob,
 									  IDWalkFunc walk,
 									  void *userData);
+void          modifiers_foreachTexLink(struct Object *ob,
+									  TexWalkFunc walk,
+									  void *userData);
+
 struct ModifierData  *modifiers_findByType(struct Object *ob, ModifierType type);
 struct ModifierData  *modifiers_findByName(struct Object *ob, const char *name);
 void          modifiers_clearErrors(struct Object *ob);

Modified: trunk/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/modifier.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/blenkernel/intern/modifier.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -195,6 +195,18 @@
 	}
 }
 
+void modifiers_foreachTexLink(Object *ob, TexWalkFunc walk, void *userData)
+{
+	ModifierData *md = ob->modifiers.first;
+
+	for (; md; md=md->next) {
+		ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+		if(mti->foreachTexLink)
+			mti->foreachTexLink(md, ob, walk, userData);
+	}
+}
+
 void modifier_copyData(ModifierData *md, ModifierData *target)
 {
 	ModifierTypeInfo *mti = modifierType_getInfo(md->type);

Modified: trunk/blender/source/blender/modifiers/intern/MOD_armature.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_armature.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_armature.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -213,4 +213,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_array.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_array.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_array.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -826,4 +826,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_bevel.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_bevel.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_bevel.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -150,4 +150,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_boolean.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_boolean.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_boolean.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -197,4 +197,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_build.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_build.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_build.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -299,5 +299,6 @@
 	/* dependsOnTime */     dependsOnTime,
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
-	/* foreachIDLink */     NULL
+	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_cast.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_cast.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_cast.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -632,4 +632,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_cloth.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_cloth.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_cloth.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -229,4 +229,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     foreachIDLink,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_collision.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_collision.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_collision.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -267,4 +267,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_curve.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_curve.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_curve.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -162,4 +162,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_decimate.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_decimate.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_decimate.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -218,4 +218,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_displace.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_displace.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_displace.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -134,6 +134,12 @@
 	foreachObjectLink(md, ob, (ObjectWalkFunc)walk, userData);
 }
 
+static void foreachTexLink(ModifierData *md, Object *ob,
+					   TexWalkFunc walk, void *userData)
+{
+	walk(userData, ob, md, "texture");
+}
+
 static int isDisabled(ModifierData *md, int UNUSED(useRenderParams))
 {
 	DisplaceModifierData *dmd = (DisplaceModifierData*) md;
@@ -283,4 +289,5 @@
 	/* dependsOnNormals */	dependsOnNormals,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     foreachIDLink,
+	/* foreachTexLink */    foreachTexLink,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_edgesplit.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -1311,4 +1311,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_explode.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_explode.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_explode.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -1037,4 +1037,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_fluidsim.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_fluidsim.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_fluidsim.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -162,4 +162,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ NULL,
 	/* foreachIDLink */     NULL,
+	/* foreachTexLink */    NULL,
 };

Modified: trunk/blender/source/blender/modifiers/intern/MOD_hook.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_hook.c	2011-08-12 18:10:31 UTC (rev 39341)
+++ trunk/blender/source/blender/modifiers/intern/MOD_hook.c	2011-08-12 18:11:22 UTC (rev 39342)
@@ -289,4 +289,5 @@
 	/* dependsOnNormals */	NULL,
 	/* foreachObjectLink */ foreachObjectLink,
 	/* foreachIDLink */     NULL,

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list