Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2020-11-06 17:37:56 +0300
committerJacques Lucke <jacques@blender.org>2020-11-06 17:37:56 +0300
commit958ceaf5bff22ca21b7b0aa7abbe10edfac991d0 (patch)
tree69b85a0b58933e993e9893418f48b81eb3b5dbd1 /source/blender/blenkernel
parent2f3181d0f2b426652738442ca59a6b61880e52d0 (diff)
Refactor: move Scene .blend expand to IDTypeInfo callback
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r--source/blender/blenkernel/intern/scene.c110
1 files changed, 109 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 36bfec8f9ec..bed10df5ace 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -1549,6 +1549,114 @@ static void scene_blend_read_lib(BlendLibReader *reader, ID *id)
#endif
}
+static void scene_blend_read_expand(BlendExpander *expander, ID *id)
+{
+ Scene *sce = (Scene *)id;
+
+ LISTBASE_FOREACH (Base *, base_legacy, &sce->base) {
+ BLO_expand(expander, base_legacy->object);
+ }
+ BLO_expand(expander, sce->camera);
+ BLO_expand(expander, sce->world);
+
+ BKE_keyingsets_blend_read_expand(expander, &sce->keyingsets);
+
+ if (sce->set) {
+ BLO_expand(expander, sce->set);
+ }
+
+ LISTBASE_FOREACH (SceneRenderLayer *, srl, &sce->r.layers) {
+ BLO_expand(expander, srl->mat_override);
+ LISTBASE_FOREACH (FreestyleModuleConfig *, module, &srl->freestyleConfig.modules) {
+ if (module->script) {
+ BLO_expand(expander, module->script);
+ }
+ }
+ LISTBASE_FOREACH (FreestyleLineSet *, lineset, &srl->freestyleConfig.linesets) {
+ if (lineset->group) {
+ BLO_expand(expander, lineset->group);
+ }
+ BLO_expand(expander, lineset->linestyle);
+ }
+ }
+
+ LISTBASE_FOREACH (ViewLayer *, view_layer, &sce->view_layers) {
+ IDP_BlendReadExpand(expander, view_layer->id_properties);
+
+ LISTBASE_FOREACH (FreestyleModuleConfig *, module, &view_layer->freestyle_config.modules) {
+ if (module->script) {
+ BLO_expand(expander, module->script);
+ }
+ }
+
+ LISTBASE_FOREACH (FreestyleLineSet *, lineset, &view_layer->freestyle_config.linesets) {
+ if (lineset->group) {
+ BLO_expand(expander, lineset->group);
+ }
+ BLO_expand(expander, lineset->linestyle);
+ }
+ }
+
+ if (sce->gpd) {
+ BLO_expand(expander, sce->gpd);
+ }
+
+ if (sce->ed) {
+ Sequence *seq;
+
+ SEQ_ALL_BEGIN (sce->ed, seq) {
+ IDP_BlendReadExpand(expander, seq->prop);
+
+ if (seq->scene) {
+ BLO_expand(expander, seq->scene);
+ }
+ if (seq->scene_camera) {
+ BLO_expand(expander, seq->scene_camera);
+ }
+ if (seq->clip) {
+ BLO_expand(expander, seq->clip);
+ }
+ if (seq->mask) {
+ BLO_expand(expander, seq->mask);
+ }
+ if (seq->sound) {
+ BLO_expand(expander, seq->sound);
+ }
+
+ if (seq->type == SEQ_TYPE_TEXT && seq->effectdata) {
+ TextVars *data = seq->effectdata;
+ BLO_expand(expander, data->text_font);
+ }
+ }
+ SEQ_ALL_END;
+ }
+
+ if (sce->rigidbody_world) {
+ BLO_expand(expander, sce->rigidbody_world->group);
+ BLO_expand(expander, sce->rigidbody_world->constraints);
+ }
+
+ LISTBASE_FOREACH (TimeMarker *, marker, &sce->markers) {
+ IDP_BlendReadExpand(expander, marker->prop);
+
+ if (marker->camera) {
+ BLO_expand(expander, marker->camera);
+ }
+ }
+
+ BLO_expand(expander, sce->clip);
+
+#ifdef USE_COLLECTION_COMPAT_28
+ if (sce->collection) {
+ BKE_collection_compat_blend_read_expand(expander, sce->collection);
+ }
+#endif
+
+ if (sce->r.bake.cage_object) {
+ BLO_expand(expander, sce->r.bake.cage_object);
+ }
+}
+
static void scene_undo_preserve(BlendLibReader *reader, ID *id_new, ID *id_old)
{
Scene *scene_new = (Scene *)id_new;
@@ -1587,7 +1695,7 @@ IDTypeInfo IDType_ID_SCE = {
.blend_write = scene_blend_write,
.blend_read_data = scene_blend_read_data,
.blend_read_lib = scene_blend_read_lib,
- .blend_read_expand = NULL,
+ .blend_read_expand = scene_blend_read_expand,
.blend_read_undo_preserve = scene_undo_preserve,
};