Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Private/MetasoundFrontendDocumentController.h
aurel cordonnier 3e68a3edef [Backout] - CL18345215
[FYI] rob.gay
Original CL Desc
-----------------------------------------------------------------
MetaSounds Interfaces Checkpoint 2:
- Version up source archetypes to become two interfaces: channel interfaces (mono/stereo) & base source namespace
- Clean-up Interface panel to support namespacing better
- Fix bugs with assuming interfaces are always and the only base namespace members
- Allow namespacing for any arbitrary interface member
- Add lock icon to clarify what interface members cannot be modified individually (i.e. cannot add, remove, or rename them as they are interface members)
- Organize members alphabetically
#jira UE-135000
#rnx
#rb phil.popp
#preflight 61a7d1079c77d610079303ec
#p4v-cherrypick 18344347

#ROBOMERGE-AUTHOR: aurel.cordonnier
#ROBOMERGE-SOURCE: CL 18369256 via CL 18369273 via CL 18369290 via CL 18434224 via CL 18435611
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v897-18405271)

[CL 18436532 by aurel cordonnier in ue5-release-engine-test branch]
2021-12-10 19:13:22 -05:00

95 lines
3.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MetasoundFrontendController.h"
#include "MetasoundFrontendDocument.h"
namespace Metasound
{
namespace Frontend
{
/** FDocumentController represents an entire Metasound document. */
class FDocumentController : public IDocumentController
{
public:
/** Construct a FDocumentController.
*
* @param InDocument - Document to be manipulated.
*/
FDocumentController(FDocumentAccessPtr InDocumentPtr);
/** Create a FDocumentController.
*
* @param InDocument - Document to be manipulated.
*
* @return A document handle.
*/
static FDocumentHandle CreateDocumentHandle(FDocumentAccessPtr InDocument)
{
return MakeShared<FDocumentController>(InDocument);
}
virtual ~FDocumentController() = default;
bool IsValid() const override;
const TArray<FMetasoundFrontendClass>& GetDependencies() const override;
const TArray<FMetasoundFrontendGraphClass>& GetSubgraphs() const override;
const FMetasoundFrontendGraphClass& GetRootGraphClass() const override;
FConstClassAccessPtr FindDependencyWithID(FGuid InClassID) const override;
FConstGraphClassAccessPtr FindSubgraphWithID(FGuid InClassID) const override;
FConstClassAccessPtr FindClassWithID(FGuid InClassID) const override;
FConstClassAccessPtr FindClass(const FNodeRegistryKey& InKey) const override;
FConstClassAccessPtr FindClass(const FMetasoundFrontendClassMetadata& InMetadata) const override;
FConstClassAccessPtr FindOrAddClass(const FNodeRegistryKey& InKey) override;
FConstClassAccessPtr FindOrAddClass(const FMetasoundFrontendClassMetadata& InMetadata) override;
FGraphHandle AddDuplicateSubgraph(const IGraphController& InGraph) override;
const TArray<FMetasoundFrontendVersion>& GetInterfaceVersions() const override;
void AddInterfaceVersion(const FMetasoundFrontendVersion& InVersion) override;
void RemoveInterfaceVersion(const FMetasoundFrontendVersion& InVersion) override;
void ClearInterfaceVersions() override;
void SetMetadata(const FMetasoundFrontendDocumentMetadata& InMetadata) override;
const FMetasoundFrontendDocumentMetadata& GetMetadata() const override;
const FMetasoundFrontendClass* SynchronizeDependency(const FNodeRegistryKey& InKey) override;
void SynchronizeDependencies() override;
FGraphHandle GetRootGraph() override;
FConstGraphHandle GetRootGraph() const override;
/** Returns an array of all subgraphs for this document. */
TArray<FGraphHandle> GetSubgraphHandles() override;
/** Returns an array of all subgraphs for this document. */
TArray<FConstGraphHandle> GetSubgraphHandles() const override;
/** Returns a graphs in the document with the given class ID.*/
FGraphHandle GetSubgraphWithClassID(FGuid InClassID) override;
/** Returns a graphs in the document with the given class ID.*/
FConstGraphHandle GetSubgraphWithClassID(FGuid InClassID) const override;
bool ExportToJSONAsset(const FString& InAbsolutePath) const override;
FString ExportToJSON() const override;
protected:
FDocumentAccess ShareAccess() override;
FConstDocumentAccess ShareAccess() const override;
private:
bool AddDuplicateSubgraph(const FMetasoundFrontendGraphClass& InGraphToCopy, const FMetasoundFrontendDocument& InOtherDocument);
FDocumentAccessPtr DocumentPtr;
};
}
}