[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60097] trunk/blender/source/blender: Moved and renamed ED_pose_channel_in_IK_chain() ->

Joshua Leung aligorith at gmail.com
Fri Sep 13 05:03:46 CEST 2013


Revision: 60097
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60097
Author:   aligorith
Date:     2013-09-13 03:03:46 +0000 (Fri, 13 Sep 2013)
Log Message:
-----------
Moved and renamed  ED_pose_channel_in_IK_chain() ->
BKE_pose_channel_in_IK_chain()

This was needed for depsgraph work, and it's cleaner for RNA to have fewer
dependencies on editors

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_action.h
    trunk/blender/source/blender/blenkernel/intern/action.c
    trunk/blender/source/blender/editors/armature/pose_edit.c
    trunk/blender/source/blender/editors/include/ED_armature.h
    trunk/blender/source/blender/editors/space_view3d/drawarmature.c
    trunk/blender/source/blender/makesrna/intern/rna_pose.c

Modified: trunk/blender/source/blender/blenkernel/BKE_action.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_action.h	2013-09-13 02:31:15 UTC (rev 60096)
+++ trunk/blender/source/blender/blenkernel/BKE_action.h	2013-09-13 03:03:46 UTC (rev 60097)
@@ -203,6 +203,9 @@
 /* initialize a bItasc structure with default value */
 void BKE_pose_itasc_init(struct bItasc *itasc);
 
+/* Checks if a bone is part of an IK chain or not */
+bool BKE_pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan);
+
 /* clears BONE_UNKEYED flags for frame changing */
 // XXX to be deprecated for a more general solution in animsys...
 void framechange_poses_clear_unkeyed(void);

Modified: trunk/blender/source/blender/blenkernel/intern/action.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/action.c	2013-09-13 02:31:15 UTC (rev 60096)
+++ trunk/blender/source/blender/blenkernel/intern/action.c	2013-09-13 03:03:46 UTC (rev 60097)
@@ -594,11 +594,43 @@
 	}
 }
 
+
+/* only for real IK, not for auto-IK */
+static bool pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan, int level)
+{
+	bConstraint *con;
+	Bone *bone;
+	
+	/* No need to check if constraint is active (has influence),
+	 * since all constraints with CONSTRAINT_IK_AUTO are active */
+	for (con = pchan->constraints.first; con; con = con->next) {
+		if (con->type == CONSTRAINT_TYPE_KINEMATIC) {
+			bKinematicConstraint *data = con->data;
+			if ((data->rootbone == 0) || (data->rootbone > level)) {
+				if ((data->flag & CONSTRAINT_IK_AUTO) == 0)
+					return true;
+			}
+		}
+	}
+	for (bone = pchan->bone->childbase.first; bone; bone = bone->next) {
+		pchan = BKE_pose_channel_find_name(ob->pose, bone->name);
+		if (pchan && pose_channel_in_IK_chain(ob, pchan, level + 1))
+			return true;
+	}
+	return false;
+}
+
+bool BKE_pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan)
+{
+	return pose_channel_in_IK_chain(ob, pchan, 0);
+}
+
+
 void BKE_pose_channels_hash_make(bPose *pose) 
 {
 	if (!pose->chanhash) {
 		bPoseChannel *pchan;
-
+		
 		pose->chanhash = BLI_ghash_str_new("make_pose_chan gh");
 		for (pchan = pose->chanbase.first; pchan; pchan = pchan->next)
 			BLI_ghash_insert(pose->chanhash, pchan->name, pchan);

Modified: trunk/blender/source/blender/editors/armature/pose_edit.c
===================================================================
--- trunk/blender/source/blender/editors/armature/pose_edit.c	2013-09-13 02:31:15 UTC (rev 60096)
+++ trunk/blender/source/blender/editors/armature/pose_edit.c	2013-09-13 03:03:46 UTC (rev 60097)
@@ -148,36 +148,6 @@
 }
 #endif
 
-/* only for real IK, not for auto-IK */
-static int pose_channel_in_IK_chain(Object *ob, bPoseChannel *pchan, int level)
-{
-	bConstraint *con;
-	Bone *bone;
-	
-	/* No need to check if constraint is active (has influence),
-	 * since all constraints with CONSTRAINT_IK_AUTO are active */
-	for (con = pchan->constraints.first; con; con = con->next) {
-		if (con->type == CONSTRAINT_TYPE_KINEMATIC) {
-			bKinematicConstraint *data = con->data;
-			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 = BKE_pose_channel_find_name(ob->pose, bone->name);
-		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 */
 

Modified: trunk/blender/source/blender/editors/include/ED_armature.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_armature.h	2013-09-13 02:31:15 UTC (rev 60096)
+++ trunk/blender/source/blender/editors/include/ED_armature.h	2013-09-13 03:03:46 UTC (rev 60097)
@@ -167,7 +167,6 @@
 /* poseobject.c */
 void ED_armature_exit_posemode(struct bContext *C, struct Base *base);
 void ED_armature_enter_posemode(struct bContext *C, struct Base *base);
-int ED_pose_channel_in_IK_chain(struct Object *ob, struct bPoseChannel *pchan);
 void ED_pose_deselectall(struct Object *ob, int test);
 void ED_pose_recalculate_paths(struct Scene *scene, struct Object *ob);
 struct Object *ED_pose_object_from_context(struct bContext *C);

Modified: trunk/blender/source/blender/editors/space_view3d/drawarmature.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawarmature.c	2013-09-13 02:31:15 UTC (rev 60096)
+++ trunk/blender/source/blender/editors/space_view3d/drawarmature.c	2013-09-13 03:03:46 UTC (rev 60097)
@@ -1538,7 +1538,7 @@
 			if (bone->flag & BONE_SELECTED) {
 				if (bone->layer & arm->layer) {
 					if (pchan->ikflag & (BONE_IK_XLIMIT | BONE_IK_ZLIMIT)) {
-						if (ED_pose_channel_in_IK_chain(ob, pchan)) {
+						if (BKE_pose_channel_in_IK_chain(ob, pchan)) {
 							float corner[4][3], posetrans[3], mat[4][4];
 							float phi = 0.0f, theta = 0.0f, scale;
 							int a, i;

Modified: trunk/blender/source/blender/makesrna/intern/rna_pose.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_pose.c	2013-09-13 02:31:15 UTC (rev 60096)
+++ trunk/blender/source/blender/makesrna/intern/rna_pose.c	2013-09-13 03:03:46 UTC (rev 60097)
@@ -261,7 +261,7 @@
 	Object *ob = (Object *)ptr->id.data;
 	bPoseChannel *pchan = (bPoseChannel *)ptr->data;
 
-	return ED_pose_channel_in_IK_chain(ob, pchan);
+	return BKE_pose_channel_in_IK_chain(ob, pchan);
 }
 
 static StructRNA *rna_IKParam_refine(PointerRNA *ptr)




More information about the Bf-blender-cvs mailing list