[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35518] trunk/blender/source/blender/ blenkernel/intern/node.c: Fixed the node_recurs_check function used to define the order of nodes in ntreeSolveOrder .
Lukas Toenne
lukas.toenne at googlemail.com
Sun Mar 13 18:23:44 CET 2011
Revision: 35518
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35518
Author: lukastoenne
Date: 2011-03-13 17:23:44 +0000 (Sun, 13 Mar 2011)
Log Message:
-----------
Fixed the node_recurs_check function used to define the order of nodes in ntreeSolveOrder. This was creating equal node levels in some cases (auto-linking viewer to nodes further downstream), leading to falsely detected circular dependencies.
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 2011-03-13 17:20:52 UTC (rev 35517)
+++ trunk/blender/source/blender/blenkernel/intern/node.c 2011-03-13 17:23:44 UTC (rev 35518)
@@ -1759,32 +1759,29 @@
/* ************** dependency stuff *********** */
/* node is guaranteed to be not checked before */
-static int node_recurs_check(bNode *node, bNode ***nsort, int level)
+static int node_recurs_check(bNode *node, bNode ***nsort)
{
bNode *fromnode;
bNodeSocket *sock;
- int has_inputlinks= 0;
+ int level = 0xFFF;
node->done= 1;
- level++;
for(sock= node->inputs.first; sock; sock= sock->next) {
if(sock->link) {
- has_inputlinks= 1;
fromnode= sock->link->fromnode;
- if(fromnode && fromnode->done==0) {
- fromnode->level= node_recurs_check(fromnode, nsort, level);
+ if(fromnode) {
+ if (fromnode->done==0)
+ fromnode->level= node_recurs_check(fromnode, nsort);
+ if (fromnode->level <= level)
+ level = fromnode->level - 1;
}
}
}
-// printf("node sort %s level %d\n", node->name, level);
**nsort= node;
(*nsort)++;
- if(has_inputlinks)
- return level;
- else
- return 0xFFF;
+ return level;
}
@@ -1873,7 +1870,7 @@
/* recursive check */
for(node= ntree->nodes.first; node; node= node->next) {
if(node->done==0) {
- node->level= node_recurs_check(node, &nsort, 0);
+ node->level= node_recurs_check(node, &nsort);
}
}
More information about the Bf-blender-cvs
mailing list