[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [28948] trunk/blender/source/blender: Fix [#21521] Displacement modifier does not update when modifing texture

Matt Ebb matt at mke3.net
Mon May 24 09:30:50 CEST 2010


Revision: 28948
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28948
Author:   broken
Date:     2010-05-24 09:30:50 +0200 (Mon, 24 May 2010)

Log Message:
-----------
Fix [#21521] Displacement modifier does not update when modifing texture

Depgraph now handles texture dependencies - textures can affect objects/data via modifiers.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/depsgraph.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c

Modified: trunk/blender/source/blender/blenkernel/intern/depsgraph.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2010-05-24 07:14:55 UTC (rev 28947)
+++ trunk/blender/source/blender/blenkernel/intern/depsgraph.c	2010-05-24 07:30:50 UTC (rev 28948)
@@ -2250,6 +2250,16 @@
 	}
 }
 
+static void dag_id_flush_update__isDependentTexture(void *userData, Object *ob, ID **idpoin)
+{
+	struct { ID *id; int is_dependent; } *data = userData;
+	
+	if(*idpoin && GS((*idpoin)->name)==ID_TE) {
+		if (data->id == (*idpoin))
+			data->is_dependent = 1;
+	}
+}
+
 void DAG_id_flush_update(ID *id, short flag)
 {
 	Main *bmain= G.main;
@@ -2304,6 +2314,17 @@
 			}
 		}
 		
+		/* set flags based on textures - can influence depgraph via modifiers */
+		if(idtype == ID_TE) {
+			for(obt=bmain->object.first; obt; obt= obt->id.next) {
+				struct { ID *id; int is_dependent; } data = {id, 0};
+				
+				modifiers_foreachIDLink(obt, dag_id_flush_update__isDependentTexture, &data);
+				if (data.is_dependent)
+					obt->recalc |= OB_RECALC_DATA;
+			}
+		}
+		
 		/* set flags based on ShapeKey */
 		if(idtype == ID_KE) {
 			for(obt=bmain->object.first; obt; obt= obt->id.next) {

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2010-05-24 07:14:55 UTC (rev 28947)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2010-05-24 07:30:50 UTC (rev 28948)
@@ -610,6 +610,10 @@
 			 * more context than just the region */
 			ED_region_tag_redraw(ar);
 			break;
+		case NC_TEXTURE:	
+			/* same as above */
+			ED_region_tag_redraw(ar);
+			break;
 		case NC_SPACE:
 			if(wmn->data == ND_SPACE_VIEW3D) {
 				if (wmn->subtype == NS_VIEW3D_GPU) {





More information about the Bf-blender-cvs mailing list