Merge branch 'master' into blender2.8
[blender.git] / source / blender / makesdna / DNA_ID.h
index 5250749fce33e032c2506ad19845db18d36d53eb..1741aa12051b809306e26b748f700d63348c77d6 100644 (file)
@@ -96,6 +96,17 @@ enum {
        IDP_STRING_SUB_BYTE  = 1,  /* arbitrary byte array, _not_ null terminated */
 };
 
+/* IDP_GROUP */
+enum {
+       IDP_GROUP_SUB_NONE              = 0,  /* default */
+       IDP_GROUP_SUB_MODE_OBJECT       = 1,  /* object mode settings */
+       IDP_GROUP_SUB_MODE_EDIT         = 2,  /* mesh edit mode settings */
+       IDP_GROUP_SUB_ENGINE_RENDER     = 3,  /* render engine settings */
+       IDP_GROUP_SUB_OVERRIDE          = 4,  /* data override */
+       IDP_GROUP_SUB_MODE_PAINT_WEIGHT = 5,  /* weight paint mode settings */
+       IDP_GROUP_SUB_MODE_PAINT_VERTEX = 6,  /* vertex paint mode settings */
+};
+
 /*->flag*/
 enum {
        IDP_FLAG_GHOST       = 1 << 7,  /* this means the property is set but RNA will return false when checking
@@ -131,6 +142,7 @@ typedef struct ID {
        int us;
        int icon_id;
        IDProperty *properties;
+       void *py_instance;
 } ID;
 
 /**
@@ -253,6 +265,8 @@ typedef enum ID_Type {
        ID_PAL  = MAKE_ID2('P', 'L'), /* Palette */
        ID_PC   = MAKE_ID2('P', 'C'), /* PaintCurve  */
        ID_CF   = MAKE_ID2('C', 'F'), /* CacheFile */
+       ID_WS   = MAKE_ID2('W', 'S'), /* WorkSpace */
+       ID_LP   = MAKE_ID2('L', 'P'), /* LightProbe */
 } ID_Type;
 
 /* Only used as 'placeholder' in .blend files for directly linked datablocks. */
@@ -276,7 +290,7 @@ typedef enum ID_Type {
 #define ID_REAL_USERS(id) (((ID *)id)->us - ID_FAKE_USERS(id))
 #define ID_EXTRA_USERS(id) (((ID *)id)->tag & LIB_TAG_EXTRAUSER ? 1 : 0)
 
-#define ID_CHECK_UNDO(id) ((GS((id)->name) != ID_SCR) && (GS((id)->name) != ID_WM))
+#define ID_CHECK_UNDO(id) ((GS((id)->name) != ID_SCR) && (GS((id)->name) != ID_WM) && (GS((id)->name) != ID_WS))
 
 #define ID_BLEND_PATH(_bmain, _id) ((_id)->lib ? (_id)->lib->filepath : (_bmain)->name)
 
@@ -350,6 +364,9 @@ enum {
        LIB_TAG_ANIM_NO_RECALC  = 1 << 14,
        LIB_TAG_ID_RECALC_ALL   = (LIB_TAG_ID_RECALC | LIB_TAG_ID_RECALC_DATA),
 
+       /* The datablock is a copy-on-write version. */
+       LIB_TAG_COPY_ON_WRITE   = 1 << 15,
+
        /* RESET_NEVER tag datablock for freeing etc. behavior (usually set when copying real one into temp/runtime one). */
        LIB_TAG_NO_MAIN          = 1 << 16,  /* Datablock is not listed in Main database. */
        LIB_TAG_NO_USER_REFCOUNT = 1 << 17,  /* Datablock does not refcount usages of other IDs. */
@@ -393,9 +410,11 @@ enum {
        FILTER_ID_WO        = (1 << 26),
        FILTER_ID_PA        = (1 << 27),
        FILTER_ID_CF        = (1 << 28),
+       FILTER_ID_WS        = (1 << 29),
+       FILTER_ID_LP        = (1u << 31),
 };
 
-/* IMPORTANT: this enum matches the order currently use in set_lisbasepointers,
+/* IMPORTANT: this enum matches the order currently use in set_listbasepointers,
  * keep them in sync! */
 enum {
        INDEX_ID_LI = 0,
@@ -424,12 +443,14 @@ enum {
        INDEX_ID_BR,
        INDEX_ID_PA,
        INDEX_ID_SPK,
+       INDEX_ID_LP,
        INDEX_ID_WO,
        INDEX_ID_MC,
        INDEX_ID_SCR,
        INDEX_ID_OB,
        INDEX_ID_LS,
        INDEX_ID_SCE,
+       INDEX_ID_WS,
        INDEX_ID_WM,
        INDEX_ID_MSK,
        INDEX_ID_NULL,