Files
UnrealEngine/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Private/MetasoundAutoConverterNode.cpp
2025-05-18 13:04:45 +08:00

77 lines
2.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MetasoundAutoConverterNode.h"
#define LOCTEXT_NAMESPACE "MetasoundFrontend"
namespace Metasound
{
namespace AutoConverterNodePrivate
{
FVertexName GetInputName(const FConvertDataTypeInfo& InInfo)
{
return InInfo.FromDataTypeName;
}
FVertexName GetOutputName(const FConvertDataTypeInfo& InInfo)
{
return InInfo.ToDataTypeName;
}
FVertexInterface CreateVertexInterface(const FConvertDataTypeInfo& InInfo)
{
const FText InputDesc = METASOUND_LOCTEXT_FORMAT("AutoConvDisplayNamePatternFrom", "Input {0} value.", InInfo.FromDataTypeText);
const FText OutputDesc = METASOUND_LOCTEXT_FORMAT("AutoConvDisplayNamePatternTo", "Output {0} value.", InInfo.ToDataTypeText);
return FVertexInterface(
FInputVertexInterface(
FInputDataVertex(GetInputName(InInfo), InInfo.FromDataTypeName, FDataVertexMetadata{ InputDesc }, EVertexAccessType::Reference)
),
FOutputVertexInterface(
FOutputDataVertex(GetOutputName(InInfo), InInfo.ToDataTypeName, FDataVertexMetadata{ OutputDesc }, EVertexAccessType::Reference)
)
);
}
FNodeClassMetadata CreateAutoConverterNodeMetadata(const FConvertDataTypeInfo& InInfo)
{
FNodeDisplayStyle DisplayStyle;
DisplayStyle.bShowName = false;
DisplayStyle.ImageName = TEXT("MetasoundEditor.Graph.Node.Conversion");
DisplayStyle.bShowInputNames = false;
DisplayStyle.bShowOutputNames = false;
const FText FromTypeText = InInfo.FromDataTypeText;
const FText ToTypeText = InInfo.ToDataTypeText;
FNodeClassMetadata Info;
Info.ClassName = { TEXT("Convert"), InInfo.ToDataTypeName, InInfo.FromDataTypeName };
Info.MajorVersion = 1;
Info.MinorVersion = 0;
Info.DisplayName = METASOUND_LOCTEXT_FORMAT("Metasound_AutoConverterNodeDisplayNameFormat", "{0} to {1}", InInfo.FromDataTypeText, InInfo.ToDataTypeText);
Info.Description = METASOUND_LOCTEXT_FORMAT("Metasound_AutoConverterNodeDescriptionNameFormat", "Converts from {0} to {1}.", InInfo.FromDataTypeText, InInfo.ToDataTypeText);
Info.Author = PluginAuthor;
Info.DisplayStyle = DisplayStyle;
Info.PromptIfMissing = PluginNodeMissingPrompt;
Info.DefaultInterface = CreateVertexInterface(InInfo);
Info.CategoryHierarchy.Emplace(NodeCategories::Conversions);
if (InInfo.bIsFromEnum || InInfo.bIsToEnum)
{
Info.CategoryHierarchy.Emplace(NodeCategories::EnumConversions);
}
Info.Keywords =
{
METASOUND_LOCTEXT("MetasoundConvertKeyword", "Convert"),
InInfo.FromDataTypeText,
InInfo.ToDataTypeText
};
return Info;
}
}
}
#undef LOCTEXT_NAMESPACE