You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- 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]
90 lines
2.7 KiB
C++
90 lines
2.7 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "MetasoundFrontendQuerySteps.h"
|
|
|
|
#include "CoreMinimal.h"
|
|
#include "MetasoundFrontend.h"
|
|
#include "MetasoundFrontendDocument.h"
|
|
#include "MetasoundFrontendRegistryTransaction.h"
|
|
|
|
namespace Metasound
|
|
{
|
|
void FGenerateAllAvailableNodeClasses::Generate(TArray<FFrontendQueryEntry>& OutEntries) const
|
|
{
|
|
const TArray<Frontend::FNodeClassInfo> ClassInfos = Frontend::GetAllAvailableNodeClasses();
|
|
|
|
for (const Frontend::FNodeClassInfo& ClassInfo : ClassInfos)
|
|
{
|
|
OutEntries.Emplace(TInPlaceType<FMetasoundFrontendClass>(), Frontend::GenerateClassDescription(ClassInfo));
|
|
}
|
|
}
|
|
|
|
FGenerateNewlyAvailableNodeClasses::FGenerateNewlyAvailableNodeClasses()
|
|
: CurrentTransactionID(Frontend::GetOriginRegistryTransactionID())
|
|
{
|
|
}
|
|
|
|
void FGenerateNewlyAvailableNodeClasses::Generate(TArray<FFrontendQueryEntry>& OutEntries) const
|
|
{
|
|
const TArray<Frontend::FNodeClassInfo> ClassInfos = Frontend::GetNodeClassesRegisteredSince(CurrentTransactionID, &CurrentTransactionID);
|
|
|
|
for (const Frontend::FNodeClassInfo& ClassInfo : ClassInfos)
|
|
{
|
|
OutEntries.Emplace(TInPlaceType<FMetasoundFrontendClass>(), Frontend::GenerateClassDescription(ClassInfo));
|
|
}
|
|
}
|
|
|
|
FFilterClassesByInputVertexDataType::FFilterClassesByInputVertexDataType(const FName& InTypeName)
|
|
: InputVertexTypeName(InTypeName)
|
|
{
|
|
}
|
|
|
|
bool FFilterClassesByInputVertexDataType::Filter(const FFrontendQueryEntry& InEntry) const
|
|
{
|
|
check(InEntry.Value.IsType<FMetasoundFrontendClass>());
|
|
|
|
return InEntry.Value.Get<FMetasoundFrontendClass>().Interface.Inputs.ContainsByPredicate(
|
|
[this](const FMetasoundFrontendClassInput& InDesc)
|
|
{
|
|
return InDesc.TypeName == InputVertexTypeName;
|
|
}
|
|
);
|
|
}
|
|
|
|
FFilterClassesByOutputVertexDataType::FFilterClassesByOutputVertexDataType(const FName& InTypeName)
|
|
: OutputVertexTypeName(InTypeName)
|
|
{
|
|
}
|
|
|
|
bool FFilterClassesByOutputVertexDataType::Filter(const FFrontendQueryEntry& InEntry) const
|
|
{
|
|
return InEntry.Value.Get<FMetasoundFrontendClass>().Interface.Outputs.ContainsByPredicate(
|
|
[this](const FMetasoundFrontendClassOutput& InDesc)
|
|
{
|
|
return InDesc.TypeName == OutputVertexTypeName;
|
|
}
|
|
);
|
|
}
|
|
|
|
FFilterClassesByClassName::FFilterClassesByClassName(const FMetasoundFrontendClassName& InClassName)
|
|
: ClassName(InClassName)
|
|
{
|
|
}
|
|
|
|
bool FFilterClassesByClassName::Filter(const FFrontendQueryEntry& InEntry) const
|
|
{
|
|
return InEntry.Value.Get<FMetasoundFrontendClass>().Metadata.ClassName == ClassName;
|
|
}
|
|
|
|
FFilterClassesByClassID::FFilterClassesByClassID(const FGuid InClassID)
|
|
: ClassID(InClassID)
|
|
{
|
|
}
|
|
|
|
bool FFilterClassesByClassID::Filter(const FFrontendQueryEntry& InEntry) const
|
|
{
|
|
return InEntry.Value.Get<FMetasoundFrontendClass>().ID == ClassID;
|
|
}
|
|
}
|
|
|