Explorar el Código

把命名改了一些。改用 ApplicationMode和workflowcentricapplication,替代blueprient类型的编辑器界面。

AncienWish hace 2 meses
padre
commit
63016e6429
Se han modificado 20 ficheros con 860 adiciones y 446 borrados
  1. 7 7
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/AssetDefinition_EZAbilityAsset.cpp
  2. 67 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityAbleTreeSummoner.cpp
  3. 67 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityDetialSummoner.cpp
  4. 278 18
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditor.cpp
  5. 70 14
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditorApplicationMode.cpp
  6. 1 1
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditorData.cpp
  7. 34 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditorModule.cpp
  8. 0 262
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityGraphEditor.cpp
  9. 66 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityTimelineSummoner.cpp
  10. 2 8
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityViewModule.cpp
  11. 14 18
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityViewPortSummoner.cpp
  12. 47 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityAbleTreeSummoner.h
  13. 47 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityDetialSummoner.h
  14. 80 10
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityEditor.h
  15. 2 10
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityEditorApplicationMode.h
  16. 23 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityEditorModule.h
  17. 0 79
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityGraphEditor.h
  18. 4 13
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityTimelineSummoner.h
  19. 1 6
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityViewModule.h
  20. 50 0
      Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityViewPortSummoner.h

+ 7 - 7
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/AssetDefinition_EZAbilityAsset.cpp

@@ -1,9 +1,9 @@
-// Fill out your copyright notice in the Description page of Project Settings.
+锘�// Fill out your copyright notice in the Description page of Project Settings.
 
 
 #include "AssetDefinition_EZAbilityAsset.h"
 #include "EZAbilityBlueprint.h"
-#include "EzAbilityEditor.h"
+#include "EzAbilityEditorModule.h"
 #include "ThumbnailRendering/SceneThumbnailInfo.h"
 
 
@@ -11,13 +11,13 @@
 
 FText UAssetDefinition_EZAbilityAsset::GetAssetDisplayName() const
 {
-	/* 在没有缩略图的情况下写在图标上的 */
+	/* 鍦ㄦ病鏈夌缉鐣ュ浘鐨勬儏鍐典笅鍐欏湪鍥炬爣涓婄殑 */
 	return LOCTEXT("UAssetDefinition_EZAbilityAsset", "Ability Asset");
 }
 
 TSoftClassPtr<UObject> UAssetDefinition_EZAbilityAsset::GetAssetClass() const
 {
-	/* 没有这个不能创建目录 */
+	/* 娌℃湁杩欎釜涓嶈兘鍒涘缓鐩�綍 */
 	return UEZAbilityBlueprint::StaticClass();
 }
 
@@ -28,7 +28,7 @@ FLinearColor UAssetDefinition_EZAbilityAsset::GetAssetColor() const
 
 FText UAssetDefinition_EZAbilityAsset::GetAssetDescription(const FAssetData& AssetData) const
 {
-	/* 鼠标移到Asset的描述 */
+	/* 榧犳爣绉诲埌Asset鐨勬弿杩� */
 	return LOCTEXT("UAssetDefinition_EZAbilityAsset", "Data of all abilities.");
 }
 
@@ -42,12 +42,12 @@ EAssetCommandResult UAssetDefinition_EZAbilityAsset::OpenAssets(const FAssetOpen
 {
 	//Super::OpenAssets(OpenArgs);
 
-	FEzAbilityEditorModule& AbilityEditorModule = FModuleManager::LoadModuleChecked<FEzAbilityEditorModule>("EzAbilityEditor");//这里是Module的名称
+	FEzAbilityEditorModule& AbilityEditorModule = FModuleManager::LoadModuleChecked<FEzAbilityEditorModule>("EzAbilityEditor");//杩欓噷鏄疢odule鐨勫悕绉�
 	for (UEZAbilityBlueprint* AbilityAsset : OpenArgs.LoadObjects<UEZAbilityBlueprint>())
 	{
 		UAssetEditorSubsystem* AssetEditorSubsystem = GEditor->GetEditorSubsystem<UAssetEditorSubsystem>();
 
-		/* 此处是初始化Asset界面的重要位置 */
+		/* 姝ゅ�鏄�垵濮嬪寲Asset鐣岄潰鐨勯噸瑕佷綅缃� */
 		AbilityEditorModule.CreateEzAbilityEditor(EToolkitMode::Standalone, OpenArgs.ToolkitHost, AbilityAsset);
 	}
 

+ 67 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityAbleTreeSummoner.cpp

@@ -0,0 +1,67 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "EzAbilityAbleTreeSummoner.h"
+#include "Widgets/Input/SCheckBox.h"
+#include "Widgets/Layout/SBorder.h"
+#include "Widgets/Text/STextBlock.h"
+#include "Styling/AppStyle.h"
+#include "Styling/CoreStyle.h"
+#include "SAdvancedPreviewDetailsTab.h"
+#include "SEditorViewport.h"
+#define LOCTEXT_NAMESPACE "AbilityModes"
+
+/////////////////////////////////////////////////////
+// FAdvancedPreviewSceneTabSummoner
+
+const FName FEzAbilityAbleTreeSummoner::EzAbilityAbleTreeSummonerID("EzAbilityAbleTree");
+
+FEzAbilityAbleTreeSummoner::FEzAbilityAbleTreeSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene)
+	: FWorkflowTabFactory(EzAbilityAbleTreeSummonerID, InHostingApp)
+	, PreviewScene(InPreviewScene)
+{
+	TabLabel = LOCTEXT("AbilityTab", "AbilityAbleTree");
+	TabIcon = FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details");
+	bIsSingleton = true;
+
+	ViewMenuDescription = LOCTEXT("AbilityAbleTree", "AbilityAbleTree");
+	ViewMenuTooltip = LOCTEXT("AbilityAbleTree_ToolTip", "Shows the advanced preview scene settings");
+}
+
+// TSharedRef<class IDetailCustomization> FEzAdvancedPreviewSceneTabSummoner::CustomizePreviewSceneDescription()
+// {
+// 	TSharedRef<IPersonaPreviewScene> PreviewSceneRef = PreviewScene.Pin().ToSharedRef();
+// 	FString SkeletonName;
+// 	TSharedPtr<IEditableSkeleton> EditableSkeleton = PreviewSceneRef->GetPersonaToolkit()->GetEditableSkeleton();
+// 	if(EditableSkeleton.IsValid())
+// 	{
+// 		SkeletonName = FAssetData(&EditableSkeleton->GetSkeleton()).GetExportTextName();
+// 	}
+// 	return MakeShareable(new FPreviewSceneDescriptionCustomization(SkeletonName, PreviewSceneRef->GetPersonaToolkit()));
+// }
+
+// TSharedRef<class IPropertyTypeCustomization> FEzAdvancedPreviewSceneTabSummoner::CustomizePreviewMeshCollectionEntry()
+// {
+// 	return MakeShareable(new FPreviewMeshCollectionEntryCustomization(PreviewScene.Pin().ToSharedRef()));
+// }
+
+
+TSharedRef<SWidget> FEzAbilityAbleTreeSummoner::CreateTabBody(const FWorkflowTabSpawnInfo& Info) const
+{
+//todo  there will be AbilityAbleTree
+	return SNew(SAbilityEditorViewport);
+
+	// 	return SNew(SButton)
+	// 		.VAlign(VAlign_Center)
+	// 		.HAlign(HAlign_Center)
+	// 		.Text(LOCTEXT("SplitSprites", "Split Sprites"))
+	// 		.ToolTipText(LOCTEXT("SplitSprites_Tooltip", "Splits all sprite instances into separate sprite actors or components"));
+
+}
+
+FText FEzAbilityAbleTreeSummoner::GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const
+{
+	return LOCTEXT("AdvancedPreviewSettingsToolTip", "The Advanced Preview Settings tab will let you alter the preview scene's settings.");
+}
+
+#undef LOCTEXT_NAMESPACE
+

+ 67 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityDetialSummoner.cpp

@@ -0,0 +1,67 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "EzAbilityDetialSummoner.h"
+#include "Widgets/Input/SCheckBox.h"
+#include "Widgets/Layout/SBorder.h"
+#include "Widgets/Text/STextBlock.h"
+#include "Styling/AppStyle.h"
+#include "Styling/CoreStyle.h"
+#include "SAdvancedPreviewDetailsTab.h"
+#include "SEditorViewport.h"
+#define LOCTEXT_NAMESPACE "AbilityModes"
+
+/////////////////////////////////////////////////////
+// FAdvancedPreviewSceneTabSummoner
+
+const FName FEzAbilityDetialSummoner::EzAbilityDetialSummonerID("FEzAbilityDetial");
+
+FEzAbilityDetialSummoner::FEzAbilityDetialSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene)
+	: FWorkflowTabFactory(EzAbilityDetialSummonerID, InHostingApp)
+	, PreviewScene(InPreviewScene)
+{
+	TabLabel = LOCTEXT("AbilityTab", "AbilityDetial");
+	TabIcon = FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details");
+	bIsSingleton = true;
+
+	ViewMenuDescription = LOCTEXT("AbilityDetial", "AbilityDetial");
+	ViewMenuTooltip = LOCTEXT("AbilityDetial_ToolTip", "Shows the advanced preview scene settings");
+}
+
+// TSharedRef<class IDetailCustomization> FEzAdvancedPreviewSceneTabSummoner::CustomizePreviewSceneDescription()
+// {
+// 	TSharedRef<IPersonaPreviewScene> PreviewSceneRef = PreviewScene.Pin().ToSharedRef();
+// 	FString SkeletonName;
+// 	TSharedPtr<IEditableSkeleton> EditableSkeleton = PreviewSceneRef->GetPersonaToolkit()->GetEditableSkeleton();
+// 	if(EditableSkeleton.IsValid())
+// 	{
+// 		SkeletonName = FAssetData(&EditableSkeleton->GetSkeleton()).GetExportTextName();
+// 	}
+// 	return MakeShareable(new FPreviewSceneDescriptionCustomization(SkeletonName, PreviewSceneRef->GetPersonaToolkit()));
+// }
+
+// TSharedRef<class IPropertyTypeCustomization> FEzAdvancedPreviewSceneTabSummoner::CustomizePreviewMeshCollectionEntry()
+// {
+// 	return MakeShareable(new FPreviewMeshCollectionEntryCustomization(PreviewScene.Pin().ToSharedRef()));
+// }
+
+
+TSharedRef<SWidget> FEzAbilityDetialSummoner::CreateTabBody(const FWorkflowTabSpawnInfo& Info) const
+{
+
+	return SNew(SAbilityEditorViewport);
+
+	// 	return SNew(SButton)
+	// 		.VAlign(VAlign_Center)
+	// 		.HAlign(HAlign_Center)
+	// 		.Text(LOCTEXT("SplitSprites", "Split Sprites"))
+	// 		.ToolTipText(LOCTEXT("SplitSprites_Tooltip", "Splits all sprite instances into separate sprite actors or components"));
+
+}
+
+FText FEzAbilityDetialSummoner::GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const
+{
+	return LOCTEXT("AdvancedPreviewSettingsToolTip", "The Advanced Preview Settings tab will let you alter the preview scene's settings.");
+}
+
+#undef LOCTEXT_NAMESPACE
+

+ 278 - 18
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditor.cpp

@@ -1,34 +1,294 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
+// Fill out your copyright notice in the Description page of Project Settings.
 
+
+// #include "FDialogueDeductionGraphEditor.h"
+// #include "FDialogueDeEditorApplicationMode.h"
+// #include "DialogueDeductionModule.h"
 #include "EzAbilityEditor.h"
-#include "EzAbility.h"
-#include "EZAbilityBlueprint.h"
-#include "EzAbilityGraphEditor.h"
+#include "Kismet2/BlueprintEditorUtils.h"
+//#include "DialogueDeductionEdGraph.h"
+#include "SBlueprintEditorToolbar.h"
+#include "Kismet2/DebuggerCommands.h"
+#include "WorkflowOrientedApp/WorkflowUObjectDocuments.h"
+#include "EditorStyleSet.h"
+#include "../Public/EZAbilityBlueprint.h"
+#include "EzAbilityEditorApplicationMode.h"
+#include "EzAbilityEditorModule.h"
+//#include "DialogueEditorTabs.h"
+//#include "SEditorViewport.h"
+//#include "SDialogueEditorViewport.h"
+
+
+#define LOCTEXT_NAMESPACE "EzAbilityEditor"
 
-DEFINE_LOG_CATEGORY(LogEzAbilityEditor);
+const FName FEzAbilityEditor::EzAbilityEditorMode(TEXT("AbilityEditor"));
+// 
+// UMBRData* FDialogueDeductionGraphEditor::GetDialogueDeduction() const
+// {
+// 	return TestDataAsset;
+// }
 
-#define LOCTEXT_NAMESPACE "FEzAbilityEditorModule"
 
-const FName FEzAbilityEditorModule::AbilityEditorAppId(TEXT("AbilityEditorApp"));
+FEzAbilityEditor::FEzAbilityEditor()
+{
+}
 
-TSharedRef<class FEzAbilityEditor> FEzAbilityEditorModule::CreateEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, class UEZAbilityBlueprint* EzAbilityAsset)
+FEzAbilityEditor::~FEzAbilityEditor()
 {
-	TSharedRef< FEzAbilityEditor > NewAbilityEditor(new FEzAbilityEditor());
-	NewAbilityEditor->InitEzAbilityEditor(Mode, InitToolkitHost,EzAbilityAsset);
-	return NewAbilityEditor;
 }
 
-void FEzAbilityEditorModule::StartupModule()
+void FEzAbilityEditor::InitEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost,  UEZAbilityBlueprint* InEzAbilityAsset)
 {
-	// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
+	EzAbilityDataAsset = InEzAbilityAsset;
+
+	/* 这里面需要注册FPersonaModule 之类的东西 */
+	/*if (!Toolbar.IsValid())
+	{
+		Toolbar = MakeShareable(new FBlueprintEditorToolbar(SharedThis(this)));
+	}*/
+
+	GetToolkitCommands()->Append(FPlayWorldCommands::GlobalPlayWorldActions.ToSharedRef());
+
+	//CreateDefaultCommands();
+	
+	//BindCommands();
+	
+	//RegisterMenus();
+
+	TArray<UObject*> ObjectsToEdit;
+	ObjectsToEdit.Add((UObject*)EzAbilityDataAsset);
+
+	const TSharedRef<FTabManager::FLayout> DummyLayout = FTabManager::NewLayout("NullLayout")->AddArea(FTabManager::NewPrimaryArea());
+	const bool bCreateDefaultStandaloneMenu = true;
+	const bool bCreateDefaultToolbar = true;
+
+	InitAssetEditor(Mode, InitToolkitHost, FEzAbilityEditorModule::AbilityEditorAppId, DummyLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectsToEdit);
+
+	TArray<UBlueprint*> EditedBlueprints;
+	EditedBlueprints.Add((UBlueprint*)EzAbilityDataAsset);
+
+	//CommonInitialization(EditedBlueprints, false);		/* 构建Tab 没有的情况下 CreateDefaultTabContents 下个智能指针会崩溃*/
+
+	AddApplicationMode(EzAbilityEditorMode,
+		MakeShareable(new FEzAbilityEditorApplicationMode(SharedThis(this), SharedThis(this))));
+	//AddApplicationMode(EzAbilityEditorMode, MakeShareable(new FDialogueDeEditorApplicationMode(SharedThis(this))));
+
+	RegenerateMenusAndToolbars();
+
+	SetCurrentMode(EzAbilityEditorMode);
+
+	//PostLayoutBlueprintEditorInitialization();
 }
 
-void FEzAbilityEditorModule::ShutdownModule()
+// void FEzAbilityEditor::RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
+// {
+// 	WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_AbilityEditor", "Ability Editor"));
+// 
+// 	FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
+// }
+// 
+// void FEzAbilityEditor::UnregisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
+// {
+// 	FAssetEditorToolkit::UnregisterTabSpawners(InTabManager);
+// }
+
+FText FEzAbilityEditor::GetLocalizedMode(FName InMode)
 {
-	// This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,
-	// we call this function before unloading the module.
+	static TMap< FName, FText > LocModes;
+
+	if (LocModes.Num() == 0)
+	{
+		LocModes.Add(EzAbilityEditorMode, LOCTEXT("EzAbilityEditorMode", "Ability Editor"));
+	}
+
+	check(InMode != NAME_None);
+	const FText* OutDesc = LocModes.Find(InMode);
+	check(OutDesc);
+	return *OutDesc;
 }
 
-#undef LOCTEXT_NAMESPACE
+FName FEzAbilityEditor::GetToolkitFName() const
+{
+	return FName("EzAbilityEditor");
+}
+
+FText FEzAbilityEditor::GetBaseToolkitName() const
+{
+	return FText(LOCTEXT("EzAbilityEditor", "EzAbilityEditor"));
+}
+
+FString FEzAbilityEditor::GetWorldCentricTabPrefix() const
+{
+	return "EzAbilityWorldCentricTabPrefix";
+}
+
+void FEzAbilityEditor::InvokeTab(const struct FTabId& TabId)
+{
 	
-IMPLEMENT_MODULE(FEzAbilityEditorModule, EzAbilityEditor)
+}
+
+FLinearColor FEzAbilityEditor::GetWorldCentricTabColorScale() const
+{
+	return FLinearColor(0.0f, 0.0f, 0.3f, 0.5f);
+}
+
+void FEzAbilityEditor::RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
+{
+	WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_AbilityEditor", "Ability Editor"));
+
+	FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
+}
+
+void FEzAbilityEditor::UnregisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
+{
+	FAssetEditorToolkit::UnregisterTabSpawners(InTabManager);
+}
+
+// void FDialogueDeductionGraphEditor::CreateInternalWidgets()
+// {
+// 	FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
+// 	FDetailsViewArgs DetailsViewArgs;
+// 	DetailsViewArgs.bUpdatesFromSelection = false;
+// 	DetailsViewArgs.bLockable = false;
+// 	DetailsViewArgs.bAllowSearch = true;
+// 	DetailsViewArgs.NameAreaSettings = FDetailsViewArgs::HideNameArea;
+// 	DetailsViewArgs.bHideSelectionTip = false;
+// 	DetailsViewArgs.NotifyHook = this;
+// 	DetailsViewArgs.DefaultsOnlyVisibility = EEditDefaultsOnlyNodeVisibility::Hide;
+// 	DetailsView = PropertyEditorModule.CreateDetailView(DetailsViewArgs);
+// 	DetailsView->SetObject(NULL);
+// 	//DetailsView->OnFinishedChangingProperties().AddSP(this, &FDialogueGraphEditor::OnFinishedChangingProperties);
+// }
+// 
+// FText FDialogueDeductionGraphEditor::GetLocalizedMode(FName InMode)
+// {
+// 	static TMap< FName, FText > LocModes;
+// 
+// 	if (LocModes.Num() == 0)
+// 	{
+// 		LocModes.Add(DialogueEditorMode, LOCTEXT("DialogueEditorMode", "Dialogue Graph"));
+// 	}
+// 
+// 	check(InMode != NAME_None);
+// 	const FText* OutDesc = LocModes.Find(InMode);
+// 	check(OutDesc);
+// 	return *OutDesc;
+// }
+// 
+// void FDialogueDeductionGraphEditor::InitDialogueEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UMBRData* InDialogue)
+// {
+// 	TestDataAsset = InDialogue;
+// 	
+// 	if (!Toolbar.IsValid())
+// 	{
+// 		Toolbar = MakeShareable(new FBlueprintEditorToolbar(SharedThis(this)));
+// 	}
+// 
+// 	GetToolkitCommands()->Append(FPlayWorldCommands::GlobalPlayWorldActions.ToSharedRef());
+// 
+// 	CreateDefaultCommands();
+// 	//BindCommands();
+// 	RegisterMenus();
+// 
+// 	CreateInternalWidgets();
+// 
+// 
+// 	TArray<UObject*> ObjectsToEdit;
+// 	ObjectsToEdit.Add((UObject*)TestDataAsset);
+// 
+// 	const bool bCreateDefaultStandaloneMenu = true;
+// 	const bool bCreateDefaultToolbar = true;
+// 
+// 	InitAssetEditor(Mode, InitToolkitHost, FDialogueDeductionModule::DialogueEditorAppId, FTabManager::FLayout::NullLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectsToEdit);
+// 
+// 	TArray<UBlueprint*> EditedBlueprints;
+// 	EditedBlueprints.Add((UBlueprint*)TestDataAsset);
+// 
+// 	CommonInitialization(EditedBlueprints, false);		/* 构建Tab 没有的情况下 CreateDefaultTabContents 下个智能指针会崩溃*/
+// 
+// 	AddApplicationMode(DialogueEditorMode, MakeShareable(new FDialogueDeEditorApplicationMode(SharedThis(this))));
+// 
+// 	RegenerateMenusAndToolbars();
+// 
+// 	SetCurrentMode(DialogueEditorMode);
+// 
+// 	PostLayoutBlueprintEditorInitialization();
+// 
+// // 	FLevelEditorModule& LevelEditor = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");
+// // 	LevelEditor.OnMapChanged().AddRaw(this, &FDialogueGraphEditor::OnWorldChange);
+// }
+// 
+// 
+// void FDialogueDeductionGraphEditor::RestoreDialogueGraph()
+// {
+// 	//此处为打开一个图表
+// 	UDialogueDeductionEdGraph* TestEdGraph =Cast<UDialogueDeductionEdGraph>( FBlueprintEditorUtils::CreateNewGraph((UObject*)TestDataAsset, TEXT("Dialogue Graph"), UDialogueDeductionEdGraph::StaticClass(), UEdGraphSchema::StaticClass()));
+// 
+// 	bool bNewGraph = true;
+// 
+// 	FBlueprintEditorUtils::AddUbergraphPage((UBlueprint*)TestDataAsset, TestEdGraph);
+// 
+// 
+// 	TSharedRef<FTabPayload_UObject> Payload = FTabPayload_UObject::Make(TestEdGraph);
+// 	TSharedPtr<SDockTab> DocumentTab = DocumentManager->OpenDocument(Payload, bNewGraph ? FDocumentTracker::OpenNewDocument : FDocumentTracker::RestorePreviousDocument);
+// 
+// 	if (TestDataAsset->LastEditedDocuments.Num() > 0)
+// 	{
+// 		TSharedRef<SGraphEditor> GraphEditor = StaticCastSharedRef<SGraphEditor>(DocumentTab->GetContent());
+// 		GraphEditor->SetViewLocation(TestDataAsset->LastEditedDocuments[0].SavedViewOffset, TestDataAsset->LastEditedDocuments[0].SavedZoomAmount);
+// 	}
+// }
+// 
+// 
+// TSharedRef<SDockTab> FDialogueDeductionGraphEditor::SpawnTab_Viewport(const FSpawnTabArgs& Args)
+// {
+// 	TSharedPtr<FDialogueDeductionGraphEditor> DialogueEditorPtr = SharedThis(this);
+// 
+// // 	return SNew(SDockTab)
+// // 		.Label(LOCTEXT("ViewportTab_Title", "Viewport"))
+// // 		[
+// // 			SAssignNew(DialogueViewportWidget, SDialogueViewportWidget, DialogueEditorPtr)
+// // 			.Dialogue(DialogueBeingEdited)
+// // 		];
+// 
+// // 	return SNew(SDockTab)
+// // 		[
+// // 			SNew(STextBlock)
+// // 			.Text(FText::FromString("Hello, New Tab Content !"))
+// // 		];
+// 
+// 	//TSharedPtr<FDialogueEditor> DialogueEditorPtr = SharedThis(this);
+// 	return SNew(SDockTab)
+// 		.Label(LOCTEXT("Viewport01Tab_Title", "Viewport01"))
+// 		[
+// 			//SAssignNew(DialogueEditorViewport, SDialogueEditorViewport)
+// 			//.TestMBR(TestDataAsset)
+// 			SAssignNew(DialogueEditorViewport, SDialogueEditorViewport)
+// 			.TestMBR(TestDataAsset)
+// 		];
+// }
+// 
+// void FDialogueDeductionGraphEditor::RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
+// {
+// 	DocumentManager->SetTabManager(InTabManager);
+// 
+// 	//FWorkflowCentricApplication::RegisterTabSpawners(InTabManager);
+// 
+// 	WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_AAAA", "Environment Query Editor"));
+// 	auto WorkspaceMenuCategoryRef = WorkspaceMenuCategory.ToSharedRef();
+// 
+// 	InTabManager->RegisterTabSpawner(FDialogueEditorTabs::DialogueView, FOnSpawnTab::CreateSP(this, &FDialogueDeductionGraphEditor::SpawnTab_Viewport))
+// 		.SetDisplayName(LOCTEXT("ViewportTab", "Viewport"))
+// 		.SetGroup(WorkspaceMenuCategoryRef)
+// 		.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Viewports"));
+// 
+// }
+// 
+// 
+// void FDialogueDeductionGraphEditor::RegisterToolbarTab(const TSharedRef<class FTabManager>& InTabManager)
+// {
+// 	//FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
+// 	RegisterTabSpawners(InTabManager);
+// }
+
+#undef LOCTEXT_NAMESPACE

+ 70 - 14
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditorApplicationMode.cpp

@@ -1,37 +1,93 @@
-// Fill out your copyright notice in the Description page of Project Settings.
+// Fill out your copyright notice in the Description page of Project Settings.
 
 #include "EzAbilityEditorApplicationMode.h"
-#include "EzAbilityGraphEditor.h"
+#include "EzAbilityEditor.h"
 #include "SBlueprintEditorToolbar.h"
 #include "BlueprintEditorTabs.h"
 #include "SBlueprintEditorToolbar.h"
 #include "EzAbilityViewModule.h"
 #include "Modules/ModuleManager.h"
 #include "EzAbilityEditor.h"
-#include "EzAbilityTabSpawners.h"
+#include "EzAbilityViewPortSummoner.h"
 #include "AdvancedPreviewScene.h"
 #include "PreviewScene.h"
+#include "Toolkits/AssetEditorToolkit.h"
 
 #define LOCTEXT_NAMESPACE "EzAbilityEditorApplicationModeh"
 
 FEzAbilityEditorApplicationMode::FEzAbilityEditorApplicationMode(const TSharedRef<class FWorkflowCentricApplication>& InHostingApp, TSharedPtr<class FEzAbilityEditor> InEzAbilityEditor)
-	: FBlueprintEditorApplicationMode(InEzAbilityEditor, FEzAbilityEditor::EzAbilityEditorMode, FEzAbilityEditor::GetLocalizedMode, false , false)
+	: FApplicationMode(FEzAbilityEditor::EzAbilityEditorMode)
 {
-	EzAbilityEditor		= InEzAbilityEditor;
-	HostingAppPtr		= InHostingApp;
+	EzAbilityEditor = InEzAbilityEditor;
+	HostingAppPtr = InHostingApp;
 
 	//FEzAbilityViewModule& AbilityViewModule = FModuleManager::LoadModuleChecked<FEzAbilityViewModule>("AbilityView");
- 	PreviewScene = MakeShareable(new FAdvancedPreviewScene(FPreviewScene::ConstructionValues()));
- 	EzAbilityEditorTabFactories.RegisterFactory(CreateAdvancedPreviewSceneTabFactory(InHostingApp,  PreviewScene.ToSharedRef()));
+	PreviewScene = MakeShareable(new FAdvancedPreviewScene(FPreviewScene::ConstructionValues()));
+	EzAbilityEditorTabFactories.RegisterFactory(MakeShareable(new FEzAbilityViewPortSummoner(InHostingApp, PreviewScene.ToSharedRef())));
+	TabLayout = FTabManager::NewLayout("Standalone_EzAbilityEditor_Layout_v1.0")
+		->AddArea
+		(
+			FTabManager::NewPrimaryArea()
+			->SetOrientation(Orient_Vertical)
+			->Split
+			(
+				FTabManager::NewSplitter()
+				->SetSizeCoefficient(0.9f)
+				->SetOrientation(Orient_Horizontal)
+				->Split
+				(
+					FTabManager::NewSplitter()
+					->SetSizeCoefficient(0.2f)
+					->SetOrientation(Orient_Vertical)
+					->Split
+					(
+						FTabManager::NewStack()
+						->SetHideTabWell(false)
+						//->AddTab(FEzAbilityViewPortSummoner::EzAbilityEditorViewPortSummonerID, ETabState::OpenedTab)
+					)
+				)
+				->Split
+				(
+					FTabManager::NewSplitter()
+					->SetSizeCoefficient(0.6f)
+					->SetOrientation(Orient_Vertical)
+					->Split
+					(
+						FTabManager::NewStack()
+						->SetSizeCoefficient(0.6f)
+						->SetHideTabWell(false)
+						//->AddTab(FEzAbilityViewPortSummoner::EzAbilityEditorViewPortSummonerID, ETabState::OpenedTab)
+					)
+				)
+				->Split
+				(
+					FTabManager::NewSplitter()
+					->SetSizeCoefficient(0.2f)
+					->SetOrientation(Orient_Vertical)
+					->Split
+					(
+						FTabManager::NewStack()
+						->SetSizeCoefficient(0.6f)
+						->SetHideTabWell(false)
+						//->AddTab(FEzAbilityViewPortSummoner::EzAbilityEditorViewPortSummonerID, ETabState::OpenedTab)
+					)
+				)
+			)
+		);
 
+	//EzAbilityEditorTabFactories.OnRegisterTabs().Broadcast(EzAbilityEditorTabFactories, InHostingApp);
+	LayoutExtender = MakeShared<FLayoutExtender>();
+	//EzAbilityEditorTabFactories.OnRegisterLayoutExtensions().Broadcast(*LayoutExtender.Get());
+	TabLayout->ProcessExtensions(*LayoutExtender.Get());
 }
 
 
 void FEzAbilityEditorApplicationMode::RegisterTabFactories(TSharedPtr<class FTabManager> InTabManager)
 {
-  	TSharedPtr<FEzAbilityEditor> EzAbilityEditorPtr = EzAbilityEditor.Pin();
-	EzAbilityEditorPtr->RegisterToolbarTab(InTabManager.ToSharedRef());
+	TSharedPtr<FEzAbilityEditor> EzAbilityEditorPtr = EzAbilityEditor.Pin();
+	EzAbilityEditorPtr->RegisterTabSpawners(InTabManager.ToSharedRef());
 	EzAbilityEditorPtr->PushTabFactories(EzAbilityEditorTabFactories);
+	FApplicationMode::RegisterTabFactories(InTabManager);
 }
 
 // void FEzAbilityEditorApplicationMode::AddTabFactory(FCreateWorkflowTabFactory FactoryCreator)
@@ -47,10 +103,10 @@ void FEzAbilityEditorApplicationMode::RegisterTabFactories(TSharedPtr<class FTab
 // 	EzAbilityEditorTabFactories.UnregisterFactory(TabFactoryID);
 // }
 
-TSharedRef<FWorkflowTabFactory> FEzAbilityEditorApplicationMode::CreateAdvancedPreviewSceneTabFactory(const TSharedRef<class FWorkflowCentricApplication>& InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene) const
-{
-	return MakeShareable(new FEzAdvancedPreviewSceneTabSummoner(InHostingApp, InPreviewScene));
-}
+//TSharedRef<FWorkflowTabFactory> FEzAbilityEditorApplicationMode::CreateAdvancedPreviewSceneTabFactory(const TSharedRef<class FWorkflowCentricApplication>& InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene) const
+//{
+//	return MakeShareable(new FEzAbilityViewPortSummoner(InHostingApp, InPreviewScene));
+//}
 
 
 #undef LOCTEXT_NAMESPACE

+ 1 - 1
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditorData.cpp

@@ -9,7 +9,7 @@
 #endif
 
 #include "EzAbilityDelegates.h"
-#include "EzAbilityEditor.h"
+#include "EzAbilityEditorModule.h"
 #include "EzAbilityPropertyHelpers.h"
 #include "EzAbilitySchema.h"
 #include "Algo/LevenshteinDistance.h"

+ 34 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityEditorModule.cpp

@@ -0,0 +1,34 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "EzAbilityEditorModule.h"
+#include "EzAbility.h"
+#include "EZAbilityBlueprint.h"
+#include "EzAbilityEditor.h"
+
+DEFINE_LOG_CATEGORY(LogEzAbilityEditor);
+
+#define LOCTEXT_NAMESPACE "FEzAbilityEditorModule"
+
+const FName FEzAbilityEditorModule::AbilityEditorAppId(TEXT("AbilityEditorApp"));
+
+TSharedRef<class FEzAbilityEditor> FEzAbilityEditorModule::CreateEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, class UEZAbilityBlueprint* EzAbilityAsset)
+{
+	TSharedRef< FEzAbilityEditor > NewAbilityEditor(new FEzAbilityEditor());
+	NewAbilityEditor->InitEzAbilityEditor(Mode, InitToolkitHost,EzAbilityAsset);
+	return NewAbilityEditor;
+}
+
+void FEzAbilityEditorModule::StartupModule()
+{
+	// This code will execute after your module is loaded into memory; the exact timing is specified in the .uplugin file per-module
+}
+
+void FEzAbilityEditorModule::ShutdownModule()
+{
+	// This function may be called during shutdown to clean up your module.  For modules that support dynamic reloading,
+	// we call this function before unloading the module.
+}
+
+#undef LOCTEXT_NAMESPACE
+	
+IMPLEMENT_MODULE(FEzAbilityEditorModule, EzAbilityEditor)

+ 0 - 262
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityGraphEditor.cpp

@@ -1,262 +0,0 @@
-// Fill out your copyright notice in the Description page of Project Settings.
-
-
-// #include "FDialogueDeductionGraphEditor.h"
-// #include "FDialogueDeEditorApplicationMode.h"
-// #include "DialogueDeductionModule.h"
-#include "EzAbilityGraphEditor.h"
-#include "Kismet2/BlueprintEditorUtils.h"
-//#include "DialogueDeductionEdGraph.h"
-#include "SBlueprintEditorToolbar.h"
-#include "Kismet2/DebuggerCommands.h"
-#include "WorkflowOrientedApp/WorkflowUObjectDocuments.h"
-#include "EditorStyleSet.h"
-#include "../Public/EZAbilityBlueprint.h"
-#include "EzAbilityEditorApplicationMode.h"
-#include "EzAbilityEditor.h"
-//#include "DialogueEditorTabs.h"
-//#include "SEditorViewport.h"
-//#include "SDialogueEditorViewport.h"
-
-
-#define LOCTEXT_NAMESPACE "EzAbilityEditor"
-
-const FName FEzAbilityEditor::EzAbilityEditorMode(TEXT("AbilityEditor"));
-// 
-// UMBRData* FDialogueDeductionGraphEditor::GetDialogueDeduction() const
-// {
-// 	return TestDataAsset;
-// }
-
-
-const FName EzAbilityEditorTabs::DetailsTab(TEXT("DetailsTab"));
-const FName EzAbilityEditorTabs::ViewportTab(TEXT("ViewPort"));
-
-FEzAbilityEditor::FEzAbilityEditor()
-{
-}
-
-FEzAbilityEditor::~FEzAbilityEditor()
-{
-}
-
-void FEzAbilityEditor::InitEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost,  UEZAbilityBlueprint* InEzAbilityAsset)
-{
-	EzAbilityDataAsset = InEzAbilityAsset;
-
-	/* 这里面需要注册FPersonaModule 之类的东西 */
-	if (!Toolbar.IsValid())
-	{
-		Toolbar = MakeShareable(new FBlueprintEditorToolbar(SharedThis(this)));
-	}
-
-	GetToolkitCommands()->Append(FPlayWorldCommands::GlobalPlayWorldActions.ToSharedRef());
-
-	CreateDefaultCommands();
-	
-	//BindCommands();
-	
-	RegisterMenus();
-
-	//CreateInternalWidgets();
-
-
-	TArray<UObject*> ObjectsToEdit;
-	ObjectsToEdit.Add((UObject*)EzAbilityDataAsset);
-
-	const bool bCreateDefaultStandaloneMenu = true;
-	const bool bCreateDefaultToolbar = true;
-
-	InitAssetEditor(Mode, InitToolkitHost, FEzAbilityEditorModule::AbilityEditorAppId, FTabManager::FLayout::NullLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectsToEdit);
-
-	TArray<UBlueprint*> EditedBlueprints;
-	EditedBlueprints.Add((UBlueprint*)EzAbilityDataAsset);
-
-	CommonInitialization(EditedBlueprints, false);		/* 构建Tab 没有的情况下 CreateDefaultTabContents 下个智能指针会崩溃*/
-
-	AddApplicationMode(EzAbilityEditorMode,
-		MakeShareable(new FEzAbilityEditorApplicationMode(SharedThis(this), SharedThis(this))));
-	//AddApplicationMode(EzAbilityEditorMode, MakeShareable(new FDialogueDeEditorApplicationMode(SharedThis(this))));
-
-	RegenerateMenusAndToolbars();
-
-	SetCurrentMode(EzAbilityEditorMode);
-
-	PostLayoutBlueprintEditorInitialization();
-}
-
-// void FEzAbilityEditor::RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
-// {
-// 	WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_AbilityEditor", "Ability Editor"));
-// 
-// 	FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
-// }
-// 
-// void FEzAbilityEditor::UnregisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
-// {
-// 	FAssetEditorToolkit::UnregisterTabSpawners(InTabManager);
-// }
-
-FText FEzAbilityEditor::GetLocalizedMode(FName InMode)
-{
-	static TMap< FName, FText > LocModes;
-
-	if (LocModes.Num() == 0)
-	{
-		LocModes.Add(EzAbilityEditorMode, LOCTEXT("EzAbilityEditorMode", "Ability Editor"));
-	}
-
-	check(InMode != NAME_None);
-	const FText* OutDesc = LocModes.Find(InMode);
-	check(OutDesc);
-	return *OutDesc;
-}
-
-// void FDialogueDeductionGraphEditor::CreateInternalWidgets()
-// {
-// 	FPropertyEditorModule& PropertyEditorModule = FModuleManager::GetModuleChecked<FPropertyEditorModule>("PropertyEditor");
-// 	FDetailsViewArgs DetailsViewArgs;
-// 	DetailsViewArgs.bUpdatesFromSelection = false;
-// 	DetailsViewArgs.bLockable = false;
-// 	DetailsViewArgs.bAllowSearch = true;
-// 	DetailsViewArgs.NameAreaSettings = FDetailsViewArgs::HideNameArea;
-// 	DetailsViewArgs.bHideSelectionTip = false;
-// 	DetailsViewArgs.NotifyHook = this;
-// 	DetailsViewArgs.DefaultsOnlyVisibility = EEditDefaultsOnlyNodeVisibility::Hide;
-// 	DetailsView = PropertyEditorModule.CreateDetailView(DetailsViewArgs);
-// 	DetailsView->SetObject(NULL);
-// 	//DetailsView->OnFinishedChangingProperties().AddSP(this, &FDialogueGraphEditor::OnFinishedChangingProperties);
-// }
-// 
-// FText FDialogueDeductionGraphEditor::GetLocalizedMode(FName InMode)
-// {
-// 	static TMap< FName, FText > LocModes;
-// 
-// 	if (LocModes.Num() == 0)
-// 	{
-// 		LocModes.Add(DialogueEditorMode, LOCTEXT("DialogueEditorMode", "Dialogue Graph"));
-// 	}
-// 
-// 	check(InMode != NAME_None);
-// 	const FText* OutDesc = LocModes.Find(InMode);
-// 	check(OutDesc);
-// 	return *OutDesc;
-// }
-// 
-// void FDialogueDeductionGraphEditor::InitDialogueEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, UMBRData* InDialogue)
-// {
-// 	TestDataAsset = InDialogue;
-// 	
-// 	if (!Toolbar.IsValid())
-// 	{
-// 		Toolbar = MakeShareable(new FBlueprintEditorToolbar(SharedThis(this)));
-// 	}
-// 
-// 	GetToolkitCommands()->Append(FPlayWorldCommands::GlobalPlayWorldActions.ToSharedRef());
-// 
-// 	CreateDefaultCommands();
-// 	//BindCommands();
-// 	RegisterMenus();
-// 
-// 	CreateInternalWidgets();
-// 
-// 
-// 	TArray<UObject*> ObjectsToEdit;
-// 	ObjectsToEdit.Add((UObject*)TestDataAsset);
-// 
-// 	const bool bCreateDefaultStandaloneMenu = true;
-// 	const bool bCreateDefaultToolbar = true;
-// 
-// 	InitAssetEditor(Mode, InitToolkitHost, FDialogueDeductionModule::DialogueEditorAppId, FTabManager::FLayout::NullLayout, bCreateDefaultStandaloneMenu, bCreateDefaultToolbar, ObjectsToEdit);
-// 
-// 	TArray<UBlueprint*> EditedBlueprints;
-// 	EditedBlueprints.Add((UBlueprint*)TestDataAsset);
-// 
-// 	CommonInitialization(EditedBlueprints, false);		/* 构建Tab 没有的情况下 CreateDefaultTabContents 下个智能指针会崩溃*/
-// 
-// 	AddApplicationMode(DialogueEditorMode, MakeShareable(new FDialogueDeEditorApplicationMode(SharedThis(this))));
-// 
-// 	RegenerateMenusAndToolbars();
-// 
-// 	SetCurrentMode(DialogueEditorMode);
-// 
-// 	PostLayoutBlueprintEditorInitialization();
-// 
-// // 	FLevelEditorModule& LevelEditor = FModuleManager::LoadModuleChecked<FLevelEditorModule>("LevelEditor");
-// // 	LevelEditor.OnMapChanged().AddRaw(this, &FDialogueGraphEditor::OnWorldChange);
-// }
-// 
-// 
-// void FDialogueDeductionGraphEditor::RestoreDialogueGraph()
-// {
-// 	//此处为打开一个图表
-// 	UDialogueDeductionEdGraph* TestEdGraph =Cast<UDialogueDeductionEdGraph>( FBlueprintEditorUtils::CreateNewGraph((UObject*)TestDataAsset, TEXT("Dialogue Graph"), UDialogueDeductionEdGraph::StaticClass(), UEdGraphSchema::StaticClass()));
-// 
-// 	bool bNewGraph = true;
-// 
-// 	FBlueprintEditorUtils::AddUbergraphPage((UBlueprint*)TestDataAsset, TestEdGraph);
-// 
-// 
-// 	TSharedRef<FTabPayload_UObject> Payload = FTabPayload_UObject::Make(TestEdGraph);
-// 	TSharedPtr<SDockTab> DocumentTab = DocumentManager->OpenDocument(Payload, bNewGraph ? FDocumentTracker::OpenNewDocument : FDocumentTracker::RestorePreviousDocument);
-// 
-// 	if (TestDataAsset->LastEditedDocuments.Num() > 0)
-// 	{
-// 		TSharedRef<SGraphEditor> GraphEditor = StaticCastSharedRef<SGraphEditor>(DocumentTab->GetContent());
-// 		GraphEditor->SetViewLocation(TestDataAsset->LastEditedDocuments[0].SavedViewOffset, TestDataAsset->LastEditedDocuments[0].SavedZoomAmount);
-// 	}
-// }
-// 
-// 
-// TSharedRef<SDockTab> FDialogueDeductionGraphEditor::SpawnTab_Viewport(const FSpawnTabArgs& Args)
-// {
-// 	TSharedPtr<FDialogueDeductionGraphEditor> DialogueEditorPtr = SharedThis(this);
-// 
-// // 	return SNew(SDockTab)
-// // 		.Label(LOCTEXT("ViewportTab_Title", "Viewport"))
-// // 		[
-// // 			SAssignNew(DialogueViewportWidget, SDialogueViewportWidget, DialogueEditorPtr)
-// // 			.Dialogue(DialogueBeingEdited)
-// // 		];
-// 
-// // 	return SNew(SDockTab)
-// // 		[
-// // 			SNew(STextBlock)
-// // 			.Text(FText::FromString("Hello, New Tab Content !"))
-// // 		];
-// 
-// 	//TSharedPtr<FDialogueEditor> DialogueEditorPtr = SharedThis(this);
-// 	return SNew(SDockTab)
-// 		.Label(LOCTEXT("Viewport01Tab_Title", "Viewport01"))
-// 		[
-// 			//SAssignNew(DialogueEditorViewport, SDialogueEditorViewport)
-// 			//.TestMBR(TestDataAsset)
-// 			SAssignNew(DialogueEditorViewport, SDialogueEditorViewport)
-// 			.TestMBR(TestDataAsset)
-// 		];
-// }
-// 
-// void FDialogueDeductionGraphEditor::RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager)
-// {
-// 	DocumentManager->SetTabManager(InTabManager);
-// 
-// 	//FWorkflowCentricApplication::RegisterTabSpawners(InTabManager);
-// 
-// 	WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_AAAA", "Environment Query Editor"));
-// 	auto WorkspaceMenuCategoryRef = WorkspaceMenuCategory.ToSharedRef();
-// 
-// 	InTabManager->RegisterTabSpawner(FDialogueEditorTabs::DialogueView, FOnSpawnTab::CreateSP(this, &FDialogueDeductionGraphEditor::SpawnTab_Viewport))
-// 		.SetDisplayName(LOCTEXT("ViewportTab", "Viewport"))
-// 		.SetGroup(WorkspaceMenuCategoryRef)
-// 		.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Viewports"));
-// 
-// }
-// 
-// 
-// void FDialogueDeductionGraphEditor::RegisterToolbarTab(const TSharedRef<class FTabManager>& InTabManager)
-// {
-// 	//FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
-// 	RegisterTabSpawners(InTabManager);
-// }
-
-#undef LOCTEXT_NAMESPACE

+ 66 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityTimelineSummoner.cpp

@@ -0,0 +1,66 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#include "EzAbilityTimelineSummoner.h"
+#include "Widgets/Input/SCheckBox.h"
+#include "Widgets/Layout/SBorder.h"
+#include "Widgets/Text/STextBlock.h"
+#include "Styling/AppStyle.h"
+#include "Styling/CoreStyle.h"
+#include "SAdvancedPreviewDetailsTab.h"
+#include "SEditorViewport.h"
+#define LOCTEXT_NAMESPACE "AbilityModes"
+
+/////////////////////////////////////////////////////
+// FAdvancedPreviewSceneTabSummoner
+
+const FName FEzAbilityTimelineSummoner::EzAbilityTimelineSummonerID("EzAbilityTimeline");
+
+FEzAbilityTimelineSummoner::FEzAbilityTimelineSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene)
+	: FWorkflowTabFactory(EzAbilityTimelineSummonerID, InHostingApp)
+	, PreviewScene(InPreviewScene)
+{
+	TabLabel = LOCTEXT("AbilityTab", "AbilityTimeline");
+	TabIcon = FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details");
+	bIsSingleton = true;
+
+	ViewMenuDescription = LOCTEXT("AbilityTimeline", "AbilityTimeline");
+	ViewMenuTooltip = LOCTEXT("AbilityTimeline_ToolTip", "Shows the advanced preview scene settings");
+}
+
+// TSharedRef<class IDetailCustomization> FEzAdvancedPreviewSceneTabSummoner::CustomizePreviewSceneDescription()
+// {
+// 	TSharedRef<IPersonaPreviewScene> PreviewSceneRef = PreviewScene.Pin().ToSharedRef();
+// 	FString SkeletonName;
+// 	TSharedPtr<IEditableSkeleton> EditableSkeleton = PreviewSceneRef->GetPersonaToolkit()->GetEditableSkeleton();
+// 	if(EditableSkeleton.IsValid())
+// 	{
+// 		SkeletonName = FAssetData(&EditableSkeleton->GetSkeleton()).GetExportTextName();
+// 	}
+// 	return MakeShareable(new FPreviewSceneDescriptionCustomization(SkeletonName, PreviewSceneRef->GetPersonaToolkit()));
+// }
+
+// TSharedRef<class IPropertyTypeCustomization> FEzAdvancedPreviewSceneTabSummoner::CustomizePreviewMeshCollectionEntry()
+// {
+// 	return MakeShareable(new FPreviewMeshCollectionEntryCustomization(PreviewScene.Pin().ToSharedRef()));
+// }
+
+
+TSharedRef<SWidget> FEzAbilityTimelineSummoner::CreateTabBody(const FWorkflowTabSpawnInfo& Info) const
+{
+
+	return SNew(SAbilityEditorViewport);
+	// 	return SNew(SButton)
+	// 		.VAlign(VAlign_Center)
+	// 		.HAlign(HAlign_Center)
+	// 		.Text(LOCTEXT("SplitSprites", "Split Sprites"))
+	// 		.ToolTipText(LOCTEXT("SplitSprites_Tooltip", "Splits all sprite instances into separate sprite actors or components"));
+
+}
+
+FText FEzAbilityTimelineSummoner::GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const
+{
+	return LOCTEXT("AdvancedPreviewSettingsToolTip", "The Advanced Preview Settings tab will let you alter the preview scene's settings.");
+}
+
+#undef LOCTEXT_NAMESPACE
+

+ 2 - 8
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityViewModule.cpp

@@ -1,5 +1,5 @@
-#include "EzAbilityViewModule.h"
-#include "EzAbilityTabSpawners.h"
+#include "EzAbilityViewModule.h"
+#include "EzAbilityViewPortSummoner.h"
 
 #define LOCTEXT_NAMESPACE "EzAbilityViewModule"
 
@@ -13,10 +13,4 @@ void FEzAbilityViewModule::ShutdownModule()
 	
 }
 
-TSharedRef<class FWorkflowTabFactory> FEzAbilityViewModule::CreateAdvancedPreviewSceneTabFactory(const TSharedRef<class FWorkflowCentricApplication>& InHostingApp, const TSharedRef<IPersonaPreviewScene>& InPreviewScene) const
-{
-	return MakeShareable(new FEzAdvancedPreviewSceneTabSummoner(InHostingApp, InPreviewScene));
-}
-
-
 #undef LOCTEXT_NAMESPACE

+ 14 - 18
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityTabSpawners.cpp → Ability/Plugins/EzAbility/Source/EzAbilityEditor/Private/EzAbilityViewPortSummoner.cpp

@@ -1,6 +1,6 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
+// Copyright Epic Games, Inc. All Rights Reserved.
 
-#include "EzAbilityTabSpawners.h"
+#include "EzAbilityViewPortSummoner.h"
 #include "Widgets/Input/SCheckBox.h"
 #include "Widgets/Layout/SBorder.h"
 #include "Widgets/Text/STextBlock.h"
@@ -8,17 +8,15 @@
 #include "Styling/CoreStyle.h"
 #include "SAdvancedPreviewDetailsTab.h"
 #include "SEditorViewport.h"
-#include "SAbilityEditorViewport.h"
-
 #define LOCTEXT_NAMESPACE "AbilityModes"
 
 /////////////////////////////////////////////////////
 // FAdvancedPreviewSceneTabSummoner
 
-const FName FAbilityTabs::EzAdvancedPreviewSceneSettingsID("EzAdvancedPreviewTab");
+const FName FEzAbilityViewPortSummoner::EzAbilityEditorViewPortSummonerID("EzAbilityEditorViewPort");
 
-FEzAdvancedPreviewSceneTabSummoner::FEzAdvancedPreviewSceneTabSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene)
-	: FWorkflowTabFactory(FAbilityTabs::EzAdvancedPreviewSceneSettingsID, InHostingApp)
+FEzAbilityViewPortSummoner::FEzAbilityViewPortSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene)
+	: FWorkflowTabFactory(EzAbilityEditorViewPortSummonerID, InHostingApp)
 	, PreviewScene(InPreviewScene)
 {
 	TabLabel = LOCTEXT("AbilityTab", "AbilityView");
@@ -47,22 +45,20 @@ FEzAdvancedPreviewSceneTabSummoner::FEzAdvancedPreviewSceneTabSummoner(TSharedPt
 // }
 
 
-TSharedRef<SWidget> FEzAdvancedPreviewSceneTabSummoner::CreateTabBody(const FWorkflowTabSpawnInfo& Info) const
+TSharedRef<SWidget> FEzAbilityViewPortSummoner::CreateTabBody(const FWorkflowTabSpawnInfo& Info) const
 {
-	//return SNew(SAdvancedPreviewDetailsTab, StaticCastSharedRef<FAdvancedPreviewScene>(PreviewScene.Pin().ToSharedRef()));
-	//return SNew(SEditorViewport);
-	TSharedPtr<SAbilityEditorViewport> AbilityEditorViewport;
-	return SAssignNew(AbilityEditorViewport, SAbilityEditorViewport);
 
-// 	return SNew(SButton)
-// 		.VAlign(VAlign_Center)
-// 		.HAlign(HAlign_Center)
-// 		.Text(LOCTEXT("SplitSprites", "Split Sprites"))
-// 		.ToolTipText(LOCTEXT("SplitSprites_Tooltip", "Splits all sprite instances into separate sprite actors or components"));
+	return SNew(SAbilityEditorViewport);
+
+	// 	return SNew(SButton)
+	// 		.VAlign(VAlign_Center)
+	// 		.HAlign(HAlign_Center)
+	// 		.Text(LOCTEXT("SplitSprites", "Split Sprites"))
+	// 		.ToolTipText(LOCTEXT("SplitSprites_Tooltip", "Splits all sprite instances into separate sprite actors or components"));
 
 }
 
-FText FEzAdvancedPreviewSceneTabSummoner::GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const
+FText FEzAbilityViewPortSummoner::GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const
 {
 	return LOCTEXT("AdvancedPreviewSettingsToolTip", "The Advanced Preview Settings tab will let you alter the preview scene's settings.");
 }

+ 47 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityAbleTreeSummoner.h

@@ -0,0 +1,47 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Input/Reply.h"
+#include "Layout/Visibility.h"
+#include "Widgets/SWidget.h"
+#include "Widgets/DeclarativeSyntaxSupport.h"
+#include "IPersonaViewport.h"
+#include "Toolkits/AssetEditorToolkit.h"
+#include "WorkflowOrientedApp/WorkflowTabFactory.h"
+#include "WorkflowOrientedApp/WorkflowTabManager.h"
+#include "BlueprintEditor.h"
+#include "WorkflowOrientedApp/ApplicationMode.h"
+#include "IDocumentation.h"
+#include "PersonaModule.h"
+#include "IPersonaPreviewScene.h"
+#include "AnimationEditorViewportClient.h"
+#include "SSingleObjectDetailsPanel.h"
+#include "PersonaTabs.h"
+#include "AdvancedPreviewSceneModule.h"
+#include "SAbilityEditorViewport.h"
+
+#define LOCTEXT_NAMESPACE "AbilityMode"
+
+class IEditableSkeleton;
+class IPersonaToolkit;
+class ISkeletonTree;
+class SPersonaDetails;
+class SToolTip;
+
+struct FEzAbilityAbleTreeSummoner : public FWorkflowTabFactory
+{
+public:
+	FEzAbilityAbleTreeSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene);
+	virtual TSharedRef<SWidget> CreateTabBody(const FWorkflowTabSpawnInfo& Info) const override;
+	virtual FText GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const override;
+	//TSharedPtr<SAbilityEditorViewport>		AbilityEditorViewport;
+	static const FName EzAbilityAbleTreeSummonerID;
+private:
+	TWeakPtr<class FAdvancedPreviewScene> PreviewScene;
+
+};
+
+
+#undef LOCTEXT_NAMESPACE

+ 47 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityDetialSummoner.h

@@ -0,0 +1,47 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Input/Reply.h"
+#include "Layout/Visibility.h"
+#include "Widgets/SWidget.h"
+#include "Widgets/DeclarativeSyntaxSupport.h"
+#include "IPersonaViewport.h"
+#include "Toolkits/AssetEditorToolkit.h"
+#include "WorkflowOrientedApp/WorkflowTabFactory.h"
+#include "WorkflowOrientedApp/WorkflowTabManager.h"
+#include "BlueprintEditor.h"
+#include "WorkflowOrientedApp/ApplicationMode.h"
+#include "IDocumentation.h"
+#include "PersonaModule.h"
+#include "IPersonaPreviewScene.h"
+#include "AnimationEditorViewportClient.h"
+#include "SSingleObjectDetailsPanel.h"
+#include "PersonaTabs.h"
+#include "AdvancedPreviewSceneModule.h"
+#include "SAbilityEditorViewport.h"
+
+#define LOCTEXT_NAMESPACE "AbilityMode"
+
+class IEditableSkeleton;
+class IPersonaToolkit;
+class ISkeletonTree;
+class SPersonaDetails;
+class SToolTip;
+
+struct FEzAbilityDetialSummoner : public FWorkflowTabFactory
+{
+public:
+	FEzAbilityDetialSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene);
+	virtual TSharedRef<SWidget> CreateTabBody(const FWorkflowTabSpawnInfo& Info) const override;
+	virtual FText GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const override;
+	//TSharedPtr<SAbilityEditorViewport>		AbilityEditorViewport;
+	static const FName EzAbilityDetialSummonerID;
+private:
+	TWeakPtr<class FAdvancedPreviewScene> PreviewScene;
+
+};
+
+
+#undef LOCTEXT_NAMESPACE

+ 80 - 10
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityEditor.h

@@ -1,23 +1,93 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
+// Fill out your copyright notice in the Description page of Project Settings.
 
 #pragma once
 
 #include "CoreMinimal.h"
-#include "Modules/ModuleManager.h"
+#include "BlueprintEditorModule.h"
+//#include "SDialogueEditorViewport.h"
+#include "Widgets/Input/SButton.h"
+#include "IPersonaToolkit.h"
+/**
+ * 
+ */
+ class UEzAbility;
+ class UEZAbilityBlueprint;
 
-class FEzAbilityEditorModule : public IModuleInterface
+
+class  FEzAbilityEditor : public FWorkflowCentricApplication
 {
 public:
+	FEzAbilityEditor();
+	~FEzAbilityEditor();
+
+	void InitEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost,  UEZAbilityBlueprint* InEzAbilityAsset);
+
+// 	/** IToolkit interface */
+// 	virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& TabManager) override;
+// 	virtual void UnregisterTabSpawners(const TSharedRef<class FTabManager>& TabManager) override;
+
+	static FText GetLocalizedMode(FName InMode);
+
+	TSharedRef<IPersonaToolkit> GetPersonaToolkit() const { return PersonaToolkit.ToSharedRef(); }
+
+
+	FName GetToolkitFName() const override;
+
+
+	FText GetBaseToolkitName() const override;
+
+
+	FString GetWorldCentricTabPrefix() const override;
 
-	/** IModuleInterface implementation */
-	virtual void StartupModule() override;
-	virtual void ShutdownModule() override;
+
+	void InvokeTab(const struct FTabId& TabId) override;
+
+
+	FLinearColor GetWorldCentricTabColorScale() const override;
+
+
+	void RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager) override;
+
+
+	void UnregisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager) override;
 
 public:
 
-	static const FName AbilityEditorAppId;
+	TObjectPtr<UEZAbilityBlueprint>		EzAbilityDataAsset;
 
-	virtual TSharedRef<class FEzAbilityEditor> CreateEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, class UEZAbilityBlueprint* EzAbilityAsset);
-};
+	static const FName					EzAbilityEditorMode;
+
+	/** Persona toolkit used to support skeletal mesh preview */
+	TSharedPtr<IPersonaToolkit>			PersonaToolkit;
 
-EZABILITYEDITOR_API DECLARE_LOG_CATEGORY_EXTERN(LogEzAbilityEditor, Log, All);
+
+// 	/* 图表 */
+// 	void RestoreEzAbilityGraph();
+// 
+// 	//virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager) override;
+// private:
+// 
+// 	/** Creates all internal widgets for the tabs to point at */
+// 	void CreateInternalWidgets();
+// 
+// 	/** Property View */
+// 	TSharedPtr<class IDetailsView> DetailsView;
+// 
+// 	TSharedPtr<SDialogueEditorViewport>		DialogueEditorViewport;
+// 
+// 	TSharedPtr<class SButton>	TestButton;
+// 
+// public:
+// 
+// 	static FText GetLocalizedMode(FName InMode);
+// 
+// 	static const FName DialogueEditorMode;
+// 
+// 	UMBRData* GetDialogueDeduction() const;
+// 
+// 	TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs& Args);
+// 
+// 	virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager) override;
+// 	void RegisterToolbarTab(const TSharedRef<class FTabManager>& InTabManager);
+	//virtual FName GetToolkitFName() const override { return "CustomNormalDistributionEditor"; }
+};

+ 2 - 10
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityEditorApplicationMode.h

@@ -1,4 +1,4 @@
-// Fill out your copyright notice in the Description page of Project Settings.
+// Fill out your copyright notice in the Description page of Project Settings.
 
 #pragma once
 
@@ -11,7 +11,7 @@
 /**
  * 
  */
-class  FEzAbilityEditorApplicationMode : public FBlueprintEditorApplicationMode
+class  FEzAbilityEditorApplicationMode : public FApplicationMode
 {
 public:
 	//FEzAbilityEditorApplicationMode(TSharedPtr<class FEzAbilityEditor> InEzAbilityEditor);
@@ -24,14 +24,6 @@ protected:
 // 	virtual void AddTabFactory(FCreateWorkflowTabFactory FactoryCreator) override;
 // 	virtual void RemoveTabFactory(FName TabFactoryID) override;
 
-
-
-	/** Create a tab factory used to configure preview scene settings */
-	virtual TSharedRef<FWorkflowTabFactory> CreateAdvancedPreviewSceneTabFactory(
-		const TSharedRef<class FWorkflowCentricApplication>& InHostingApp,
-		const TSharedRef<FAdvancedPreviewScene>& InPreviewScene
-	) const;
-
 	/** Gets the extensibility managers for outside entities to extend persona editor's menus and toolbars */
 	virtual TSharedPtr<FExtensibilityManager> GetMenuExtensibilityManager() { return MenuExtensibilityManager; }
 	virtual TSharedPtr<FExtensibilityManager> GetToolBarExtensibilityManager() { return ToolBarExtensibilityManager; }

+ 23 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityEditorModule.h

@@ -0,0 +1,23 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Modules/ModuleManager.h"
+
+class FEzAbilityEditorModule : public IModuleInterface
+{
+public:
+
+	/** IModuleInterface implementation */
+	virtual void StartupModule() override;
+	virtual void ShutdownModule() override;
+
+public:
+
+	static const FName AbilityEditorAppId;
+
+	virtual TSharedRef<class FEzAbilityEditor> CreateEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost, class UEZAbilityBlueprint* EzAbilityAsset);
+};
+
+EZABILITYEDITOR_API DECLARE_LOG_CATEGORY_EXTERN(LogEzAbilityEditor, Log, All);

+ 0 - 79
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityGraphEditor.h

@@ -1,79 +0,0 @@
-// Fill out your copyright notice in the Description page of Project Settings.
-
-#pragma once
-
-#include "CoreMinimal.h"
-#include "BlueprintEditor.h"
-//#include "SDialogueEditorViewport.h"
-#include "Widgets/Input/SButton.h"
-#include "IPersonaToolkit.h"
-/**
- * 
- */
- class UEzAbility;
- class UEZAbilityBlueprint;
-
-
- namespace EzAbilityEditorTabs
- {
-	// Tab identifiers
-	extern const FName DetailsTab;
-	extern const FName ViewportTab;
- }
-
-class  FEzAbilityEditor : public FBlueprintEditor
-{
-public:
-	FEzAbilityEditor();
-	~FEzAbilityEditor();
-
-	void InitEzAbilityEditor(const EToolkitMode::Type Mode, const TSharedPtr< class IToolkitHost >& InitToolkitHost,  UEZAbilityBlueprint* InEzAbilityAsset);
-
-// 	/** IToolkit interface */
-// 	virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& TabManager) override;
-// 	virtual void UnregisterTabSpawners(const TSharedRef<class FTabManager>& TabManager) override;
-
-	static FText GetLocalizedMode(FName InMode);
-
-	TSharedRef<IPersonaToolkit> GetPersonaToolkit() const { return PersonaToolkit.ToSharedRef(); }
-
-public:
-
-	TObjectPtr<UEZAbilityBlueprint>		EzAbilityDataAsset;
-
-	static const FName					EzAbilityEditorMode;
-
-	/** Persona toolkit used to support skeletal mesh preview */
-	TSharedPtr<IPersonaToolkit>			PersonaToolkit;
-
-
-// 	/* ͼ±í */
-// 	void RestoreEzAbilityGraph();
-// 
-// 	//virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager) override;
-// private:
-// 
-// 	/** Creates all internal widgets for the tabs to point at */
-// 	void CreateInternalWidgets();
-// 
-// 	/** Property View */
-// 	TSharedPtr<class IDetailsView> DetailsView;
-// 
-// 	TSharedPtr<SDialogueEditorViewport>		DialogueEditorViewport;
-// 
-// 	TSharedPtr<class SButton>	TestButton;
-// 
-// public:
-// 
-// 	static FText GetLocalizedMode(FName InMode);
-// 
-// 	static const FName DialogueEditorMode;
-// 
-// 	UMBRData* GetDialogueDeduction() const;
-// 
-// 	TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs& Args);
-// 
-// 	virtual void RegisterTabSpawners(const TSharedRef<class FTabManager>& InTabManager) override;
-// 	void RegisterToolbarTab(const TSharedRef<class FTabManager>& InTabManager);
-	//virtual FName GetToolkitFName() const override { return "CustomNormalDistributionEditor"; }
-};

+ 4 - 13
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityTabSpawners.h → Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityTimelineSummoner.h

@@ -1,4 +1,4 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
+// Copyright Epic Games, Inc. All Rights Reserved.
 
 #pragma once
 
@@ -30,25 +30,16 @@ class ISkeletonTree;
 class SPersonaDetails;
 class SToolTip;
 
-struct FAbilityTabs
-{
-	 static const FName EzAdvancedPreviewSceneSettingsID;
-};
 
-
-struct FEzAdvancedPreviewSceneTabSummoner : public FWorkflowTabFactory
+struct FEzAbilityTimelineSummoner : public FWorkflowTabFactory
 {
 public:
- 	FEzAdvancedPreviewSceneTabSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene); 
+	FEzAbilityTimelineSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene);
 	virtual TSharedRef<SWidget> CreateTabBody(const FWorkflowTabSpawnInfo& Info) const override;
 	virtual FText GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const override;
 	//TSharedPtr<SAbilityEditorViewport>		AbilityEditorViewport;
-private:
-	/** Customize the details of the scene setup object */
-	TSharedRef<class IDetailCustomization> CustomizePreviewSceneDescription();
 
-	/** Customize a preview mesh collection entry */
-	TSharedRef<class IPropertyTypeCustomization> CustomizePreviewMeshCollectionEntry();
+	static const FName EzAbilityTimelineSummonerID;
 
 private:
 	TWeakPtr<class FAdvancedPreviewScene> PreviewScene;

+ 1 - 6
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityViewModule.h

@@ -1,4 +1,4 @@
-// Copyright Epic Games, Inc. All Rights Reserved.
+// Copyright Epic Games, Inc. All Rights Reserved.
 
 #pragma once
 
@@ -51,11 +51,6 @@ public:
 	 */
 	virtual void ShutdownModule();
 
-	/** Create a tab factory used to configure preview scene settings */
-	virtual TSharedRef<FWorkflowTabFactory> CreateAdvancedPreviewSceneTabFactory(
-											const TSharedRef<class FWorkflowCentricApplication>& InHostingApp,
-											const TSharedRef<IPersonaPreviewScene>& InPreviewScene
-											) const;
 
 	/** Gets the extensibility managers for outside entities to extend persona editor's menus and toolbars */
 	virtual TSharedPtr<FExtensibilityManager> GetMenuExtensibilityManager() { return MenuExtensibilityManager; }

+ 50 - 0
Ability/Plugins/EzAbility/Source/EzAbilityEditor/Public/EzAbilityViewPortSummoner.h

@@ -0,0 +1,50 @@
+// Copyright Epic Games, Inc. All Rights Reserved.
+
+#pragma once
+
+#include "CoreMinimal.h"
+#include "Input/Reply.h"
+#include "Layout/Visibility.h"
+#include "Widgets/SWidget.h"
+#include "Widgets/DeclarativeSyntaxSupport.h"
+#include "IPersonaViewport.h"
+#include "Toolkits/AssetEditorToolkit.h"
+#include "WorkflowOrientedApp/WorkflowTabFactory.h"
+#include "WorkflowOrientedApp/WorkflowTabManager.h"
+#include "BlueprintEditor.h"
+#include "WorkflowOrientedApp/ApplicationMode.h"
+#include "IDocumentation.h"
+#include "PersonaModule.h"
+#include "IPersonaPreviewScene.h"
+#include "AnimationEditorViewportClient.h"
+#include "SSingleObjectDetailsPanel.h"
+#include "PersonaTabs.h"
+#include "AdvancedPreviewSceneModule.h"
+#include "SAbilityEditorViewport.h"
+
+#define LOCTEXT_NAMESPACE "AbilityMode"
+
+class IEditableSkeleton;
+class IPersonaToolkit;
+class ISkeletonTree;
+class SPersonaDetails;
+class SToolTip;
+
+
+struct FEzAbilityViewPortSummoner : public FWorkflowTabFactory
+{
+public:
+	FEzAbilityViewPortSummoner(TSharedPtr<class FAssetEditorToolkit> InHostingApp, const TSharedRef<FAdvancedPreviewScene>& InPreviewScene);
+	virtual TSharedRef<SWidget> CreateTabBody(const FWorkflowTabSpawnInfo& Info) const override;
+	virtual FText GetTabToolTipText(const FWorkflowTabSpawnInfo& Info) const override;
+	//TSharedPtr<SAbilityEditorViewport>		AbilityEditorViewport;
+
+	static const FName EzAbilityEditorViewPortSummonerID;
+
+private:
+	TWeakPtr<class FAdvancedPreviewScene> PreviewScene;
+
+};
+
+
+#undef LOCTEXT_NAMESPACE