Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Public/Analysis/MetasoundFrontendGraphAnalyzer.h
Rob Gay 20742757be - Narrow/privitize template implementation scope for MetaSound Analyzers
- Implement/encapsulate binding for analyzer output/sender logic
- Move to using FAnyDataReferences where possible over collections for analyzers
- Misc clean-up
#jira UE-147027
#rb phil.popp
#preflight 627d3884332e182a583f19b3

[CL 20167469 by Rob Gay in ue5-main branch]
2022-05-12 13:47:17 -04:00

46 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Analysis/MetasoundFrontendVertexAnalyzer.h"
#include "MetasoundBuilderInterface.h"
#include "MetasoundOperatorSettings.h"
#include "MetasoundRouter.h"
#include "MetasoundVertex.h"
#include "Templates/UniquePtr.h"
namespace Metasound
{
namespace Frontend
{
using FNodeVertexDataReferenceMap = TMap<FGuid, FDataReferenceCollection>;
// Handles intrinsic analysis operations within a given graph
// should the graph's operator be enabled for analysis.
class METASOUNDFRONTEND_API FGraphAnalyzer
{
const FOperatorSettings OperatorSettings;
const uint64 InstanceID = INDEX_NONE;
TUniquePtr<IReceiver> ActiveAnalyzerReceiver;
TArray<TUniquePtr<Frontend::IVertexAnalyzer>> Analyzers;
FNodeVertexDataReferenceMap InternalDataReferences;
public:
FGraphAnalyzer(const FOperatorSettings& InSettings, uint64 InInstanceID, FNodeVertexDataReferenceMap&& InGraphReferences);
~FGraphAnalyzer() = default;
// Creates a send channel name unique for the given sound instance used to send array of analyzer
// addresses to the profiler of what analyzers are expected to be active for a given instance.
static const FName GetAnalyzerArraySendChannelName(uint64 InInstanceID)
{
const FString ChannelName = FString::Printf(TEXT("AnalyzerArray%s%lld"), *FAnalyzerAddress::PathSeparator, InInstanceID);
return *ChannelName;
}
// Execute analysis for the current block
void Execute();
};
} // namespace Frontend
} // namespace Metasound