// Copyright 2020 Phyronnaz #pragma once #include "CoreMinimal.h" #include "Toolkits/AssetEditorToolkit.h" class FAdvancedPreviewScene; class FVoxelGraphCompiler; class UVoxelGraphGenerator; class UEdGraphNode; class FVoxelCompilationNode; struct FVoxelGraphMessage; enum class EVoxelGraphPreviewFlags; enum class EVoxelGraphNodeMessageType : int32; class IVoxelGraphEditorToolkit : public FAssetEditorToolkit { public: // Checks whether nodes can currently be pasted virtual bool CanPasteNodes() const = 0; // Paste nodes at a specific location virtual void PasteNodesHere(const FVector2D& Location) = 0; // Get the bounding area for the currently selected nodes. returns false if nothing is selected virtual bool GetBoundsForSelectedNodes(class FSlateRect& Rect, float Padding) = 0; // Gets the number of nodes that are currently selected virtual int32 GetNumberOfSelectedNodes() const = 0; // Get the currently selected set of nodes virtual TSet GetSelectedNodes() const = 0; virtual void SelectNodesAndZoomToFit(const TArray& Nodes) = 0; virtual void RefreshNodesMessages() = 0; virtual void TriggerUpdatePreview(EVoxelGraphPreviewFlags Flags) = 0; virtual FAdvancedPreviewScene* GetPreviewScene() const = 0; virtual void DebugNodes(const TSet& Nodes) = 0; virtual void AddMessages(const TArray& Messages) = 0; virtual void ClearMessages(bool bClearAll, EVoxelGraphNodeMessageType MessagesToClear) = 0; };