Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Private/Analysis/MetasoundFrontendAnalyzerRegistry.cpp
Rob Gay f2f944d64f MetaSound Analyzer Frontend/Graph Core Checkpoint
- Add ability to track all internal data references to a core graph
- Add AnalyzerRegistry & first pass at value/envelope analyzers
- Add support for enabling analyzing from MetaSound Generator
- Add ability for tracking colorized bounds for edges as literal-color array
#rb phil.popp
#jira UE-147027
#jira UE-147028
#jira UE-147026
#preflight 627acbae10766ef8c112264c

[CL 20129340 by Rob Gay in ue5-main branch]
2022-05-10 16:51:39 -04:00

62 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Analysis/MetasoundFrontendAnalyzerRegistry.h"
#include "Analysis/MetasoundFrontendAnalyzerFactory.h"
#include "Analysis/MetasoundFrontendVertexAnalyzerEnvelopeFollower.h"
#include "Analysis/MetasoundFrontendVertexAnalyzerTriggerDensity.h"
#include "Analysis/MetasoundFrontendVertexAnalyzerValue.h"
#include "MetasoundPrimitives.h"
namespace Metasound
{
namespace Frontend
{
class FVertexAnalyzerRegistry : public IVertexAnalyzerRegistry
{
TMap<FName, TUniquePtr<IVertexAnalyzerFactory>> AnalyzerFactoryRegistry;
template<typename TAnalyzerFactoryClass>
void RegisterAnalyzerFactory()
{
TUniquePtr<IVertexAnalyzerFactory> Factory(new TAnalyzerFactoryClass());
AnalyzerFactoryRegistry.Emplace(TAnalyzerFactoryClass::GetAnalyzerName(), MoveTemp(Factory));
}
public:
FVertexAnalyzerRegistry() = default;
virtual ~FVertexAnalyzerRegistry() = default;
virtual const TUniquePtr<IVertexAnalyzerFactory>& FindAnalyzerFactory(FName InAnalyzerName) const override
{
const TUniquePtr<IVertexAnalyzerFactory>* Factory = AnalyzerFactoryRegistry.Find(InAnalyzerName);
if (ensureMsgf(Factory, TEXT("Failed to find registered MetaSound Analyzer Factory with name '%s'"), *InAnalyzerName.ToString()))
{
return *Factory;
}
static const TUniquePtr<IVertexAnalyzerFactory> InvalidFactory;
return InvalidFactory;
}
virtual void RegisterAnalyzerFactories() override
{
RegisterAnalyzerFactory<FVertexAnalyzerEnvelopeFollower::FFactory>();
RegisterAnalyzerFactory<FVertexAnalyzerTriggerDensity::FFactory>();
// Primitives
RegisterAnalyzerFactory<FVertexAnalyzerBool::FFactory>();
RegisterAnalyzerFactory<FVertexAnalyzerFloat::FFactory>();
RegisterAnalyzerFactory<FVertexAnalyzerInt::FFactory>();
RegisterAnalyzerFactory<FVertexAnalyzerString::FFactory>();
}
};
IVertexAnalyzerRegistry& IVertexAnalyzerRegistry::Get()
{
static FVertexAnalyzerRegistry Registry;
return Registry;
}
} // namespace Frontend
} // namespace Metasound