Merging with trunk up to r38631.
[blender.git] / source / blender / makesdna / DNA_actuator_types.h
index 750bdf2cfff1b5558b27405261d4db0d35eba001..93db8340aac21d7cf5e8ce84c9007ec01be01e3f 100644 (file)
@@ -1,6 +1,4 @@
-/**
- * blenlib/DNA_actuator_types.h (mar-2001 nzc)
- *     
+/*
  * $Id$ 
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
@@ -17,7 +15,7 @@
  *
  * 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.
  *
  * ***** END GPL LICENSE BLOCK *****
  */
+
+/** \file DNA_actuator_types.h
+ *  \ingroup DNA
+ */
+
 #ifndef DNA_ACTUATOR_TYPES_H
 #define DNA_ACTUATOR_TYPES_H
 
@@ -47,33 +50,43 @@ typedef struct bAddObjectActuator {
 
 typedef struct bActionActuator {                                                               
        struct bAction *act;    /* Pointer to action */                         
-       short   type, flag;             /* Playback type */                                     
-       int     sta, end;               /* Start & End frames */                        
+       short   type, flag;             /* Playback type */  // not in use
+       float   sta, end;               /* Start & End frames */                        
        char    name[32];               /* For property-driven playback */      
        char    frameProp[32];  /* Set this property to the actions current frame */
        short   blendin;                /* Number of frames of blending */
        short   priority;               /* Execution priority */
+       short   layer;                  /* Animation layer */
        short   end_reset;      /* Ending the actuator (negative pulse) wont reset the the action to its starting frame */
        short   strideaxis;             /* Displacement axis */
-       float   stridelength;   /* Displacement incurred by cycle */
+       short   pad;
+       float   stridelength;   /* Displacement incurred by cycle */ // not in use
+       float   layer_weight;   /* How much of the previous layer to use for blending. (<0 = disable, 0 = add mode) */
 } bActionActuator;                                                                                             
 
+typedef struct Sound3D
+{
+       float min_gain;
+       float max_gain;
+       float reference_distance;
+       float max_distance;
+       float rolloff_factor;
+       float cone_inner_angle;
+       float cone_outer_angle;
+       float cone_outer_gain;
+} Sound3D;
+
 typedef struct bSoundActuator {
        short flag, sndnr;
-       int sta, end;
-       short pad1[2];
+       int pad1, pad2;
+       short pad3[2];
+       float volume, pitch;
        struct bSound *sound;
-       short type, makecopy;
-       short copymade, pad2[1];
+       struct Sound3D sound3D;
+       short type, pad4;
+       short pad5, pad6[1];
 } bSoundActuator;
 
-typedef struct bCDActuator {
-       short flag, sndnr;
-       int sta, end;
-       short type, track;
-       float volume;
-} bCDActuator;
-
 typedef struct bEditObjectActuator {
        int time;
        short type, flag;
@@ -82,20 +95,20 @@ typedef struct bEditObjectActuator {
        char name[32];
        float linVelocity[3]; /* initial lin. velocity on creation */
        float angVelocity[3]; /* initial ang. velocity on creation */
-       float pad;
+       float mass;
        short localflag; /* flag for the lin & ang. vel: apply locally   */
        short dyn_operation;
 } bEditObjectActuator;
 
 typedef struct bSceneActuator {
-       short type, flag;
+       short type, pad1;
        int pad;
        struct Scene *scene;
        struct Object *camera;
 } bSceneActuator;
 
 typedef struct bPropertyActuator {
-       int flag, type;
+       int pad, type;
        char name[32], value[32];
        struct Object *ob;
 } bPropertyActuator;
@@ -104,26 +117,29 @@ typedef struct bObjectActuator {
        short flag, type, otype;
        short damping;
        float forceloc[3], forcerot[3];
-       float loc[3], rot[3];
-       float dloc[3], drot[3];
+       float pad[3], pad1[3];
+       float dloc[3], drot[3]; /* angle in radians */
        float linearvelocity[3], angularvelocity[3];
+       struct Object *reference;
 } bObjectActuator;
 
+/* deprecated, handled by bActionActuator now */
 typedef struct bIpoActuator {
        short flag, type;
-       int sta, end;
+       float sta, end;
        char name[32];
+       char frameProp[32];     /* Set this property to the actions current frame */
        
-       short pad1, cur, butsta, butend;
+       short pad1, pad2, pad3, pad4;
        
 } bIpoActuator;
 
 typedef struct bCameraActuator {
        struct Object *ob;
        float height, min, max;
-       float fac;
-       short flag, axis;
-       float visifac;
+       float damping;
+       short pad1, axis;
+       float pad2;
 } bCameraActuator ;
 
 typedef struct bConstraintActuator {
@@ -142,7 +158,7 @@ typedef struct bGroupActuator {
        char name[32];          /* property or groupkey */
        
        short pad[3], cur, butsta, butend;/* not referenced, can remove? */
-       struct Group *group;            /* only during game */
+       /* struct Group *group;         not used, remove */
        
 } bGroupActuator;
 
@@ -158,31 +174,12 @@ typedef struct bRandomActuator {
 } bRandomActuator;
 
 typedef struct bMessageActuator {
-       /**
-        * Send to all objects with this propertyname. Empty to broadcast.
-        */
-       char toPropName[32];
-
-       /**
-        * (Possible future use) pointer to a single destination object.
-        */
-       struct Object *toObject;
-
-       /**
-        * Message Subject to send.
-        */
-       char subject[32];
-
-       /**
-        * bodyType is either 'User defined text' or PropName
-        */
-       short bodyType, pad1;
+       char toPropName[32];    /* Send to all objects with this propertyname. Empty to broadcast. */
+       struct Object *toObject;/* (Possible future use) pointer to a single destination object. */
+       char subject[32];               /* Message Subject to send. */
+       short bodyType, pad1;   /* bodyType is either 'User defined text' or PropName */
        int pad2;
-
-       /**
-        * Either User Defined Text or our PropName to send value of
-        */
-       char body[32];
+       char body[32];                  /* Either User Defined Text or our PropName to send value of */
 } bMessageActuator;
 
 typedef struct bGameActuator {
@@ -194,7 +191,8 @@ typedef struct bGameActuator {
 
 typedef struct bVisibilityActuator {
        /** bit 0: Is this object visible? 
-        ** bit 1: Apply recursively  */
+        ** bit 1: Apply recursively  
+        ** bit 2: Is this object an occluder? */
        int flag;
 } bVisibilityActuator;
 
@@ -212,7 +210,8 @@ typedef struct bTwoDFilterActuator{
 }bTwoDFilterActuator;
 
 typedef struct bParentActuator {
-       char pad[4];
+       char pad[2];
+       short flag;
        int type;
        struct Object *ob;
 } bParentActuator;
@@ -222,18 +221,27 @@ typedef struct bStateActuator {
        unsigned int mask;      /* the bits to change */
 } bStateActuator;
 
+typedef struct bArmatureActuator {
+       char posechannel[32];
+       char constraint[32];
+       int type;               /* 0=run, 1=enable, 2=disable, 3=set target, 4=set weight */
+       float weight;
+       struct Object *target;
+       struct Object *subtarget;
+} bArmatureActuator;
+
 typedef struct bActuator {
        struct bActuator *next, *prev, *mynew;
        short type;
        /**
-        * Tells what type of actuator data <data> holds. 
+        * Tells what type of actuator data \ref data holds. 
         */
        short flag;
        short otype, go;
        char name[32];
 
        /**
-        * Data must point to an object actuator type struct.
+        * data must point to an object actuator type struct.
         */
        void *data;
 
@@ -244,13 +252,6 @@ typedef struct bActuator {
        
 } bActuator;
 
-typedef struct FreeCamera {
-       float mass, accelleration;
-       float maxspeed, maxrotspeed,  maxtiltspeed;
-       int flag;
-       float rotdamp, tiltdamp, speeddamp, pad;
-} FreeCamera;
-
 /* objectactuator->flag */
 #define ACT_FORCE_LOCAL                        1
 #define ACT_TORQUE_LOCAL               2
@@ -287,13 +288,13 @@ typedef struct FreeCamera {
 #define ACT_RANDOM      13
 #define ACT_MESSAGE     14
 #define ACT_ACTION             15      /* __ NLA */
-#define ACT_CD                 16
 #define ACT_GAME               17
 #define ACT_VISIBILITY          18
 #define ACT_2DFILTER   19
 #define ACT_PARENT      20
 #define ACT_SHAPEACTION 21
 #define ACT_STATE              22
+#define ACT_ARMATURE   23
 
 /* actuator flag */
 #define ACT_SHOW               1
@@ -356,8 +357,10 @@ typedef struct FreeCamera {
 #define ACT_PROP_ASSIGN                0
 #define ACT_PROP_ADD           1
 #define ACT_PROP_COPY          2
+#define ACT_PROP_TOGGLE                3
 
 /* constraint flag */
+#define ACT_CONST_NONE         0
 #define ACT_CONST_LOCX         1
 #define ACT_CONST_LOCY         2
 #define ACT_CONST_LOCZ         4
@@ -368,6 +371,9 @@ typedef struct FreeCamera {
 #define ACT_CONST_MATERIAL     128
 #define ACT_CONST_PERMANENT 256
 #define ACT_CONST_DISTANCE     512
+#define ACT_CONST_LOCAL     1024
+#define ACT_CONST_DOROTFH      2048
+
 /* constraint mode */
 #define ACT_CONST_DIRPX                1
 #define ACT_CONST_DIRPY                2
@@ -380,6 +386,7 @@ typedef struct FreeCamera {
 #define ACT_CONST_TYPE_LOC     0
 #define ACT_CONST_TYPE_DIST    1
 #define ACT_CONST_TYPE_ORI     2
+#define ACT_CONST_TYPE_FH   3
 
 /* editObjectActuator->type */
 #define ACT_EDOB_ADD_OBJECT            0
@@ -392,10 +399,21 @@ typedef struct FreeCamera {
 #define ACT_EDOB_LOCAL_LINV            2
 #define ACT_EDOB_LOCAL_ANGV            4
 
-
 /* editObjectActuator->flag */
 #define ACT_TRACK_3D                   1
 
+/* editObjectActuator->flag for replace mesh actuator */
+#define ACT_EDOB_REPLACE_MESH_NOGFX            2 /* use for replace mesh actuator */
+#define ACT_EDOB_REPLACE_MESH_PHYS             4
+
+/* editObjectActuator->dyn_operation */
+#define ACT_EDOB_RESTORE_DYN   0
+#define ACT_EDOB_SUSPEND_DYN   1
+#define ACT_EDOB_ENABLE_RB             2
+#define ACT_EDOB_DISABLE_RB            3
+#define ACT_EDOB_SET_MASS              4
+
+
 /* SceneActuator->type */
 #define ACT_SCENE_RESTART              0
 #define ACT_SCENE_SET                  1
@@ -419,6 +437,9 @@ typedef struct FreeCamera {
 #define ACT_RANDOM_FLOAT_NORMAL                8
 #define ACT_RANDOM_FLOAT_NEGATIVE_EXPONENTIAL  9
 
+/* SoundActuator->flag */
+#define ACT_SND_3D_SOUND               1
+
 /*  SoundActuator->type */
 #define ACT_SND_PLAY_STOP_SOUND                0
 #define ACT_SND_PLAY_END_SOUND         1
@@ -431,15 +452,6 @@ typedef struct FreeCamera {
 #define ACT_MESG_MESG          0
 #define ACT_MESG_PROP          1
 
-/* cdactuator->type */
-#define ACT_CD_PLAY_ALL                0
-#define ACT_CD_PLAY_TRACK      1
-#define ACT_CD_LOOP_TRACK      2
-#define ACT_CD_VOLUME          3
-#define ACT_CD_STOP                    4
-#define ACT_CD_PAUSE           5
-#define ACT_CD_RESUME          6
-
 /* gameactuator->type */
 #define ACT_GAME_LOAD          0
 #define ACT_GAME_START         1
@@ -452,6 +464,7 @@ typedef struct FreeCamera {
 /* Set means the object will become invisible */
 #define ACT_VISIBILITY_INVISIBLE       (1 << 0)
 #define ACT_VISIBILITY_RECURSIVE       (1 << 1)
+#define ACT_VISIBILITY_OCCLUSION       (1 << 2)
 
 /* twodfilter->type */
 #define ACT_2DFILTER_ENABLED                   -2
@@ -474,6 +487,30 @@ typedef struct FreeCamera {
 /* parentactuator->type */
 #define ACT_PARENT_SET      0
 #define ACT_PARENT_REMOVE   1
+
+/* parentactuator->flag */
+#define ACT_PARENT_COMPOUND    1
+#define ACT_PARENT_GHOST       2
+
+/* armatureactuator->type */
+#define ACT_ARM_RUN                    0
+#define ACT_ARM_ENABLE         1
+#define ACT_ARM_DISABLE                2
+#define ACT_ARM_SETTARGET      3
+#define ACT_ARM_SETWEIGHT      4
+/* update this define if more type are addedd */
+#define ACT_ARM_MAXTYPE                4
+
+/* stateactuator->type */
+#define ACT_STATE_SET          0
+#define ACT_STATE_ADD          1
+#define ACT_STATE_REMOVE       2
+#define ACT_STATE_CHANGE       3
+
+/* cameraactuator->axis */
+#define ACT_CAMERA_X           (float)'x'
+#define ACT_CAMERA_Y           (float)'y'
+
 #endif