diff options
Diffstat (limited to 'source/blender/blenloader/intern/writefile.c')
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 0ff7ba0034f..aae5072c8de 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -157,7 +157,6 @@ #include "BKE_layer.h" #include "BKE_library_override.h" #include "BKE_main.h" -#include "BKE_mesh.h" #include "BKE_modifier.h" #include "BKE_node.h" #include "BKE_pointcache.h" @@ -2014,7 +2013,7 @@ static void write_mdisps(WriteData *wd, int count, MDisps *mdlist, int external) int i; writestruct(wd, DATA, MDisps, count, mdlist); - for (i = 0; i < count; ++i) { + for (i = 0; i < count; i++) { MDisps *md = &mdlist[i]; if (md->disps) { if (!external) { @@ -2035,7 +2034,7 @@ static void write_grid_paint_mask(WriteData *wd, int count, GridPaintMask *grid_ int i; writestruct(wd, DATA, GridPaintMask, count, grid_paint_mask); - for (i = 0; i < count; ++i) { + for (i = 0; i < count; i++) { GridPaintMask *gpm = &grid_paint_mask[i]; if (gpm->data) { const int gridsize = BKE_ccg_gridsize(gpm->level); @@ -2413,6 +2412,13 @@ static void write_view_settings(WriteData *wd, ColorManagedViewSettings *view_se } } +static void write_view3dshading(WriteData *wd, View3DShading *shading) +{ + if (shading->prop) { + IDP_WriteProperty(shading->prop, wd); + } +} + static void write_paint(WriteData *wd, Paint *p) { if (p->cavity_curve) { @@ -2471,7 +2477,7 @@ static void write_lightcache(WriteData *wd, LightCache *cache) if (cache->cube_mips) { writestruct(wd, DATA, LightCacheTexture, cache->mips_len, cache->cube_mips); - for (int i = 0; i < cache->mips_len; ++i) { + for (int i = 0; i < cache->mips_len; i++) { write_lightcache_texture(wd, &cache->cube_mips[i]); } } @@ -2684,6 +2690,8 @@ static void write_scene(WriteData *wd, Scene *sce) write_lightcache(wd, sce->eevee.light_cache); } + write_view3dshading(wd, &sce->display.shading); + /* Freed on doversion. */ BLI_assert(sce->layer_properties == NULL); } @@ -2850,6 +2858,7 @@ static void write_area_regions(WriteData *wd, ScrArea *area) if (v3d->fx_settings.dof) { writestruct(wd, DATA, GPUDOFSettings, 1, v3d->fx_settings.dof); } + write_view3dshading(wd, &v3d->shading); } else if (sl->spacetype == SPACE_GRAPH) { SpaceGraph *sipo = (SpaceGraph *)sl; @@ -3627,7 +3636,9 @@ static void write_libraries(WriteData *wd, Main *main) found_one = false; while (!found_one && tot--) { for (id = lbarray[tot]->first; id; id = id->next) { - if (id->us > 0 && (id->tag & LIB_TAG_EXTERN)) { + if (id->us > 0 && + ((id->tag & LIB_TAG_EXTERN) || + ((id->tag & LIB_TAG_INDIRECT) && (id->flag & LIB_INDIRECT_WEAK_LINK)))) { found_one = true; break; } @@ -3657,7 +3668,9 @@ static void write_libraries(WriteData *wd, Main *main) /* Write link placeholders for all direct linked IDs. */ while (a--) { for (id = lbarray[a]->first; id; id = id->next) { - if (id->us > 0 && (id->tag & LIB_TAG_EXTERN)) { + if (id->us > 0 && + ((id->tag & LIB_TAG_EXTERN) || + ((id->tag & LIB_TAG_INDIRECT) && (id->flag & LIB_INDIRECT_WEAK_LINK)))) { if (!BKE_idcode_is_linkable(GS(id->name))) { printf( "ERROR: write file: data-block '%s' from lib '%s' is not linkable " |