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:
Diffstat (limited to 'source/blender/makesdna/DNA_action_types.h')
-rw-r--r--source/blender/makesdna/DNA_action_types.h62
1 files changed, 52 insertions, 10 deletions
diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h
index 94c9bcf5d88..9e4480431e3 100644
--- a/source/blender/makesdna/DNA_action_types.h
+++ b/source/blender/makesdna/DNA_action_types.h
@@ -28,9 +28,7 @@
* The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
* All rights reserved.
*
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
+ * Contributor(s): Full recode, Ton Roosendaal, Crete 2005
*
* ***** END GPL/BL DUAL LICENSE BLOCK *****
*/
@@ -44,22 +42,40 @@
#include "DNA_view2d_types.h"
struct SpaceLink;
+struct ListBase;
+
+/* PoseChannel stores the results of Actions (ipos) and transform information
+ with respect to the restposition of Armature bones */
-typedef struct bPoseChannel{
+typedef struct bPoseChannel {
struct bPoseChannel *next, *prev;
ListBase constraints;
- int flag;
- float loc[3];
- float size[3];
- float quat[4];
- float obmat[4][4];
char name[32]; /* Channels need longer names than normal blender objects */
- int reserved1;
+ short flag; /* dynamic, for detecting transform changes */
+ short constflag; /* for quick detecting which constraints affect this channel */
+ int depth; /* dependency sorting help */
+
+ struct Bone *bone; /* set on read file or rebuild pose */
+ struct bPoseChannel *parent; /* set on read file or rebuild pose */
+ struct ListBase chain; /* only while evaluating pose */
+
+ float loc[3]; /* written in by actions or transform */
+ float size[3];
+ float quat[4];
+
+ float chan_mat[4][4]; /* matrix result of loc/quat/size , and where we put deform in, see next line */
+ float pose_mat[4][4]; /* constraints accumulate here. in the end, pose_mat = bone->arm_mat * chan_mat */
+ float ik_mat[3][3]; /* for itterative IK */
+
+ float pose_head[3]; /* actually pose_mat[3] */
+ float pose_tail[3]; /* also used for drawing help lines... */
+ int pad;
} bPoseChannel;
typedef struct bPose{
ListBase chanbase;
+ int flag, pad;
} bPose;
typedef struct bActionChannel {
@@ -100,5 +116,31 @@ typedef struct SpaceAction {
#define ACHAN_SELECTED 0x00000001
#define ACHAN_HILIGHTED 0x00000002
+/* Pose->flag */
+
+#define POSE_RECALC 1
+
+/* PoseChannel (transform) flags */
+enum {
+ POSE_LOC = 0x0001,
+ POSE_ROT = 0x0002,
+ POSE_SIZE = 0x0004,
+ POSE_IK_MAT = 0x0008,
+ POSE_UNUSED2 = 0x0010,
+ POSE_UNUSED3 = 0x0020,
+ POSE_UNUSED4 = 0x0040,
+ POSE_UNUSED5 = 0x0080,
+ POSE_OBMAT = 0x0100,
+ POSE_PARMAT = 0x0200,
+ POSE_DONE = 0x0400,
+ POSE_KEY = 0x1000
+};
+
+/* Pose Channel constflag (constraint) */
+#define PCHAN_HAS_IK 1
+#define PCHAN_HAS_TRACK 2
+#define PCHAN_HAS_CONST 4
+
+
#endif