更新 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 FName GetToolkitFName() const override;
virtual void RegisterTabSpawners(const TSharedRef<FTabManager>& TabManager) override; virtual FText GetBaseToolkitName() const override;
virtual void UnregisterTabSpawners(const TSharedRef<FTabManager>& TabManager) override; virtual FString GetWorldCentricTabPrefix() const override;
virtual FName GetToolkitFName() const override; virtual FLinearColor GetWorldCentricTabColorScale() const override;
virtual FText GetBaseToolkitName() const override;
virtual FString GetWorldCentricTabPrefix() 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();
TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs& Args); void CreateEditorToolbar();
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 void RegisterTabSpawners(const TSharedRef<FTabManager>& InTabManager);
TSharedRef<SWidget> CreateViewportWidget(); void UnregisterTabSpawners(const TSharedRef<FTabManager>& InTabManager);
// Create details panel TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs& Args);
TSharedRef<SWidget> CreateDetailsWidget(); TSharedRef<SDockTab> SpawnTab_Details(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_LayerSystem(const FSpawnTabArgs& Args);
TSharedRef<SDockTab> SpawnTab_PhysicsSettings(const FSpawnTabArgs& Args);
// Create asset browser void PerformBooleanCut();
TSharedRef<SWidget> CreateAssetBrowserWidget(); void AddNewLayer();
void SaveEdits();
void PreviewEffects();
// Create matrix editor private:
TSharedRef<SWidget> CreateMatrixEditorWidget(); USkeletalMesh* SkeletalMesh;
// Create graph editor TSharedPtr<SBorder> ViewportWidget;
TSharedRef<SWidget> CreateGraphEditorWidget(); TSharedPtr<IDetailsView> DetailsWidget;
TSharedPtr<SBorder> LayerSystemWidget;
TSharedPtr<SBorder> PhysicsSettingsWidget;
// Create toolbar static const FName ViewportTabId;
TSharedRef<SWidget> CreateToolbarWidget(); static const FName DetailsTabId;
static const FName LayerSystemTabId;
// Create command list static const FName PhysicsSettingsTabId;
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;
}; };