Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2008-02-15 00:34:27 +0300
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2008-02-15 00:34:27 +0300
commitcd3d63a628aa98b1769687a9c039c7fa4c6e4db1 (patch)
tree89d4ab661ff329b16b23f65324c55459eed51fc6 /source/blender/blenkernel
parent5b4376a137839534bfd012314c9246dd74d161cf (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.c13
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)