[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51871] trunk/blender/source/blender/ editors/space_node/node_group.c: auto-link solo-nodes when making group
Dalai Felinto
dfelinto at gmail.com
Sun Nov 4 20:18:12 CET 2012
Revision: 51871
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51871
Author: dfelinto
Date: 2012-11-04 19:18:12 +0000 (Sun, 04 Nov 2012)
Log Message:
-----------
auto-link solo-nodes when making group
if make group is called with only one node selected ALL the node sockets are linked to the node group
with help+review from Lukas Toenne
This patch aims towards motivating users to use Group Node to share OSL nodes
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_node/node_group.c
Modified: trunk/blender/source/blender/editors/space_node/node_group.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_group.c 2012-11-04 18:26:30 UTC (rev 51870)
+++ trunk/blender/source/blender/editors/space_node/node_group.c 2012-11-04 19:18:12 UTC (rev 51871)
@@ -875,7 +875,7 @@
bNodeTree *ngroup = (bNodeTree *)gnode->id;
bNodeLink *link, *linkn;
bNode *node, *nextn;
- bNodeSocket *gsock;
+ bNodeSocket *gsock, *sock;
ListBase anim_basepaths = {NULL, NULL};
float min[2], max[2];
@@ -982,8 +982,42 @@
}
}
+ /* auto-add interface for "solo" nodes */
+ node = ((bNodeTree *)gnode->id)->nodes.first;
+ if (node && !node->next) {
+ for (sock = node->inputs.first; sock; sock = sock->next) {
+ int skip = FALSE;
+
+ for (link = ((bNodeTree *)gnode->id)->links.first; link; link = link->next)
+ if (link->tosock == sock)
+ skip = TRUE;
+
+ if (skip == TRUE)
+ continue;
+
+ gsock = node_group_expose_socket(ngroup, sock, SOCK_IN);
+ node_group_add_extern_socket(ntree, &gnode->inputs, SOCK_IN, gsock);
+ nodeAddLink(ngroup, NULL, gsock, node, sock);
+ }
+
+ for (sock = node->outputs.first; sock; sock = sock->next) {
+ int skip = FALSE;
+
+ for (link = ((bNodeTree *)gnode->id)->links.first; link; link = link->next)
+ if (link->fromsock == sock)
+ skip = TRUE;
+
+ if (skip == TRUE)
+ continue;
+
+ gsock = node_group_expose_socket(ngroup, sock, SOCK_OUT);
+ node_group_add_extern_socket(ntree, &gnode->outputs, SOCK_OUT, gsock);
+ nodeAddLink(ngroup, NULL, gsock, node, sock);
+ }
+ }
+
/* update of the group tree */
- ngroup->update |= NTREE_UPDATE;
+ ngroup->update |= NTREE_UPDATE | NTREE_UPDATE_LINKS;
/* update of the tree containing the group instance node */
ntree->update |= NTREE_UPDATE_NODES | NTREE_UPDATE_LINKS;
More information about the Bf-blender-cvs
mailing list