diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-02-15 00:34:27 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2008-02-15 00:34:27 +0300 |
commit | cd3d63a628aa98b1769687a9c039c7fa4c6e4db1 (patch) | |
tree | 89d4ab661ff329b16b23f65324c55459eed51fc6 /source/blender/blenkernel | |
parent | 5b4376a137839534bfd012314c9246dd74d161cf (diff) |
Bugfix: depsgraph cycle checking for armatures sometimes gave incorrect
cycle warnings.
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/intern/depsgraph.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index e582cd7c9d9..32927b6058c 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -2114,16 +2114,21 @@ void DAG_object_update_flags(Scene *sce, Object *ob, unsigned int lay) static int node_recurs_level(DagNode *node, int level) { DagAdjList *itA; - + int newlevel; + node->color= DAG_BLACK; /* done */ - level++; + newlevel= ++level; for(itA= node->parent; itA; itA= itA->next) { - if(itA->node->color==DAG_WHITE) + if(itA->node->color==DAG_WHITE) { itA->node->ancestor_count= node_recurs_level(itA->node, level); + newlevel= MAX2(newlevel, level+itA->node->ancestor_count); + } + else + newlevel= MAX2(newlevel, level+itA->node->ancestor_count); } - return level; + return newlevel; } static void pose_check_cycle(DagForest *dag) |