#pragma once #include "CoreMinimal.h" #include "Toolkits/AssetEditorToolkit.h" #include "Widgets/Docking/SDockTab.h" class SDockTab; class SGraphEditor; class SPropertyTreeView; class SAssetBrowser; class SMatrixInputWidget; /** * FLESH Main Editor * Provides the main editing functionality for the dismemberment system */ class FLESHEDITOR_API FFLESHEditor : public FAssetEditorToolkit { public: FFLESHEditor(); virtual ~FFLESHEditor(); // Initialize the editor void InitFLESHEditor(const EToolkitMode::Type Mode, const TSharedPtr& InitToolkitHost); // FAssetEditorToolkit interface virtual void RegisterTabSpawners(const TSharedRef& TabManager) override; virtual void UnregisterTabSpawners(const TSharedRef& TabManager) override; virtual FName GetToolkitFName() const override; virtual FText GetBaseToolkitName() const override; virtual FString GetWorldCentricTabPrefix() const override; virtual FLinearColor GetWorldCentricTabColorScale() const override; // End of FAssetEditorToolkit interface // Open the editor static void OpenEditor(); private: // Tab spawners TSharedRef SpawnTab_Viewport(const FSpawnTabArgs& Args); TSharedRef SpawnTab_Details(const FSpawnTabArgs& Args); TSharedRef SpawnTab_AssetBrowser(const FSpawnTabArgs& Args); TSharedRef SpawnTab_MatrixEditor(const FSpawnTabArgs& Args); TSharedRef SpawnTab_GraphEditor(const FSpawnTabArgs& Args); TSharedRef SpawnTab_Toolbar(const FSpawnTabArgs& Args); // Create viewport widget TSharedRef CreateViewportWidget(); // Create details panel TSharedRef CreateDetailsWidget(); // Create asset browser TSharedRef CreateAssetBrowserWidget(); // Create matrix editor TSharedRef CreateMatrixEditorWidget(); // Create graph editor TSharedRef CreateGraphEditorWidget(); // Create toolbar TSharedRef CreateToolbarWidget(); // Create command list void CreateCommandList(); // Command handlers void OnOpenDismembermentGraphEditor(); void OnOpenAnatomicalLayerEditor(); void OnOpenBooleanCutTool(); void OnOpenBloodSystemEditor(); void OnImportCharacterModel(); void OnImportOrganModel(); void OnImportSkeletonModel(); void OnImportPhysicsAsset(); void OnTestMatrix(); // Viewport widget TSharedPtr ViewportWidget; // Details panel TSharedPtr DetailsWidget; // Asset browser TSharedPtr AssetBrowserWidget; // Matrix editor TSharedPtr MatrixEditorWidget; // Graph editor TSharedPtr GraphEditorWidget; // Toolbar TSharedPtr ToolbarWidget; // Command list TSharedPtr CommandList; // Tab IDs static const FName ViewportTabId; static const FName DetailsTabId; static const FName AssetBrowserTabId; static const FName MatrixEditorTabId; static const FName GraphEditorTabId; static const FName ToolbarTabId; };