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:
authorTon Roosendaal <ton@blender.org>2006-12-09 00:20:36 +0300
committerTon Roosendaal <ton@blender.org>2006-12-09 00:20:36 +0300
commit7f1e3874f9924bd9abf5b3a875c1c673eb33daa1 (patch)
tree7e767a2f80e8777d3a4f6e36fdd17128ef893cb6 /source/blender/src/editnode.c
parent00becf015baabbea382fdb3f0c8afe1555a20456 (diff)
Node editing usablity!
- Removed stupid idea to insert convertor nodes in Node Shaders, when a link is created by non-matching sockets. Now it works like Compositor, doing a default conversion. Works like this: 1 from 3 or 4 values: take average 3 from 1: copy to all 3 from 4: copy 3 4 from 1: copy to 3, set alpha to 1 4 from 3: copy 3, set alpha to 1 - Added select-linked in Nodes. Lkey or Shift+L. Also in pulldown menus
Diffstat (limited to 'source/blender/src/editnode.c')
-rw-r--r--source/blender/src/editnode.c41
1 files changed, 32 insertions, 9 deletions
diff --git a/source/blender/src/editnode.c b/source/blender/src/editnode.c
index 11c6cf83705..9eb3f8794e4 100644
--- a/source/blender/src/editnode.c
+++ b/source/blender/src/editnode.c
@@ -1490,6 +1490,7 @@ void node_adduplicate(SpaceNode *snode)
transform_nodes(snode->edittree, 'g', "Duplicate");
}
+#if 0
static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
{
bNode *newnode= NULL;
@@ -1523,6 +1524,7 @@ static void node_insert_convertor(SpaceNode *snode, bNodeLink *link)
}
}
+#endif
/* loop that adds a nodelink, called by function below */
/* in_out = starting socket */
@@ -1623,15 +1625,6 @@ static int node_add_link_drag(SpaceNode *snode, bNode *node, bNodeSocket *sock,
}
}
}
-
- /* and last trick: insert a convertor when types dont match */
- if(snode->treetype==NTREE_SHADER) {
- if(link->tosock->type!=link->fromsock->type) {
- node_insert_convertor(snode, link);
- /* so nice do it twice! well, the sort-order can only handle 1 added link at a time */
- ntreeSolveOrder(snode->edittree);
- }
- }
}
ntreeSolveOrder(snode->edittree);
@@ -1763,6 +1756,33 @@ void node_insert_key(SpaceNode *snode)
}
}
+void node_select_linked(SpaceNode *snode, int out)
+{
+ bNodeLink *link;
+ bNode *node;
+
+ /* NODE_TEST is the free flag */
+ for(node= snode->edittree->nodes.first; node; node= node->next)
+ node->flag &= ~NODE_TEST;
+
+ for(link= snode->edittree->links.first; link; link= link->next) {
+ if(out) {
+ if(link->fromnode->flag & NODE_SELECT)
+ link->tonode->flag |= NODE_TEST;
+ }
+ else {
+ if(link->tonode->flag & NODE_SELECT)
+ link->fromnode->flag |= NODE_TEST;
+ }
+ }
+
+ for(node= snode->edittree->nodes.first; node; node= node->next)
+ if(node->flag & NODE_TEST)
+ node->flag |= NODE_SELECT;
+
+ BIF_undo_push("Select Linked nodes");
+ allqueue(REDRAWNODE, 1);
+}
static void node_border_link_delete(SpaceNode *snode)
{
@@ -2089,6 +2109,9 @@ void winqreadnodespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
case IKEY:
node_insert_key(snode);
break;
+ case LKEY:
+ node_select_linked(snode, G.qual==LR_SHIFTKEY);
+ break;
case RKEY:
if(okee("Read saved Render Layers"))
node_read_renderlayers(snode);