diff options
Diffstat (limited to 'source/blender/makesdna')
32 files changed, 787 insertions, 204 deletions
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h index b2a3cb4f9bc..4ea5b8761b9 100644 --- a/source/blender/makesdna/DNA_ID.h +++ b/source/blender/makesdna/DNA_ID.h @@ -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, diff --git a/source/blender/makesdna/DNA_action_types.h b/source/blender/makesdna/DNA_action_types.h index 9d4731f8da4..cc8e9a18655 100644 --- a/source/blender/makesdna/DNA_action_types.h +++ b/source/blender/makesdna/DNA_action_types.h @@ -180,6 +180,18 @@ typedef enum eMotionPaths_BakeFlag { MOTIONPATH_BAKE_HAS_PATHS = (1 << 2) } eMotionPath_BakeFlag; +/* runtime */ +# +# +typedef struct bPoseChannelDrawData { + float solid_color[4]; + float wire_color[4]; + + int bbone_matrix_len; + /* keep last */ + float bbone_matrix[0][4][4]; +} bPoseChannelDrawData; + /* ************************************************ */ /* Poses */ @@ -238,6 +250,8 @@ typedef struct bPoseChannel { float chan_mat[4][4]; /* matrix result of loc/quat/size, and where we put deform in, see next line */ float pose_mat[4][4]; /* constraints accumulate here. in the end, pose_mat = bone->arm_mat * chan_mat * this matrix is object space */ + float disp_mat[4][4]; /* for display, pose_mat with bone length applied */ + float disp_tail_mat[4][4]; /* for display, pose_mat with bone length applied and translated to tail*/ float constinv[4][4]; /* inverse result of constraints. * doesn't include effect of restposition, parent, and local transform*/ @@ -258,8 +272,10 @@ typedef struct bPoseChannel { struct bPoseChannel *bbone_prev; /* next/prev bones to use as handle references when calculating bbones (optional) */ struct bPoseChannel *bbone_next; - + void *temp; /* use for outliner */ + /* Runtime data for color and bbone segment matrix. */ + bPoseChannelDrawData *draw_data; } bPoseChannel; diff --git a/source/blender/makesdna/DNA_camera_types.h b/source/blender/makesdna/DNA_camera_types.h index 52e40cbc098..4aa3edcc788 100644 --- a/source/blender/makesdna/DNA_camera_types.h +++ b/source/blender/makesdna/DNA_camera_types.h @@ -85,6 +85,13 @@ typedef struct Camera { char sensor_fit; char pad[7]; + /* runtime only, used for drawing */ + float drwcorners[4][2]; + float drwtria[2][2]; + float drwdepth, pad1; + float drwfocusmat[4][4]; + float drwnormalmat[4][4]; + /* Stereo settings */ struct CameraStereoSettings stereo; } Camera; diff --git a/source/blender/makesdna/DNA_curve_types.h b/source/blender/makesdna/DNA_curve_types.h index 16647e78eff..ea446552874 100644 --- a/source/blender/makesdna/DNA_curve_types.h +++ b/source/blender/makesdna/DNA_curve_types.h @@ -266,6 +266,7 @@ typedef struct Curve { char pad2[2]; + void *batch_cache; } Curve; #define CURVE_VFONT_ANY(cu) \ diff --git a/source/blender/makesdna/DNA_customdata_types.h b/source/blender/makesdna/DNA_customdata_types.h index 2d1ffaa53eb..0e0b1d669d9 100644 --- a/source/blender/makesdna/DNA_customdata_types.h +++ b/source/blender/makesdna/DNA_customdata_types.h @@ -92,13 +92,13 @@ typedef enum CustomDataType { CD_MCOL = 6, CD_ORIGINDEX = 7, CD_NORMAL = 8, -/* CD_POLYINDEX = 9, */ + CD_FACEMAP = 9, /* exclusive face group, each face can only be part of one */ CD_PROP_FLT = 10, CD_PROP_INT = 11, CD_PROP_STR = 12, CD_ORIGSPACE = 13, /* for modifier stack face location mapping */ CD_ORCO = 14, - CD_MTEXPOLY = 15, +/* CD_MTEXPOLY = 15, */ /* deprecated */ CD_MLOOPUV = 16, CD_MLOOPCOL = 17, CD_TANGENT = 18, @@ -143,13 +143,13 @@ typedef enum CustomDataType { #define CD_MASK_MCOL (1 << CD_MCOL) #define CD_MASK_ORIGINDEX (1 << CD_ORIGINDEX) #define CD_MASK_NORMAL (1 << CD_NORMAL) -// #define CD_MASK_POLYINDEX (1 << CD_POLYINDEX) +#define CD_MASK_FACEMAP (1 << CD_FACEMAP) #define CD_MASK_PROP_FLT (1 << CD_PROP_FLT) #define CD_MASK_PROP_INT (1 << CD_PROP_INT) #define CD_MASK_PROP_STR (1 << CD_PROP_STR) #define CD_MASK_ORIGSPACE (1 << CD_ORIGSPACE) #define CD_MASK_ORCO (1 << CD_ORCO) -#define CD_MASK_MTEXPOLY (1 << CD_MTEXPOLY) +// #define CD_MASK_MTEXPOLY (1 << CD_MTEXPOLY) /* DEPRECATED */ #define CD_MASK_MLOOPUV (1 << CD_MLOOPUV) #define CD_MASK_MLOOPCOL (1 << CD_MLOOPCOL) #define CD_MASK_TANGENT (1 << CD_TANGENT) diff --git a/source/blender/makesdna/DNA_defs.h b/source/blender/makesdna/DNA_defs.h index fc9dd8f06a9..bfa8da02707 100644 --- a/source/blender/makesdna/DNA_defs.h +++ b/source/blender/makesdna/DNA_defs.h @@ -44,6 +44,12 @@ # endif #endif +#ifdef __GNUC__ +# define DNA_PRIVATE_ATTR __attribute__ ((deprecated)) +#else +# define DNA_PRIVATE_ATTR +#endif + /* poison pragma */ #ifdef DNA_DEPRECATED_ALLOW diff --git a/source/blender/makesdna/DNA_fileglobal_types.h b/source/blender/makesdna/DNA_fileglobal_types.h index b2ab0d2a08d..6a01878a9ef 100644 --- a/source/blender/makesdna/DNA_fileglobal_types.h +++ b/source/blender/makesdna/DNA_fileglobal_types.h @@ -32,9 +32,6 @@ #ifndef __DNA_FILEGLOBAL_TYPES_H__ #define __DNA_FILEGLOBAL_TYPES_H__ -struct bScreen; -struct Scene; - /** * FileGlobal stores a part of the current user-interface settings at * the moment of saving, and the file-specific settings. @@ -46,6 +43,9 @@ typedef struct FileGlobal { char pad[6]; struct bScreen *curscreen; struct Scene *curscene; + struct SceneLayer *cur_render_layer; + void *pad1; + int fileflags; int globalf; uint64_t build_commit_timestamp; /* commit timestamp from buildinfo */ diff --git a/source/blender/makesdna/DNA_gpencil_types.h b/source/blender/makesdna/DNA_gpencil_types.h index 0364d855f69..ba1bf1520ce 100644 --- a/source/blender/makesdna/DNA_gpencil_types.h +++ b/source/blender/makesdna/DNA_gpencil_types.h @@ -126,7 +126,7 @@ typedef enum eGPDpalettecolor_Flag { PC_COLOR_LOCKED = (1 << 2), /* do onion skinning */ PC_COLOR_ONIONSKIN = (1 << 3), - /* "volumetric" strokes (i.e. GLU Quadric discs in 3D) */ + /* "volumetric" strokes */ PC_COLOR_VOLUMETRIC = (1 << 4), /* Use High quality fill */ PC_COLOR_HQ_FILL = (1 << 5) @@ -271,7 +271,7 @@ typedef enum eGPDlayer_Flag { GP_LAYER_GHOST_PREVCOL = (1 << 8), /* use custom color for ghosts after current frame */ GP_LAYER_GHOST_NEXTCOL = (1 << 9), - /* "volumetric" strokes (i.e. GLU Quadric discs in 3D) */ + /* "volumetric" strokes */ GP_LAYER_VOLUMETRIC = (1 << 10), /* Use high quality fill (instead of buggy legacy OpenGL Fill) */ GP_LAYER_HQ_FILL = (1 << 11), @@ -298,6 +298,7 @@ typedef struct bGPdata { short sbuffer_sflag; /* flags for stroke that cache represents */ void *sbuffer; /* stroke buffer (can hold GP_STROKE_BUFFER_MAX) */ float scolor[4]; /* buffer color using palettes */ + float sfill[4]; /* buffer fill color */ char pad[6]; /* padding for compiler alignment error */ short sflag; /* settings for palette color */ diff --git a/source/blender/makesdna/DNA_gpu_types.h b/source/blender/makesdna/DNA_gpu_types.h index 967cb7284dc..be34309572f 100644 --- a/source/blender/makesdna/DNA_gpu_types.h +++ b/source/blender/makesdna/DNA_gpu_types.h @@ -38,6 +38,8 @@ typedef struct GPUDOFSettings { float fstop; float focal_length; float sensor; + float rotation; + float ratio; int num_blades; int high_quality; } GPUDOFSettings; diff --git a/source/blender/makesdna/DNA_lamp_types.h b/source/blender/makesdna/DNA_lamp_types.h index a2e39f93875..92703fa2d3b 100644 --- a/source/blender/makesdna/DNA_lamp_types.h +++ b/source/blender/makesdna/DNA_lamp_types.h @@ -67,7 +67,7 @@ typedef struct Lamp { short pad2; float clipsta, clipend; - float bias, soft, compressthresh, bleedbias, pad5; + float bias, soft, compressthresh, bleedbias, bleedexp; short bufsize, samp, buffers, filtertype; char bufflag, buftype; @@ -106,6 +106,14 @@ typedef struct Lamp { short pr_texture, use_nodes; char pad6[4]; + /* Eevee */ + float cascade_max_dist; + float cascade_exponent; + float cascade_fade; + int cascade_count; + + float contact_dist, contact_bias, contact_spread, contact_thickness; + /* preview */ struct PreviewImage *preview; @@ -151,6 +159,7 @@ typedef struct Lamp { #define LA_SHAD_TEX (1 << 16) #define LA_SHOW_CONE (1 << 17) #define LA_SHOW_SHADOW_BOX (1 << 18) +#define LA_SHAD_CONTACT (1 << 19) /* layer_shadow */ #define LA_LAYER_SHADOW_BOTH 0 diff --git a/source/blender/makesdna/DNA_lattice_types.h b/source/blender/makesdna/DNA_lattice_types.h index 242d6f0feeb..28a401676fc 100644 --- a/source/blender/makesdna/DNA_lattice_types.h +++ b/source/blender/makesdna/DNA_lattice_types.h @@ -69,6 +69,7 @@ typedef struct Lattice { char vgroup[64]; /* multiply the influence, MAX_VGROUP_NAME */ struct EditLatt *editlatt; + void *batch_cache; } Lattice; /* ***************** LATTICE ********************* */ diff --git a/source/blender/makesdna/DNA_layer_types.h b/source/blender/makesdna/DNA_layer_types.h new file mode 100644 index 00000000000..86931401aae --- /dev/null +++ b/source/blender/makesdna/DNA_layer_types.h @@ -0,0 +1,146 @@ +/* + * ***** 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributor(s): Dalai Felinto + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file DNA_layer_types.h + * \ingroup DNA + */ + +#ifndef __DNA_LAYER_TYPES_H__ +#define __DNA_LAYER_TYPES_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include "DNA_listBase.h" + +typedef struct Base { + struct Base *next, *prev; + short flag; + short refcount; + short sx, sy; + struct Object *object; + unsigned int lay; + int flag_legacy; + struct IDProperty *collection_properties; /* used by depsgraph, flushed from collection-tree */ +} Base; + +typedef struct CollectionOverride { + struct CollectionOverride *next, *prev; + char name[64]; /* MAX_NAME */ + /* TODO proper data */ +} CollectionOverride; + +typedef struct SceneLayerEngineData { + struct SceneLayerEngineData *next, *prev; + struct DrawEngineType *engine_type; + void *storage; + void (*free)(void *storage); +} SceneLayerEngineData; + +typedef struct LayerCollection { + struct LayerCollection *next, *prev; + struct SceneCollection *scene_collection; + short flag; + /* TODO(sergey): Get rid of this once we've got CoW in DEG, */ + short flag_evaluated; + short pad[2]; + ListBase object_bases; /* (ObjectBase *)LinkData->data - synced with collection->objects and collection->filter_objects */ + ListBase overrides; + ListBase layer_collections; /* synced with collection->collections */ + struct IDProperty *properties; /* overrides */ + struct IDProperty *properties_evaluated; +} LayerCollection; + +typedef struct SceneLayer { + struct SceneLayer *next, *prev; + char name[64]; /* MAX_NAME */ + short active_collection; + short flag; + short pad[2]; + ListBase object_bases; /* ObjectBase */ + struct SceneStats *stats; /* default allocated now */ + struct Base *basact; + ListBase layer_collections; /* LayerCollection */ + struct IDProperty *properties; /* overrides */ + struct IDProperty *properties_evaluated; + + /* Runtime data */ + ListBase drawdata; /* SceneLayerEngineData */ +} SceneLayer; + +typedef struct SceneCollection { + struct SceneCollection *next, *prev; + char name[64]; /* MAX_NAME */ + char filter[64]; /* MAX_NAME */ + int active_object_index; /* for UI */ + int pad; + ListBase objects; /* (Object *)LinkData->data */ + ListBase filter_objects; /* (Object *)LinkData->data */ + ListBase scene_collections; /* nested collections */ +} SceneCollection; + +/* Base->flag */ +enum { + BASE_SELECTED = (1 << 0), + BASE_VISIBLED = (1 << 1), + BASE_SELECTABLED = (1 << 2), + BASE_FROMDUPLI = (1 << 3), + BASE_DIRTY_ENGINE_SETTINGS = (1 << 4), + BASE_FROM_SET = (1 << 5), /* To be set only by the depsgraph */ +}; + +/* LayerCollection->flag */ +enum { + COLLECTION_VISIBLE = (1 << 0), + COLLECTION_SELECTABLE = (1 << 1), + COLLECTION_DISABLED = (1 << 2), +}; + +/* SceneLayer->flag */ +enum { + SCENE_LAYER_RENDER = (1 << 0), + SCENE_LAYER_ENGINE_DIRTY = (1 << 1), +}; + + +/* *************************************************************** */ +/* Engine Settings */ + +/* CollectionEngineSettings->type */ +typedef enum CollectionEngineSettingsType { + COLLECTION_MODE_NONE = 0, + COLLECTION_MODE_OBJECT = 1, + COLLECTION_MODE_EDIT = 2, + COLLECTION_MODE_PAINT_WEIGHT = 5, + COLLECTION_MODE_PAINT_VERTEX = 6, +} CollectionModeSettingsType; + +/* *************************************************************** */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __DNA_LAYER_TYPES_H__ */ + diff --git a/source/blender/makesdna/DNA_lightprobe_types.h b/source/blender/makesdna/DNA_lightprobe_types.h new file mode 100644 index 00000000000..e65c36672b5 --- /dev/null +++ b/source/blender/makesdna/DNA_lightprobe_types.h @@ -0,0 +1,106 @@ +/* + * ***** 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributor(s): Blender Foundation + * + * ***** END GPL LICENSE BLOCK ***** + * + */ + +/** \file DNA_lightprobe_types.h + * \ingroup DNA + */ + +#ifndef __DNA_LIGHTPROBE_TYPES_H__ +#define __DNA_LIGHTPROBE_TYPES_H__ + +#include "DNA_defs.h" +#include "DNA_listBase.h" +#include "DNA_ID.h" + +#ifdef __cplusplus +extern "C" { +#endif + +struct Object; +struct AnimData; + +typedef struct LightProbe { + ID id; + struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */ + + char type; /* For realtime probe objects */ + char flag; /* General purpose flags for probes */ + char attenuation_type; /* Attenuation type */ + char parallax_type; /* Parallax type */ + + float distinf; /* Influence Radius */ + float distpar; /* Parallax Radius */ + float falloff; /* Influence falloff */ + + float clipsta, clipend; + + int grid_resolution_x; /* Irradiance grid resolution */ + int grid_resolution_y; + int grid_resolution_z; + int pad1; + + struct Object *parallax_ob; /* Object to use as a parallax origin */ + struct Image *image; /* Image to use on as lighting data */ + + float data_draw_size; + + /* Runtime display data */ + float distfalloff, distgridinf; + float pad; +} LightProbe; + +/* Probe->type */ +enum { + LIGHTPROBE_TYPE_CUBE = 0, + LIGHTPROBE_TYPE_PLANAR = 1, + LIGHTPROBE_TYPE_GRID = 2, +}; + +/* Probe->flag */ +enum { + LIGHTPROBE_FLAG_CUSTOM_PARALLAX = (1 << 0), + LIGHTPROBE_FLAG_SHOW_INFLUENCE = (1 << 1), + LIGHTPROBE_FLAG_SHOW_PARALLAX = (1 << 2), + LIGHTPROBE_FLAG_SHOW_CLIP_DIST = (1 << 3), + LIGHTPROBE_FLAG_SHOW_DATA = (1 << 4), +}; + +/* Probe->display */ +enum { + LIGHTPROBE_DISP_WIRE = 0, + LIGHTPROBE_DISP_SHADED = 1, + LIGHTPROBE_DISP_DIFFUSE = 2, + LIGHTPROBE_DISP_REFLECTIVE = 3, +}; + +/* Probe->parallax && Probe->attenuation_type*/ +enum { + LIGHTPROBE_SHAPE_ELIPSOID = 0, + LIGHTPROBE_SHAPE_BOX = 1, +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __DNA_LIGHTPROBE_TYPES_H__ */ diff --git a/source/blender/makesdna/DNA_material_types.h b/source/blender/makesdna/DNA_material_types.h index 0c500e366a7..220326fb01d 100644 --- a/source/blender/makesdna/DNA_material_types.h +++ b/source/blender/makesdna/DNA_material_types.h @@ -90,6 +90,16 @@ typedef struct TexPaintSlot { int pad; } TexPaintSlot; +/* Clay engine */ + +/* MaterialRuntimeClay.flag */ +#define CLAY_OUTDATED 1 + +/* MaterialEngineSettingsClay.type */ +#define CLAY_MATCAP_NONE 0 +#define CLAY_MATCAP_SIMPLE 1 +#define CLAY_MATCAP_COMPLETE 2 + typedef struct Material { ID id; struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */ @@ -201,6 +211,18 @@ typedef struct Material { char nmap_tangent_names[9][64]; /* [MAX_MTFACE+1][MAX_NAME]; +1 for empty name */ int nmap_tangent_names_count, pad5; + /* Transparency */ + float alpha_threshold; + float refract_depth; + char blend_method; + char blend_shadow; + char blend_flag; + char pad6[5]; + + /* image to use for image/uv space, also bake target + * (not to be used shading/rendering pipeline, this is editor featyure only!). */ + struct Image *edit_image; + struct TexPaintSlot *texpaintslot; /* cached slot for painting. Make sure to recalculate before use * with refresh_texpaint_image_cache */ ListBase gpumaterial; /* runtime */ @@ -275,7 +297,7 @@ typedef struct Material { #define MA_ONLYSHADOW 1024 #define MA_HALO_XALPHA 1024 #define MA_STAR 0x800 -#define MA_FACETEXTURE 0x800 +// #define MA_FACETEXTURE 0x800 /* deprecated */ #define MA_HALOTEX 0x1000 #define MA_HALOPUNO 0x2000 #define MA_ONLYCAST 0x2000 @@ -297,7 +319,7 @@ typedef struct Material { /* qdn: a bit clumsy this, tangents needed for normal maps separated from shading */ #define MA_NORMAP_TANG 0x8000000 #define MA_GROUP_NOLAY 0x10000000 -#define MA_FACETEXTURE_ALPHA 0x20000000 +// #define MA_FACETEXTURE_ALPHA 0x20000000 /* deprecated */ #define MA_STR_B_UNITS 0x40000000 #define MA_STR_SURFDIFF 0x80000000 @@ -477,5 +499,29 @@ typedef struct Material { #define MA_VOL_SHADE_MULTIPLE 3 #define MA_VOL_SHADE_SHADEDPLUSMULTIPLE 4 +/* blend_method */ +enum { + MA_BM_SOLID, + MA_BM_ADD, + MA_BM_MULTIPLY, + MA_BM_CLIP, + MA_BM_HASHED, + MA_BM_BLEND, +}; + +/* blend_flag */ +enum { + MA_BL_HIDE_BACKSIDE = (1 << 0), + MA_BL_SS_REFRACTION = (1 << 1), +}; + +/* blend_shadow */ +enum { + MA_BS_NONE = 0, + MA_BS_SOLID, + MA_BS_CLIP, + MA_BS_HASHED, +}; + #endif diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index 39e56925903..505b1f7157b 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -66,7 +66,6 @@ typedef struct Mesh { /* BMESH ONLY */ /*new face structures*/ struct MPoly *mpoly; - struct MTexPoly *mtpoly; struct MLoop *mloop; struct MLoopUV *mloopuv; struct MLoopCol *mloopcol; @@ -127,6 +126,7 @@ typedef struct Mesh { short totcol; struct Multires *mr DNA_DEPRECATED; /* deprecated multiresolution modeling data, only keep for loading old files */ + void *batch_cache; } Mesh; /* deprecated by MTFace, only here for file reading */ diff --git a/source/blender/makesdna/DNA_meshdata_types.h b/source/blender/makesdna/DNA_meshdata_types.h index 8bb711339f7..6d38fe22ea1 100644 --- a/source/blender/makesdna/DNA_meshdata_types.h +++ b/source/blender/makesdna/DNA_meshdata_types.h @@ -186,22 +186,9 @@ typedef struct MVertTri { unsigned int tri[3]; } MVertTri; - -typedef struct MTexPoly { - struct Image *tpage; - char flag, transp; - short mode, tile, pad; -} MTexPoly; - -/* can copy from/to MTexPoly/MTFace */ -#define ME_MTEXFACE_CPY(dst, src) \ -{ \ - (dst)->tpage = (src)->tpage; \ - (dst)->flag = (src)->flag; \ - (dst)->transp = (src)->transp; \ - (dst)->mode = (src)->mode; \ - (dst)->tile = (src)->tile; \ -} (void)0 +//typedef struct MTexPoly { +// void *pad; +//} MTexPoly; typedef struct MLoopUV { float uv[2]; @@ -256,9 +243,6 @@ typedef struct MSelect { /*tessellation uv face data*/ typedef struct MTFace { float uv[4][2]; - struct Image *tpage; - char flag, transp; - short mode, tile, unwrap; } MTFace; /*Custom Data Properties*/ @@ -463,58 +447,4 @@ enum { ME_FSEL = 2, }; -/* mtface->flag */ -enum { - // TF_SELECT = (1 << 0), /* use MFace hide flag (after 2.43), should be able to reuse after 2.44 */ - // TF_ACTIVE = (1 << 1), /* deprecated! */ - TF_SEL1 = (1 << 2), - TF_SEL2 = (1 << 3), - TF_SEL3 = (1 << 4), - TF_SEL4 = (1 << 5), -}; - -/* mtface->mode */ -enum { - TF_DYNAMIC = (1 << 0), - TF_ALPHASORT = (1 << 1), - TF_TEX = (1 << 2), - TF_SHAREDVERT = (1 << 3), - TF_LIGHT = (1 << 4), - - TF_CONVERTED = (1 << 5), /* tface converted to material */ - - TF_SHAREDCOL = (1 << 6), - // TF_TILES = (1 << 7), /* deprecated */ - TF_BILLBOARD = (1 << 8), - TF_TWOSIDE = (1 << 9), - TF_INVISIBLE = (1 << 10), - - TF_OBCOL = (1 << 11), - TF_BILLBOARD2 = (1 << 12), /* with Z axis constraint */ - TF_SHADOW = (1 << 13), - TF_BMFONT = (1 << 14), -}; - -/* mtface->transp, values 1-4 are used as flags in the GL, WARNING, TF_SUB cant work with this */ -enum { - TF_SOLID = 0, - TF_ADD = (1 << 0), - TF_ALPHA = (1 << 1), - TF_CLIP = (1 << 2), /* clipmap alpha/binary alpha all or nothing! */ - - TF_SUB = 3, /* sub is not available in the user interface anymore */ -}; - -/* mtface->unwrap */ -enum { - TF_DEPRECATED1 = (1 << 0), - TF_DEPRECATED2 = (1 << 1), - TF_DEPRECATED3 = (1 << 2), - TF_DEPRECATED4 = (1 << 3), - TF_PIN1 = (1 << 4), - TF_PIN2 = (1 << 5), - TF_PIN3 = (1 << 6), - TF_PIN4 = (1 << 7), -}; - #endif /* __DNA_MESHDATA_TYPES_H__ */ diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 7f0547188e9..59d30d175a5 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -419,7 +419,7 @@ typedef struct UVProjectModifierData { /* the objects which do the projecting */ struct Object *projectors[10]; /* MOD_UVPROJECT_MAXPROJECTORS */ struct Image *image; /* the image to project */ - int flags; + int pad2; int num_projectors; float aspectx, aspecty; float scalex, scaley; diff --git a/source/blender/makesdna/DNA_node_types.h b/source/blender/makesdna/DNA_node_types.h index e6bc315b728..016de0f1cc9 100644 --- a/source/blender/makesdna/DNA_node_types.h +++ b/source/blender/makesdna/DNA_node_types.h @@ -221,8 +221,11 @@ typedef struct bNode { * and replacing all uses with per-instance data. */ short preview_xsize, preview_ysize; /* reserved size of the preview rect */ - int pad2; + short pad2[2]; struct uiBlock *block; /* runtime during drawing */ + + float ssr_id; /* XXX: eevee only, id of screen space reflection layer, needs to be a float to feed GPU_uniform. */ + float pad3; } bNode; /* node->flag */ diff --git a/source/blender/makesdna/DNA_object_force.h b/source/blender/makesdna/DNA_object_force.h index 6e8d4a0480c..63e1da4f90e 100644 --- a/source/blender/makesdna/DNA_object_force.h +++ b/source/blender/makesdna/DNA_object_force.h @@ -112,6 +112,12 @@ typedef struct PartDeflect { float f_noise; /* noise of force */ int seed; /* noise random seed */ + /* Display Size */ + float drawvec1[4]; /* Runtime only : start of the curve or draw scale */ + float drawvec2[4]; /* Runtime only : end of the curve */ + float drawvec_falloff_min[3], pad1; /* Runtime only */ + float drawvec_falloff_max[3], pad2; /* Runtime only */ + struct Object *f_source; /* force source object */ } PartDeflect; diff --git a/source/blender/makesdna/DNA_object_types.h b/source/blender/makesdna/DNA_object_types.h index d08bca4f244..ea3af3834b4 100644 --- a/source/blender/makesdna/DNA_object_types.h +++ b/source/blender/makesdna/DNA_object_types.h @@ -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 deg_update_flag; /* what has been updated in this object */ + 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 { @@ -599,6 +634,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, diff --git a/source/blender/makesdna/DNA_outliner_types.h b/source/blender/makesdna/DNA_outliner_types.h index 984e3334414..81575beaac8 100644 --- a/source/blender/makesdna/DNA_outliner_types.h +++ b/source/blender/makesdna/DNA_outliner_types.h @@ -38,6 +38,9 @@ struct ID; typedef struct TreeStoreElem { short type, nr, flag, used; + + /* XXX We actually also store non-ID data in this pointer for identifying + * the TreeStoreElem for a TreeElement when rebuilding the tree. Ugly! */ struct ID *id; } TreeStoreElem; @@ -50,11 +53,14 @@ typedef struct TreeStore { } TreeStore; /* TreeStoreElem->flag */ -#define TSE_CLOSED 1 -#define TSE_SELECTED 2 -#define TSE_TEXTBUT 4 -#define TSE_CHILDSEARCH 8 -#define TSE_SEARCHMATCH 16 +enum { + TSE_CLOSED = (1 << 0), + TSE_SELECTED = (1 << 1), + TSE_TEXTBUT = (1 << 2), + TSE_CHILDSEARCH = (1 << 3), + TSE_SEARCHMATCH = (1 << 4), + TSE_HIGHLIGHTED = (1 << 5), +}; /* TreeStoreElem->types */ #define TSE_NLA 1 /* NO ID */ @@ -96,6 +102,8 @@ typedef struct TreeStore { #define TSE_KEYMAP_ITEM 35 /* NO ID */ #define TSE_ID_BASE 36 /* NO ID */ #define TSE_GP_LAYER 37 /* NO ID */ +#define TSE_LAYER_COLLECTION 38 /* NO ID */ +#define TSE_SCENE_COLLECTION 39 /* NO ID */ /* Check whether given TreeStoreElem should have a real ID in its ->id member. */ @@ -103,7 +111,8 @@ typedef struct TreeStore { (!ELEM((_tse)->type, TSE_NLA, TSE_NLA_TRACK, TSE_DRIVER_BASE, \ TSE_SEQUENCE, TSE_SEQ_STRIP, TSE_SEQUENCE_DUP, \ TSE_RNA_STRUCT, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM, \ - TSE_KEYMAP, TSE_KEYMAP_ITEM, TSE_ID_BASE, TSE_GP_LAYER)) + TSE_KEYMAP, TSE_KEYMAP_ITEM, TSE_ID_BASE, TSE_GP_LAYER, \ + TSE_SCENE_COLLECTION, TSE_LAYER_COLLECTION)) #endif diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h index f6bed37dfa2..ea7905eb2ad 100644 --- a/source/blender/makesdna/DNA_particle_types.h +++ b/source/blender/makesdna/DNA_particle_types.h @@ -166,8 +166,9 @@ typedef struct ParticleSettings { short type, from, distr, texact; /* physics modes */ short phystype, rotmode, avemode, reactevent; - int draw, pad1; - short draw_as, draw_size, childtype, pad2; + int draw; + float draw_size; + short draw_as, pad1, childtype, pad2; short ren_as, subframes, draw_col; /* number of path segments, power of 2 except */ short draw_step, ren_step; @@ -259,8 +260,9 @@ typedef struct ParticleSettings { /* modified dm support */ short use_modifier_stack; - short pad5[3]; + short pad5; + int recalc; } ParticleSettings; typedef struct ParticleSystem { @@ -324,6 +326,8 @@ typedef struct ParticleSystem { float dt_frac; /* current time step, as a fraction of a frame */ float lattice_strength; /* influence of the lattice modifier */ + + void *batch_cache; } ParticleSystem; typedef enum eParticleDrawFlag { diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h index b9f19a36072..14bbb0f8f44 100644 --- a/source/blender/makesdna/DNA_scene_types.h +++ b/source/blender/makesdna/DNA_scene_types.h @@ -47,6 +47,8 @@ extern "C" { #include "DNA_ID.h" #include "DNA_freestyle_types.h" #include "DNA_gpu_types.h" +#include "DNA_layer_types.h" +#include "DNA_material_types.h" #include "DNA_userdef_types.h" struct CurveMapping; @@ -65,18 +67,13 @@ struct bGPdata; struct bGPDbrush; struct MovieClip; struct ColorSpace; +struct SceneCollection; /* ************************************************************* */ /* Scene Data */ /* Base - Wrapper for referencing Objects in a Scene */ -typedef struct Base { - struct Base *next, *prev; - unsigned int lay, selcol; - int flag; - short sx, sy; - struct Object *object; -} Base; +#define BaseLegacy Base /* ************************************************************* */ /* Output Format Data */ @@ -542,6 +539,12 @@ typedef enum eBakePassFilter { #define R_BAKE_PASS_FILTER_ALL (~0) +/* RenderEngineSettingsClay.options */ +typedef enum ClayFlagSettings { + CLAY_USE_AO = (1 << 0), + CLAY_USE_HSV = (1 << 1), +} ClayFlagSettings; + /* *************************************************************** */ /* Render Data */ @@ -746,7 +749,7 @@ typedef struct RenderData { float unit_line_thickness; /* in pixels */ /* render engine */ - char engine[32]; + char engine[32] DNA_DEPRECATED; // XXX deprecated since 2.8 /* Cycles baking */ struct BakeData bake; @@ -770,6 +773,12 @@ typedef struct RenderData { } RenderData; /* *************************************************************** */ +/* Settings related to viewport drawing/render, only settings used by WorkSpace and Scene. */ +typedef struct ViewRender { + char engine_id[32]; +} ViewRender; + +/* *************************************************************** */ /* Render Conversion/Simplfication Settings */ /* control render convert and shading engine */ @@ -880,7 +889,6 @@ typedef struct GameData { /* Scene LoD */ short lodflag, pad2; int scehysteresis, pad5; - } GameData; #define STEREO_NOSTEREO 1 @@ -923,7 +931,7 @@ typedef struct GameData { #define GAME_SHOW_DEBUG_PROPS (1 << 2) #define GAME_SHOW_FRAMERATE (1 << 3) #define GAME_SHOW_PHYSICS (1 << 4) -#define GAME_DISPLAY_LISTS (1 << 5) +// #define GAME_DISPLAY_LISTS (1 << 5) /* deprecated */ #define GAME_GLSL_NO_LIGHTS (1 << 6) #define GAME_GLSL_NO_SHADERS (1 << 7) #define GAME_GLSL_NO_SHADOWS (1 << 8) @@ -1071,6 +1079,7 @@ typedef struct ParticleEditSettings { int draw_step, fade_frames; struct Scene *scene; + struct SceneLayer *scene_layer; struct Object *object; struct Object *shape_object; } ParticleEditSettings; @@ -1246,17 +1255,6 @@ typedef enum eGP_Interpolate_Type { GP_IPO_SINE = 12, } eGP_Interpolate_Type; - -/* *************************************************************** */ -/* Transform Orientations */ - -typedef struct TransformOrientation { - struct TransformOrientation *next, *prev; - char name[64]; /* MAX_NAME */ - float mat[3][3]; - int pad; -} TransformOrientation; - /* *************************************************************** */ /* Unified Paint Settings */ @@ -1617,7 +1615,7 @@ typedef struct Scene { struct Scene *set; ListBase base; - struct Base *basact; /* active base */ + struct BaseLegacy *basact; /* active base */ struct Object *obedit; /* name replaces old G.obedit */ float cursor[3]; /* 3d cursor location */ @@ -1637,17 +1635,17 @@ typedef struct Scene { struct Editing *ed; /* sequence editor data is allocated here */ struct ToolSettings *toolsettings; /* default allocated now */ - struct SceneStats *stats; /* default allocated now */ + void *pad2; struct DisplaySafeAreas safe_areas; /* migrate or replace? depends on some internal things... */ /* no, is on the right place (ton) */ struct RenderData r; struct AudioData audio; - + ListBase markers; - ListBase transform_spaces; - + ListBase transform_spaces DNA_DEPRECATED; + void *sound_scene; void *playback_handle; void *sound_scrub_handle; @@ -1656,7 +1654,7 @@ typedef struct Scene { void *fps_info; /* (runtime) info/cache used for presenting playback framerate info to the user */ /* none of the dependency graph vars is mean to be saved */ - struct Depsgraph *depsgraph; + struct Depsgraph *depsgraph_legacy; void *pad1; struct DagForest *theDag; short dagflags; @@ -1679,14 +1677,14 @@ typedef struct Scene { /* Physics simulation settings */ struct PhysicsSettings physics_settings; - /* Movie Tracking */ - struct MovieClip *clip; /* active movie clip */ - - void *pad4; + void *pad6; uint64_t customdata_mask; /* XXX. runtime flag for drawing, actually belongs in the window, only used by BKE_object_handle_update() */ uint64_t customdata_mask_modal; /* XXX. same as above but for temp operator use (gl renders) */ + /* Movie Tracking */ + struct MovieClip *clip; /* active movie clip */ + /* Color Management */ ColorManagedViewSettings view_settings; ColorManagedDisplaySettings display_settings; @@ -1696,6 +1694,18 @@ typedef struct Scene { struct RigidBodyWorld *rigidbody_world; struct PreviewImage *preview; + + ListBase render_layers; + struct SceneCollection *collection; + int active_layer; + int pad4; + + IDProperty *collection_properties; /* settings to be overriden by layer collections */ + IDProperty *layer_properties; /* settings to be override by workspaces */ + + int pad5[2]; + + ViewRender view_render; } Scene; /* **************** RENDERDATA ********************* */ @@ -1884,6 +1894,8 @@ enum { /* scene->r.engine (scene.c) */ extern const char *RE_engine_id_BLENDER_RENDER; extern const char *RE_engine_id_BLENDER_GAME; +extern const char *RE_engine_id_BLENDER_CLAY; +extern const char *RE_engine_id_BLENDER_EEVEE; extern const char *RE_engine_id_CYCLES; /* **************** SCENE ********************* */ @@ -1904,38 +1916,39 @@ extern const char *RE_engine_id_CYCLES; /* depricate this! */ #define TESTBASE(v3d, base) ( \ - ((base)->flag & SELECT) && \ + ((base)->flag_legacy & SELECT) && \ ((base)->lay & v3d->lay) && \ (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0)) -#define TESTBASELIB(v3d, base) ( \ - ((base)->flag & SELECT) && \ - ((base)->lay & v3d->lay) && \ + +#define TESTBASE_NEW(base) ( \ + (((base)->flag & BASE_SELECTED) != 0) && \ + (((base)->flag & BASE_VISIBLED) != 0)) +#define TESTBASELIB_NEW(base) ( \ + (((base)->flag & BASE_SELECTED) != 0) && \ ((base)->object->id.lib == NULL) && \ - (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0)) -#define TESTBASELIB_BGMODE(v3d, scene, base) ( \ - ((base)->flag & SELECT) && \ - ((base)->lay & (v3d ? v3d->lay : scene->lay)) && \ + (((base)->flag & BASE_VISIBLED) != 0)) +#define TESTBASELIB_BGMODE_NEW(base) ( \ + (((base)->flag & BASE_SELECTED) != 0) && \ ((base)->object->id.lib == NULL) && \ - (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0)) -#define BASE_EDITABLE_BGMODE(v3d, scene, base) ( \ - ((base)->lay & (v3d ? v3d->lay : scene->lay)) && \ + (((base)->flag & BASE_VISIBLED) != 0)) +#define BASE_EDITABLE_BGMODE_NEW(base) ( \ ((base)->object->id.lib == NULL) && \ - (((base)->object->restrictflag & OB_RESTRICT_VIEW) == 0)) -#define BASE_SELECTABLE(v3d, base) ( \ - (base->lay & v3d->lay) && \ - (base->object->restrictflag & (OB_RESTRICT_SELECT | OB_RESTRICT_VIEW)) == 0) -#define BASE_VISIBLE(v3d, base) ( \ - (base->lay & v3d->lay) && \ - (base->object->restrictflag & OB_RESTRICT_VIEW) == 0) -#define BASE_VISIBLE_BGMODE(v3d, scene, base) ( \ - (base->lay & (v3d ? v3d->lay : scene->lay)) && \ - (base->object->restrictflag & OB_RESTRICT_VIEW) == 0) + (((base)->flag & BASE_VISIBLED) != 0)) +#define BASE_SELECTABLE_NEW(base) \ + (((base)->flag & BASE_SELECTABLED) != 0) +#define BASE_VISIBLE_NEW(base) ( \ + ((base)->flag & BASE_VISIBLED) != 0) #define FIRSTBASE scene->base.first #define LASTBASE scene->base.last #define BASACT (scene->basact) #define OBACT (BASACT ? BASACT->object: NULL) +#define FIRSTBASE_NEW(_sl) ((_sl)->object_bases.first) +#define LASTBASE_NEW(_sl) ((_sl)->object_bases.last) +#define BASACT_NEW(_sl) ((_sl)->basact) +#define OBACT_NEW(_sl) (BASACT_NEW(_sl) ? BASACT_NEW(_sl)->object: NULL) + #define V3D_CAMERA_LOCAL(v3d) ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : NULL) #define V3D_CAMERA_SCENE(scene, v3d) ((!(v3d)->scenelock && (v3d)->camera) ? (v3d)->camera : (scene)->camera) @@ -1950,7 +1963,7 @@ extern const char *RE_engine_id_CYCLES; #define TIME2FRA(a) ((((double) scene->r.frs_sec) * (double)(a)) / (double)scene->r.frs_sec_base) #define FPS (((double) scene->r.frs_sec) / (double)scene->r.frs_sec_base) -/* base->flag is in DNA_object_types.h */ +/* base->legacy_flag is in DNA_object_types.h */ /* toolsettings->snap_flag */ #define SCE_SNAP 1 diff --git a/source/blender/makesdna/DNA_screen_types.h b/source/blender/makesdna/DNA_screen_types.h index fd63d7c471c..e3e5aaf8ca4 100644 --- a/source/blender/makesdna/DNA_screen_types.h +++ b/source/blender/makesdna/DNA_screen_types.h @@ -30,6 +30,7 @@ #ifndef __DNA_SCREEN_TYPES_H__ #define __DNA_SCREEN_TYPES_H__ +#include "DNA_defs.h" #include "DNA_listBase.h" #include "DNA_view2d_types.h" #include "DNA_vec_types.h" @@ -52,10 +53,9 @@ typedef struct bScreen { ListBase edgebase; ListBase areabase; ListBase regionbase; /* screen level regions (menus), runtime only */ - - struct Scene *scene; - struct Scene *newscene; /* temporary when switching */ - + + struct Scene *scene DNA_DEPRECATED; + short winid; /* winid from WM, starts with 1 */ short redraws_flag; /* user-setting for which editors get redrawn during anim playback (used to be time->redraws) */ @@ -76,6 +76,8 @@ typedef struct bScreen { struct wmTimer *animtimer; /* if set, screen has timer handler added in window */ void *context; /* context callback */ + + PreviewImage *preview; } bScreen; typedef struct ScrVert { @@ -191,6 +193,13 @@ typedef struct uiList { /* some list UI data need to be saved in file uiListDyn *dyn_data; } uiList; +typedef struct TransformOrientation { + struct TransformOrientation *next, *prev; + char name[64]; /* MAX_NAME */ + float mat[3][3]; + int pad; +} TransformOrientation; + typedef struct uiPreview { /* some preview UI data need to be saved in file */ struct uiPreview *next, *prev; @@ -265,9 +274,10 @@ typedef struct ARegion { ListBase ui_previews; /* uiPreview */ ListBase handlers; /* wmEventHandler */ ListBase panels_category; /* Panel categories runtime */ - + + struct wmManipulatorMap *manipulator_map; /* manipulator-map of this region */ struct wmTimer *regiontimer; /* blend in/out */ - + char *headerstr; /* use this string to draw info */ void *regiondata; /* XXX 2.50, need spacedata equivalent? */ } ARegion; diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h index a0f77d61d1d..8ce1410070f 100644 --- a/source/blender/makesdna/DNA_space_types.h +++ b/source/blender/makesdna/DNA_space_types.h @@ -181,7 +181,9 @@ typedef enum eSpaceButtons_Context { BCONTEXT_CONSTRAINT = 11, BCONTEXT_BONE_CONSTRAINT = 12, BCONTEXT_RENDER_LAYER = 13, - + BCONTEXT_COLLECTION = 14, + BCONTEXT_WORKSPACE = 15, + /* always as last... */ BCONTEXT_TOT } eSpaceButtons_Context; @@ -273,21 +275,23 @@ typedef enum eSpaceOutliner_Flag { /* SpaceOops->outlinevis */ typedef enum eSpaceOutliner_Mode { - SO_ALL_SCENES = 0, - SO_CUR_SCENE = 1, - SO_VISIBLE = 2, - SO_SELECTED = 3, - SO_ACTIVE = 4, - SO_SAME_TYPE = 5, - SO_GROUPS = 6, - SO_LIBRARIES = 7, - /* SO_VERSE_SESSION = 8, */ /* deprecated! */ - /* SO_VERSE_MS = 9, */ /* deprecated! */ - SO_SEQUENCE = 10, - SO_DATABLOCKS = 11, - SO_USERDEF = 12, - /* SO_KEYMAP = 13, */ /* deprecated! */ - SO_ID_ORPHANS = 14, + SO_ALL_SCENES = 0, + SO_CUR_SCENE = 1, + SO_VISIBLE = 2, + SO_SELECTED = 3, + SO_ACTIVE = 4, + SO_SAME_TYPE = 5, + SO_GROUPS = 6, + SO_LIBRARIES = 7, + /* SO_VERSE_SESSION = 8, */ /* deprecated! */ + /* SO_VERSE_MS = 9, */ /* deprecated! */ + SO_SEQUENCE = 10, + SO_DATABLOCKS = 11, + SO_USERDEF = 12, + /* SO_KEYMAP = 13, */ /* deprecated! */ + SO_ID_ORPHANS = 14, + SO_ACT_LAYER = 15, + SO_COLLECTIONS = 16, } eSpaceOutliner_Mode; /* SpaceOops->storeflag */ @@ -710,7 +714,7 @@ typedef enum eFileSel_Params_Flag { FILE_LINK = (1 << 2), FILE_HIDE_DOT = (1 << 3), FILE_AUTOSELECT = (1 << 4), - FILE_ACTIVELAY = (1 << 5), + FILE_ACTIVE_COLLECTION = (1 << 5), /* FILE_ATCURSOR = (1 << 6), */ /* deprecated */ FILE_DIRSEL_ONLY = (1 << 7), FILE_FILTER = (1 << 8), @@ -939,7 +943,7 @@ typedef enum eSpaceImage_Sticky { /* SpaceImage->flag */ typedef enum eSpaceImage_Flag { /* SI_BE_SQUARE = (1 << 0), */ /* deprecated */ - SI_EDITTILE = (1 << 1), /* XXX - not used but should be? */ +/* SI_EDITTILE = (1 << 1), */ /* deprecated */ SI_CLIP_UV = (1 << 2), /* SI_DRAWTOOL = (1 << 3), */ /* deprecated */ SI_NO_DRAWFACES = (1 << 4), diff --git a/source/blender/makesdna/DNA_text_types.h b/source/blender/makesdna/DNA_text_types.h index 8d1bba6ca4f..c7969cd30e7 100644 --- a/source/blender/makesdna/DNA_text_types.h +++ b/source/blender/makesdna/DNA_text_types.h @@ -61,8 +61,8 @@ typedef struct Text { char *undo_buf; int undo_pos, undo_len; - void *compiled; double mtime; + void *compiled; } Text; #define TXT_TABSIZE 4 diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h index cddb1e06b8c..ab3fe1b51b9 100644 --- a/source/blender/makesdna/DNA_userdef_types.h +++ b/source/blender/makesdna/DNA_userdef_types.h @@ -162,7 +162,7 @@ typedef struct ThemeUI { /* Interface Elements (buttons, menus, icons) */ uiWidgetColors wcol_regular, wcol_tool, wcol_text; uiWidgetColors wcol_radio, wcol_option, wcol_toggle; - uiWidgetColors wcol_num, wcol_numslider; + uiWidgetColors wcol_num, wcol_numslider, wcol_tab; uiWidgetColors wcol_menu, wcol_pulldown, wcol_menu_back, wcol_menu_item, wcol_tooltip; uiWidgetColors wcol_box, wcol_scroll, wcol_progress, wcol_list_item, wcol_pie_menu; @@ -183,6 +183,14 @@ typedef struct ThemeUI { /* Axis Colors */ char xaxis[4], yaxis[4], zaxis[4]; + + /* Manipulator Colors. */ + char manipulator_hi[4]; + char manipulator_primary[4]; + char manipulator_secondary[4]; + char manipulator_a[4]; + char manipulator_b[4]; + char pad2[4]; } ThemeUI; /* try to put them all in one, if needed a special struct can be created as well @@ -497,7 +505,8 @@ typedef struct UserDef { short gp_settings; /* eGP_UserdefSettings */ short tb_leftmouse, tb_rightmouse; struct SolidLight light[3]; - short tw_hotspot, tw_flag, tw_handlesize, tw_size; + short manipulator_flag, manipulator_size; + int pad3; short textimeout, texcollectrate; short wmdrawmethod; /* eWM_DrawMethod */ short dragthreshold; @@ -603,7 +612,7 @@ typedef enum eUserPref_Flag { USER_FLAG_DEPRECATED_1 = (1 << 1), /* cleared */ USER_FLAG_DEPRECATED_2 = (1 << 2), /* cleared */ USER_FLAG_DEPRECATED_3 = (1 << 3), /* cleared */ - USER_SCENEGLOBAL = (1 << 4), +/* USER_SCENEGLOBAL = (1 << 4), deprecated */ USER_TRACKBALL = (1 << 5), USER_FLAG_DEPRECATED_6 = (1 << 6), /* cleared */ USER_FLAG_DEPRECATED_7 = (1 << 7), /* cleared */ @@ -805,6 +814,11 @@ typedef enum eGP_UserdefSettings { GP_PAINT_DOSIMPLIFY = (1 << 1), } eGP_UserdefSettings; +enum { + USER_MANIPULATOR_DRAW = (1 << 0), + USER_MANIPULATOR_SHADED = (1 << 1), +}; + /* Color Picker Types. * UserDef.color_picker_type */ typedef enum eColorPicker_Types { diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index b9894d46b5b..2140f721756 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -45,6 +45,7 @@ struct SmoothView3DStore; struct wmTimer; struct Material; struct GPUFX; +struct GPUViewport; /* This is needed to not let VC choke on near and far... old * proprietary MS extensions... */ @@ -65,6 +66,12 @@ struct GPUFX; /* The near/far thing is a Win EXCEPTION. Thus, leave near/far in the * code, and patch for windows. */ + +typedef struct View3DDebug { + float znear, zfar; + char background; + char pad[7]; +} View3DDebug; /* Background Picture in 3D-View */ typedef struct BGpic { @@ -111,8 +118,12 @@ typedef struct RegionView3D { struct wmTimer *smooth_timer; - /* transform widget matrix */ + /* transform manipulator matrix */ float twmat[4][4]; + /* min/max dot product on twmat xyz axis. */ + float tw_axis_min[3], tw_axis_max[3]; + float tw_axis_matrix[3][3]; + char _pad[4]; float viewquat[4]; /* view rotation, must be kept normalized */ float dist; /* distance from 'ofs' along -viewinv[2] vector, where result is negative as is 'ofs' */ @@ -130,7 +141,7 @@ typedef struct RegionView3D { char pad[3]; float ofs_lock[2]; /* normalized offset for locked view: (-1, -1) bottom left, (1, 1) upper right */ - short twdrawflag; + short twdrawflag; /* XXX can easily get rid of this (Julian) */ short rflag; @@ -147,6 +158,7 @@ typedef struct RegionView3D { float rot_axis[3]; struct GPUFX *compositor; + struct GPUViewport *viewport; } RegionView3D; /* 3D ViewPort Struct */ @@ -202,7 +214,7 @@ typedef struct View3D { short gridsubdiv; /* Number of subdivisions in the grid between each highlighted grid line */ char gridflag; - /* transform widget info */ + /* transform manipulator info */ char twtype, twmode, twflag; short flag3; @@ -217,8 +229,9 @@ typedef struct View3D { char multiview_eye; /* multiview current eye - for internal use */ - /* built-in shader effects (eGPUFXFlags) */ - char pad3[4]; + /* The active custom transform orientation of this 3D view. */ + short custom_orientation_index; + char pad3[2]; /* note, 'fx_settings.dof' is currently _not_ allocated, * instead set (temporarily) from camera */ @@ -245,6 +258,7 @@ typedef struct View3D { short prev_drawtype; short pad1; float pad2; + View3DDebug debug; } View3D; @@ -315,12 +329,19 @@ typedef struct View3D { #define V3D_SOLID_MATCAP (1 << 12) /* user flag */ #define V3D_SHOW_SOLID_MATCAP (1 << 13) /* runtime flag */ #define V3D_OCCLUDE_WIRE (1 << 14) -#define V3D_SHADELESS_TEX (1 << 15) +#define V3D_SHOW_MODE_SHADE_OVERRIDE (1 << 15) /* View3d->flag3 (short) */ #define V3D_SHOW_WORLD (1 << 0) +/* View3d->debug.background */ +enum { + V3D_DEBUG_BACKGROUND_NONE = (1 << 0), + V3D_DEBUG_BACKGROUND_GRADIENT = (1 << 1), + V3D_DEBUG_BACKGROUND_WORLD = (1 << 2), +}; + /* View3D->around */ enum { /* center of the bounding box */ @@ -362,13 +383,12 @@ enum { #define V3D_MANIP_NORMAL 2 #define V3D_MANIP_VIEW 3 #define V3D_MANIP_GIMBAL 4 -#define V3D_MANIP_CUSTOM 5 /* anything of value 5 or higher is custom */ +#define V3D_MANIP_CUSTOM 5 -/* View3d->twflag */ - /* USE = user setting, DRAW = based on selection */ -#define V3D_USE_MANIPULATOR 1 -#define V3D_DRAW_MANIPULATOR 2 -/* #define V3D_CALC_MANIPULATOR 4 */ /*UNUSED*/ +/* View3d->twflag (also) */ +enum { + V3D_MANIPULATOR_DRAW = (1 << 0), +}; /* BGPic->flag */ /* may want to use 1 for select ? */ diff --git a/source/blender/makesdna/DNA_windowmanager_types.h b/source/blender/makesdna/DNA_windowmanager_types.h index 14400c84b69..8558e3b5a08 100644 --- a/source/blender/makesdna/DNA_windowmanager_types.h +++ b/source/blender/makesdna/DNA_windowmanager_types.h @@ -177,9 +177,13 @@ typedef struct wmWindow { void *ghostwin; /* don't want to include ghost.h stuff */ - struct bScreen *screen; /* active screen */ - struct bScreen *newscreen; /* temporary when switching */ - char screenname[64]; /* MAX_ID_NAME for matching window with active screen after file read */ + struct Scene *scene; /* The scene displayed in this window. */ + struct Scene *new_scene; /* temporary when switching */ + + struct WorkSpaceInstanceHook *workspace_hook; + + struct bScreen *screen DNA_DEPRECATED; + char screenname[64]; /* MAX_ID_NAME for matching window with active screen after file read */ short posx, posy, sizex, sizey; /* window coords */ short windowstate; /* borderless, full */ diff --git a/source/blender/makesdna/DNA_workspace_types.h b/source/blender/makesdna/DNA_workspace_types.h new file mode 100644 index 00000000000..272d0cd110a --- /dev/null +++ b/source/blender/makesdna/DNA_workspace_types.h @@ -0,0 +1,143 @@ +/* + * ***** 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. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file DNA_workspace_types.h + * \ingroup DNA + * + * Use API in BKE_workspace.h! + * Struct members marked with DNA_PRIVATE_WORKSPACE will throw a + * warning saying it's deprecated when used outside of workspace.c. + */ + +#ifndef __DNA_WORKSPACE_TYPES_H__ +#define __DNA_WORKSPACE_TYPES_H__ + +#include "DNA_scene_types.h" + +/* Same logic as DNA_DEPRECATED_ALLOW, but throws 'deprecated' + * warnings if DNA_PRIVATE_WORKSPACE_ALLOW is not defined */ +#ifdef DNA_PRIVATE_WORKSPACE_ALLOW + /* allow use of private items */ +# define DNA_PRIVATE_WORKSPACE +#else +# ifndef DNA_PRIVATE_WORKSPACE +# define DNA_PRIVATE_WORKSPACE DNA_PRIVATE_ATTR +# endif +#endif + +#ifdef DNA_PRIVATE_READ_WRITE_ALLOW +# define DNA_PRIVATE_WORKSPACE_READ_WRITE +#else +# ifndef DNA_PRIVATE_WORKSPACE_READ_WRITE +# define DNA_PRIVATE_WORKSPACE_READ_WRITE DNA_PRIVATE_WORKSPACE +# endif +#endif + + +/** + * \brief Wrapper for bScreen. + * + * bScreens are IDs and thus stored in a main list-base. We also want to store a list-base of them within the + * workspace (so each workspace can have its own set of screen-layouts) which would mess with the next/prev pointers. + * So we use this struct to wrap a bScreen pointer with another pair of next/prev pointers. + */ +typedef struct WorkSpaceLayout { + struct WorkSpaceLayout *next, *prev; + + struct bScreen *screen DNA_PRIVATE_WORKSPACE; + /* The name of this layout, we override the RNA name of the screen with this (but not ID name itself) */ + char name[64] DNA_PRIVATE_WORKSPACE; /* MAX_NAME */ +} WorkSpaceLayout; + +typedef struct WorkSpace { + ID id; + + ListBase layouts DNA_PRIVATE_WORKSPACE; /* WorkSpaceLayout */ + /* Store for each hook (so for each window) which layout has + * been activated the last time this workspace was visible. */ + ListBase hook_layout_relations DNA_PRIVATE_WORKSPACE_READ_WRITE; /* WorkSpaceDataRelation */ + + /* Custom transform orientations */ + ListBase transform_orientations DNA_PRIVATE_WORKSPACE; + + int object_mode DNA_PRIVATE_WORKSPACE; /* enum eObjectMode */ + int flags DNA_PRIVATE_WORKSPACE; /* enum eWorkSpaceFlags */ + + struct SceneLayer *render_layer DNA_PRIVATE_WORKSPACE; + + char engine_id[32]; /* Render Engine. */ + struct ViewRender view_render; +} WorkSpace; + +/* internal struct, but exported for read/write */ +#if defined(DNA_PRIVATE_READ_WRITE_ALLOW) || defined(DNA_PRIVATE_WORKSPACE_ALLOW) + +/** + * Generic (and simple/primitive) struct for storing a history of assignments/relations + * of workspace data to non-workspace data in a listbase inside the workspace. + * + * Using this we can restore the old state of a workspace if the user switches back to it. + * + * Usage + * ===== + * When activating a workspace, it should activate the screen-layout that was active in that + * workspace before *in this window*. + * More concretely: + * * There are two windows, win1 and win2. + * * Both show workspace ws1, but both also had workspace ws2 activated at some point before. + * * Last time ws2 was active in win1, screen-layout sl1 was activated. + * * Last time ws2 was active in win2, screen-layout sl2 was activated. + * * When changing from ws1 to ws2 in win1, screen-layout sl1 should be activated again. + * * When changing from ws1 to ws2 in win2, screen-layout sl2 should be activated again. + * So that means we have to store the active screen-layout in a per workspace, per window + * relation. This struct is used to store an active screen-layout for each window within the + * workspace. + * To find the screen-layout to activate for this window-workspace combination, simply lookup + * the WorkSpaceDataRelation with the workspace-hook of the window set as parent. + */ +typedef struct WorkSpaceDataRelation { + struct WorkSpaceDataRelation *next, *prev; + + /* the data used to identify the relation (e.g. to find screen-layout (= value) from/for a hook) */ + void *parent; + /* The value for this parent-data/workspace relation */ + void *value; +} WorkSpaceDataRelation; + +#endif /* DNA_PRIVATE_WORKSPACE_READ_WRITE */ + +/** + * Little wrapper to store data that is going to be per window, but comming from the workspace. + * It allows us to keep workspace and window data completely separate. + */ +typedef struct WorkSpaceInstanceHook { + WorkSpace *active DNA_PRIVATE_WORKSPACE; + struct WorkSpaceLayout *act_layout DNA_PRIVATE_WORKSPACE; + + /* Needed because we can't change workspaces/layouts in running handler loop, it would break context. */ + WorkSpace *temp_workspace_store; + struct WorkSpaceLayout *temp_layout_store; +} WorkSpaceInstanceHook; + +typedef enum eWorkSpaceFlags { + WORKSPACE_USE_SCENE_SETTINGS = (1 << 0), +} eWorkSpaceFlags; + +#endif /* __DNA_WORKSPACE_TYPES_H__ */ diff --git a/source/blender/makesdna/DNA_world_types.h b/source/blender/makesdna/DNA_world_types.h index 5fd4c9fd407..2ab99617ee8 100644 --- a/source/blender/makesdna/DNA_world_types.h +++ b/source/blender/makesdna/DNA_world_types.h @@ -120,7 +120,8 @@ typedef struct World { struct Ipo *ipo DNA_DEPRECATED; /* old animation system, deprecated for 2.5 */ struct MTex *mtex[18]; /* MAX_MTEX */ - short pr_texture, use_nodes, pad[2]; + short pr_texture, use_nodes, pad; + short update_flag; /* XXX temporary flag waiting for depsgraph proper tagging */ /* previews */ struct PreviewImage *preview; @@ -128,6 +129,7 @@ typedef struct World { /* nodes */ struct bNodeTree *nodetree; + float mistend, pad1; /* runtime : miststa + mistdist, used for drawing camera */ ListBase gpumaterial; /* runtime */ } World; diff --git a/source/blender/makesdna/intern/makesdna.c b/source/blender/makesdna/intern/makesdna.c index 2cea8715a65..182a026df94 100644 --- a/source/blender/makesdna/intern/makesdna.c +++ b/source/blender/makesdna/intern/makesdna.c @@ -130,6 +130,10 @@ static const char *includefiles[] = { "DNA_freestyle_types.h", "DNA_linestyle_types.h", "DNA_cachefile_types.h", + "DNA_layer_types.h", + "DNA_workspace_types.h", + "DNA_lightprobe_types.h", + /* see comment above before editing! */ /* empty string to indicate end of includefiles */ @@ -504,6 +508,17 @@ static int preprocess_include(char *maindata, int len) a -= 13; cp += 13; } + else if (strncmp("DNA_PRIVATE_WORKSPACE", cp, 21) == 0) { + /* Check for DNA_PRIVATE_WORKSPACE_READ_WRITE */ + if (strncmp("_READ_WRITE", cp + 21, 11) == 0) { + a -= 31; + cp += 31; + } + else { + a -= 20; + cp += 20; + } + } else { md[0] = cp[0]; md++; @@ -1342,4 +1357,8 @@ int main(int argc, char **argv) #include "DNA_freestyle_types.h" #include "DNA_linestyle_types.h" #include "DNA_cachefile_types.h" +#include "DNA_layer_types.h" +#include "DNA_workspace_types.h" +#include "DNA_lightprobe_types.h" + /* end of list */ |