A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
DialogueGraphSchema.h
Go to the documentation of this file.
1// Copyright Csaba Molnar, Daniel Butum. All Rights Reserved.
2#pragma once
3
4#include "CoreTypes.h"
5#include "EdGraph/EdGraphSchema.h"
6
7#include "Nodes/DlgNode.h"
11
12#include "DialogueGraphSchema.generated.h"
13
15class UGraphNodeContextMenuContext;
16class UToolMenu;
17class FMenuBuilder;
18class FSlateWindowElementList;
19class UEdGraph;
20
21UCLASS()
23{
24 GENERATED_BODY()
25
26public:
28 void GetPaletteActions(FGraphActionMenuBuilder& ActionMenuBuilder) const;
29
31 bool ConnectionCausesLoop(const UEdGraphPin* InputPin, const UEdGraphPin* OutputPin) const;
32
33 //~ Begin EdGraphSchema Interface
39 void GetGraphContextActions(FGraphContextMenuBuilder& ContextMenuBuilder) const override;
40
46#if ENGINE_MINOR_VERSION >= 24
47 void GetContextMenuActions(UToolMenu* Menu, UGraphNodeContextMenuContext* Context) const override;
48#else
49 void GetContextMenuActions(
50 const UEdGraph* CurrentGraph,
51 const UEdGraphNode* InGraphNode,
52 const UEdGraphPin* InGraphPin,
53 FMenuBuilder* MenuBuilder,
54 bool bIsDebugging
55 ) const override;
56#endif
57
63 void CreateDefaultNodesForGraph(UEdGraph& Graph) const override;
64
65
67 FPinConnectionResponse MovePinLinks(
68 UEdGraphPin& MoveFromPin,
69 UEdGraphPin& MoveToPin,
70 bool bIsIntermediateMove = false,
71 bool bNotifyLinkedNodes = false
72 ) const override;
73
75 FPinConnectionResponse CopyPinLinks(UEdGraphPin& CopyFromPin, UEdGraphPin& CopyToPin, bool bIsIntermediateCopy = false) const override;
76
85 const FPinConnectionResponse CanCreateConnection(const UEdGraphPin* PinA, const UEdGraphPin* PinB) const override;
86
95 bool TryCreateConnection(UEdGraphPin* PinA, UEdGraphPin* PinB) const override;
96
108 bool CreateAutomaticConversionNodeAndConnections(UEdGraphPin* PinA, UEdGraphPin* PinB) const override;
109
111 bool ShouldHidePinDefaultValue(UEdGraphPin* Pin) const override;
112
118 void BreakNodeLinks(UEdGraphNode& TargetNode) const override;
119
126 void BreakPinLinks(UEdGraphPin& TargetPin, bool bSendsNodeNotifcation) const override;
127
134 void BreakSinglePinLink(UEdGraphPin* SourcePin, UEdGraphPin* TargetPin) const override;
135
137 void DroppedAssetsOnGraph(const TArray<FAssetData>& Assets, const FVector2D& GraphPosition, UEdGraph* Graph) const override;
138
140 void DroppedAssetsOnNode(const TArray<FAssetData>& Assets, const FVector2D& GraphPosition, UEdGraphNode* Node) const override;
141
147 int32 GetNodeSelectionCount(const UEdGraph* Graph) const override { return FDialogueEditorUtilities::GetSelectedNodes(Graph).Num(); }
148
153 bool ShouldAlwaysPurgeOnModification() const override { return true; }
154
156 TSharedPtr<FEdGraphSchemaAction> GetCreateCommentAction() const override
157 {
158 return TSharedPtr<FEdGraphSchemaAction>(static_cast<FEdGraphSchemaAction*>(new FNewComment_DialogueGraphSchemaAction));
159 }
160
161 /* Returns new FConnectionDrawingPolicy from this schema */
162 FConnectionDrawingPolicy* CreateConnectionDrawingPolicy(
163 int32 InBackLayerID,
164 int32 InFrontLayerID,
165 float InZoomFactor,
166 const FSlateRect& InClippingRect,
167 FSlateWindowElementList& InDrawElements,
168 UEdGraph* InGraphObj
169 ) const override
170 {
171 return new FDialogueGraphConnectionDrawingPolicy(InBackLayerID, InFrontLayerID, InZoomFactor, InClippingRect, InDrawElements, InGraphObj);
172 }
173 //~ End EdGraphSchema Interface
174
175 // Begin own functions
183 void BreakLinkTo(UEdGraphPin* TargetPin, UEdGraphPin* ToPin, bool bSendsNodeNotifcation) const;
184
185private:
186 //~ Begin own functions
188 void GetCommentAction(FGraphActionMenuBuilder& ActionMenuBuilder, const UEdGraph* CurrentGraph = nullptr) const;
189
191 void GetConvertActions(FGraphActionMenuBuilder& ActionMenuBuilder, const UEdGraph* CurrentGraph) const;
192
194 void GetAllDialogueNodeActions(FGraphActionMenuBuilder& ActionMenuBuilder) const;
195
197 static void InitDialogueNodeClasses();
198
199public:
200 // Allowed PinType.PinCategory values
201 static const FName PIN_CATEGORY_Input;
202 static const FName PIN_CATEGORY_Output;
204 // Categories for actions
205 static const FText NODE_CATEGORY_Dialogue;
206 static const FText NODE_CATEGORY_Graph;
207 static const FText NODE_CATEGORY_Convert;
209private:
211 static TArray<TSubclassOf<UDlgNode>> DialogueNodeClasses;
212
214 static bool bDialogueNodeClassesInitialized;
215};
static const TSet< UObject * > GetSelectedNodes(const UEdGraph *Graph)
void BreakSinglePinLink(UEdGraphPin *SourcePin, UEdGraphPin *TargetPin) const override
static const FText NODE_CATEGORY_Convert
void GetContextMenuActions(const UEdGraph *CurrentGraph, const UEdGraphNode *InGraphNode, const UEdGraphPin *InGraphPin, FMenuBuilder *MenuBuilder, bool bIsDebugging) const override
void BreakPinLinks(UEdGraphPin &TargetPin, bool bSendsNodeNotifcation) const override
static const FName PIN_CATEGORY_Output
void BreakNodeLinks(UEdGraphNode &TargetNode) const override
void GetCommentAction(FGraphActionMenuBuilder &ActionMenuBuilder, const UEdGraph *CurrentGraph=nullptr) const
const FPinConnectionResponse CanCreateConnection(const UEdGraphPin *PinA, const UEdGraphPin *PinB) const override
bool ShouldHidePinDefaultValue(UEdGraphPin *Pin) const override
void GetAllDialogueNodeActions(FGraphActionMenuBuilder &ActionMenuBuilder) const
static TArray< TSubclassOf< UDlgNode > > DialogueNodeClasses
bool ShouldAlwaysPurgeOnModification() const override
bool TryCreateConnection(UEdGraphPin *PinA, UEdGraphPin *PinB) const override
static const FText NODE_CATEGORY_Graph
void GetPaletteActions(FGraphActionMenuBuilder &ActionMenuBuilder) const
void BreakLinkTo(UEdGraphPin *TargetPin, UEdGraphPin *ToPin, bool bSendsNodeNotifcation) const
void DroppedAssetsOnGraph(const TArray< FAssetData > &Assets, const FVector2D &GraphPosition, UEdGraph *Graph) const override
static void InitDialogueNodeClasses()
void GetConvertActions(FGraphActionMenuBuilder &ActionMenuBuilder, const UEdGraph *CurrentGraph) const
void GetGraphContextActions(FGraphContextMenuBuilder &ContextMenuBuilder) const override
FPinConnectionResponse CopyPinLinks(UEdGraphPin &CopyFromPin, UEdGraphPin &CopyToPin, bool bIsIntermediateCopy=false) const override
TSharedPtr< FEdGraphSchemaAction > GetCreateCommentAction() const override
void CreateDefaultNodesForGraph(UEdGraph &Graph) const override
bool CreateAutomaticConversionNodeAndConnections(UEdGraphPin *PinA, UEdGraphPin *PinB) const override
bool ConnectionCausesLoop(const UEdGraphPin *InputPin, const UEdGraphPin *OutputPin) const
FPinConnectionResponse MovePinLinks(UEdGraphPin &MoveFromPin, UEdGraphPin &MoveToPin, bool bIsIntermediateMove=false, bool bNotifyLinkedNodes=false) const override
static bool bDialogueNodeClassesInitialized
void DroppedAssetsOnNode(const TArray< FAssetData > &Assets, const FVector2D &GraphPosition, UEdGraphNode *Node) const override
static const FName PIN_CATEGORY_Input
FConnectionDrawingPolicy * CreateConnectionDrawingPolicy(int32 InBackLayerID, int32 InFrontLayerID, float InZoomFactor, const FSlateRect &InClippingRect, FSlateWindowElementList &InDrawElements, UEdGraph *InGraphObj) const override
static const FText NODE_CATEGORY_Dialogue
int32 GetNodeSelectionCount(const UEdGraph *Graph) const override