Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

89 lines
3.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "NiagaraNodeWithDynamicPins.h"
#include "EdGraphSchema_Niagara.h"
#include "NiagaraNodeUsageSelector.h"
#include "Kismet2/EnumEditorUtils.h"
#include "Layout/Visibility.h"
#include "ToolMenu.h"
#include "NiagaraNodeSelect.generated.h"
UCLASS(MinimalAPI)
class UNiagaraNodeSelect : public UNiagaraNodeUsageSelector, public FEnumEditorUtils::INotifyOnEnumChanged
{
GENERATED_BODY()
public:
UNiagaraNodeSelect();
UPROPERTY()
FNiagaraTypeDefinition SelectorPinType;
UPROPERTY()
FGuid SelectorPinGuid;
void ChangeValuePinType(int32 Index, FNiagaraTypeDefinition Type);
void ChangeSelectorPinType(FNiagaraTypeDefinition Type);
class UEdGraphPin* GetSelectorPin() const;
TArray<class UEdGraphPin*> GetOptionPins(int32 Index) const;
TArray<class UEdGraphPin*> GetValuePins(int32 Index) const;
class UEdGraphPin* GetOutputPin(const FNiagaraVariable& Variable) const;
void AddIntegerInputPin();
void RemoveIntegerInputPin();
virtual TArray<int32> GetOptionValues() const override;
private:
/** UObject interface */
virtual void PostInitProperties() override;
/** UEdGraphNode interface */
virtual void AllocateDefaultPins() override;
virtual FText GetTooltipText() const override;
virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
virtual void AddPinSearchMetaDataInfo(const UEdGraphPin* Pin, TArray<struct FSearchTagDataPair>& OutTaggedMetaData) const override;
virtual FLinearColor GetNodeTitleColor() const override;
virtual FSlateIcon GetIconAndTint(FLinearColor& OutColor) const override;
virtual void GetPinHoverText(const UEdGraphPin& Pin, FString& HoverTextOut) const override;
virtual void PostLoad() override;
virtual void GetNodeContextMenuActions(UToolMenu* Menu, UGraphNodeContextMenuContext* Context) const override;
/** UNiagaraNode interface */
virtual void Compile(FTranslator* Translator, TArray<int32>& Outputs) const override;
virtual bool AllowExternalPinTypeChanges(const UEdGraphPin* InGraphPin) const override;
virtual bool AllowNiagaraTypeForPinTypeChange(const FNiagaraTypeDefinition& InType, UEdGraphPin* Pin) const override;
virtual bool OnNewPinTypeRequested(UEdGraphPin* PinToChange, FNiagaraTypeDefinition NewType) override;
virtual void PinTypeChanged(UEdGraphPin* InGraphPin) override;
virtual void AddWidgetsToOutputBox(TSharedPtr<SVerticalBox> OutputBox) override;
virtual void AddWidgetsToInputBox(TSharedPtr<SVerticalBox> InputBox) override;
virtual void GetWildcardPinHoverConnectionTextAddition(const UEdGraphPin* WildcardPin, const UEdGraphPin* OtherPin, ECanCreateConnectionResponse ConnectionResponse, FString& OutString) const override;
virtual void BuildParameterMapHistory(FNiagaraParameterMapHistoryBuilder& OutHistory, bool bRecursive, bool bFilterForCompilation) const override;
/** UNiagaraNodeWithDynamicPins interface */
virtual bool CanRemovePin(const UEdGraphPin* Pin) const override;
virtual bool CanMovePin(const UEdGraphPin* Pin, int32 DirectionToMove) const override;
virtual void MoveDynamicPin(UEdGraphPin* Pin, int32 DirectionToMove) override;
virtual bool CanRenamePin(const UEdGraphPin* Pin) const override;
/** UNiagaraNodeUsageSelector interface */
virtual FString GetInputCaseName(int32 Case) const override;
/** INotifyOnEnumChanged interface */
virtual void PreChange(const UUserDefinedEnum* Changed, FEnumEditorUtils::EEnumEditorChangeInfo ChangedType) override;
virtual void PostChange(const UUserDefinedEnum* Changed, FEnumEditorUtils::EEnumEditorChangeInfo ChangedType) override;
/** Checks if the pin is one of the 'static' pins (selector or output) */
bool IsPinStatic(const UEdGraphPin* Pin) const;
FName GetSelectorPinName() const;
FText GetIntegerAddButtonTooltipText() const;
FText GetIntegerRemoveButtonTooltipText() const;
EVisibility ShowAddIntegerButton() const;
EVisibility ShowRemoveIntegerButton() const;
};