diff options
Diffstat (limited to 'source/blender/blenloader/intern/writefile.c')
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index d8097f1a50a..31e81358a38 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2407,10 +2407,12 @@ static void write_scenes(WriteData *wd, ListBase *scebase) Base *base; Editing *ed; Sequence *seq; + LayerCollection *lc; MetaStack *ms; Strip *strip; TimeMarker *marker; TransformOrientation *ts; + SceneLayer *sl; SceneRenderLayer *srl; SceneRenderView *srv; ToolSettings *tos; @@ -2585,6 +2587,29 @@ static void write_scenes(WriteData *wd, ListBase *scebase) writestruct(wd, DATA, TransformOrientation, 1, ts); } + /* writing scene layers to the blend file */ + for (sl = sce->layers.first; sl; sl = sl->next) { + writestruct(wd, DATA, SceneLayer, 1, sl); + + base = sl->base.first; + while (base) { + writestruct(wd, DATA, Base, 1, base); + base = base->next; + } + + for (lc = sl->collections.first; lc; lc = lc->next) { + writestruct(wd, DATA, LayerCollection, 1, lc); + + for (LinkData *link = lc->elements.first; link; link = link->next) { + writestruct(wd, DATA, LinkData, 1, link); + } + + for (CollectionOverride *ov = lc->overrides.first; ov; ov = ov->next) { + writestruct(wd, DATA, CollectionOverride, 1, ov); + } + } + } + for (srl = sce->r.layers.first; srl; srl = srl->next) { writestruct(wd, DATA, SceneRenderLayer, 1, srl); for (fmc = srl->freestyleConfig.modules.first; fmc; fmc = fmc->next) { |