Comments!!1
[blender-staging.git] / source / blender / makesdna / DNA_object_types.h
index 7411c4392437a128b9d13aca534a1fc0173f22d5..83168248b9a096f01c330783f013a963b3b0e259 100644 (file)
@@ -5,15 +5,12 @@
  *
  * $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
@@ -31,7 +28,7 @@
  *
  * Contributor(s): none yet.
  *
- * ***** END GPL/BL DUAL LICENSE BLOCK *****
+ * ***** END GPL LICENSE BLOCK *****
  */
 #ifndef DNA_OBJECT_TYPES_H
 #define DNA_OBJECT_TYPES_H
@@ -54,6 +51,7 @@ struct bConstraintChannel;
 struct PartDeflect;
 struct SoftBody;
 struct FluidsimSettings;
+struct ParticleSystem;
 struct DerivedMesh;
 
 typedef struct bDeformGroup {
@@ -61,6 +59,27 @@ typedef struct bDeformGroup {
        char name[32];
 } bDeformGroup;
 
+/**
+ * The following illustrates the orientation of the 
+ * bounding box in local space
+ * 
+ *  
+ * Z  Y
+ * | /
+ * |/
+ * .-----X
+ * 
+ * 
+ *     2----------6
+ *    /|         /|
+ *   / |        / |
+ *  1----------5  |
+ *  |  |       |  |
+ *  |  3-------|--7
+ *  | /        | /
+ *  |/         |/
+ *  0----------4
+ */
 typedef struct BoundBox {
        float vec[8][3];
        int flag, pad;
@@ -69,27 +88,12 @@ typedef struct BoundBox {
 /* boundbox flag */
 #define OB_BB_DISABLED 1
 
-/* 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;
-
-
 typedef struct Object {
        ID id;
 
        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. */
@@ -98,12 +102,12 @@ typedef struct Object {
        struct Path *path;
        struct BoundBox *bb;
        struct bAction *action; 
+       struct bAction *poselib;
        struct bPose *pose;     
        void *data;
        
        ListBase constraintChannels;
        ListBase effect;
-       ListBase network;
        ListBase disp;
        ListBase defbase;
        ListBase modifiers; /* list of ModifierData structures */
@@ -114,9 +118,10 @@ typedef struct Object {
        float loc[3], dloc[3], orig[3];
        float size[3], dsize[3];
        float rot[3], drot[3];
-       float quat[4], dquat[4];
+       /* float quat[4], dquat[4]; (not used yet) */
        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 */
@@ -132,7 +137,7 @@ typedef struct Object {
        
        int dupon, dupoff, dupsta, dupend;
 
-       float sf, ctime;
+       float sf, ctime; /* sf is time-offset, ctime is the objects current time */
        
        /* during realtime */
 
@@ -149,27 +154,26 @@ 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 actcol;    /* currently selected material in the user interface */
        char empty_drawtype, pad1[3];
        float empty_drawsize;
+       float dupfacesca;       /* dupliface scale */
        
        ScriptLink scriptlink;
        ListBase prop;
        ListBase sensors;
        ListBase controllers;
        ListBase actuators;
-
-    void *sumohandle;
     
        float bbsize[3];
        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
@@ -194,6 +198,7 @@ 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 */
@@ -205,10 +210,10 @@ typedef struct Object {
 
        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;
@@ -218,6 +223,7 @@ typedef struct Object {
 /*#endif*/
 } Object;
 
+/* Warning, this is not used anymore because hooks are now modifiers */
 typedef struct ObHook {
        struct ObHook *next, *prev;
        
@@ -278,7 +284,7 @@ extern Object workob;
 #define OB_OFFS_LOCAL          1
 #define OB_QUAT                                2
 #define OB_NEG_SCALE           4
-#define OB_DUPLI                       (8+16+256+512)
+#define OB_DUPLI                       (8+16+256+512+2048)
 #define OB_DUPLIFRAMES         8
 #define OB_DUPLIVERTS          16
 #define OB_DUPLIROT                    32
@@ -287,6 +293,8 @@ extern Object workob;
 #define OB_DUPLIGROUP          256
 #define OB_DUPLIFACES          512
 #define OB_DUPLIFACES_SCALE    1024
+#define OB_DUPLIPARTS          2048
+#define OB_RENDER_DUPLI                4096
 
 /* (short) ipoflag */
 #define OB_DRAWKEY                     1
@@ -303,6 +311,9 @@ extern Object workob;
        /* for stride edit */
 #define OB_DISABLE_PATH                1024
 
+#define OB_OFFS_PARENTADD      2048
+
+
 /* (short) trackflag / upflag */
 #define OB_POSX                        0
 #define OB_POSY                        1
@@ -320,6 +331,18 @@ 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
@@ -337,6 +360,9 @@ extern Object workob;
 #define OB_PLAINAXES   2
 #define OB_CIRCLE              3
 #define OB_SINGLE_ARROW        4
+#define OB_CUBE                        5
+#define OB_EMPTY_SPHERE        6
+#define OB_EMPTY_CONE  7
 
 /* boundtype */
 #define OB_BOUND_BOX           0
@@ -448,3 +474,4 @@ extern Object workob;
 
 #endif
 
+