[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [31903] trunk/blender/source/blender/ editors/armature/poseobject.c: bugfix [#23528] ED_pose_channel_in_IK_chain( ) doesn't take length of IK chain into account

Campbell Barton ideasman42 at gmail.com
Mon Sep 13 08:57:26 CEST 2010


Revision: 31903
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=31903
Author:   campbellbarton
Date:     2010-09-13 08:57:03 +0200 (Mon, 13 Sep 2010)

Log Message:
-----------
bugfix [#23528] ED_pose_channel_in_IK_chain() doesn't take length of IK chain into account

Modified Paths:
--------------
    trunk/blender/source/blender/editors/armature/poseobject.c

Modified: trunk/blender/source/blender/editors/armature/poseobject.c
===================================================================
--- trunk/blender/source/blender/editors/armature/poseobject.c	2010-09-13 06:08:26 UTC (rev 31902)
+++ trunk/blender/source/blender/editors/armature/poseobject.c	2010-09-13 06:57:03 UTC (rev 31903)
@@ -157,7 +157,7 @@
 }
 
 /* only for real IK, not for auto-IK */
-int ED_pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan)
+static int pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan, int level)
 {
 	bConstraint *con;
 	Bone *bone;
@@ -167,18 +167,25 @@
 	for(con= pchan->constraints.first; con; con= con->next) {
 		if(con->type==CONSTRAINT_TYPE_KINEMATIC) {
 			bKinematicConstraint *data= con->data;
-			if((data->flag & CONSTRAINT_IK_AUTO)==0)
-				return 1;
+			if(data->rootbone == 0 || data->rootbone > level) {
+				if((data->flag & CONSTRAINT_IK_AUTO)==0)
+					return 1;
+			}
 		}
 	}
 	for(bone= pchan->bone->childbase.first; bone; bone= bone->next) {
 		pchan= get_pose_channel(ob->pose, bone->name);
-		if(pchan && ED_pose_channel_in_IK_chain(ob, pchan))
+		if(pchan && pose_channel_in_IK_chain(ob, pchan, level + 1))
 			return 1;
 	}
 	return 0;
 }
 
+int ED_pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan)
+{
+	return pose_channel_in_IK_chain(ob, pchan, 0);
+}
+
 /* ********************************************** */
 /* Motion Paths */
 





More information about the Bf-blender-cvs mailing list