Files
UnrealEngineUWP/Engine/Source/Developer/RigVMDeveloper/Private/RigVMModel/Nodes/RigVMIfNode.cpp
sara schvartzman f15b37dbb1 RigVM: If, select and array nodes to inherit template node
#jira na
#rb helge.mathee
#preflight https://horde.devtools.epicgames.com/job/6260454fde50cd99bbaf6781

[CL 19848071 by sara schvartzman in ue5-main branch]
2022-04-21 09:10:19 -04:00

43 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "RigVMModel/Nodes/RigVMIfNode.h"
const FString URigVMIfNode::IfName = TEXT("If");
const FString URigVMIfNode::ConditionName = TEXT("Condition");
const FString URigVMIfNode::TrueName = TEXT("True");
const FString URigVMIfNode::FalseName = TEXT("False");
const FString URigVMIfNode::ResultName = TEXT("Result");
FName URigVMIfNode::GetNotation() const
{
static constexpr TCHAR Format[] = TEXT("%s(in %s, in %s, in %s, out %s)");
static const FName Notation = *FString::Printf(Format, *IfName, *ConditionName, *TrueName, *FalseName, *ResultName);
return Notation;
}
const FRigVMTemplate* URigVMIfNode::GetTemplate() const
{
if(const FRigVMTemplate* SuperTemplate = Super::GetTemplate())
{
return SuperTemplate;
}
if(CachedTemplate == nullptr)
{
TArray<FRigVMTemplateArgument::FType> Types;
Types.Append(FRigVMTemplateArgument::GetCompatibleTypes(FRigVMTemplateArgument::ETypeCategory_SingleAnyValue));
Types.Append(FRigVMTemplateArgument::GetCompatibleTypes(FRigVMTemplateArgument::ETypeCategory_ArrayAnyValue));
TArray<FRigVMTemplateArgument> Arguments;
Arguments.Emplace(*ConditionName, ERigVMPinDirection::Input, FRigVMTemplateArgument::FType(RigVMTypeUtils::BoolType, nullptr));
Arguments.Emplace(*TrueName, ERigVMPinDirection::Input, Types);
Arguments.Emplace(*FalseName, ERigVMPinDirection::Input, Types);
Arguments.Emplace(*ResultName, ERigVMPinDirection::Output, Types);
CachedTemplate = FRigVMRegistry::Get().GetOrAddTemplateFromArguments(*IfName, Arguments);
}
return CachedTemplate;
}