Files
UnrealEngine/Engine/Source/Editor/MovieSceneTools/Private/FCPXML/FCPXMLMetadataExport.h
2025-05-18 13:04:45 +08:00

33 lines
1.8 KiB
C++

// 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<FMovieSceneExportData> InExportData, TSharedRef<FMovieSceneTranslatorContext> InExportContext, const FMovieSceneExportMetadata* InMovieSceneExportMetadata);
/** Destructor */
virtual ~FFCPXMLMetadataExportVisitor();
/** Creates master video clip nodes. */
virtual bool ConstructMasterVideoClipNodes(TSharedRef<FFCPXMLNode> InParentNode) override;
virtual bool ConstructVideoTrackNode(TSharedRef<FFCPXMLNode> InParentNode, const TSharedPtr<FMovieSceneExportCinematicTrackData> InCinematicTrackData, const TSharedPtr<FMovieSceneExportCinematicData> InCinematicData) override;
bool ConstructMasterClipNode(TSharedRef<FFCPXMLNode> InParentNode, const FString& InClipName, const FMovieSceneExportMetadataShot& InShotMetadata, const FMovieSceneExportMetadataClip& InClipMetadata, const int32 HandleFrames);
bool ConstructVideoClipItemNode(TSharedRef<FFCPXMLNode> 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<FFCPXMLNode> InParentNode, const FString& InClipName, int32 Duration, bool bInMasterClip);
protected:
const FMovieSceneExportMetadata* MovieSceneExportMetadata;
};