A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
DialogueK2Node_Select.h
Go to the documentation of this file.
1// Copyright Csaba Molnar, Daniel Butum. All Rights Reserved.
2#pragma once
3
4#include "K2Node.h"
5#include "EdGraphSchema_K2.h"
6
7#include "DialogueK2Node_Select.generated.h"
8
9
10UENUM()
11enum class EDlgVariableType : uint8
12{
13 Float UMETA(DisplayName = "Dialogue Float Variable"),
14 Int UMETA(DisplayName = "Dialogue Int Variable"),
15 Name UMETA(DisplayName = "Dialogue Name Variable"),
16 SpeakerState UMETA(DisplayName = "Dialogue Speaker State"),
17};
18
22UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
24{
25 GENERATED_BODY()
26
27public:
28 UDialogueK2Node_Select(const FObjectInitializer& ObjectInitializer);
29
30 //~ Begin UEdGraphNode Interface
31 void AllocateDefaultPins() override;
32 void PinTypeChanged(UEdGraphPin* Pin) override;
33 FText GetTooltipText() const override;
34 void NodeConnectionListChanged() override;
35 FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
36 FSlateIcon GetIconAndTint(FLinearColor& OutColor) const override;
37 //~ End UEdGraphNode Interface
38
39 //~ Begin UK2Node Interface
40 bool IsNodeSafeToIgnore() const override { return true; }
41 bool IsNodePure() const override { return true; }
42 class FNodeHandlingFunctor* CreateNodeHandler(class FKismetCompilerContext& CompilerContext) const override;
43 bool IsConnectionDisallowed(const UEdGraphPin* MyPin, const UEdGraphPin* OtherPin, FString& OutReason) const override;
44 virtual void NotifyPinConnectionListChanged(UEdGraphPin* Pin) override;
45 void GetMenuActions(FBlueprintActionDatabaseRegistrar& ActionRegistrar) const override;
46 FText GetMenuCategory() const override;
47 int32 GetNodeRefreshPriority() const override { return EBaseNodeRefreshPriority::Normal; }
48 void PostReconstructNode() override;
49 //~ End UK2Node Interface
50
51 // Begin own functions
53 UEdGraphPin* GetReturnValuePin() const
54 {
55 check(Pins.IsValidIndex(INDEX_PIN_Return) && Pins[INDEX_PIN_Return]->PinName == UEdGraphSchema_K2::PN_ReturnValue)
56 return Pins[INDEX_PIN_Return];
57 }
59 // The return pin is alright, because it is the only output pin
61 UEdGraphPin* GetVariableNamePin() const
62 {
63 check(Pins.IsValidIndex(INDEX_PIN_VariableName) && Pins[INDEX_PIN_VariableName]->PinName == PIN_VariableName)
64 return Pins[INDEX_PIN_VariableName];
65 }
68 UEdGraphPin* GetDefaultValuePin() const
69 {
70 check(Pins.IsValidIndex(INDEX_PIN_Default) && Pins[INDEX_PIN_Default]->PinName == PIN_DefaultValue)
71 return Pins[INDEX_PIN_Default];
72 }
75 const TArray<UEdGraphPin*> GetOptionPins() const
76 {
77 // The end of the array is all option pins
78 TArray<UEdGraphPin*> OptionPins;
79 for (int32 PinIndex = INDEX_PIN_OPTIONS_START, PinsNum = Pins.Num(); PinIndex < PinsNum; PinIndex++)
80 {
81 // check(Pins[PinIndex]->PinType.PinCategory == VariablePinType);
82 OptionPins.Add(Pins[PinIndex]);
83 }
84
85 return OptionPins;
86 }
87
89 static UFunction* GetConditionalFunction();
90
92 static void GetPrintStringFunction(FName& FunctionName, UClass** FunctionClass);
93
95 bool RefreshPinNames();
96
97private:
99 void RefreshVariablePinType()
100 {
101 switch (VariableType)
102 {
104 VariablePinType = UEdGraphSchema_K2::PC_Float;
105 break;
107 VariablePinType = UEdGraphSchema_K2::PC_Int;
108 break;
110 VariablePinType = UEdGraphSchema_K2::PC_Name;
111 break;
113 VariablePinType = UEdGraphSchema_K2::PC_Wildcard;
114 break;
115 default:
116 unimplemented();
117 }
118 }
119
120public:
121 // Constants for the location of the input/output pins in the Pins array
122 static constexpr int32 INDEX_PIN_Return = 0;
123 static constexpr int32 INDEX_PIN_VariableName = 1;
124 static constexpr int32 INDEX_PIN_Default = 2;
125 static constexpr int32 INDEX_PIN_OPTIONS_START = 3;
126
127protected:
129 UPROPERTY()
130 TArray<FName> PinNames;
131
132 UPROPERTY()
133 EDlgVariableType VariableType;
134
135 // The pin type of this select
136 UPROPERTY()
137 FName VariablePinType;
138
140 UPROPERTY(Transient)
141 bool bReconstructNode;
143 // Constants.
144 static const FName PIN_VariableName; // index
145 static const FName PIN_DefaultValue;
146};
147
151UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
153{
154 GENERATED_BODY()
156public:
157 UDialogueK2Node_SelectFloat(const FObjectInitializer& ObjectInitializer);
159 //~ Begin UEdGraphNode Interface
160 FText GetTooltipText() const override;
161 FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
162};
163
167UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
170 GENERATED_BODY()
172public:
173 UDialogueK2Node_SelectName(const FObjectInitializer& ObjectInitializer);
174
175 //~ Begin UEdGraphNode Interface
176 FText GetTooltipText() const override;
177 FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
178};
179
183UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
185{
186 GENERATED_BODY()
187
188public:
189 UDialogueK2Node_SelectOnSpeakerState(const FObjectInitializer& ObjectInitializer);
191 //~ Begin UEdGraphNode Interface
192 FText GetTooltipText() const override;
193 FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
194};
EDlgVariableType
UENUM()
UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
FText GetTooltipText() const override
FText GetNodeTitle(ENodeTitleType::Type TitleType) const override
UDialogueK2Node_SelectFloat(const FObjectInitializer &ObjectInitializer)
UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
void PinTypeChanged(UEdGraphPin *Pin) override
bool IsNodePure() const override
UEdGraphPin * GetVariableNamePin() const
UDialogueK2Node_Select(const FObjectInitializer &ObjectInitializer)
bool bReconstructNode
UPROPERTY(Transient)
FText GetMenuCategory() const override
bool IsConnectionDisallowed(const UEdGraphPin *MyPin, const UEdGraphPin *OtherPin, FString &OutReason) const override
UEdGraphPin * GetReturnValuePin() const
class FNodeHandlingFunctor * CreateNodeHandler(class FKismetCompilerContext &CompilerContext) const override
FText GetNodeTitle(ENodeTitleType::Type TitleType) const override
void GetMenuActions(FBlueprintActionDatabaseRegistrar &ActionRegistrar) const override
EDlgVariableType VariableType
UPROPERTY()
TArray< FName > PinNames
UPROPERTY()
static const FName PIN_VariableName
const TArray< UEdGraphPin * > GetOptionPins() const
static constexpr int32 INDEX_PIN_VariableName
int32 GetNodeRefreshPriority() const override
FText GetTooltipText() const override
static constexpr int32 INDEX_PIN_Return
UEdGraphPin * GetDefaultValuePin() const
bool IsNodeSafeToIgnore() const override
FSlateIcon GetIconAndTint(FLinearColor &OutColor) const override
static constexpr int32 INDEX_PIN_OPTIONS_START
virtual void NotifyPinConnectionListChanged(UEdGraphPin *Pin) override
static void GetPrintStringFunction(FName &FunctionName, UClass **FunctionClass)
static constexpr int32 INDEX_PIN_Default
static const FName PIN_DefaultValue
static UFunction * GetConditionalFunction()
void NodeConnectionListChanged() override
UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
FText GetNodeTitle(ENodeTitleType::Type TitleType) const override
UDialogueK2Node_SelectName(const FObjectInitializer &ObjectInitializer)
FText GetTooltipText() const override
UCLASS(MinimalAPI, Meta=(Keywords = "Ternary If"))
FText GetNodeTitle(ENodeTitleType::Type TitleType) const override
UDialogueK2Node_SelectOnSpeakerState(const FObjectInitializer &ObjectInitializer)