更新 Source/FLESHEditor/Public/FLESHEditor.h

This commit is contained in:
2025-04-21 18:33:26 +08:00
parent f18215c772
commit 7fa0e5be74

View File

@@ -2,112 +2,60 @@
#include "CoreMinimal.h"
#include "Toolkits/AssetEditorToolkit.h"
#include "Widgets/Docking/SDockTab.h"
#include "EditorUndoClient.h"
class USkeletalMesh;
class SDockTab;
class SGraphEditor;
class SPropertyTreeView;
class SAssetBrowser;
class SMatrixInputWidget;
class IDetailsView;
class SBorder;
/**
* FLESH Main Editor
* Provides the main editing functionality for the dismemberment system
* Dismemberment System Editor
* Provides real-time boolean cutting and multi-layer system editing functionality
*/
class FLESHEDITOR_API FFLESHEditor : public FAssetEditorToolkit
class FDismembermentEditor : public FAssetEditorToolkit, public FEditorUndoClient
{
public:
FFLESHEditor();
virtual ~FFLESHEditor();
// Initialize the editor
void InitFLESHEditor(const EToolkitMode::Type Mode, const TSharedPtr<IToolkitHost>& InitToolkitHost, UObject* InObject);
// FAssetEditorToolkit interface
virtual void RegisterTabSpawners(const TSharedRef<FTabManager>& TabManager) override;
virtual void UnregisterTabSpawners(const TSharedRef<FTabManager>& 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();
FDismembermentEditor();
virtual ~FDismembermentEditor();
void InitDismembermentEditor(const EToolkitMode::Type Mode, const TSharedPtr<IToolkitHost>& InitToolkitHost, USkeletalMesh* InSkeletalMesh);
virtual FName GetToolkitFName() const override;
virtual FText GetBaseToolkitName() const override;
virtual FString GetWorldCentricTabPrefix() const override;
virtual FLinearColor GetWorldCentricTabColorScale() const override;
virtual void PostUndo(bool bSuccess) override;
virtual void PostRedo(bool bSuccess) override;
private:
// Tab spawners
TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_Details(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_AssetBrowser(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_MatrixEditor(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_GraphEditor(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_Toolbar(const FSpawnTabArgs& Args);
// Create viewport widget
TSharedRef<SWidget> CreateViewportWidget();
// Create details panel
TSharedRef<SWidget> CreateDetailsWidget();
// Create asset browser
TSharedRef<SWidget> CreateAssetBrowserWidget();
// Create matrix editor
TSharedRef<SWidget> CreateMatrixEditorWidget();
// Create graph editor
TSharedRef<SWidget> CreateGraphEditorWidget();
// Create toolbar
TSharedRef<SWidget> 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<class SViewport> ViewportWidget;
// Details panel
TSharedPtr<class IDetailsView> DetailsWidget;
// Asset browser
TSharedPtr<SAssetBrowser> AssetBrowserWidget;
// Matrix editor
TSharedPtr<SMatrixInputWidget> MatrixEditorWidget;
// Graph editor
TSharedPtr<SGraphEditor> GraphEditorWidget;
// Toolbar
TSharedPtr<class SBorder> ToolbarWidget;
// Command list
TSharedPtr<FUICommandList> CommandList;
// The object being edited
UObject* EditingObject;
// Flag to track if the editor is initialized
bool bIsEditorInitialized;
// 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;
void CreateEditorLayout();
void CreateEditorToolbar();
void RegisterTabSpawners(const TSharedRef<FTabManager>& InTabManager);
void UnregisterTabSpawners(const TSharedRef<FTabManager>& InTabManager);
TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_Details(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_LayerSystem(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_PhysicsSettings(const FSpawnTabArgs& Args);
void PerformBooleanCut();
void AddNewLayer();
void SaveEdits();
void PreviewEffects();
private:
USkeletalMesh* SkeletalMesh;
TSharedPtr<SBorder> ViewportWidget;
TSharedPtr<IDetailsView> DetailsWidget;
TSharedPtr<SBorder> LayerSystemWidget;
TSharedPtr<SBorder> PhysicsSettingsWidget;
static const FName ViewportTabId;
static const FName DetailsTabId;
static const FName LayerSystemTabId;
static const FName PhysicsSettingsTabId;
};