添加背包配置编辑器

This commit is contained in:
997146918 2025-08-31 14:51:48 +08:00
parent 5713ef088b
commit b01db99502
3 changed files with 115 additions and 1 deletions

View File

@ -3,6 +3,7 @@
#include "AssetActions/BagConfigAssetTypeAction.h"
#include "AssetEditor/BagConfigAssetEditor.h"
#include "ProjectFish/DataAsset/BagConfigAsset.h"
@ -14,7 +15,16 @@ UClass* FBagConfigAssetTypeAction::GetSupportedClass() const
void FBagConfigAssetTypeAction::OpenAssetEditor(const TArray<UObject*>& InObjects,
TSharedPtr<class IToolkitHost> EditWithinLevelEditor)
{
//FAssetTypeActions_Base::OpenAssetEditor(InObjects, EditWithinLevelEditor);
EToolkitMode::Type Mode = EditWithinLevelEditor.IsValid() ? EToolkitMode::WorldCentric : EToolkitMode::Standalone;
for (auto ObjIt = InObjects.CreateConstIterator(); ObjIt; ++ObjIt)
{
if (UBagConfigAsset* BagConfigAsset = Cast<UBagConfigAsset>(*ObjIt))
{
TSharedRef<FBagConfigAssetEditor> EditorToolkit = MakeShareable(new FBagConfigAssetEditor());
EditorToolkit->Initialize(Mode, EditWithinLevelEditor, BagConfigAsset);
}
}
}
uint32 FBagConfigAssetTypeAction::GetCategories()

View File

@ -0,0 +1,73 @@
// Fill out your copyright notice in the Description page of Project Settings.
#include "AssetEditor/BagConfigAssetEditor.h"
#include "ProjectFish/DataAsset/BagConfigAsset.h"
const FName FBagConfigAssetEditor::BagConfigEditorTabId(TEXT("BagConfigEditor"));
void FBagConfigAssetEditor::Initialize(const EToolkitMode::Type Mode,
const TSharedPtr<class IToolkitHost>& InitToolkitHost, class UBagConfigAsset* InBagConfigAsset)
{
BagConfigAsset = InBagConfigAsset;
const TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_BagConfigAssetEditor_Layout_v1")
->AddArea
(
FTabManager::NewPrimaryArea()->SetOrientation(Orient_Vertical)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(1.0f)
->AddTab(BagConfigEditorTabId, ETabState::OpenedTab)
)
);
FAssetEditorToolkit::InitAssetEditor(Mode, InitToolkitHost, TEXT("BagShapeAssetEditorApp"), StandaloneDefaultLayout, true, true, InBagConfigAsset);
}
FName FBagConfigAssetEditor::GetToolkitFName() const
{
return FName("BagConfigEditor");
}
FText FBagConfigAssetEditor::GetBaseToolkitName() const
{
return FText::FromString("BagConfig");
}
FString FBagConfigAssetEditor::GetWorldCentricTabPrefix() const
{
return TEXT("BagConfig");
}
FLinearColor FBagConfigAssetEditor::GetWorldCentricTabColorScale() const
{
return FLinearColor::White;
}
void FBagConfigAssetEditor::RegisterTabSpawners(const TSharedRef<FTabManager>& tabManager)
{
WorkspaceMenuCategory = tabManager->AddLocalWorkspaceMenuCategory( FText::FromString("BagShape"));
tabManager->RegisterTabSpawner(BagConfigEditorTabId, FOnSpawnTab::CreateSP(this, &FBagConfigAssetEditor::SpawnBagConfigEditorTab))
.SetDisplayName( FText::FromString("BagShapeEditor"))
.SetGroup(WorkspaceMenuCategory.ToSharedRef());
}
void FBagConfigAssetEditor::UnregisterTabSpawners(const TSharedRef<FTabManager>& tabManager)
{
tabManager->UnregisterTabSpawner(BagConfigEditorTabId);
}
TSharedRef<SDockTab> FBagConfigAssetEditor::SpawnBagConfigEditorTab(const FSpawnTabArgs& Args)
{
// return SNew(SDockTab)
// .TabRole(ETabRole::PanelTab)
// [
// SNew(SBagShapeEditorWidget)
// .BagShapeAsset(BagShapeAsset)
// ];
return SNew(SDockTab);
}

View File

@ -0,0 +1,31 @@
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
/**
*
*/
class PROJECTFISHEDITOR_API FBagConfigAssetEditor: public FAssetEditorToolkit
{
public:
void Initialize(const EToolkitMode::Type Mode, const TSharedPtr<class IToolkitHost>& InitToolkitHost, class UBagConfigAsset* InBagConfigAsset);
// IAssetEditorInstance interface
virtual FName GetToolkitFName() const override;
virtual FText GetBaseToolkitName() const override;
virtual FString GetWorldCentricTabPrefix() const override;
virtual FLinearColor GetWorldCentricTabColorScale() const override;
// FAssetEditorToolkit interface
virtual void RegisterTabSpawners(const TSharedRef<FTabManager>& tabManager) override;
virtual void UnregisterTabSpawners(const TSharedRef<FTabManager>& tabManager) override;
private:
TSharedRef<SDockTab> SpawnBagConfigEditorTab(const FSpawnTabArgs& Args);
class UBagConfigAsset* BagConfigAsset;
/** Tab IDs */
static const FName BagConfigEditorTabId;
};