Refactor: move Scene .blend expand to IDTypeInfo callback

This commit is contained in:
Jacques Lucke 2020-11-06 15:37:56 +01:00
parent 2f3181d0f2
commit 958ceaf5bf
2 changed files with 109 additions and 110 deletions

View File

@ -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,
};

View File

@ -5994,112 +5994,6 @@ static void expand_object(BlendExpander *expander, Object *ob)
}
}
static void expand_scene(BlendExpander *expander, Scene *sce)
{
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);
}
}
/**
* Set the callback func used over all ID data found by \a BLO_expand_main func.
*
@ -6146,9 +6040,6 @@ void BLO_expand_main(void *fdhandle, Main *mainvar)
case ID_OB:
expand_object(&expander, (Object *)id);
break;
case ID_SCE:
expand_scene(&expander, (Scene *)id);
break;
case ID_IP:
expand_ipo(&expander, (Ipo *)id); /* XXX deprecated - old animation system */
break;