diff options
Diffstat (limited to 'source/blender/blenloader/intern/writefile.c')
-rw-r--r-- | source/blender/blenloader/intern/writefile.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 1e0ef4a6a16..f49148342ec 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -128,6 +128,7 @@ Any case: direct data is ALWAYS after the lib block #include "DNA_vfont_types.h" #include "DNA_world_types.h" #include "DNA_windowmanager_types.h" +#include "DNA_movieclip_types.h" #include "MEM_guardedalloc.h" // MEM_freeN #include "BLI_blenlib.h" @@ -2258,6 +2259,9 @@ static void write_screens(WriteData *wd, ListBase *scrbase) else if(sl->spacetype==SPACE_USERPREF) { writestruct(wd, DATA, "SpaceUserPref", 1, sl); } + else if(sl->spacetype==SPACE_CLIP) { + writestruct(wd, DATA, "SpaceClip", 1, sl); + } sl= sl->next; } @@ -2506,6 +2510,38 @@ static void write_scripts(WriteData *wd, ListBase *idbase) } } +static void write_movieclips(WriteData *wd, ListBase *idbase) +{ + MovieClip *clip; + + clip= idbase->first; + while(clip) { + if(clip->id.us>0 || wd->current) { + MovieTracking *tracking= &clip->tracking; + MovieTrackingTrack *track; + writestruct(wd, ID_MC, "MovieClip", 1, clip); + + if(tracking->reconstruction.camnr) + writestruct(wd, DATA, "MovieReconstructedCamera", tracking->reconstruction.camnr, tracking->reconstruction.cameras); + + track= tracking->tracks.first; + while(track) { + writestruct(wd, DATA, "MovieTrackingTrack", 1, track); + + if(track->markers) + writestruct(wd, DATA, "MovieTrackingMarker", track->markersnr, track->markers); + + track= track->next; + } + } + + clip= clip->id.next; + } + + /* flush helps the compression for undo-save */ + mywrite(wd, MYWRITE_FLUSH, 0); +} + /* context is usually defined by WM, two cases where no WM is available: * - for forward compatibility, curscreen has to be saved * - for undofile, curscene needs to be saved */ @@ -2582,6 +2618,7 @@ static int write_file_handle(Main *mainvar, int handle, MemFile *compare, MemFil write_windowmanagers(wd, &mainvar->wm); write_screens (wd, &mainvar->screen); } + write_movieclips (wd, &mainvar->movieclip); write_scenes (wd, &mainvar->scene); write_curves (wd, &mainvar->curve); write_mballs (wd, &mainvar->mball); |