New particle collisions code:
[blender.git] / source / blender / makesdna / DNA_ipo_types.h
index 2b943c2c23ee479ef7d79fbba5a7e9a6b8b07c75..5dba9154a3a279cc383012ed3d61a7958f2b8e19 100644 (file)
@@ -1,17 +1,12 @@
-/**
- * blenlib/DNA_ipo_types.h (mar-2001 nzc)
- *
+/*
  * $Id$ 
  *
- * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
+ * ***** BEGIN GPL 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.
+ * of the License, or (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  *
  * 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.
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 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.
+ * Contributor(s): Joshua Leung
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
+/** \file DNA_ipo_types.h
+ *  \ingroup DNA
+ *  \deprecated
+ *   The contents of this file are now officially depreceated. They were used for the 'old' animation system,
+ *   which has (as of 2.50) been replaced with a completely new system by Joshua Leung (aligorith). All defines, 
+ *   etc. are only still maintained to provide backwards compatability for old files.
+ */
 #ifndef DNA_IPO_TYPES_H
 #define DNA_IPO_TYPES_H
 
 #include "DNA_listBase.h"
+#include "DNA_curve_types.h"
 #include "DNA_vec_types.h"
 
 #include "DNA_ID.h"
 
+/* -------------------------- Type Defines --------------------------- */
+
+/* sometimes used - mainly for GE/Ketsji */
+typedef short IPO_Channel;  
+
+
+/* --- IPO Curve Driver --- */
+
+/* IPO Curve Driver */
+typedef struct IpoDriver {
+       struct Object *ob;                      /* target/driver ob */
+       short blocktype, adrcode;       /* sub-channel to use */
+       
+       short type, flag;                       /* driver settings */
+       char name[128];                         /* bone, or python expression here */
+} IpoDriver;
+
+/* --- IPO Curve --- */
+
+/* IPO Curve */
+typedef struct IpoCurve {
+       struct IpoCurve *next,  *prev;
+       
+       struct BPoint *bp;                                      /* array of BPoints (sizeof(BPoint)*totvert) - i.e. baked/imported data */
+       struct BezTriple *bezt;                         /* array of BezTriples (sizeof(BezTriple)*totvert)  - i.e. user-editable keyframes  */
+
+       rctf maxrct, totrct;                            /* bounding boxes */
+
+       short blocktype, adrcode, vartype;      /* blocktype= ipo-blocktype; adrcode= type of ipo-curve; vartype= 'format' of data */
+       short totvert;                                          /* total number of BezTriples (i.e. keyframes) on curve */
+       short ipo, extrap;                                      /* interpolation and extrapolation modes  */
+       short flag, rt;                                         /* flag= settings; rt= ??? */
+       float ymin, ymax;                                       /* minimum/maximum y-extents for curve */
+       unsigned int bitmask;                           /* ??? */
+       
+       float slide_min, slide_max;                     /* minimum/maximum values for sliders (in action editor) */
+       float curval;                                           /* value of ipo-curve for current frame */
+       
+       IpoDriver *driver;                                      /* pointer to ipo-driver for this curve */
+} IpoCurve;
+
+/* --- ID-Datablock --- */
+
 /* IPO Data-Block */
 typedef struct Ipo {
        ID id;
@@ -50,13 +98,9 @@ typedef struct Ipo {
        short muteipo, pad;                     /* muteipo: either 0 or 1 (whether ipo block is muted) */       
 } Ipo;
 
-/* NOTE: IpoCurve struct is defined in DNA_curve_types.h, not in here... */
-
-/* sometimes used */
-typedef short IPO_Channel;  
+/* ----------- adrcodes (for matching ipo-curves to data) ------------- */
 
 /* defines: are these duped or new? */
-
 #define IPOBUTY        17
 
 #define TOB_IPO        1
@@ -67,10 +111,10 @@ typedef short IPO_Channel;
 #define IPO_DISPBITS   2
 #define IPO_DISPTIME   3
 
-/* ******************** */
+/* ********** Object (ID_OB) ********** */
 
-#define OB_TOTIPO      29
-#define OB_TOTNAM      29
+#define OB_TOTIPO      30
+#define OB_TOTNAM      30
 
 #define OB_LOC_X       1
 #define OB_LOC_Y       2
@@ -107,12 +151,13 @@ typedef short IPO_Channel;
 #define OB_PD_SDAMP    27
 #define OB_PD_RDAMP    28
 #define OB_PD_PERM     29
+#define OB_PD_FMAXD    30
 
 /* exception: driver channel, for bone driver only */
 #define OB_ROT_DIFF    100
 
 
-/* ******************** */
+/* ********** Material (ID_MA) ********** */
 
 #define MA_TOTIPO      40
 #define MA_TOTNAM      26
@@ -144,16 +189,26 @@ typedef short IPO_Channel;
 #define MA_FRESTRAI    25
 #define MA_ADD         26
 
-#define MA_MAP1                0x20
-#define MA_MAP2                0x40
-#define MA_MAP3                0x80
-#define MA_MAP4                0x100
-#define MA_MAP5                0x200
-#define MA_MAP6                0x400
-#define MA_MAP7                0x800
-#define MA_MAP8                0x1000
-#define MA_MAP9                0x2000
-#define MA_MAP10       0x4000
+#define MA_MAP1                (1<<5)
+#define MA_MAP2                (1<<6)
+#define MA_MAP3                (1<<7)
+#define MA_MAP4                (1<<8)
+#define MA_MAP5                (1<<9)
+#define MA_MAP6                (1<<10)
+#define MA_MAP7                (1<<11)
+#define MA_MAP8                (1<<12)
+#define MA_MAP9                (1<<13)
+#define MA_MAP10       (1<<14)
+#define MA_MAP11       (1<<15)
+#define MA_MAP12       (1<<16)
+#define MA_MAP13       (1<<17)
+#define MA_MAP14       (1<<18)
+#define MA_MAP15       (1<<19)
+#define MA_MAP16       (1<<20)
+#define MA_MAP17       (1<<21)
+#define MA_MAP18       (1<<22)
+
+/* ********** Texture Slots (MTex) ********** */
 
 #define TEX_TOTNAM     14
 
@@ -173,7 +228,7 @@ typedef short IPO_Channel;
 #define MAP_VARF       13
 #define MAP_DISP       14
 
-/* ******************** */
+/* ********** Texture (ID_TE) ********** */
 
 #define TE_TOTIPO      26
 #define TE_TOTNAM      26
@@ -210,21 +265,23 @@ typedef short IPO_Channel;
 #define TE_BRIGHT      25
 #define TE_CONTRA      26
 
-/* ******************** */
+/* ******** Sequence (ID_SEQ) ********** */
 
 #define SEQ_TOTIPO     1
 #define SEQ_TOTNAM     1
 
 #define SEQ_FAC1       1
+#define SEQ_FAC_SPEED   2
+#define SEQ_FAC_OPACITY 3
 
-/* ******************** */
+/* ********* Curve (ID_CU) *********** */
 
 #define CU_TOTIPO      1
 #define CU_TOTNAM      1
 
 #define CU_SPEED       1
 
-/* ******************** */
+/* ********* ShapeKey (ID_KE) *********** */
 
 #define KEY_TOTIPO     64
 #define KEY_TOTNAM     64
@@ -232,7 +289,7 @@ typedef short IPO_Channel;
 #define KEY_SPEED      0
 #define KEY_NR         1
 
-/* ******************** */
+/* ********* World (ID_WO) *********** */
 
 #define WO_TOTIPO      29
 #define WO_TOTNAM      16
@@ -257,7 +314,7 @@ typedef short IPO_Channel;
 #define WO_STARDIST    15
 #define WO_STARSIZE    16
 
-/* ******************** */
+/* ********** Lamp (ID_LA) ********** */
 
 #define LA_TOTIPO      21
 #define LA_TOTNAM      10
@@ -273,9 +330,8 @@ typedef short IPO_Channel;
 #define LA_QUAD2       9
 #define LA_HALOINT     10
 
-/* ******************** */
+/* ********* Camera (ID_CA) ************ */
 
-/* yafray: totipo & totnam +2 because of added curves */
 #define CAM_TOTIPO     7
 #define CAM_TOTNAM     7
 
@@ -290,7 +346,7 @@ typedef short IPO_Channel;
 #define CAM_SHIFT_X            6
 #define CAM_SHIFT_Y            7
 
-/* ******************** */
+/* ********* Sound (ID_SO) *********** */
 
 #define SND_TOTIPO     4
 #define SND_TOTNAM     4
@@ -300,10 +356,10 @@ typedef short IPO_Channel;
 #define SND_PANNING    3
 #define SND_ATTEN      4
 
-/* ******************** */
+/* ******* PoseChannel (ID_PO) ********* */
 
-#define AC_TOTIPO      10      /* __NLA */
-#define AC_TOTNAM      10
+#define AC_TOTIPO      13
+#define AC_TOTNAM      13
 
 #define AC_LOC_X       1
 #define AC_LOC_Y       2
@@ -313,33 +369,27 @@ typedef short IPO_Channel;
 #define AC_SIZE_Y      14
 #define AC_SIZE_Z      15
 
+#define AC_EUL_X       16
+#define AC_EUL_Y       17
+#define AC_EUL_Z       18
+
 #define AC_QUAT_W      25
 #define AC_QUAT_X      26
 #define AC_QUAT_Y      27
 #define AC_QUAT_Z      28
 
-/* ******************** */
-#define CO_TOTIPO      2       /* Constraint Ipos */
+/* ******** Constraint (ID_CO) ********** */
+
+#define CO_TOTIPO      2
 #define CO_TOTNAM      2
 
 #define CO_ENFORCE     1
 #define CO_HEADTAIL    2
-/*
-#define        CO_TIME         2
-#define CO_OFFSET_X    3
-#define CO_OFFSET_Y    4
-#define CO_OFFSET_Z    5
-#define CO_ORIENT_X    6
-#define CO_ORIENT_Y    7
-#define CO_ORIENT_Z    8
-#define CO_ROLL                9
-*/
 
-/* ******************** */
-/* fluidsim ipos NT */
+/* ****** FluidSim (ID_FLUIDSIM) ****** */
 
-#define FLUIDSIM_TOTIPO        9
-#define FLUIDSIM_TOTNAM        9
+#define FLUIDSIM_TOTIPO        13
+#define FLUIDSIM_TOTNAM        13
 
 #define FLUIDSIM_VISC   1
 #define FLUIDSIM_TIME   2
@@ -354,9 +404,54 @@ typedef short IPO_Channel;
 
 #define FLUIDSIM_ACTIVE 9
 
+#define FLUIDSIM_ATTR_FORCE_STR        10
+#define FLUIDSIM_ATTR_FORCE_RADIUS     11
+#define FLUIDSIM_VEL_FORCE_STR                 12
+#define FLUIDSIM_VEL_FORCE_RADIUS      13
+
+/* ******************** */
+/* particle ipos */
+
+/* ******* Particle (ID_PA) ******** */
+#define PART_TOTIPO            25
+#define PART_TOTNAM            25
+
+#define PART_EMIT_FREQ 1
+/* #define PART_EMIT_LIFE      2 */ /*UNUSED*/
+#define PART_EMIT_VEL  3
+#define PART_EMIT_AVE  4
+/* #define PART_EMIT_SIZE      5 */ /*UNUSED*/
 
-/* these are IpoCurve specific */
-/* **************** IPO ********************* */
+#define PART_AVE               6
+#define PART_SIZE              7
+#define PART_DRAG              8
+#define PART_BROWN             9
+#define PART_DAMP              10
+#define PART_LENGTH            11
+#define PART_CLUMP             12
+
+#define PART_GRAV_X            13
+#define PART_GRAV_Y            14
+#define PART_GRAV_Z            15
+
+#define PART_KINK_AMP  16
+#define PART_KINK_FREQ 17
+#define PART_KINK_SHAPE        18
+
+#define PART_BB_TILT   19
+
+#define PART_PD_FSTR   20
+#define PART_PD_FFALL  21
+#define PART_PD_FMAXD  22
+
+#define PART_PD2_FSTR  23
+#define PART_PD2_FFALL 24
+#define PART_PD2_FMAXD 25
+
+
+/* -------------------- Defines: Flags and Types ------------------ */
+
+/* ----- IPO Curve Defines ------- */
 
 /* icu->vartype */
 #define IPO_CHAR               0
@@ -366,6 +461,7 @@ typedef short IPO_Channel;
 #define IPO_FLOAT              4
 #define IPO_DOUBLE             5
 #define IPO_FLOAT_DEGR 6
+
        /* very special case, in keys */
 #define IPO_BEZTRIPLE  100
 #define IPO_BPOINT             101
@@ -380,7 +476,8 @@ typedef short IPO_Channel;
 #define IPO_CONST              0
 #define IPO_LIN                        1
 #define IPO_BEZ                        2
-#define IPO_MIXED              3 /* not used yet */
+       /* not used yet */
+#define IPO_MIXED              3 
 
 /* icu->extrap */
 #define IPO_HORIZ              0
@@ -398,6 +495,19 @@ typedef short IPO_Channel;
 #define IPO_PROTECT            64
 #define IPO_MUTE               128
 
+/* ---------- IPO Drivers ----------- */
+
+/* offset in driver->name for finding second posechannel for rot-diff  */
+#define DRIVER_NAME_OFFS       32 
+
+/* driver->type */
+#define        IPO_DRIVER_TYPE_NORMAL          0
+#define        IPO_DRIVER_TYPE_PYTHON          1
+
+/* driver->flag */
+       /* invalid flag: currently only used for buggy pydriver expressions */
+#define IPO_DRIVER_FLAG_INVALID        (1<<0)
+
 #endif