// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "EdGraphSchema_K2_Actions.h" #include "Types/SlateVector2.h" #include "CustomizableObjectSchemaActions.generated.h" /** Action to add a node to the graph */ USTRUCT() struct CUSTOMIZABLEOBJECTEDITOR_API FCustomizableObjectSchemaAction_NewNode : public FEdGraphSchemaAction { GENERATED_USTRUCT_BODY(); /** Template of node we want to create */ UPROPERTY() TObjectPtr NodeTemplate; FCustomizableObjectSchemaAction_NewNode() : FEdGraphSchemaAction() , NodeTemplate(NULL) {} FCustomizableObjectSchemaAction_NewNode(const FString& InNodeCategory, const FText& InMenuDesc, const FText& InToolTip, const int32 InGrouping, const FText& InKeywords = FText(), int32 InSectionID = 0) : FEdGraphSchemaAction(FText::FromString(InNodeCategory), InMenuDesc, InToolTip, InGrouping, InKeywords, InSectionID) , NodeTemplate(NULL) {} // FEdGraphSchemaAction interface using FEdGraphSchemaAction::PerformAction; // Prevent hiding of deprecated base class function with FVector2D virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2f& Location, bool bSelectNewNode = true) override; virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, TArray& FromPins, const FVector2f& Location, bool bSelectNewNode = true) override; virtual void AddReferencedObjects( FReferenceCollector& Collector ) override; /** Reimplementaiton of EdGraphSchema::CreateNode(...). Performs the overlap calculation before calling AutowireNewNode(...). AutowireNewNode can induce a call to a ReconstrucNode() which removes pins required for the calculation. */ static UEdGraphNode* CreateNode(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2D Location, class UEdGraphNode* InNodeTemplate); // End of FEdGraphSchemaAction interface template static NodeType* InstantSpawn(class UEdGraph* ParentGraph, NodeType* InTemplateNode, const UE::Slate::FDeprecateVector2DParameter& Location) { FEdGraphSchemaAction_K2NewNode Action; Action.NodeTemplate = InTemplateNode; return Cast(Action.PerformAction(ParentGraph, NULL, Location)); } }; /** Action to paste clipboard contents into the graph */ USTRUCT() struct CUSTOMIZABLEOBJECTEDITOR_API FCustomizableObjectSchemaAction_Paste : public FEdGraphSchemaAction { GENERATED_USTRUCT_BODY(); // Simple type info static FName StaticGetTypeId() { static FName Type("FCustomizableObjectSchemaAction_Paste"); return Type; } virtual FName GetTypeId() const override { return StaticGetTypeId(); } FCustomizableObjectSchemaAction_Paste() : FEdGraphSchemaAction() {} FCustomizableObjectSchemaAction_Paste(const FText& InNodeCategory, const FText& InMenuDesc, const FString& InToolTip, const int32 InGrouping) : FEdGraphSchemaAction(InNodeCategory, InMenuDesc, FText::FromString(InToolTip), InGrouping) {} // FEdGraphSchemaAction interface using FEdGraphSchemaAction::PerformAction; // Prevent hiding of deprecated base class function with FVector2D virtual UEdGraphNode* PerformAction(class UEdGraph* ParentGraph, UEdGraphPin* FromPin, const FVector2f& Location, bool bSelectNewNode = true) override; // End of FEdGraphSchemaAction interface };