You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- 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]
49 lines
1.9 KiB
C++
49 lines
1.9 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
#include "Analysis/MetasoundFrontendAnalyzerView.h"
|
|
|
|
#include "Analysis/MetasoundFrontendAnalyzerFactory.h"
|
|
#include "Analysis/MetasoundFrontendAnalyzerRegistry.h"
|
|
#include "Analysis/MetasoundFrontendVertexAnalyzer.h"
|
|
#include "Analysis/MetasoundFrontendVertexAnalyzerEnvelopeFollower.h"
|
|
#include "Analysis/MetasoundFrontendGraphAnalyzer.h"
|
|
#include "Math/UnrealMathUtility.h"
|
|
#include "MetasoundAssetBase.h"
|
|
#include "MetasoundFrontendController.h"
|
|
#include "MetasoundOperatorSettings.h"
|
|
#include "Templates/Function.h"
|
|
|
|
|
|
namespace Metasound
|
|
{
|
|
namespace Frontend
|
|
{
|
|
FMetasoundAnalyzerView::FMetasoundAnalyzerView(FAnalyzerAddress&& InAnalyzerAddress)
|
|
: AnalyzerAddress(MoveTemp(InAnalyzerAddress))
|
|
{
|
|
}
|
|
|
|
void FMetasoundAnalyzerView::BindToAllOutputs(const FOperatorSettings& InOperatorSettings)
|
|
{
|
|
const IVertexAnalyzerFactory* Factory = IVertexAnalyzerRegistry::Get().FindAnalyzerFactory(AnalyzerAddress.AnalyzerName);
|
|
if (ensureMsgf(Factory, TEXT("Failed to bind AnalyzerView to all Analyzer outputs: Missing factory definition for analyzer with name '%s'"), *AnalyzerAddress.AnalyzerName.ToString()))
|
|
{
|
|
for (const FAnalyzerOutput& Output : Factory->GetAnalyzerOutputs())
|
|
{
|
|
FAnalyzerAddress OutputAddress = AnalyzerAddress;
|
|
OutputAddress.AnalyzerMemberName = Output.Name;
|
|
OutputAddress.DataType = Output.DataType;
|
|
const FSendAddress SendAddress = OutputAddress.ToSendAddress();
|
|
const FReceiverInitParams ReceiverParams { InOperatorSettings };
|
|
IReceiver* Receiver = FDataTransmissionCenter::Get().RegisterNewReceiver(SendAddress, ReceiverParams).Release();
|
|
OutputReceivers.Add({ Output.Name, TSharedPtr<IReceiver>(Receiver) });
|
|
}
|
|
}
|
|
}
|
|
|
|
bool FMetasoundAnalyzerView::UnbindOutput(FName InOutputName)
|
|
{
|
|
return OutputReceivers.Remove(InOutputName) > 0;
|
|
}
|
|
} // namespace Frontend
|
|
} // namespace Metasound
|