Apparatus Version 1.0.0
ECS-like data-driven workflow for Unreal Engine.
BPNode_MakeFilter.h
1 /*
2  * ░▒▓ APPARATUS ▓▒░
3  *
4  * File: BPNode_MakeFilter.cpp
5  * Created: Friday, 23rd October 2020 7:00:48 pm
6  * Author: Vladislav Dmitrievich Turbanov (vladislav@turbanov.ru)
7  * ───────────────────────────────────────────────────────────────────
8  * Last Modified: Friday, 19th March 2021 3:42:32 pm
9  * Modified By: Vladislav Dmitrievich Turbanov (vladislav@turbanov.ru)
10  * ───────────────────────────────────────────────────────────────────
11  *
12  * The Apparatus source code is for your internal usage only.
13  * Redistribution of this file is strictly prohibited.
14  *
15  * Community forums: https://talk.turbanov.ru
16  *
17  * Copyright 2021 - 2021, SP Vladislav Dmitrievich Turbanov
18  * Made in Russia, Moscow City, Chekhov City
19  */
20 
21 #pragma once
22 
23 #include "K2Node.h"
24 #include "K2Node_AddPinInterface.h"
25 
26 #include "BPNode_MakeFilter.generated.h"
27 
28 UCLASS(BlueprintType, Blueprintable)
29 class APPARATUSUNCOOKED_API UBPNode_MakeFilter final
30  : public UK2Node,
31  public IK2Node_AddPinInterface
32 {
33  GENERATED_UCLASS_BODY()
34 
35  UPROPERTY()
36  int32 NumTypes = 0;
37 
38  UPROPERTY()
39  int32 NumNotTypes = 0;
40 
45  UPROPERTY()
46  int32 TypesCount = 0;
47 
51  UPROPERTY()
52  int32 ExcludedTypesCount = 0;
53 
57  static const FString TypePinNamePrefix;
58 
62  static const FString ExcludedTypePinNamePrefix;
63 
67  static const FName FilterPinName;
68 
72  static const FName BootFilterPinName;
73 
74  // BEGIN - UEdGraphNode
75  virtual void AllocateDefaultPins() override;
76 
77  virtual FLinearColor GetNodeTitleColor() const override;
78 
79  virtual void
80  EarlyValidation(class FCompilerResultsLog &MessageLog) const override;
81 
82  virtual void ExpandNode(class FKismetCompilerContext &CompilerContext,
83  UEdGraph *SourceGraph) override;
84 
85  virtual FText GetNodeTitle(ENodeTitleType::Type TitleType) const override;
86 
87  virtual FText GetTooltipText() const override;
88 
89  virtual void PinConnectionListChanged(UEdGraphPin *ChangedPin) override;
90 
91  virtual void PinDefaultValueChanged(UEdGraphPin *ChangedPin) override;
92 
93  virtual void PostReconstructNode() override;
94  // END - UEdGraphNode.
95 
96  // BEGIN - UK2Node interface
97  virtual FText GetMenuCategory() const override;
98 
99  virtual void GetMenuActions(
100  FBlueprintActionDatabaseRegistrar &ActionRegistrar) const override;
101 
102  virtual void GetNodeContextMenuActions(
103  class UToolMenu *Menu,
104  class UGraphNodeContextMenuContext *Context) const override;
105 
106  virtual bool IsNodePure() const override;
107  // END - UK2Node interface.
108 
109  // BEGIN - IK2Node_AddPinInterface
110  virtual void AddInputPin() override;
111  // END - IK2Node_AddPinInterface
112 
113  virtual void AddExcludedInputPin();
114 
115  virtual void InteractiveAddInputPin();
116 
117  virtual void InteractiveAddExcludedInputPin();
118 
119  virtual void RemoveTypePin(const int32 Index);
120 
121  virtual void RemoveTypePin(UEdGraphPin *Pin);
122 
123  virtual void RemoveExcludedTypePin(UEdGraphPin *Pin);
124 
125  virtual void InteractiveRemoveTypePin(UEdGraphPin *TypePin);
126 
127  virtual void InteractiveRemoveExcludedTypePin(UEdGraphPin *ExcludedTypePin);
128 
132  virtual UEdGraphPin *GetFingerprintPin() const;
133 
134  virtual UEdGraphPin *GetBootFilterPin() const;
135 
136  virtual UEdGraphPin *GetTypePinGivenIndex(const int32 Index) const;
137 
138  virtual UEdGraphPin *GetExcludedTypePinGivenIndex(const int32 Index) const;
139 
140  virtual UClass *GetTypePinType(UEdGraphPin *Pin) const;
141 
142  virtual UClass *GetExcludedTypePinType(UEdGraphPin *Pin) const;
143 
144  virtual FName GetDetailTypePinName(const int32 Index) const;
145 
146  virtual FName GetExcludedDetailTypePinName(const int32 Index) const;
147 
148  virtual int32 GetTypePinIndex(const UEdGraphPin *Pin) const;
149 
150  virtual int32 GetExcludedTypePinIndex(const UEdGraphPin *Pin) const;
151 
152  virtual bool IsTypePin(const UEdGraphPin *Pin) const;
153 
154  virtual bool IsExcludedTypePin(const UEdGraphPin *Pin) const;
155 
156  virtual void OnTypePinChanged(UEdGraphPin *ChangedPin);
157 
158  virtual void OnExcludedTypePinChanged(UEdGraphPin *ChangedPin);
159 
165  virtual bool SyncPinNames();
166 
170  virtual void UpdateTypePinUI(UEdGraphPin *Pin);
171 
175  virtual void UpdateExcludedTypePinUI(UEdGraphPin *Pin);
176 };
Definition: BPNode_MakeFilter.h:32