Files
UnrealEngineUWP/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Private/Analysis/MetasoundFrontendAnalyzerAddress.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
1.8 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "Analysis/MetasoundFrontendAnalyzerAddress.h"
namespace Metasound
{
namespace Frontend
{
const FString FAnalyzerAddress::PathSeparator = TEXT("/");
FString FAnalyzerAddress::ToString() const
{
return FString::Join(TArray<FString>
{
*FString::Printf(TEXT("%lld"), InstanceID),
*NodeID.ToString(),
*OutputName.ToString(),
*DataType.ToString(),
*AnalyzerName.ToString(),
*AnalyzerInstanceID.ToString(),
*AnalyzerMemberName.ToString()
}, *PathSeparator);
}
FSendAddress FAnalyzerAddress::ToSendAddress() const
{
const TArray<FString> ChannelTokens
{
NodeID.ToString(),
OutputName.ToString(),
AnalyzerName.ToString(),
AnalyzerInstanceID.ToString(),
AnalyzerMemberName.ToString()
};
// TODO: This is bad as its generating FNames like crazy. One idea was to include guid support in FSendAddresses to avoid FName generation,
// which would enable this factory to map analyzer keys to send guid.
const FName Channel = FName(*FString::Join(ChannelTokens, *PathSeparator));
return FSendAddress { Channel, DataType, InstanceID };
}
bool FAnalyzerAddress::ParseKey(const FString& InAnalyzerKey, FAnalyzerAddress& OutAddress)
{
TArray<FString> Tokens;
if (InAnalyzerKey.ParseIntoArray(Tokens, *PathSeparator) == 7)
{
OutAddress.InstanceID = static_cast<uint64>(FCString::Atoi64(*Tokens[0]));
OutAddress.NodeID = FGuid(Tokens[1]);
OutAddress.OutputName = *Tokens[2];
OutAddress.DataType = *Tokens[3];
OutAddress.AnalyzerName = *Tokens[4];
OutAddress.AnalyzerInstanceID = FGuid(Tokens[5]);
OutAddress.AnalyzerMemberName = *Tokens[6];
return true;
}
return false;
}
} // namespace Frontend
} // namespace Metasound