Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Public/Analysis/MetasoundFrontendAnalyzerAddress.h
Rob Gay 4427e326e4 Make AnalyzerAddress & GraphAnalyzerAddress real TransmissionAddress citizens
#rb phil.popp
#jira UE-149394
#rnx
#preflight 62fd6ff6086f90bbc482f1e7

[CL 21434257 by Rob Gay in ue5-main branch]
2022-08-17 19:01:34 -04:00

72 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/UnrealString.h"
#include "HAL/Platform.h"
#include "MetasoundDataReferenceMacro.h"
#include "MetasoundRouter.h"
#include "MetasoundVertex.h"
#include "Misc/Guid.h"
#include "UObject/NameTypes.h"
namespace Metasound
{
namespace Frontend
{
// String serializable (as key) channel of analyzer or its internal members
// that can be written to or read from using the Transmission System.
class METASOUNDFRONTEND_API FAnalyzerAddress : public FTransmissionAddress
{
public:
static const FString PathSeparator;
FAnalyzerAddress(const FString& InAddressString);
FAnalyzerAddress() = default;
virtual ~FAnalyzerAddress() = default;
virtual FName GetAddressType() const override;
virtual FName GetDataType() const override;
virtual TUniquePtr<FTransmissionAddress> Clone() const override;
// Converts AnalyzerAddress to String representation using the PathSeparator
virtual FString ToString() const override;
virtual uint32 GetHash() const override;
virtual bool IsEqual(const FTransmissionAddress& InOther) const override;
// Active Instance ID to monitor
uint64 InstanceID = TNumericLimits<uint64>::Max();
// ID of Node being monitored
FGuid NodeID;
// Name of output to monitor (not to be confused with the Analyzer's members,
// which are specific to the analyzer instance being addressed)
FVertexName OutputName;
// DataType of the given channel
FName DataType;
// Name of Analyzer
FName AnalyzerName;
// Instance ID of analyzer (allowing for multiple analyzer of the same type to be
// addressed at the same output).
FGuid AnalyzerInstanceID;
// Optional name used to specify a channel for a given analyzer's inputs/outputs.
// If not provided (i.e. 'none'), single input & output are assumed to share
// the same name. Useful if the analyzer requires outputting multiple analysis values.
// Can potentially be used as an input as well to modify analyzer settings.
FName AnalyzerMemberName;
};
} // namespace Frontend
DECLARE_METASOUND_DATA_REFERENCE_TYPES(Frontend::FAnalyzerAddress, METASOUNDFRONTEND_API, FAnalyzerAddressTypeInfo, FAnalyzerAddressReadRef, FAnalyzerAddressWriteRef)
} // namespace Metasound