[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51231] trunk/blender/source/blender/ blenkernel/intern/node.c: Generalization of node dependency sorting, avoid using the sock->link pointer.

Lukas Toenne lukas.toenne at googlemail.com
Tue Oct 9 19:30:33 CEST 2012


Revision: 51231
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51231
Author:   lukastoenne
Date:     2012-10-09 17:30:33 +0000 (Tue, 09 Oct 2012)
Log Message:
-----------
Generalization of node dependency sorting, avoid using the sock->link pointer. This pointer only works for sockets that follow the standard 1-to-n connectivity (an output can be linked to multiple inputs, an input can only have one connection). Future node trees may implement 1-to-1 or n-to-1 linking.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/node.c

Modified: trunk/blender/source/blender/blenkernel/intern/node.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/node.c	2012-10-09 16:29:27 UTC (rev 51230)
+++ trunk/blender/source/blender/blenkernel/intern/node.c	2012-10-09 17:30:33 UTC (rev 51231)
@@ -1641,21 +1641,21 @@
 /* ************** dependency stuff *********** */
 
 /* node is guaranteed to be not checked before */
-static int node_get_deplist_recurs(bNode *node, bNode ***nsort)
+static int node_get_deplist_recurs(bNodeTree *ntree, bNode *node, bNode ***nsort)
 {
 	bNode *fromnode;
-	bNodeSocket *sock;
+	bNodeLink *link;
 	int level = 0xFFF;
 	
 	node->done = TRUE;
 	
 	/* check linked nodes */
-	for (sock = node->inputs.first; sock; sock = sock->next) {
-		if (sock->link) {
-			fromnode = sock->link->fromnode;
+	for (link = ntree->links.first; link; link = link->next) {
+		if (link->tonode == node) {
+			fromnode = link->fromnode;
 			if (fromnode) {
 				if (fromnode->done == 0)
-					fromnode->level = node_get_deplist_recurs(fromnode, nsort);
+					fromnode->level = node_get_deplist_recurs(ntree, fromnode, nsort);
 				if (fromnode->level <= level)
 					level = fromnode->level - 1;
 			}
@@ -1665,7 +1665,7 @@
 	/* check parent node */
 	if (node->parent) {
 		if (node->parent->done == 0)
-			node->parent->level = node_get_deplist_recurs(node->parent, nsort);
+			node->parent->level = node_get_deplist_recurs(ntree, node->parent, nsort);
 		if (node->parent->level <= level)
 			level = node->parent->level - 1;
 	}
@@ -1699,7 +1699,7 @@
 	/* recursive check */
 	for (node = ntree->nodes.first; node; node = node->next) {
 		if (node->done == 0) {
-			node->level = node_get_deplist_recurs(node, &nsort);
+			node->level = node_get_deplist_recurs(ntree, node, &nsort);
 		}
 	}
 }
@@ -1717,7 +1717,7 @@
 	/* recursive check */
 	for (node = ntree->nodes.first; node; node = node->next) {
 		if (node->done == 0) {
-			node->level = node_get_deplist_recurs(node, NULL);
+			node->level = node_get_deplist_recurs(ntree, node, NULL);
 		}
 	}
 }




More information about the Bf-blender-cvs mailing list