// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "FCPXML/FCPXMLExport.h" #include "MovieSceneExportMetadata.h" /** The FFCPXMLMetadataExportVisitor class exports FCP 7 XML structure based on metadata from a sequencer movie export */ class FFCPXMLMetadataExportVisitor : public FFCPXMLExportVisitor { public: /** Constructor */ FFCPXMLMetadataExportVisitor(FString InSaveFilename, TSharedRef InExportData, TSharedRef InExportContext, const FMovieSceneExportMetadata* InMovieSceneExportMetadata); /** Destructor */ virtual ~FFCPXMLMetadataExportVisitor(); /** Creates master video clip nodes. */ virtual bool ConstructMasterVideoClipNodes(TSharedRef InParentNode) override; virtual bool ConstructVideoTrackNode(TSharedRef InParentNode, const TSharedPtr InCinematicTrackData, const TSharedPtr InCinematicData) override; bool ConstructMasterClipNode(TSharedRef InParentNode, const FString& InClipName, const FMovieSceneExportMetadataShot& InShotMetadata, const FMovieSceneExportMetadataClip& InClipMetadata, const int32 HandleFrames); bool ConstructVideoClipItemNode(TSharedRef InParentNode, const FString& InClipName, const FMovieSceneExportMetadataClip& InClipMetadata, const int32 HandleFrames, bool bInMasterClip); bool GetMasterClipIdName(const FString& InClipName, FString& OutName); bool GetFileIdName(const FString& InFileName, FString& OutFileIdName, bool& OutFileExists); bool ConstructVideoFileNode(TSharedRef InParentNode, const FString& InClipName, int32 Duration, bool bInMasterClip); protected: const FMovieSceneExportMetadata* MovieSceneExportMetadata; };