2.5/Posemode:
[blender-staging.git] / source / blender / makesdna / DNA_object_types.h
index eba1bde0b6f83ca43e2844bfa441547b2fce4b4c..5c821b532fbca04b402e91b25543c56b02b0f7c4 100644 (file)
@@ -35,7 +35,6 @@
 
 #include "DNA_listBase.h"
 #include "DNA_ID.h"
-#include "DNA_scriptlink_types.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -54,6 +53,7 @@ struct SoftBody;
 struct FluidsimSettings;
 struct ParticleSystem;
 struct DerivedMesh;
+struct SculptSession;
 
 typedef struct bDeformGroup {
        struct bDeformGroup *next, *prev;
@@ -92,6 +92,8 @@ typedef struct BoundBox {
 typedef struct Object {
        ID id;
        struct AnimData *adt;           /* animation data (must be immediately after id for utilities to use it) */ 
+
+       struct SculptSession *sculpt;
        
        short type, partype;
        int par1, par2, par3;   /* can be vertexnrs */
@@ -113,8 +115,15 @@ typedef struct Object {
        ListBase disp;
        ListBase defbase;
        ListBase modifiers; /* list of ModifierData structures */
-       
-       struct Material **mat;
+
+       /* For now just a flag for sculpt mode, eventually we make the other modes local too */
+       int mode, pad2;
+
+       /* materials */
+       struct Material **mat;  /* material slots */
+       char *matbits;                  /* 1 if material linked to object */
+       int totcol;                             /* copy of mesh or curve or meta */
+       int actcol;                             /* currently selected material in the UI */
        
        /* rot en drot have to be together! (transform('r' en 's')) */
        float loc[3], dloc[3], orig[3];
@@ -129,7 +138,7 @@ typedef struct Object {
        unsigned int lay;                               /* copy of Base */
        
        short flag;                     /* copy of Base */
-       short colbits;          /* when zero, from obdata */
+       short colbits;          /* deprecated */
        
        short transflag, protectflag;   /* transformation settings and transform locks  */
        short trackflag, upflag;
@@ -159,16 +168,15 @@ typedef struct Object {
        float formfactor;
        float rdamping, sizefac;
        float margin;
-       int   pad3;
+       float max_vel; /* clamp the maximum velocity 0.0 is disabled */
+       float min_vel; /* clamp the maximum velocity 0.0 is disabled */
+       float m_contactProcessingThreshold;
 
        char dt, dtx;
-       char totcol;    /* copy of mesh or curve or meta */
-       char actcol;    /* currently selected material in the user interface */
-       char empty_drawtype, pad1[3];
+       char empty_drawtype, pad1[5];
        float empty_drawsize;
        float dupfacesca;       /* dupliface scale */
        
-       ScriptLink scriptlink;
        ListBase prop;
        ListBase sensors;
        ListBase controllers;
@@ -225,7 +233,8 @@ typedef struct Object {
        int lastDataMask;                       /* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
        unsigned int state;                     /* bit masks of game controllers that are active */
        unsigned int init_state;        /* bit masks of initial state as recorded by the users */
-       int pad2;
+
+       int restore_mode;               /* Keep track of what mode to return to after edit mode exits */
 
        ListBase gpulamp;               /* runtime, for lamps only */
 } Object;
@@ -339,18 +348,6 @@ extern Object workob;
 #define OB_SHADED              4
 #define OB_TEXTURE             5
 
-/* this condition has been made more complex since editmode can draw textures */
-#define CHECK_OB_DRAWTEXTURE(vd, dt) \
-       ((vd->drawtype==OB_TEXTURE && dt>OB_SOLID) || \
-       (vd->drawtype==OB_SOLID && vd->flag2 & V3D_SOLID_TEX))
-
-#define CHECK_OB_DRAWFACEDOT(sce, vd, dt) \
-       (       (sce->selectmode & SCE_SELECT_FACE) && \
-               (vd->drawtype<=OB_SOLID) && \
-               (((vd->drawtype==OB_SOLID) && (dt>=OB_SOLID) && (vd->flag2 & V3D_SOLID_TEX) && (vd->flag & V3D_ZBUF_SELECT)) == 0) \
-       )
-
-
 /* dtx: flags, char! */
 #define OB_AXIS                        2
 #define OB_TEXSPACE            4
@@ -405,7 +402,6 @@ extern Object workob;
 #define OB_DONE                                1024
 #define OB_RADIO                       2048
 #define OB_FROMGROUP           4096
-#define OB_POSEMODE                    8192
 
 /* ob->recalc (flag bits!) */
 #define OB_RECALC_OB           1
@@ -436,9 +432,17 @@ extern Object workob;
 
 #define OB_COLLISION   65536
 #define OB_SOFT_BODY   0x20000
+#define OB_OCCLUDER            0x40000
+#define OB_SENSOR              0x80000
 
 /* ob->gameflag2 */
 #define OB_NEVER_DO_ACTIVITY_CULLING   1
+#define OB_LOCK_RIGID_BODY_X_AXIS      4
+#define OB_LOCK_RIGID_BODY_Y_AXIS      8
+#define OB_LOCK_RIGID_BODY_Z_AXIS      16
+#define OB_LOCK_RIGID_BODY_X_ROT_AXIS  32
+#define OB_LOCK_RIGID_BODY_Y_ROT_AXIS  64
+#define OB_LOCK_RIGID_BODY_Z_ROT_AXIS  128
 
 #define OB_LIFE                        (OB_PROP|OB_DYNAMIC|OB_ACTOR|OB_MAINACTOR|OB_CHILD)
 
@@ -448,6 +452,8 @@ extern Object workob;
 #define OB_BODY_TYPE_DYNAMIC           2
 #define OB_BODY_TYPE_RIGID                     3
 #define OB_BODY_TYPE_SOFT                      4
+#define OB_BODY_TYPE_OCCLUDER          5
+#define OB_BODY_TYPE_SENSOR                    6
 
 /* ob->scavisflag */
 #define OB_VIS_SENS            1
@@ -487,6 +493,8 @@ extern Object workob;
 #define OB_ADS_SHOWCONS                (1<<12)
        /* object's material channels */
 #define OB_ADS_SHOWMATS                (1<<13)
+       /* object's marticle channels */
+#define OB_ADS_SHOWPARTS       (1<<14)
 
 /* ob->protectflag */
 #define OB_LOCK_LOCX   1
@@ -502,6 +510,16 @@ extern Object workob;
 #define OB_LOCK_SCALEZ 256
 #define OB_LOCK_SCALE  448
 
+/* ob->mode */
+#define OB_MODE_OBJECT          0
+#define OB_MODE_EDIT            1
+#define OB_MODE_SCULPT          2
+#define OB_MODE_VERTEX_PAINT    4
+#define OB_MODE_WEIGHT_PAINT    8
+#define OB_MODE_TEXTURE_PAINT  16
+#define OB_MODE_PARTICLE_EDIT  32
+#define OB_MODE_POSE           64
+
 /* ob->softflag in DNA_object_force.h */
 
 #ifdef __cplusplus