Files
UnrealEngineUWP/Engine/Source/Editor/GraphEditor/Private/KismetNodes/SGraphNodeCallParameterCollectionFunction.cpp
ryan durand 627baf970a Updating copyright for Engine Editor.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869241 via CL 10869527 via CL 10869904
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870586 by ryan durand in Main branch]
2019-12-26 15:33:43 -05:00

54 lines
1.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "KismetNodes/SGraphNodeCallParameterCollectionFunction.h"
#include "Materials/MaterialParameterCollection.h"
#include "EdGraphSchema_K2.h"
#include "K2Node_CallMaterialParameterCollectionFunction.h"
#include "NodeFactory.h"
#include "SGraphPinNameList.h"
//////////////////////////////////////////////////////////////////////////
// SGraphNodeCallParameterCollectionFunction
TSharedPtr<SGraphPin> SGraphNodeCallParameterCollectionFunction::CreatePinWidget(UEdGraphPin* Pin) const
{
UK2Node_CallMaterialParameterCollectionFunction* CallFunctionNode = Cast<UK2Node_CallMaterialParameterCollectionFunction>(GraphNode);
// Create a special pin class for the ParameterName pin
if (CallFunctionNode
&& Pin->PinName == TEXT("ParameterName")
&& Pin->PinType.PinCategory == UEdGraphSchema_K2::PC_Name)
{
TArray<FName> NameList;
UEdGraphPin* CollectionPin = GraphNode->FindPin(TEXT("Collection"));
if (CollectionPin)
{
UMaterialParameterCollection* Collection = Cast<UMaterialParameterCollection>(CollectionPin->DefaultObject);
if (Collection)
{
// Populate the ParameterName pin combobox with valid options from the Collection
const bool bVectorParameters = CallFunctionNode->FunctionReference.GetMemberName().ToString().Contains(TEXT("Vector"));
Collection->GetParameterNames(NameList, bVectorParameters);
}
}
TArray<TSharedPtr<FName>> NamePtrList;
for (FName NameItem : NameList)
{
NamePtrList.Add(MakeShareable( new FName(NameItem)));
}
TSharedPtr<SGraphPin> NewPin = SNew(SGraphPinNameList, Pin, NamePtrList);
return NewPin;
}
else
{
return FNodeFactory::CreatePinWidget(Pin);
}
}