From a443287908248d0b83f490f0993d857fb1d73fec Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Fri, 28 Aug 2020 13:05:48 +0200 Subject: IDTypeInfo: add .blend file io callbacks This is part of T76372. It adds the `blend_write`, `blend_read_data`, `blend_read_lib` and `blend_read_expand` which correspond to the various steps when reading and writing .blend files. Having these callbacks allows us to decentralize the blenloader code a lot more. This has the affect that code related to any specific ID type is less scattered. Reviewers: mont29 Differential Revision: https://developer.blender.org/D8670 --- source/blender/blenkernel/BKE_idtype.h | 31 ++++++++++++++++++++++++++ source/blender/blenkernel/intern/action.c | 6 +++++ source/blender/blenkernel/intern/armature.c | 6 +++++ source/blender/blenkernel/intern/brush.c | 6 +++++ source/blender/blenkernel/intern/cachefile.c | 6 +++++ source/blender/blenkernel/intern/camera.c | 6 +++++ source/blender/blenkernel/intern/collection.c | 6 +++++ source/blender/blenkernel/intern/curve.c | 6 +++++ source/blender/blenkernel/intern/font.c | 6 +++++ source/blender/blenkernel/intern/gpencil.c | 6 +++++ source/blender/blenkernel/intern/hair.c | 6 +++++ source/blender/blenkernel/intern/image.c | 5 +++++ source/blender/blenkernel/intern/ipo.c | 6 +++++ source/blender/blenkernel/intern/key.c | 6 +++++ source/blender/blenkernel/intern/lattice.c | 6 +++++ source/blender/blenkernel/intern/library.c | 6 +++++ source/blender/blenkernel/intern/light.c | 6 +++++ source/blender/blenkernel/intern/lightprobe.c | 6 +++++ source/blender/blenkernel/intern/linestyle.c | 6 +++++ source/blender/blenkernel/intern/mask.c | 6 +++++ source/blender/blenkernel/intern/material.c | 6 +++++ source/blender/blenkernel/intern/mball.c | 6 +++++ source/blender/blenkernel/intern/mesh.c | 6 +++++ source/blender/blenkernel/intern/movieclip.c | 5 +++++ source/blender/blenkernel/intern/node.c | 5 +++++ source/blender/blenkernel/intern/object.c | 6 +++++ source/blender/blenkernel/intern/paint.c | 12 ++++++++++ source/blender/blenkernel/intern/particle.c | 6 +++++ source/blender/blenkernel/intern/pointcloud.c | 6 +++++ source/blender/blenkernel/intern/scene.c | 5 +++++ source/blender/blenkernel/intern/screen.c | 6 +++++ source/blender/blenkernel/intern/simulation.cc | 6 +++++ source/blender/blenkernel/intern/sound.c | 5 +++++ source/blender/blenkernel/intern/speaker.c | 6 +++++ source/blender/blenkernel/intern/text.c | 6 +++++ source/blender/blenkernel/intern/texture.c | 6 +++++ source/blender/blenkernel/intern/volume.cc | 5 +++++ source/blender/blenkernel/intern/workspace.c | 6 +++++ source/blender/blenkernel/intern/world.c | 6 +++++ 39 files changed, 259 insertions(+) (limited to 'source/blender/blenkernel') diff --git a/source/blender/blenkernel/BKE_idtype.h b/source/blender/blenkernel/BKE_idtype.h index aefba9ef02a..57b005d1a1e 100644 --- a/source/blender/blenkernel/BKE_idtype.h +++ b/source/blender/blenkernel/BKE_idtype.h @@ -34,6 +34,10 @@ extern "C" { struct ID; struct LibraryForeachIDData; struct Main; +struct BlendWriter; +struct BlendDataReader; +struct BlendLibReader; +struct BlendExpander; /** IDTypeInfo.flags. */ enum { @@ -89,6 +93,13 @@ typedef void (*IDTypeForeachCacheFunction)(struct ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data); +typedef void (*IDTypeBlendWriteFunction)(struct BlendWriter *writer, + struct ID *id, + const void *id_address); +typedef void (*IDTypeBlendReadDataFunction)(struct BlendDataReader *reader, struct ID *id); +typedef void (*IDTypeBlendReadLibFunction)(struct BlendLibReader *reader, struct ID *id); +typedef void (*IDTypeBlendReadExpandFunction)(struct BlendExpander *expander, struct ID *id); + typedef struct IDTypeInfo { /* ********** General IDType data. ********** */ @@ -161,6 +172,26 @@ typedef struct IDTypeInfo { * Iterator over all cache pointers of given ID. */ IDTypeForeachCacheFunction foreach_cache; + + /** + * Write all structs that should be saved in a .blend file. + */ + IDTypeBlendWriteFunction blend_write; + + /** + * Update pointers for all structs directly owned by this data block. + */ + IDTypeBlendReadDataFunction blend_read_data; + + /** + * Update pointers to other id data blocks. + */ + IDTypeBlendReadLibFunction blend_read_lib; + + /** + * Specify which other id data blocks should be loaded when the current one is loaded. + */ + IDTypeBlendReadExpandFunction blend_read_expand; } IDTypeInfo; /* ********** Declaration of each IDTypeInfo. ********** */ diff --git a/source/blender/blenkernel/intern/action.c b/source/blender/blenkernel/intern/action.c index 85ac2c693cb..089d8bef09e 100644 --- a/source/blender/blenkernel/intern/action.c +++ b/source/blender/blenkernel/intern/action.c @@ -184,6 +184,12 @@ IDTypeInfo IDType_ID_AC = { .free_data = action_free_data, .make_local = NULL, .foreach_id = action_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* ***************** Library data level operations on action ************** */ diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c index 631ce4edd20..3b73702cf0f 100644 --- a/source/blender/blenkernel/intern/armature.c +++ b/source/blender/blenkernel/intern/armature.c @@ -180,6 +180,12 @@ IDTypeInfo IDType_ID_AR = { .free_data = armature_free_data, .make_local = NULL, .foreach_id = armature_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /** \} */ diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 3c83ee55213..0749f29879c 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -210,6 +210,12 @@ IDTypeInfo IDType_ID_BR = { .free_data = brush_free_data, .make_local = brush_make_local, .foreach_id = brush_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static RNG *brush_rng; diff --git a/source/blender/blenkernel/intern/cachefile.c b/source/blender/blenkernel/intern/cachefile.c index 9ad6ae84c5c..f3386df03c8 100644 --- a/source/blender/blenkernel/intern/cachefile.c +++ b/source/blender/blenkernel/intern/cachefile.c @@ -100,6 +100,12 @@ IDTypeInfo IDType_ID_CF = { .free_data = cache_file_free_data, .make_local = NULL, .foreach_id = NULL, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* TODO: make this per cache file to avoid global locks. */ diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c index d8b4150b2b1..0c0ad7a57ab 100644 --- a/source/blender/blenkernel/intern/camera.c +++ b/source/blender/blenkernel/intern/camera.c @@ -128,6 +128,12 @@ IDTypeInfo IDType_ID_CA = { .free_data = camera_free_data, .make_local = camera_make_local, .foreach_id = camera_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /** \} */ diff --git a/source/blender/blenkernel/intern/collection.c b/source/blender/blenkernel/intern/collection.c index 88037a8dad0..8975be2b618 100644 --- a/source/blender/blenkernel/intern/collection.c +++ b/source/blender/blenkernel/intern/collection.c @@ -173,6 +173,12 @@ IDTypeInfo IDType_ID_GR = { .free_data = collection_free_data, .make_local = NULL, .foreach_id = collection_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /** \} */ diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 45ca89ac47e..44d5bbfd710 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -146,6 +146,12 @@ IDTypeInfo IDType_ID_CU = { .free_data = curve_free_data, .make_local = NULL, .foreach_id = curve_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static int cu_isectLL(const float v1[3], diff --git a/source/blender/blenkernel/intern/font.c b/source/blender/blenkernel/intern/font.c index 4bedba8f76b..dfbb8202093 100644 --- a/source/blender/blenkernel/intern/font.c +++ b/source/blender/blenkernel/intern/font.c @@ -135,6 +135,12 @@ IDTypeInfo IDType_ID_VF = { .free_data = vfont_free_data, .make_local = NULL, .foreach_id = NULL, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /***************************** VFont *******************************/ diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 4f65f8a57ab..10b6328ead4 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -126,6 +126,12 @@ IDTypeInfo IDType_ID_GD = { .free_data = greasepencil_free_data, .make_local = NULL, .foreach_id = greasepencil_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* ************************************************** */ diff --git a/source/blender/blenkernel/intern/hair.c b/source/blender/blenkernel/intern/hair.c index 2905bfc978a..8831d09698b 100644 --- a/source/blender/blenkernel/intern/hair.c +++ b/source/blender/blenkernel/intern/hair.c @@ -119,6 +119,12 @@ IDTypeInfo IDType_ID_HA = { .free_data = hair_free_data, .make_local = NULL, .foreach_id = hair_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static void hair_random(Hair *hair) diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index 7ff34acca7a..0f694a26b45 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -232,6 +232,11 @@ IDTypeInfo IDType_ID_IM = { .make_local = NULL, .foreach_id = NULL, .foreach_cache = image_foreach_cache, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* prototypes */ diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 968ce1d4a1c..3e92fd13370 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -124,6 +124,12 @@ IDTypeInfo IDType_ID_IP = { .free_data = ipo_free_data, .make_local = NULL, .foreach_id = NULL, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* *************************************************** */ diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 0108befa710..456325851a6 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -113,6 +113,12 @@ IDTypeInfo IDType_ID_KE = { .free_data = shapekey_free_data, .make_local = NULL, .foreach_id = shapekey_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; #define KEY_MODE_DUMMY 0 /* use where mode isn't checked for */ diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 4d073593da7..5782fab905f 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -139,6 +139,12 @@ IDTypeInfo IDType_ID_LT = { .free_data = lattice_free_data, .make_local = NULL, .foreach_id = lattice_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; int BKE_lattice_index_from_uvw(Lattice *lt, const int u, const int v, const int w) diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 48c98be626d..4bbe3a4a26b 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -75,6 +75,12 @@ IDTypeInfo IDType_ID_LI = { .free_data = library_free_data, .make_local = NULL, .foreach_id = library_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; void BKE_library_filepath_set(Main *bmain, Library *lib, const char *filepath) diff --git a/source/blender/blenkernel/intern/light.c b/source/blender/blenkernel/intern/light.c index f42df6765c4..976fa010057 100644 --- a/source/blender/blenkernel/intern/light.c +++ b/source/blender/blenkernel/intern/light.c @@ -134,6 +134,12 @@ IDTypeInfo IDType_ID_LA = { .free_data = light_free_data, .make_local = NULL, .foreach_id = light_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; Light *BKE_light_add(Main *bmain, const char *name) diff --git a/source/blender/blenkernel/intern/lightprobe.c b/source/blender/blenkernel/intern/lightprobe.c index f73df66b43d..b4b13306112 100644 --- a/source/blender/blenkernel/intern/lightprobe.c +++ b/source/blender/blenkernel/intern/lightprobe.c @@ -69,6 +69,12 @@ IDTypeInfo IDType_ID_LP = { .free_data = NULL, .make_local = NULL, .foreach_id = lightprobe_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; void BKE_lightprobe_type_set(LightProbe *probe, const short lightprobe_type) diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c index a389af5c47f..8dc44a32eaa 100644 --- a/source/blender/blenkernel/intern/linestyle.c +++ b/source/blender/blenkernel/intern/linestyle.c @@ -204,6 +204,12 @@ IDTypeInfo IDType_ID_LS = { .free_data = linestyle_free_data, .make_local = NULL, .foreach_id = linestyle_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static const char *modifier_name[LS_MODIFIER_NUM] = { diff --git a/source/blender/blenkernel/intern/mask.c b/source/blender/blenkernel/intern/mask.c index 444ed0c65b5..79b8a30242e 100644 --- a/source/blender/blenkernel/intern/mask.c +++ b/source/blender/blenkernel/intern/mask.c @@ -109,6 +109,12 @@ IDTypeInfo IDType_ID_MSK = { .free_data = mask_free_data, .make_local = NULL, .foreach_id = mask_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static struct { diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index 0520ba3faae..d521d6c8a99 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -175,6 +175,12 @@ IDTypeInfo IDType_ID_MA = { .free_data = material_free_data, .make_local = NULL, .foreach_id = material_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; void BKE_gpencil_material_attr_init(Material *ma) diff --git a/source/blender/blenkernel/intern/mball.c b/source/blender/blenkernel/intern/mball.c index d2f7ee68430..de477ee03b1 100644 --- a/source/blender/blenkernel/intern/mball.c +++ b/source/blender/blenkernel/intern/mball.c @@ -125,6 +125,12 @@ IDTypeInfo IDType_ID_MB = { .free_data = metaball_free_data, .make_local = NULL, .foreach_id = metaball_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* Functions */ diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index 2a16d0eb0f8..b6e77c100f0 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -178,6 +178,12 @@ IDTypeInfo IDType_ID_ME = { .free_data = mesh_free_data, .make_local = NULL, .foreach_id = mesh_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; enum { diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index dcac7b01899..55e43a2b8ed 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -162,6 +162,11 @@ IDTypeInfo IDType_ID_MC = { .make_local = NULL, .foreach_id = movie_clip_foreach_id, .foreach_cache = movie_clip_foreach_cache, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /*********************** movieclip buffer loaders *************************/ diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c index a89285a28c1..571a1145958 100644 --- a/source/blender/blenkernel/intern/node.c +++ b/source/blender/blenkernel/intern/node.c @@ -359,6 +359,11 @@ IDTypeInfo IDType_ID_NT = { .make_local = NULL, .foreach_id = node_foreach_id, .foreach_cache = node_foreach_cache, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static void node_add_sockets_from_type(bNodeTree *ntree, bNode *node, bNodeType *ntype) diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 9c0478134ba..e2bed85399b 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -528,6 +528,12 @@ IDTypeInfo IDType_ID_OB = { .free_data = object_free_data, .make_local = object_make_local, .foreach_id = object_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; void BKE_object_workob_clear(Object *workob) diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c index e3c209b60e6..bc089d7bd80 100644 --- a/source/blender/blenkernel/intern/paint.c +++ b/source/blender/blenkernel/intern/paint.c @@ -117,6 +117,12 @@ IDTypeInfo IDType_ID_PAL = { .free_data = palette_free_data, .make_local = NULL, .foreach_id = NULL, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static void paint_curve_copy_data(Main *UNUSED(bmain), @@ -155,6 +161,12 @@ IDTypeInfo IDType_ID_PC = { .free_data = paint_curve_free_data, .make_local = NULL, .foreach_id = NULL, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; const char PAINT_CURSOR_SCULPT[3] = {255, 100, 100}; diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index b3da6c53b34..e837c57400a 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -209,6 +209,12 @@ IDTypeInfo IDType_ID_PA = { .free_data = particle_settings_free_data, .make_local = NULL, .foreach_id = particle_settings_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; unsigned int PSYS_FRAND_SEED_OFFSET[PSYS_FRAND_COUNT]; diff --git a/source/blender/blenkernel/intern/pointcloud.c b/source/blender/blenkernel/intern/pointcloud.c index 21889acba3c..fb10c9f03e3 100644 --- a/source/blender/blenkernel/intern/pointcloud.c +++ b/source/blender/blenkernel/intern/pointcloud.c @@ -113,6 +113,12 @@ IDTypeInfo IDType_ID_PT = { .free_data = pointcloud_free_data, .make_local = NULL, .foreach_id = pointcloud_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; static void pointcloud_random(PointCloud *pointcloud) diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index c5c721bc6a5..e74fcbb84bd 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -606,6 +606,11 @@ IDTypeInfo IDType_ID_SCE = { .make_local = NULL, .foreach_id = scene_foreach_id, .foreach_cache = scene_foreach_cache, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; const char *RE_engine_id_BLENDER_EEVEE = "BLENDER_EEVEE"; diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c index 3a49c180172..d56658a6709 100644 --- a/source/blender/blenkernel/intern/screen.c +++ b/source/blender/blenkernel/intern/screen.c @@ -245,6 +245,12 @@ IDTypeInfo IDType_ID_SCR = { .free_data = screen_free_data, .make_local = NULL, .foreach_id = screen_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* ************ Spacetype/regiontype handling ************** */ diff --git a/source/blender/blenkernel/intern/simulation.cc b/source/blender/blenkernel/intern/simulation.cc index 6b03721cab8..9dc1f073e2a 100644 --- a/source/blender/blenkernel/intern/simulation.cc +++ b/source/blender/blenkernel/intern/simulation.cc @@ -160,6 +160,12 @@ IDTypeInfo IDType_ID_SIM = { /* free_data */ simulation_free_data, /* make_local */ nullptr, /* foreach_id */ simulation_foreach_id, + /* foreach_cache */ NULL, + + /* blend_write */ NULL, + /* blend_read_data */ NULL, + /* blend_read_lib */ NULL, + /* blend_read_expand */ NULL, }; void *BKE_simulation_add(Main *bmain, const char *name) diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c index b72c5e99b43..8ee6a3627dc 100644 --- a/source/blender/blenkernel/intern/sound.c +++ b/source/blender/blenkernel/intern/sound.c @@ -143,6 +143,11 @@ IDTypeInfo IDType_ID_SO = { .make_local = NULL, .foreach_id = NULL, .foreach_cache = sound_foreach_cache, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; #ifdef WITH_AUDASPACE diff --git a/source/blender/blenkernel/intern/speaker.c b/source/blender/blenkernel/intern/speaker.c index 1f778f5fcd6..8f403792c46 100644 --- a/source/blender/blenkernel/intern/speaker.c +++ b/source/blender/blenkernel/intern/speaker.c @@ -65,6 +65,12 @@ IDTypeInfo IDType_ID_SPK = { .free_data = NULL, .make_local = NULL, .foreach_id = speaker_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; void *BKE_speaker_add(Main *bmain, const char *name) diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index 8a055423d6f..bde9b9ab9b8 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -182,6 +182,12 @@ IDTypeInfo IDType_ID_TXT = { .free_data = text_free_data, .make_local = NULL, .foreach_id = NULL, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /** \} */ diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c index 8d5a0497e28..9e176f355d3 100644 --- a/source/blender/blenkernel/intern/texture.c +++ b/source/blender/blenkernel/intern/texture.c @@ -149,6 +149,12 @@ IDTypeInfo IDType_ID_TE = { .free_data = texture_free_data, .make_local = NULL, .foreach_id = texture_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /* Utils for all IDs using those texture slots. */ diff --git a/source/blender/blenkernel/intern/volume.cc b/source/blender/blenkernel/intern/volume.cc index 54fb0f612d1..9e873692486 100644 --- a/source/blender/blenkernel/intern/volume.cc +++ b/source/blender/blenkernel/intern/volume.cc @@ -525,6 +525,11 @@ IDTypeInfo IDType_ID_VO = { /* make_local */ nullptr, /* foreach_id */ volume_foreach_id, /* foreach_cache */ volume_foreach_cache, + + /* blend_write */ NULL, + /* blend_read_data */ NULL, + /* blend_read_lib */ NULL, + /* blend_read_expand */ NULL, }; void BKE_volume_init_grids(Volume *volume) diff --git a/source/blender/blenkernel/intern/workspace.c b/source/blender/blenkernel/intern/workspace.c index f653a190704..e5e6a5d67c8 100644 --- a/source/blender/blenkernel/intern/workspace.c +++ b/source/blender/blenkernel/intern/workspace.c @@ -90,6 +90,12 @@ IDTypeInfo IDType_ID_WS = { .free_data = workspace_free_data, .make_local = NULL, .foreach_id = workspace_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; /** \name Internal Utils diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c index e3b58e03d93..25c62f139ed 100644 --- a/source/blender/blenkernel/intern/world.c +++ b/source/blender/blenkernel/intern/world.c @@ -137,6 +137,12 @@ IDTypeInfo IDType_ID_WO = { .free_data = world_free_data, .make_local = NULL, .foreach_id = world_foreach_id, + .foreach_cache = NULL, + + .blend_write = NULL, + .blend_read_data = NULL, + .blend_read_lib = NULL, + .blend_read_expand = NULL, }; World *BKE_world_add(Main *bmain, const char *name) -- cgit v1.2.3