diff options
author | Ton Roosendaal <ton@blender.org> | 2010-12-20 14:08:29 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2010-12-20 14:08:29 +0300 |
commit | 97197b54cf3473e29d3c5626fc30926a236454a1 (patch) | |
tree | 33f594d84bce0903d08a6299a54a09df40eb82da /source/blender/editors/space_node | |
parent | 57cc3a5f6dc416db97e0849364cdb4b0603e0792 (diff) |
Bugfix #25309
Code cleanup to allow switching active output nodes in Compositor
made shader nodes output not set correctly.
Now you can have multiple output nodes in shaders too, and switch
on click-activate.
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 2a93eff9e9e..892f4b2b3aa 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -433,11 +433,25 @@ void node_set_active(SpaceNode *snode, bNode *node) nodeSetActive(snode->edittree, node); if(node->type!=NODE_GROUP) { + int was_output= (node->flag & NODE_DO_OUTPUT); + /* tree specific activate calls */ if(snode->treetype==NTREE_SHADER) { /* when we select a material, active texture is cleared, for buttons */ if(node->id && GS(node->id->name)==ID_MA) nodeClearActiveID(snode->edittree, ID_TE); + + if(node->type==SH_NODE_OUTPUT) { + bNode *tnode; + + for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next) + if( tnode->type==SH_NODE_OUTPUT) + tnode->flag &= ~NODE_DO_OUTPUT; + + node->flag |= NODE_DO_OUTPUT; + if(was_output==0) + ED_node_changed_update(snode->id, node); + } // XXX #if 0 @@ -454,7 +468,7 @@ void node_set_active(SpaceNode *snode, bNode *node) /* make active viewer, currently only 1 supported... */ if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { bNode *tnode; - int was_output= (node->flag & NODE_DO_OUTPUT); + for(tnode= snode->edittree->nodes.first; tnode; tnode= tnode->next) if( ELEM(tnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) |