Particles
[blender-staging.git] / source / blender / makesdna / DNA_object_types.h
index e8573f3da4a6e45a2e5beb14acee06b5aefaffee..5b875780f8b77856cc89c32ca7332890a1443cef 100644 (file)
@@ -54,6 +54,7 @@ struct bConstraintChannel;
 struct PartDeflect;
 struct SoftBody;
 struct FluidsimSettings;
+struct ParticleSystem;
 struct DerivedMesh;
 
 typedef struct bDeformGroup {
@@ -63,21 +64,11 @@ typedef struct bDeformGroup {
 
 typedef struct BoundBox {
        float vec[8][3];
+       int flag, pad;
 } BoundBox;
 
-/* OcInfo and LBuf structs are for the Enji gameengine */
-
-typedef struct OcInfo {
-       float dvec[3];
-       float size[3];
-} OcInfo;
-
-typedef struct LBuf {
-       short tot, max;
-       int pad;
-       struct Object **ob;
-} LBuf;
-
+/* boundbox flag */
+#define OB_BB_DISABLED 1
 
 typedef struct Object {
        ID id;
@@ -85,8 +76,10 @@ typedef struct Object {
        short type, partype;
        int par1, par2, par3;   /* can be vertexnrs */
        char parsubstr[32];     /* String describing subobject info */
-       void *pardata;
        struct Object *parent, *track;
+       /* if ob->proxy (or proxy_group), this object is proxy for object ob->proxy */
+       /* proxy_from is set in target back to the proxy. */
+       struct Object *proxy, *proxy_group, *proxy_from;
        struct Ipo *ipo;
        struct Path *path;
        struct BoundBox *bb;
@@ -96,7 +89,6 @@ typedef struct Object {
        
        ListBase constraintChannels;
        ListBase effect;
-       ListBase network;
        ListBase disp;
        ListBase defbase;
        ListBase modifiers; /* list of ModifierData structures */
@@ -109,7 +101,8 @@ typedef struct Object {
        float rot[3], drot[3];
        float quat[4], dquat[4];
        float obmat[4][4];
-       float parentinv[4][4];
+       float parentinv[4][4]; /* inverse result of parent, so that object doesn't 'stick' to parent */
+       float constinv[4][4]; /* inverse result of constraints. doesn't include effect of parent or object local transform */
        float imat[4][4];       /* for during render, old game engine, temporally: ipokeys of transform  */
        
        unsigned int lay;                               /* copy of Base */
@@ -142,13 +135,13 @@ typedef struct Object {
         * For a Sphere, the form factor is by default = 0.4
         */
 
-       float formfactor, softtime;             /* softtime temp for softbody, remove it before release! */
+       float formfactor;
        float rdamping, sizefac;
        
        char dt, dtx;
        char totcol;    /* copy of mesh or curve or meta */
-       char actcol;
-       char empty_drawtype, pad1[3];
+       char actcol;    /* currently selected material in the user interface */
+       char empty_drawtype, pad1[7];
        float empty_drawsize;
        
        ScriptLink scriptlink;
@@ -157,12 +150,14 @@ typedef struct Object {
        ListBase controllers;
        ListBase actuators;
 
-    void *sumohandle;
+       /* now used to store cache particles,
+        * should be renamed see effect.c (Campbell) */
+    void *sumohandle;          
     
        float bbsize[3];
-       short dfras;
+       short index;                    /* custom index, for renderpasses */
        unsigned short actdef;  /* current deformation group */
-       float col[4];
+       float col[4];                   /* object color, adjusted via IPO's only */
        /**
         * Settings for game objects
         * bit 0: Object has dynamic behaviour
@@ -187,22 +182,32 @@ typedef struct Object {
        ListBase constraints;
        ListBase nlastrips;
        ListBase hooks;
+       ListBase particlesystem;        /* particle systems */
        
        struct PartDeflect *pd;         /* particle deflector/attractor/collision data */
        struct SoftBody *soft;          /* if exists, saved in file */
        struct Group *dup_group;        /* object duplicator for group */
        
        short fluidsimFlag;                     /* NT toggle fluidsim participation on/off */
-       short pad3;
+       
+       short restrictflag;                     /* for restricting view, select, render etc. accessible in outliner */
+
        short shapenr, shapeflag;       /* current shape key for menu or pinned, flag for pinning */
        float smoothresh;                       /* smoothresh is phong interpolation ray_shadow correction in render */
-       int pad4;
+       short recalco, pad4;            /* recalco for temp storage of ob->recalc, bad design warning */
        
        struct FluidsimSettings *fluidsimSettings; /* if fluidsim enabled, store additional settings */
-  
+
        struct DerivedMesh *derivedDeform, *derivedFinal;
+       int lastDataMask;                       /* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
+       int pad;
+
+/*#ifdef WITH_VERSE*/
+       void *vnode;                    /* pointer at object VerseNode */
+/*#endif*/
 } Object;
 
+/* Warning, this is not used anymore because hooks are now modifiers */
 typedef struct ObHook {
        struct ObHook *next, *prev;
        
@@ -260,16 +265,19 @@ extern Object workob;
 #define PARSLOW                        16
 
 /* (short) transflag */
-#define OB_OFFS_LOCAL  1
-#define OB_QUAT                        2
-#define OB_NEG_SCALE   4
-#define OB_DUPLI               (8+16+256)
-#define OB_DUPLIFRAMES 8
-#define OB_DUPLIVERTS  16
-#define OB_DUPLIROT            32
-#define OB_DUPLINOSPEED        64
-#define OB_POWERTRACK  128
-#define OB_DUPLIGROUP  256
+#define OB_OFFS_LOCAL          1
+#define OB_QUAT                                2
+#define OB_NEG_SCALE           4
+#define OB_DUPLI                       (8+16+256+512+2048)
+#define OB_DUPLIFRAMES         8
+#define OB_DUPLIVERTS          16
+#define OB_DUPLIROT                    32
+#define OB_DUPLINOSPEED                64
+#define OB_POWERTRACK          128
+#define OB_DUPLIGROUP          256
+#define OB_DUPLIFACES          512
+#define OB_DUPLIFACES_SCALE    1024
+#define OB_DUPLIPARTS          2048
 
 /* (short) ipoflag */
 #define OB_DRAWKEY                     1
@@ -303,6 +311,9 @@ 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))
+
 /* dtx: flags, char! */
 #define OB_AXIS                        2
 #define OB_TEXSPACE            4
@@ -319,6 +330,8 @@ extern Object workob;
 #define OB_ARROWS              1
 #define OB_PLAINAXES   2
 #define OB_CIRCLE              3
+#define OB_SINGLE_ARROW        4
+#define OB_CUBE                        5
 
 /* boundtype */
 #define OB_BOUND_BOX           0
@@ -327,6 +340,10 @@ extern Object workob;
 #define OB_BOUND_CONE          3
 #define OB_BOUND_POLYH         4
 #define OB_BOUND_POLYT         5
+#define OB_BOUND_DYN_MESH   6
+
+
+/* **************** BASE ********************* */
 
 /* also needed for base!!!!! or rather, thy interfere....*/
 /* base->flag and ob->flag */
@@ -338,6 +355,11 @@ extern Object workob;
 
 #define BA_FROMSET                     128
 
+/* an initial attempt as making selection more specific! */
+#define BA_DESELECT    0
+#define BA_SELECT              1
+
+
 #define OB_FROMDUPLI           512
 #define OB_DONE                                1024
 #define OB_RADIO                       2048
@@ -388,12 +410,18 @@ extern Object workob;
 #define OB_ADDACT              1024
 #define OB_SHOWCONT            2048
 
+/* ob->restrictflag */
+#define OB_RESTRICT_VIEW       1
+#define OB_RESTRICT_SELECT     2
+#define OB_RESTRICT_RENDER     4
+
 /* ob->shapeflag */
 #define OB_SHAPE_LOCK          1
 #define OB_SHAPE_TEMPLOCK      2
 
 /* ob->nlaflag */
 #define OB_NLA_OVERRIDE                1
+#define OB_NLA_COLLAPSED       2
 
 /* ob->protectflag */
 #define OB_LOCK_LOCX   1