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:
authorMatt Ebb <matt@mke3.net>2010-03-15 07:54:31 +0300
committerMatt Ebb <matt@mke3.net>2010-03-15 07:54:31 +0300
commite38139552243865f77f2da1e78ad3b8f2291926d (patch)
treee302384eec1a76225b15165ce2ad4207700dd949 /source/blender/editors/space_node/node_draw.c
parent72cc38e05d5ab11c4b14161df451e6266725b025 (diff)
Fix [#21288] Colour Ramp doesn't update output
Moved color ramp RNA to rna_color.c, was very texture-centric before.
Diffstat (limited to 'source/blender/editors/space_node/node_draw.c')
-rw-r--r--source/blender/editors/space_node/node_draw.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index 5928e5cf20e..3f53b80bd22 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -121,6 +121,41 @@ void ED_node_changed_update(ID *id, bNode *node)
}
}
+static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup)
+{
+ bNode *node;
+
+ if(ntree == lookup)
+ return 1;
+
+ for(node=ntree->nodes.first; node; node=node->next)
+ if(node->type == NODE_GROUP && node->id)
+ if(has_nodetree((bNodeTree*)node->id, lookup))
+ return 1;
+
+ return 0;
+}
+
+void ED_node_generic_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node)
+{
+ Material *ma;
+ Tex *tex;
+ Scene *sce;
+
+ /* look through all datablocks, to support groups */
+ for(ma=bmain->mat.first; ma; ma=ma->id.next)
+ if(ma->nodetree && ma->use_nodes && has_nodetree(ma->nodetree, ntree))
+ ED_node_changed_update(&ma->id, node);
+
+ for(tex=bmain->tex.first; tex; tex=tex->id.next)
+ if(tex->nodetree && tex->use_nodes && has_nodetree(tex->nodetree, ntree))
+ ED_node_changed_update(&tex->id, node);
+
+ for(sce=bmain->scene.first; sce; sce=sce->id.next)
+ if(sce->nodetree && sce->use_nodes && has_nodetree(sce->nodetree, ntree))
+ ED_node_changed_update(&sce->id, node);
+}
+
static void do_node_internal_buttons(bContext *C, void *node_v, int event)
{
if(event==B_NODE_EXEC) {