Files
UnrealEngine/Engine/Plugins/Runtime/Metasound/Source/MetasoundFrontend/Private/MetasoundArrayNodes.cpp
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

135 lines
4.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "MetasoundArrayNodes.h"
#include "Misc/EnumClassFlags.h"
#define LOCTEXT_NAMESPACE "MetasoundFrontend"
namespace Metasound
{
namespace MetasoundArrayNodesPrivate
{
FNodeClassMetadata CreateArrayNodeClassMetadata(const FName& InDataTypeName, const FName& InOperatorName, const FText& InDisplayName, const FText& InDescription, const FVertexInterface& InDefaultInterface, int32 MajorVersion, int32 MinorVersion, bool bIsDeprecated)
{
FNodeClassMetadata Metadata
{
FNodeClassName { FName("Array"), InOperatorName, InDataTypeName },
MajorVersion,
MinorVersion,
InDisplayName,
InDescription,
PluginAuthor,
PluginNodeMissingPrompt,
InDefaultInterface,
{ METASOUND_LOCTEXT("ArrayCategory", "Array") },
{ METASOUND_LOCTEXT("MetasoundArrayKeyword", "Array") },
};
if (bIsDeprecated)
{
EnumAddFlags(Metadata.AccessFlags, ENodeClassAccessFlags::Deprecated);
}
return Metadata;
}
FVertexInterface CreateArrayNumInterface(const FName& InArrayDataTypeName)
{
using namespace ArrayNodeVertexNames;
return FVertexInterface {
FInputVertexInterface(
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputArray), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(InputArray))
),
FOutputVertexInterface(
TOutputDataVertex<int32>(METASOUND_GET_PARAM_NAME_AND_METADATA(OutputNum))
)
};
}
FVertexInterface CreateArrayGetInterface(const FName& InArrayDataTypeName, const FName& InDataTypeName)
{
using namespace ArrayNodeVertexNames;
return FVertexInterface {
FInputVertexInterface(
TInputDataVertex<FTrigger>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputTriggerGet)),
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputArray), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(InputArray)),
TInputDataVertex<int32>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputIndex))
),
FOutputVertexInterface(
FOutputDataVertex(METASOUND_GET_PARAM_NAME(OutputValue), InDataTypeName, METASOUND_GET_PARAM_METADATA(OutputValue), EVertexAccessType::Reference)
)
};
}
FVertexInterface CreateArraySetInterface(const FName& InArrayDataTypeName, const FName& InDataTypeName)
{
using namespace ArrayNodeVertexNames;
return FVertexInterface{
FInputVertexInterface(
TInputDataVertex<FTrigger>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputTriggerSet)),
FInputDataVertex(InputInitialArrayName, InArrayDataTypeName, FDataVertexMetadata { InputInitialArrayTooltip, InputInitialArrayDisplayName }),
TInputDataVertex<int32>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputIndex)),
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputValue), InDataTypeName, METASOUND_GET_PARAM_METADATA(InputValue))
),
FOutputVertexInterface(
FOutputDataVertex(METASOUND_GET_PARAM_NAME(OutputArraySet), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(OutputArraySet), EVertexAccessType::Reference)
)
};
}
FVertexInterface CreateArrayConcatInterface(const FName& InArrayDataTypeName)
{
using namespace ArrayNodeVertexNames;
return FVertexInterface{
FInputVertexInterface(
TInputDataVertex<FTrigger>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputTriggerGet)),
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputLeftArray), InArrayDataTypeName,METASOUND_GET_PARAM_METADATA(InputLeftArray)),
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputRightArray), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(InputRightArray))
),
FOutputVertexInterface(
FOutputDataVertex(METASOUND_GET_PARAM_NAME(OutputArrayConcat), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(OutputArrayConcat), EVertexAccessType::Reference)
)
};
}
FVertexInterface CreateArraySubsetInterface(const FName& InArrayDataTypeName)
{
using namespace ArrayNodeVertexNames;
return FVertexInterface {
FInputVertexInterface(
TInputDataVertex<FTrigger>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputTriggerGet)),
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputArray), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(InputArray)),
TInputDataVertex<int32>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputStartIndex)),
TInputDataVertex<int32>(METASOUND_GET_PARAM_NAME_AND_METADATA(InputEndIndex))
),
FOutputVertexInterface(
FOutputDataVertex(METASOUND_GET_PARAM_NAME(OutputArraySubset), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(OutputArraySubset), EVertexAccessType::Reference)
)
};
}
FVertexInterface CreateArrayLastIndexInterface(const FName& InArrayDataTypeName)
{
using namespace ArrayNodeVertexNames;
return FVertexInterface {
FInputVertexInterface(
FInputDataVertex(METASOUND_GET_PARAM_NAME(InputArray), InArrayDataTypeName, METASOUND_GET_PARAM_METADATA(InputArray))
),
FOutputVertexInterface(
TOutputDataVertex<int32>(METASOUND_GET_PARAM_NAME_AND_METADATA(OutputLastIndex))
)
};
}
}
}
#undef LOCTEXT_NAMESPACE