diff options
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r-- | source/blender/makesdna/DNA_action_types.h | 62 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_armature_types.h | 140 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_constraint_types.h | 3 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_ika_types.h | 93 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_ipo_types.h | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_key_types.h | 6 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_object_types.h | 23 | ||||
-rw-r--r-- | source/blender/makesdna/intern/makesdna.c | 2 |
8 files changed, 137 insertions, 197 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 diff --git a/source/blender/makesdna/DNA_armature_types.h b/source/blender/makesdna/DNA_armature_types.h index 5124716bc51..07633090902 100644 --- a/source/blender/makesdna/DNA_armature_types.h +++ b/source/blender/makesdna/DNA_armature_types.h @@ -23,9 +23,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 ***** */ @@ -36,35 +34,37 @@ #include "DNA_listBase.h" #include "DNA_ID.h" +/* this system works on different transformation space levels; + +1) Bone Space; with each Bone having own (0,0,0) origin +2) Armature Space; the rest position, in Object space, Bones Spaces are applied hierarchical +3) Pose Space; the animation position, in Object space +4) World Space; Object matrix applied to Pose or Armature space + +*/ + typedef struct Bone { struct Bone *next, *prev; /* Next/prev elements within this list */ struct Bone *parent; /* Parent (ik parent if appropriate flag is set */ ListBase childbase; /* Children */ - char name[32]; /* Name of the bone - must be unique within the armature */ + char name[32]; /* Name of the bone - must be unique within the armature */ - float roll; - float head[3]; /* Orientation & length are implicit now */ - float tail[3]; /* head/tail represents rest state */ + float roll, length; /* */ + float head[3]; + float tail[3]; /* head/tail and roll in Bone Space */ + float bone_mat[3][3]; /* rotation derived from head/tail/roll */ + int flag; - - /* Transformation data used for posing: - The same information stored by other - blenderObjects - */ - - float dist, weight; - float loc[3], dloc[3]; - float size[3], dsize[3]; - float quat[4], dquat[4]; - float obmat[4][4]; - float parmat[4][4]; - float defmat[4][4]; - float irestmat[4][4]; /* Cached inverse of rest matrix (objectspace)*/ - float posemat[4][4]; /* Cached pose matrix (objectspace)*/ + + float arm_head[3]; + float arm_tail[3]; /* head/tail and roll in Armature Space (rest pos) */ + float arm_mat[4][4]; /* matrix: (bonemat(b)+head(b))*arm_mat(b-1), rest pos*/ + + float dist, weight; /* dist for non-deformgroup deforms */ + + float size[3]; /* patch for upward compat, UNUSED! */ short boneclass; - short filler1; - short filler2; - short filler3; + short pad1; }Bone; typedef struct bArmature { @@ -77,58 +77,46 @@ typedef struct bArmature { int res3; }bArmature; -enum { - ARM_RESTPOSBIT = 0, - ARM_DRAWXRAYBIT, - ARM_DRAWAXESBIT, - ARM_DRAWNAMESBIT, - ARM_POSEBIT, - ARM_EDITBIT, - ARM_DELAYBIT -}; +/* armature->flag */ +#define ARM_RESTPOSBIT 0 +#define ARM_DRAWXRAYBIT 1 +#define ARM_DRAWAXESBIT 2 +#define ARM_DRAWNAMESBIT 3 +#define ARM_POSEBIT 4 +#define ARM_EDITBIT 5 +#define ARM_DELAYBIT 6 +/* dont use bit 7, was saved in files to disable stuff */ +#define ARM_NO_ACTIONBIT 8 + +/* armature->flag */ +#define ARM_RESTPOS 0x0001 +#define ARM_DRAWXRAY 0x0002 +#define ARM_DRAWAXES 0x0004 +#define ARM_DRAWNAMES 0x0008 +#define ARM_POSEMODE 0x0010 +#define ARM_EDITMODE 0x0020 +#define ARM_DELAYDEFORM 0x0040 +#define ARM_DONT_USE 0x0080 +#define ARM_NO_ACTION 0x0100 + +/* bone->flag */ +#define BONE_SELECTED 1 +#define BONE_ROOTSEL 2 +#define BONE_TIPSEL 4 + /* Used instead of BONE_SELECTED during transform */ +#define BONE_TRANSFORM 8 +#define BONE_IK_TOPARENT 16 + /* 32 used to be quatrot, was always set in files, do not reuse unless you clear it always */ +#define BONE_HIDDEN 64 + /* For detecting cyclic dependancies */ +#define BONE_DONE 128 + /* active is on mouse clicks only */ +#define BONE_ACTIVE 256 + +/* bone->flag bits */ +#define BONE_IK_TOPARENTBIT 4 +#define BONE_HIDDENBIT 6 -enum { - ARM_RESTPOS = 0x00000001, - ARM_DRAWXRAY = 0x00000002, - ARM_DRAWAXES = 0x00000004, - ARM_DRAWNAMES = 0x00000008, - ARM_POSEMODE = 0x00000010, - ARM_EDITMODE = 0x00000020, - ARM_DELAYDEFORM = 0x00000040 -}; - -enum { - BONE_SELECTED = 0x00000001, - BONE_ROOTSEL = 0x00000002, - BONE_TIPSEL = 0x00000004, - - BONE_HILIGHTED = 0x00000008, - BONE_IK_TOPARENT= 0x00000010, - BONE_QUATROT = 0x00000020, - BONE_HIDDEN = 0x00000040, - - BONE_DONE = 0x00000080, /* For detecting cyclic dependancies */ - - BONE_ISEMPTY = 0x00000100, - BONE_ISMUSCLE = 0x00000200, - BONE_NOCALC = 0x00000400 /* Don't calculate bone - * transformation, when flagged - * (note: this is a temporary flag) - */ -}; - -enum { - BONE_SELECTEDBIT = 0, - BONE_HEADSELBIT, - BONE_TAILSELBIT, - BONE_HILIGHTEDBIT, - BONE_IK_TOPARENTBIT, - BONE_QUATROTBIT, - BONE_HIDDENBIT, - BONE_ISEMPTYBIT, - BONE_ISMUSCLEBIT, - BONE_NOCALCBIT -}; enum { BONE_SKINNABLE = 0, diff --git a/source/blender/makesdna/DNA_constraint_types.h b/source/blender/makesdna/DNA_constraint_types.h index 06a7844b785..d7e4e97dce1 100644 --- a/source/blender/makesdna/DNA_constraint_types.h +++ b/source/blender/makesdna/DNA_constraint_types.h @@ -50,7 +50,6 @@ typedef struct bConstraintChannel{ typedef struct bConstraint{ struct bConstraint *next, *prev; void *data; /* Constraint data (a valid constraint type) */ - Ipo *ipo; /* Constraint ipo */ char type; /* Constraint type */ char otype; /* Old type - for menu callbacks */ short flag; /* Flag */ @@ -179,7 +178,7 @@ typedef struct bStretchToConstraint{ #define CONSTRAINT_DONE 0x00000002 #define CONSTRAINT_DISABLE 0x00000004 #define CONSTRAINT_LOOPTESTED 0x00000008 -#define CONSTRAINT_NOREFRESH 0x00000010 + #define CONSTRAINT_EXPAND_BIT 0 #define CONSTRAINT_DONE_BIT 1 diff --git a/source/blender/makesdna/DNA_ika_types.h b/source/blender/makesdna/DNA_ika_types.h deleted file mode 100644 index 2ddbc4ed4a3..00000000000 --- a/source/blender/makesdna/DNA_ika_types.h +++ /dev/null @@ -1,93 +0,0 @@ -/** - * blenlib/DNA_ika_types.h (mar-2001 nzc) - * - * Old ika types. These have been superceded by Reevan's stuff - * (armatures and bones) - * - * Can be removed! (ton) - * - * $Id$ - * - * ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. The Blender - * Foundation also sells licenses for use in proprietary software under - * the Blender License. See http://www.blender.org/BL/ for information - * about this. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - * - * 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. - * - * ***** END GPL/BL DUAL LICENSE BLOCK ***** - */ -#ifndef DNA_IKA_TYPES_H -#define DNA_IKA_TYPES_H - -#include "DNA_listBase.h" -#include "DNA_ID.h" - -struct Object; -struct Ipo; - -typedef struct Deform { - struct Object *ob; - short flag, partype; - int par1, par2, par3; /* can be vertexnrs */ - float imat[4][4], premat[4][4], postmat[4][4]; - float vec[3]; /* when partype==LIMB, for distfunc */ - float fac, dist, pad; - -} Deform; - -typedef struct Limb { - struct Limb *next, *prev; - - float len, leno, fac, alpha, alphao, pad; - float eff[2]; - -} Limb; - -typedef struct Ika { - ID id; - - short partype, flag, iter, lastfra; - - ListBase limbbase; - float eff[3], effg[3], effn[3]; - float mem, slow, toty, totx, xyconstraint; - - struct Ipo *ipo; - struct Object *parent; - int par1, par2, par3; - - int totdef; - Deform *def; - - int def_scroll; - int limb_scroll; -} Ika; - -/* these defines are used for working with ikas*/ - -/* ika.flag: */ -#define IK_GRABEFF 1 -#define IK_XYCONSTRAINT 2 - -#endif - diff --git a/source/blender/makesdna/DNA_ipo_types.h b/source/blender/makesdna/DNA_ipo_types.h index 5dccadb00ab..352a2589c14 100644 --- a/source/blender/makesdna/DNA_ipo_types.h +++ b/source/blender/makesdna/DNA_ipo_types.h @@ -59,7 +59,6 @@ typedef short IPO_Channel; #define TOB_IPO 1 #define TOB_IPODROT 2 -#define TOB_IKA 4 /* disptype */ #define IPO_DISPDEGR 1 @@ -96,10 +95,6 @@ typedef short IPO_Channel; #define OB_TIME 20 -#define OB_EFF_X 21 -#define OB_EFF_Y 22 -#define OB_EFF_Z 23 - #define OB_COL_R 21 #define OB_COL_G 22 #define OB_COL_B 23 diff --git a/source/blender/makesdna/DNA_key_types.h b/source/blender/makesdna/DNA_key_types.h index 9bdbc2fbeed..7f4d4125cb5 100644 --- a/source/blender/makesdna/DNA_key_types.h +++ b/source/blender/makesdna/DNA_key_types.h @@ -70,14 +70,18 @@ typedef struct Key { short type, totkey; short slurph, actkey; + short flag, pad1; + int pad2; } Key; /* **************** KEY ********************* */ -/* type */ +/* key->type */ #define KEY_NORMAL 0 #define KEY_RELATIVE 1 +/* key->flag */ +#define KEY_LOCKED 1 /* keyblock->type */ #define KEY_LINEAR 0 diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index ea49d73cd04..92665f1804a 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -176,7 +176,8 @@ typedef struct Object { * bit 15: Always ignore activity culling */ int gameflag2; - short softflag, dummy; /* temporal stuff softbody experiment */ + short softflag; /* softboday settings */ + short recalc; /* dependency flag */ float anisotropicFriction[3]; ListBase constraints; @@ -232,19 +233,18 @@ extern Object workob; #define OB_LAMP 10 #define OB_CAMERA 11 -#define OB_IKA 20 #define OB_WAVE 21 #define OB_LATTICE 22 /* 23 and 24 are for life and sector (old file compat.) */ #define OB_ARMATURE 25 -/* partype: eerste 5 bits: type */ +/* partype: first 4 bits: type */ #define PARTYPE 15 #define PAROBJECT 0 #define PARCURVE 1 #define PARKEY 2 -#define PARLIMB 3 + #define PARSKEL 4 #define PARVERT1 5 #define PARVERT3 6 @@ -313,12 +313,13 @@ extern Object workob; /* also needed for base!!!!! or rather, thy interfere....*/ /* base->flag and ob->flag */ -#define BA_WASSEL 2 -#define BA_PARSEL 4 -#define BA_WHERE_UPDATE 8 -#define BA_DISP_UPDATE 16 +#define BA_WAS_SEL 2 +#define BA_HAS_RECALC_OB 4 +#define BA_HAS_RECALC_DATA 8 + #define BA_DO_IPO 32 #define OB_GONNA_MOVE 32 + #define BA_FROMSET 128 #define OB_DO_IMAT 256 #define OB_FROMDUPLI 512 @@ -327,6 +328,12 @@ extern Object workob; #define OB_FROMGROUP 4096 #define OB_POSEMODE 8192 +/* ob->recalc (flag bits!) */ +#define OB_RECALC_OB 1 +#define OB_RECALC_DATA 2 +#define OB_RECALC 3 + + /* ob->gameflag */ #define OB_DYNAMIC 1 #define OB_CHILD 2 diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index b550d18bdb2..200639cd402 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -110,7 +110,6 @@ char *includefiles[] = { "DNA_fileglobal_types.h", "DNA_sequence_types.h", "DNA_effect_types.h", - "DNA_ika_types.h", "DNA_oops_types.h", "DNA_property_types.h", "DNA_sensor_types.h", @@ -1123,7 +1122,6 @@ int main(int argc, char ** argv) #include "DNA_fileglobal_types.h" #include "DNA_sequence_types.h" #include "DNA_effect_types.h" -#include "DNA_ika_types.h" #include "DNA_oops_types.h" #include "DNA_property_types.h" #include "DNA_sensor_types.h" |