Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Public/MetasoundFrontendQuerySteps.h
phil popp d4af456a9c Metasound Frontend Perf Tuneup
- Added frontend search engine to cache frontend queries
- Allowing frontend queries to be updated in place.
- Tracking node registration transactions to allow incremental runtime checks of newly registered nodes.
- Create public RegistryContainer interface and hide implementation to allow for further optimizations without changing public headers
#jira UEAU-749
#rb Max.Hayes, Jimmy.Smith
#preflight 606399a6e05c4e0001a0d173

#ROBOMERGE-SOURCE: CL 15868737 in //UE5/Release-5.0-EarlyAccess/...
#ROBOMERGE-BOT: STARSHIP (Release-5.0-EarlyAccess -> Main) (v786-15839533)

[CL 15868744 by phil popp in ue5-main branch]
2021-03-30 18:22:10 -04:00

90 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "MetasoundDataReference.h"
#include "MetasoundFrontend.h"
#include "MetasoundFrontendQuery.h"
namespace Metasound
{
/** Generates all registered node classes */
class METASOUNDFRONTEND_API FGenerateAllAvailableNodeClasses : public IFrontendQueryGenerateStep
{
public:
void Generate(TArray<FFrontendQueryEntry>& OutEntries) const override;
};
/** Generates node classes that have been newly registered since last call
* to this FGenerateNewlyAvailableClasses::Generate()
*/
class METASOUNDFRONTEND_API FGenerateNewlyAvailableNodeClasses : public IFrontendQueryGenerateStep
{
public:
FGenerateNewlyAvailableNodeClasses();
void Generate(TArray<FFrontendQueryEntry>& OutEntries) const override;
private:
mutable Frontend::FRegistryTransactionID CurrentTransactionID;
};
class METASOUNDFRONTEND_API FFilterClassesByInputVertexDataType : public IFrontendQueryFilterStep
{
public:
template<typename DataType>
FFilterClassesByInputVertexDataType()
: FFilterClassesByInputVertexDataType(GetMetasoundDataTypeName<DataType>())
{
}
FFilterClassesByInputVertexDataType(const FName& InTypeName);
bool Filter(const FFrontendQueryEntry& InEntry) const override;
private:
FName InputVertexTypeName;
};
class METASOUNDFRONTEND_API FFilterClassesByOutputVertexDataType : public IFrontendQueryFilterStep
{
public:
template<typename DataType>
FFilterClassesByOutputVertexDataType()
: FFilterClassesByOutputVertexDataType(GetMetasoundDataTypeName<DataType>())
{
}
FFilterClassesByOutputVertexDataType(const FName& InTypeName);
bool Filter(const FFrontendQueryEntry& InEntry) const override;
private:
FName OutputVertexTypeName;
};
class METASOUNDFRONTEND_API FFilterClassesByClassName : public IFrontendQueryFilterStep
{
public:
FFilterClassesByClassName(const FMetasoundFrontendClassName& InClassName);
bool Filter(const FFrontendQueryEntry& InEntry) const override;
private:
FMetasoundFrontendClassName ClassName;
};
class METASOUNDFRONTEND_API FFilterClassesByClassID : public IFrontendQueryFilterStep
{
public:
FFilterClassesByClassID(const FGuid InClassID);
bool Filter(const FFrontendQueryEntry& InEntry) const override;
private:
FGuid ClassID;
};
}