更新 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 "CoreMinimal.h"
#include "Toolkits/AssetEditorToolkit.h" #include "Toolkits/AssetEditorToolkit.h"
#include "Widgets/Docking/SDockTab.h" #include "EditorUndoClient.h"
class USkeletalMesh;
class SDockTab; class SDockTab;
class SGraphEditor; class IDetailsView;
class SPropertyTreeView; class SBorder;
class SAssetBrowser;
class SMatrixInputWidget;
/** /**
* FLESH Main Editor * Dismemberment System Editor
* Provides the main editing functionality for the dismemberment system * Provides real-time boolean cutting and multi-layer system editing functionality
*/ */
class FLESHEDITOR_API FFLESHEditor : public FAssetEditorToolkit class FDismembermentEditor : public FAssetEditorToolkit, public FEditorUndoClient
{ {
public: public:
FFLESHEditor(); FDismembermentEditor();
virtual ~FFLESHEditor(); virtual ~FDismembermentEditor();
// Initialize the editor void InitDismembermentEditor(const EToolkitMode::Type Mode, const TSharedPtr<IToolkitHost>& InitToolkitHost, USkeletalMesh* InSkeletalMesh);
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 FName GetToolkitFName() const override;
virtual FText GetBaseToolkitName() const override; virtual FText GetBaseToolkitName() const override;
virtual FString GetWorldCentricTabPrefix() const override; virtual FString GetWorldCentricTabPrefix() const override;
virtual FLinearColor GetWorldCentricTabColorScale() const override; virtual FLinearColor GetWorldCentricTabColorScale() const override;
// End of FAssetEditorToolkit interface
// Open the editor virtual void PostUndo(bool bSuccess) override;
static void OpenEditor(); virtual void PostRedo(bool bSuccess) override;
private: private:
// Tab spawners 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_Viewport(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_Details(const FSpawnTabArgs& Args); TSharedRef<SDockTab> SpawnTab_Details(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_AssetBrowser(const FSpawnTabArgs& Args); TSharedRef<SDockTab> SpawnTab_LayerSystem(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_MatrixEditor(const FSpawnTabArgs& Args); TSharedRef<SDockTab> SpawnTab_PhysicsSettings(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_GraphEditor(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_Toolbar(const FSpawnTabArgs& Args);
// Create viewport widget void PerformBooleanCut();
TSharedRef<SWidget> CreateViewportWidget(); void AddNewLayer();
void SaveEdits();
void PreviewEffects();
// Create details panel private:
TSharedRef<SWidget> CreateDetailsWidget(); USkeletalMesh* SkeletalMesh;
// Create asset browser TSharedPtr<SBorder> ViewportWidget;
TSharedRef<SWidget> CreateAssetBrowserWidget(); TSharedPtr<IDetailsView> DetailsWidget;
TSharedPtr<SBorder> LayerSystemWidget;
TSharedPtr<SBorder> PhysicsSettingsWidget;
// 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 ViewportTabId;
static const FName DetailsTabId; static const FName DetailsTabId;
static const FName AssetBrowserTabId; static const FName LayerSystemTabId;
static const FName MatrixEditorTabId; static const FName PhysicsSettingsTabId;
static const FName GraphEditorTabId;
static const FName ToolbarTabId;
}; };