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);
                }
        }
 }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to