Merge branch 'master' into blender2.8
[blender.git] / source / blender / makesdna / DNA_object_types.h
index 80fa29a9c438603dd049f60dbd8ccf619101abf3..070d34ef051d6c972120059c7dedc3070d3ac42f 100644 (file)
@@ -65,6 +65,23 @@ typedef struct bDeformGroup {
        /* need this flag for locking weights */
        char flag, pad[7];
 } bDeformGroup;
+
+/* Face Maps*/
+typedef struct bFaceMap {
+       struct bFaceMap *next, *prev;
+       char name[64];  /* MAX_VGROUP_NAME */
+       char flag;
+       char pad[7];
+} bFaceMap;
+
+/* Object Runtime display data */
+typedef struct ObjectEngineData {
+       struct ObjectEngineData *next, *prev;
+       struct DrawEngineType *engine_type;
+       void *storage;
+       void (*free)(void *storage);
+} ObjectEngineData;
+
 #define MAX_VGROUP_NAME 64
 
 /* bDeformGroup->flag */
@@ -142,7 +159,8 @@ typedef struct Object {
        ListBase effect  DNA_DEPRECATED;             // XXX deprecated... keep for readfile
        ListBase defbase;   /* list of bDeformGroup (vertex groups) names and flag only */
        ListBase modifiers; /* list of ModifierData structures */
-
+       ListBase fmaps;     /* list of facemaps */
+       
        int mode;           /* Local object mode */
        int restore_mode;   /* Keep track of what mode to return to after toggling a mode */
 
@@ -223,7 +241,10 @@ typedef struct Object {
        float jump_speed;
        float fall_speed;
        unsigned char max_jumps;
-       char pad2[3];
+       char pad2;
+
+       /* Depsgraph */
+       short base_flag; /* used by depsgraph, flushed from base */
 
        /** Collision mask settings */
        unsigned short col_group, col_mask;
@@ -248,6 +269,8 @@ typedef struct Object {
 
        short index;                    /* custom index, for renderpasses */
        unsigned short actdef;  /* current deformation group, note: index starts at 1 */
+       unsigned short actfmap; /* current face map, note: index starts at 1 */
+       unsigned char pad5[6];
        float col[4];                   /* object color */
 
        int gameflag;
@@ -276,15 +299,15 @@ typedef struct Object {
 
        struct FluidsimSettings *fluidsimSettings; /* if fluidsim enabled, store additional settings */
 
-       /* Runtime valuated curve-specific data, not stored in the file */
-       struct CurveCache *curve_cache;
-
        struct DerivedMesh *derivedDeform, *derivedFinal;
        uint64_t lastDataMask;   /* the custom data layer mask that was last used to calculate derivedDeform and derivedFinal */
        uint64_t customdata_mask; /* (extra) custom data layer mask to use for creating derivedmesh, set by depsgraph */
        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 */
 
+       /* Runtime valuated curve-specific data, not stored in the file */
+       struct CurveCache *curve_cache;
+
        ListBase gpulamp;               /* runtime, for glsl lamp display only */
        ListBase pc_ids;
        ListBase *duplilist;    /* for temporary dupli list storage, only for use by RNA API */
@@ -299,6 +322,17 @@ typedef struct Object {
        LodLevel *currentlod;
 
        struct PreviewImage *preview;
+
+       struct IDProperty *base_collection_properties; /* used by depsgraph, flushed from base */
+
+       ListBase drawdata;              /* runtime, ObjectEngineData */
+       int pad1;
+       int select_color;
+
+       /* Mesh structure createrd during object evaluaiton.
+        * It has all modifiers applied.
+        */
+       struct Mesh *mesh_evaluated;
 } Object;
 
 /* Warning, this is not used anymore because hooks are now modifiers */
@@ -357,6 +391,7 @@ enum {
        OB_CAMERA     = 11,
 
        OB_SPEAKER    = 12,
+       OB_LIGHTPROBE = 13,
 
 /*     OB_WAVE       = 21, */
        OB_LATTICE    = 22,
@@ -377,10 +412,10 @@ enum {
 
 /* is this ID type used as object data */
 #define OB_DATA_SUPPORT_ID(_id_type) \
-       (ELEM(_id_type, ID_ME, ID_CU, ID_MB, ID_LA, ID_SPK, ID_CA, ID_LT, ID_AR))
+       (ELEM(_id_type, ID_ME, ID_CU, ID_MB, ID_LA, ID_SPK, ID_LP, ID_CA, ID_LT, ID_AR))
 
 #define OB_DATA_SUPPORT_ID_CASE \
-       ID_ME: case ID_CU: case ID_MB: case ID_LA: case ID_SPK: case ID_CA: case ID_LT: case ID_AR
+       ID_ME: case ID_CU: case ID_MB: case ID_LA: case ID_SPK: case ID_LP: case ID_CA: case ID_LT: case ID_AR
 
 /* partype: first 4 bits: type */
 enum {
@@ -512,12 +547,6 @@ enum {
 #define BA_TRANSFORM_CHILD  (1 << 8)  /* child of a transformed object */
 #define BA_TRANSFORM_PARENT (1 << 13)  /* parent of a transformed object */
 
-
-/* an initial attempt as making selection more specific! */
-#define BA_DESELECT     0
-#define BA_SELECT       1
-
-
 #define OB_FROMDUPLI        (1 << 9)
 #define OB_DONE             (1 << 10)  /* unknown state, clear before use */
 /* #define OB_RADIO            (1 << 11) */  /* deprecated */
@@ -603,6 +632,11 @@ enum {
        OB_DEPS_EXTRA_DATA_RECALC   = 1 << 1,
 };
 
+/* ob->deg_update_flag */
+enum {
+       DEG_RUNTIME_DATA_UPDATE     = 1 << 0,
+};
+
 /* ob->scavisflag */
 enum {
        OB_VIS_SENS     = 1 << 0,