From 216a2218768d005c18032df370c19c1c0f571797 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 18 Sep 2020 16:57:33 +0200 Subject: Implement ID properties support for TimeMarker Allows scripters to store additional information in the marker itself instead of using work-around approach based on marker names and such. Differential Revision: https://developer.blender.org/D8944 --- source/blender/blenloader/intern/readfile.c | 9 +++++++++ source/blender/blenloader/intern/writefile.c | 4 ++++ 2 files changed, 13 insertions(+) (limited to 'source/blender/blenloader/intern') diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 6e0fc1752a9..2b68c5ea203 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -4450,6 +4450,8 @@ static void lib_link_scene(BlendLibReader *reader, Scene *sce) SEQ_ALL_END; LISTBASE_FOREACH (TimeMarker *, marker, &sce->markers) { + IDP_BlendReadLib(reader, marker->prop); + if (marker->camera) { BLO_read_id_address(reader, sce->id.lib, &marker->camera); } @@ -4809,6 +4811,11 @@ static void direct_link_scene(BlendDataReader *reader, Scene *sce) } BLO_read_list(reader, &(sce->markers)); + LISTBASE_FOREACH (TimeMarker *, marker, &sce->markers) { + BLO_read_data_address(reader, &marker->prop); + IDP_BlendDataRead(reader, &marker->prop); + } + BLO_read_list(reader, &(sce->transform_spaces)); BLO_read_list(reader, &(sce->r.layers)); BLO_read_list(reader, &(sce->r.views)); @@ -7969,6 +7976,8 @@ static void expand_scene(BlendExpander *expander, Scene *sce) } LISTBASE_FOREACH (TimeMarker *, marker, &sce->markers) { + IDP_BlendReadExpand(expander, marker->prop); + if (marker->camera) { BLO_expand(expander, marker->camera); } diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index db51bb79f41..336276bdd40 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -1702,6 +1702,10 @@ static void write_scene(BlendWriter *writer, Scene *sce, const void *id_address) /* writing dynamic list of TimeMarkers to the blend file */ LISTBASE_FOREACH (TimeMarker *, marker, &sce->markers) { BLO_write_struct(writer, TimeMarker, marker); + + if (marker->prop != NULL) { + IDP_BlendWrite(writer, marker->prop); + } } /* writing dynamic list of TransformOrientations to the blend file */ -- cgit v1.2.3