diff options
Diffstat (limited to 'source/blender/editors/space_nla/space_nla.c')
-rw-r--r-- | source/blender/editors/space_nla/space_nla.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index c71e63e9dcd..12f8915764b 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -36,6 +36,8 @@ #include "UI_resources.h" #include "UI_view2d.h" +#include "BLO_read_write.h" + #include "nla_intern.h" /* own include */ /* ******************** default callbacks for nla space ***************** */ @@ -562,6 +564,33 @@ static void nla_id_remap(ScrArea *UNUSED(area), BKE_id_remapper_apply(mappings, (ID **)&snla->ads->source, ID_REMAP_APPLY_DEFAULT); } +static void nla_blend_read_data(BlendDataReader *reader, SpaceLink *sl) +{ + SpaceNla *snla = (SpaceNla *)sl; + BLO_read_data_address(reader, &snla->ads); +} + +static void nla_blend_read_lib(BlendLibReader *reader, ID *parent_id, SpaceLink *sl) +{ + SpaceNla *snla = (SpaceNla *)sl; + bDopeSheet *ads = snla->ads; + + if (ads) { + BLO_read_id_address(reader, parent_id->lib, &ads->source); + BLO_read_id_address(reader, parent_id->lib, &ads->filter_grp); + } +} + +static void nla_blend_write(BlendWriter *writer, SpaceLink *sl) +{ + SpaceNla *snla = (SpaceNla *)sl; + + BLO_write_struct(writer, SpaceNla, snla); + if (snla->ads) { + BLO_write_struct(writer, bDopeSheet, snla->ads); + } +} + void ED_spacetype_nla(void) { SpaceType *st = MEM_callocN(sizeof(SpaceType), "spacetype nla"); @@ -578,6 +607,9 @@ void ED_spacetype_nla(void) st->listener = nla_listener; st->keymap = nla_keymap; st->id_remap = nla_id_remap; + st->blend_read_data = nla_blend_read_data; + st->blend_read_lib = nla_blend_read_lib; + st->blend_write = nla_blend_write; /* regions: main window */ art = MEM_callocN(sizeof(ARegionType), "spacetype nla region"); @@ -628,5 +660,8 @@ void ED_spacetype_nla(void) nla_buttons_register(art); + art = ED_area_type_hud(st->spaceid); + BLI_addhead(&st->regiontypes, art); + BKE_spacetype_register(st); } |