You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Also, remove ensure when trying to find an analyzer factory, since we can fail gracefully. #jira UE-185335 #rnx #rb phil.popp #preflight 645a6477a73096fab7787284 [CL 25402611 by charlie huguenard in ue5-main branch]
57 lines
1.8 KiB
C++
57 lines
1.8 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#include "Analysis/MetasoundFrontendAnalyzerRegistry.h"
|
|
|
|
#include "Analysis/MetasoundFrontendAnalyzerFactory.h"
|
|
#include "Analysis/MetasoundFrontendVertexAnalyzerEnvelopeFollower.h"
|
|
#include "Analysis/MetasoundFrontendVertexAnalyzerForwardValue.h"
|
|
#include "Analysis/MetasoundFrontendVertexAnalyzerTriggerDensity.h"
|
|
#include "MetasoundPrimitives.h"
|
|
|
|
|
|
namespace Metasound
|
|
{
|
|
namespace Frontend
|
|
{
|
|
class FVertexAnalyzerRegistry : public IVertexAnalyzerRegistry
|
|
{
|
|
TMap<FName, TUniquePtr<IVertexAnalyzerFactory>> AnalyzerFactoryRegistry;
|
|
|
|
public:
|
|
template<typename TAnalyzerFactoryClass>
|
|
void RegisterAnalyzerFactory()
|
|
{
|
|
TUniquePtr<IVertexAnalyzerFactory> Factory(new TAnalyzerFactoryClass());
|
|
AnalyzerFactoryRegistry.Emplace(TAnalyzerFactoryClass::GetAnalyzerName(), MoveTemp(Factory));
|
|
}
|
|
|
|
FVertexAnalyzerRegistry() = default;
|
|
virtual ~FVertexAnalyzerRegistry() override = default;
|
|
|
|
virtual const IVertexAnalyzerFactory* FindAnalyzerFactory(FName InAnalyzerName) const override
|
|
{
|
|
const TUniquePtr<IVertexAnalyzerFactory>* Factory = AnalyzerFactoryRegistry.Find(InAnalyzerName);
|
|
if (nullptr == Factory)
|
|
{
|
|
UE_LOG(LogMetaSound, Warning, TEXT("Failed to find registered MetaSound Analyzer Factory with name '%s'"), *InAnalyzerName.ToString());
|
|
return nullptr;
|
|
}
|
|
|
|
check(Factory->IsValid());
|
|
return Factory->Get();
|
|
}
|
|
|
|
virtual void RegisterAnalyzerFactory(FName AnalyzerName, TUniquePtr<IVertexAnalyzerFactory>&& Factory) override
|
|
{
|
|
check(!AnalyzerFactoryRegistry.Contains(AnalyzerName));
|
|
AnalyzerFactoryRegistry.Emplace(AnalyzerName, MoveTemp(Factory));
|
|
}
|
|
};
|
|
|
|
IVertexAnalyzerRegistry& IVertexAnalyzerRegistry::Get()
|
|
{
|
|
static FVertexAnalyzerRegistry Registry;
|
|
return Registry;
|
|
}
|
|
} // namespace Frontend
|
|
} // namespace Metasound
|