merge with trunk at r27259 and commit of a patch by anthony jones to fix msvc (though...
[blender-staging.git] / source / blender / makesdna / DNA_object_types.h
index d780aec78954d4374f5968efb5f673b33b8350fe..3be057959b68ccdaba40b80146e9bf8e793acccb 100644 (file)
@@ -19,7 +19,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.
 
 #include "DNA_listBase.h"
 #include "DNA_ID.h"
+#include "DNA_action_types.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
-
-struct bPose;  
+       
 struct Object;
 struct AnimData;
 struct Ipo;
@@ -115,6 +115,9 @@ typedef struct Object {
        
        struct bGPdata *gpd;    /* Grease Pencil data */
        
+       bAnimVizSettings avs;   /* settings for visualisation of object-transform animation */
+       bMotionPath *mpath;             /* motion path cache for this object */
+       
        ListBase constraintChannels; // XXX depreceated... old animation system
        ListBase effect;
        ListBase disp;
@@ -126,21 +129,21 @@ typedef struct Object {
 
        /* materials */
        struct Material **mat;  /* material slots */
-       char *matbits;                  /* 1 if material linked to object */
+       char *matbits;  /* a bitfield, with each bit 1 if corrusponding 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];
-       float size[3], dsize[3];
+       float size[3], dsize[3];        /* scale and delta scale */
        float rot[3], drot[3];          /* euler rotation */
        float quat[4], dquat[4];        /* quaternion rotation */
        float rotAxis[3], drotAxis[3];  /* axis angle rotation - axis part */
        float rotAngle, drotAngle;      /* axis angle rotation - angle part */
-       float obmat[4][4];
+       float obmat[4][4];              /* final worldspace matrix with constraints & animsys applied */
        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  */
+       float imat[4][4];       /* inverse matrix of 'obmat' for during render, old game engine, temporally: ipokeys of transform  */
        
        unsigned int lay;                               /* copy of Base */
        
@@ -193,7 +196,7 @@ typedef struct Object {
     
        float bbsize[3];
        short index;                    /* custom index, for renderpasses */
-       unsigned short actdef;  /* current deformation group */
+       unsigned short actdef;  /* current deformation group, note: index starts at 1 */
        float col[4];                   /* object color, adjusted via IPO's only */
        /**
         * Settings for game objects
@@ -331,6 +334,7 @@ extern Object workob;
 #define OB_DUPLIFACES_SCALE    1024
 #define OB_DUPLIPARTS          2048
 #define OB_RENDER_DUPLI                4096
+#define OB_NO_CONSTRAINTS      8192 /* runtime constraints disable */
 
 /* (short) ipoflag */
        // XXX depreceated - old animation system crap
@@ -416,7 +420,7 @@ extern Object workob;
 #define BA_TRANSFORM_PARENT    8192 /* parent of a transformed object */
 
 /* an initial attempt as making selection more specific! */
-#define BA_DESELECT            0
+#define BA_DESELECT    0
 #define BA_SELECT              1