Did a shitload more work. To what end? Not much.

This commit is contained in:
Jamie Greunbaum
2023-09-29 15:11:48 -04:00
parent de9865758a
commit cfe285b94d
22 changed files with 1049 additions and 410 deletions
@@ -1,4 +1,4 @@
// Copyright Dominik Pavlicek 2023. All Rights Reserved.
// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#include "AssetEditor_ComboActionGraph.h"
@@ -11,19 +11,18 @@
#include "ComboInputEditor.h"
#include "ComboActionGraph.h"
#include "Nodes/ComboActionGraphNode.h"
//#include "EditorCommands/FComboActionGraphEditorCommands.h"
//#include "AssetEditor/FAssetEditorToolbarComboActionGraph.h"
#include "Ed/EdComboActionGraph.h"
#include "Ed/EdComboActionGraphEdge.h"
#include "Ed/EdComboActionGraphNode.h"
#include "Settings/FComboActionGraphEditorStyle.h"
#include "Ed/FAssetEditorToolbarComboActionGraph.h"
#include "Ed/FComboActionGraphEditorCommands.h"
#include "ComboActionGraphSchema.h"
//#include "Layout/AssetEditorTabs.h"
//#include "Helpers/ComboActionGraphHelpers.h"
//#include "Helpers/ComboActionSystemEditorBFC.h"
//#include "Layout/ForceDirectedSolveLayoutStrategy.h"
//#include "Layout/ComboActionGraphLayoutStrategy.h"
//#include "Layout/TreeSolveLayoutStrategy.h"
#include "Layout/AssetEditorTabs.h"
#include "Layout/ComboActionGraphLayoutStrategy.h"
#include "Layout/ComboActionForceDirectedSolveLayoutStrategy.h"
#include "Layout/ComboActionTreeSolveLayoutStrategy.h"
//#include "Popups/MDSPopup_GraphValidation.h"
//#include "Search/ComboActionSearchUtils.h"
#include "Settings/ComboActionGraphEditorSettings.h"
@@ -36,9 +35,9 @@ DEFINE_LOG_CATEGORY(LogAssetEditorComboActionGraph);
#pragma region ConstantNames
const FName ComboActionGraphEditorAppName = FName(TEXT("ComboActionGraphEditorApp"));
//const FName FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID(TEXT("ComboActionGraphProperty"));
//const FName FAssetEditorTabs_ComboActionGraph::ViewportID(TEXT("Viewport"));
//const FName FAssetEditorTabs_ComboActionGraph::SearchToolbarID(TEXT("Search"));
const FName FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID(TEXT("ComboActionGraphProperty"));
const FName FAssetEditorTabs_ComboActionGraph::ViewportID(TEXT("Viewport"));
const FName FAssetEditorTabs_ComboActionGraph::SearchToolbarID(TEXT("Search"));
#pragma endregion
@@ -55,11 +54,11 @@ FAssetEditor_ComboActionGraph::~FAssetEditor_ComboActionGraph()
this->EditingGraph = nullptr;
UPackage::PackageSavedWithContextEvent.Remove(this->OnPackageSavedDelegateHandle);
//FGenericCommands::Unregister();
//FGraphEditorCommands::Unregister();
//FComboActionGraphEditorCommands::Unregister();
FGenericCommands::Unregister();
FGraphEditorCommands::Unregister();
FComboActionGraphEditorCommands::Unregister();
//this->ToolbarBuilder.Reset();
this->ToolbarBuilder.Reset();
}
void FAssetEditor_ComboActionGraph::OnPackageSaved(const FString& String, UPackage* Package, FObjectPostSaveContext ObjectPostSaveContext)
@@ -72,73 +71,73 @@ void FAssetEditor_ComboActionGraph::InitComboActionGraphAssetEditor(const EToolk
this->EditingGraph = Graph;
this->CreateEdGraph();
//FGenericCommands::Register();
//FGraphEditorCommands::Register();
//FComboActionGraphEditorCommands::Register();
FGenericCommands::Register();
FGraphEditorCommands::Register();
FComboActionGraphEditorCommands::Register();
//if (!this->ToolbarBuilder.IsValid())
//{
// this->ToolbarBuilder = MakeShareable(new FAssetEditorToolbarComboActionGraph(SharedThis(this)));
//}
if (!this->ToolbarBuilder.IsValid())
{
this->ToolbarBuilder = MakeShareable(new FAssetEditorToolbarComboActionGraph(SharedThis(this)));
}
this->BindCommands();
this->CreateInternalWidgets();
//TSharedPtr<FExtender> ToolbarExtender = MakeShareable(new FExtender);
//this->ToolbarBuilder->AddMounteaDialogueGraphToolbar(ToolbarExtender);
TSharedPtr<FExtender> ToolbarExtender = MakeShareable(new FExtender);
this->ToolbarBuilder->AddComboActionGraphToolbar(ToolbarExtender);
// Layout
//const TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_MounteaDialogueGraphEditor_LayoutV0.3")
// ->AddArea
// (
// FTabManager::NewPrimaryArea()->SetOrientation(Orient_Vertical)
// ->Split
// (
// FTabManager::NewSplitter()->SetOrientation(Orient_Horizontal)->SetSizeCoefficient(0.9f)
// ->Split
// (
// FTabManager::NewStack()
// ->SetSizeCoefficient(3.f)
// ->AddTab(FAssetEditorTabs_MounteaDialogueGraph::ViewportID, ETabState::OpenedTab)->SetHideTabWell(true)
// )
// ->Split
// (
// FTabManager::NewSplitter()->SetOrientation(Orient_Vertical)
// ->Split
// (
// FTabManager::NewSplitter()->SetOrientation(Orient_Vertical)
// ->Split
// (
// FTabManager::NewStack()
// ->SetSizeCoefficient(0.9f)
// ->AddTab(FAssetEditorTabs_MounteaDialogueGraph::MounteaDialogueGraphPropertyID, ETabState::OpenedTab)->SetHideTabWell(true)
// )
const TSharedRef<FTabManager::FLayout> StandaloneDefaultLayout = FTabManager::NewLayout("Standalone_ComboActionGraphEditor_LayoutV0.3")
->AddArea
(
FTabManager::NewPrimaryArea()->SetOrientation(EOrientation::Orient_Vertical)
->Split
(
FTabManager::NewSplitter()->SetOrientation(EOrientation::Orient_Horizontal)->SetSizeCoefficient(0.9f)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(3.f)
->AddTab(FAssetEditorTabs_ComboActionGraph::ViewportID, ETabState::OpenedTab)->SetHideTabWell(true)
)
->Split
(
FTabManager::NewSplitter()->SetOrientation(EOrientation::Orient_Vertical)
->Split
(
FTabManager::NewSplitter()->SetOrientation(EOrientation::Orient_Vertical)
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.9f)
->AddTab(FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID, ETabState::OpenedTab)->SetHideTabWell(true)
)
// ->Split
// (
// FTabManager::NewStack()
// ->SetSizeCoefficient(0.3f)
// ->AddTab(FAssetEditorTabs_MounteaDialogueGraph::SearchToolbarID, ETabState::OpenedTab)
// )
// )
// )
// )
// );
->Split
(
FTabManager::NewStack()
->SetSizeCoefficient(0.3f)
->AddTab(FAssetEditorTabs_ComboActionGraph::SearchToolbarID, ETabState::OpenedTab)
)
)
)
)
);
//const bool bCreateDefaultStandaloneMenu = true;
//const bool bCreateDefaultToolbar = true;
//FAssetEditorToolkit::InitAssetEditor
//(
// Mode,
// InitToolkitHost,
// ComboActionGraphEditorAppName,
// StandaloneDefaultLayout,
// bCreateDefaultStandaloneMenu,
// bCreateDefaultToolbar,
// EditingGraph,
// false
// );
const bool bCreateDefaultStandaloneMenu = true;
const bool bCreateDefaultToolbar = true;
FAssetEditorToolkit::InitAssetEditor
(
Mode,
InitToolkitHost,
ComboActionGraphEditorAppName,
StandaloneDefaultLayout,
bCreateDefaultStandaloneMenu,
bCreateDefaultToolbar,
EditingGraph,
false
);
this->RegenerateMenusAndToolbars();
}
@@ -150,20 +149,20 @@ UComboActionGraphEditorSettings *FAssetEditor_ComboActionGraph::GetSettings() co
void FAssetEditor_ComboActionGraph::RegisterTabSpawners(const TSharedRef<FTabManager> &InTabManager)
{
//WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_MounteaDialogueTreeEditor", "Mountea Dialogue Tree Editor"));
//auto WorkspaceMenuCategoryRef = WorkspaceMenuCategory.ToSharedRef();
this->WorkspaceMenuCategory = InTabManager->AddLocalWorkspaceMenuCategory(LOCTEXT("WorkspaceMenu_ComboActionTreeEditor", "Combo Action Tree Editor"));
auto WorkspaceMenuCategoryRef = this->WorkspaceMenuCategory.ToSharedRef();
//FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
FAssetEditorToolkit::RegisterTabSpawners(InTabManager);
//InTabManager->RegisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ViewportID, FOnSpawnTab::CreateSP(this, &FAssetEditor_ComboActionGraph::SpawnTab_Viewport))
// .SetDisplayName(LOCTEXT("GraphCanvasTab", "Viewport"))
// .SetGroup(WorkspaceMenuCategoryRef)
// .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "GraphEditor.EventGraph_16x"));
InTabManager->RegisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ViewportID, FOnSpawnTab::CreateSP(this, &FAssetEditor_ComboActionGraph::SpawnTab_Viewport))
.SetDisplayName(LOCTEXT("GraphCanvasTab", "Viewport"))
.SetGroup(WorkspaceMenuCategoryRef)
.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "GraphEditor.EventGraph_16x"));
//InTabManager->RegisterTabSpawner(FAssetEditorTabs_ComboActionGraph::MounteaDialogueGraphPropertyID, FOnSpawnTab::CreateSP(this, &FAssetEditor_ComboActionGraph::SpawnTab_Details))
// .SetDisplayName(LOCTEXT("DetailsTab", "Property"))
// .SetGroup(WorkspaceMenuCategoryRef)
// .SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details"));
InTabManager->RegisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID, FOnSpawnTab::CreateSP(this, &FAssetEditor_ComboActionGraph::SpawnTab_Details))
.SetDisplayName(LOCTEXT("DetailsTab", "Property"))
.SetGroup(WorkspaceMenuCategoryRef)
.SetIcon(FSlateIcon(FAppStyle::GetAppStyleSetName(), "LevelEditor.Tabs.Details"));
//InTabManager->RegisterTabSpawner(FAssetEditorTabs_ComboActionGraph::SearchToolbarID, FOnSpawnTab::CreateSP(this, &FAssetEditor_ComboActionGraph::SpawnTab_Search))
// .SetDisplayName(LOCTEXT("SearchTab", "Search"))
@@ -173,16 +172,16 @@ void FAssetEditor_ComboActionGraph::RegisterTabSpawners(const TSharedRef<FTabMan
void FAssetEditor_ComboActionGraph::UnregisterTabSpawners(const TSharedRef<FTabManager>& InTabManager)
{
//FAssetEditorToolkit::UnregisterTabSpawners(InTabManager);
FAssetEditorToolkit::UnregisterTabSpawners(InTabManager);
//InTabManager->UnregisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ViewportID);
//InTabManager->UnregisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID);
//InTabManager->UnregisterTabSpawner(FAssetEditorTabs_ComboActionGraph::SearchToolbarID);
InTabManager->UnregisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ViewportID);
InTabManager->UnregisterTabSpawner(FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID);
InTabManager->UnregisterTabSpawner(FAssetEditorTabs_ComboActionGraph::SearchToolbarID);
}
bool FAssetEditor_ComboActionGraph::CloseWindow()
bool FAssetEditor_ComboActionGraph::CloseWindow(EAssetEditorCloseReason InCloseReason)
{
const bool bSatisfied = FAssetEditorToolkit::CloseWindow();
const bool bSatisfied = FAssetEditorToolkit::CloseWindow(InCloseReason);
if (this->EditingGraph)
{
@@ -305,7 +304,7 @@ TSharedRef<SGraphEditor> FAssetEditor_ComboActionGraph::CreateViewportWidget()
const FComboInputEditorModule &Module = FModuleManager::GetModuleChecked<FComboInputEditorModule>("ComboInputEditor");
FGraphAppearanceInfo AppearanceInfo;
AppearanceInfo.CornerText = LOCTEXT("AppearanceCornerText_ComboActionGraph", "Combo Action Tree");
AppearanceInfo.CornerImage = Module.Get().ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.CornerImage"));
AppearanceInfo.CornerImage = Module.Get().GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Graph.CornerImage"));
AppearanceInfo.InstructionText = LOCTEXT("InstructionText_ComboActionGraph", "Place action nodes by right clicking.");
this->CreateCommandList();
@@ -326,25 +325,19 @@ TSharedRef<SGraphEditor> FAssetEditor_ComboActionGraph::CreateViewportWidget()
void FAssetEditor_ComboActionGraph::BindCommands()
{
//this->ToolkitCommands->MapAction
//(
// FComboActionGraphEditorCommands::Get().AutoArrange,
// FExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::AutoArrange),
// FCanExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::CanAutoArrange)
//);
this->ToolkitCommands->MapAction
(
FComboActionGraphEditorCommands::Get().AutoArrange,
FExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::AutoArrange),
FCanExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::CanAutoArrange)
);
//this->ToolkitCommands->MapAction
//(
// FComboActionGraphEditorCommands::Get().ValidateGraph,
// FExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::ValidateGraph),
// FCanExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::CanValidateGraph)
//);
//
//this->ToolkitCommands->MapAction
//(
// FComboActionGraphEditorCommands::Get().FindInDialogue,
// FExecuteAction::CreateLambda([this] { this->SummonSearchUI(); })
//);
this->ToolkitCommands->MapAction
(
FComboActionGraphEditorCommands::Get().ValidateGraph,
FExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::ValidateGraph),
FCanExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::CanValidateGraph)
);
}
void FAssetEditor_ComboActionGraph::CreateEdGraph()
@@ -392,13 +385,13 @@ void FAssetEditor_ComboActionGraph::CreateCommandList()
this->GraphEditorCommands = MakeShareable(new FUICommandList);
//this->GraphEditorCommands->MapAction(FComboActionGraphEditorCommands::Get().AutoArrange,
// FExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::AutoArrange),
// FCanExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::CanAutoArrange));
this->GraphEditorCommands->MapAction(FComboActionGraphEditorCommands::Get().AutoArrange,
FExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::AutoArrange),
FCanExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::CanAutoArrange));
//this->GraphEditorCommands->MapAction(FComboActionGraphEditorCommands::Get().ValidateGraph,
// FExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::ValidateGraph),
// FCanExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::CanValidateGraph));
this->GraphEditorCommands->MapAction(FComboActionGraphEditorCommands::Get().ValidateGraph,
FExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::ValidateGraph),
FCanExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::CanValidateGraph));
this->GraphEditorCommands->MapAction(FGenericCommands::Get().SelectAll,
FExecuteAction::CreateRaw(this, &FAssetEditor_ComboActionGraph::SelectAllNodes),
@@ -434,12 +427,6 @@ void FAssetEditor_ComboActionGraph::CreateCommandList()
FExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::OnRenameNode),
FCanExecuteAction::CreateSP(this, &FAssetEditor_ComboActionGraph::CanRenameNodes)
);
//this->ToolkitCommands->MapAction
//(
// FComboActionGraphEditorCommands::Get().FindInDialogue,
// FExecuteAction::CreateLambda([this] { SummonSearchUI(); })
//);
}
TSharedPtr<SGraphEditor> FAssetEditor_ComboActionGraph::GetCurrentGraphEditor() const
@@ -473,20 +460,6 @@ void FAssetEditor_ComboActionGraph::RebuildComboActionGraph()
EdGraph->RebuildComboActionGraph();
}
void FAssetEditor_ComboActionGraph::SummonSearchUI(FString NewSearch, bool bSelectFirstResult)
{
//TSharedPtr<SMounteaDialogueSearch> FindResultsToUse;
//FindResultsToUse = FindResultsView;
//FMounteaDialogueSearchHelpers::InvokeTab(TabManager, FAssetEditorTabs_MounteaDialogueGraph::SearchToolbarID);
//if (FindResultsToUse.IsValid())
//{
// FMounteaDialogueSearchFilter Filter;
// Filter.SearchString = NewSearch;
// FindResultsToUse->FocusForUse(Filter, bSelectFirstResult);
//}
}
void FAssetEditor_ComboActionGraph::SelectAllNodes()
{
TSharedPtr<SGraphEditor> CurrentGraphEditor = this->GetCurrentGraphEditor();
@@ -625,7 +598,7 @@ void FAssetEditor_ComboActionGraph::CopySelectedNodes()
for (FGraphPanelSelectionSet::TIterator SelectedIter(SelectedNodes); SelectedIter; ++SelectedIter)
{
UEdGraphNode* Node = Cast<UEdGraphNode>(*SelectedIter);
UEdGraphNode *Node = Cast<UEdGraphNode>(*SelectedIter);
if (Node == nullptr)
{
SelectedIter.RemoveCurrent();
@@ -685,7 +658,7 @@ void FAssetEditor_ComboActionGraph::PasteNodesHere(const FVector2D& Location)
return;
}
// Select the newly pasted stuff
UEdGraph* EdGraph = CurrentGraphEditor->GetCurrentGraph();
UEdGraph *EdGraph = CurrentGraphEditor->GetCurrentGraph();
{
const FScopedTransaction Transaction(FGenericCommands::Get().Paste->GetDescription());
@@ -748,7 +721,7 @@ void FAssetEditor_ComboActionGraph::PasteNodesHere(const FVector2D& Location)
// Update UI
CurrentGraphEditor->NotifyGraphChanged();
UObject* GraphOwner = EdGraph->GetOuter();
UObject *GraphOwner = EdGraph->GetOuter();
if (GraphOwner)
{
GraphOwner->PostEditChange();
@@ -802,28 +775,28 @@ void FAssetEditor_ComboActionGraph::AutoArrange()
EdGraph->Modify(true);
//UComboActionGraphLayoutStrategy *LayoutStrategy = nullptr;
//switch (this->ComboActionGraphEditorSettings->GetAutoLayoutStrategy())
//{
// case EComboActionAutoLayoutStrategyType::Tree:
// LayoutStrategy = NewObject<UComboActionGraphLayoutStrategy>(EdGraph, UTreeSolveLayoutStrategy::StaticClass());
// break;
// case EComboActionAutoLayoutStrategyType::ForceDirected:
// LayoutStrategy = NewObject<UComboActionGraphLayoutStrategy>(EdGraph, UForceDirectedSolveLayoutStrategy::StaticClass());
// break;
// default:
// break;
//}
UComboActionGraphLayoutStrategy *LayoutStrategy = nullptr;
switch (this->ComboActionGraphEditorSettings->GetAutoLayoutStrategy())
{
case EComboActionAutoLayoutStrategyType::Tree:
LayoutStrategy = NewObject<UComboActionGraphLayoutStrategy>(EdGraph, UComboActionTreeSolveLayoutStrategy::StaticClass());
break;
case EComboActionAutoLayoutStrategyType::ForceDirected:
LayoutStrategy = NewObject<UComboActionGraphLayoutStrategy>(EdGraph, UComboActionForceDirectedSolveLayoutStrategy::StaticClass());
break;
default:
break;
}
//if (LayoutStrategy != nullptr)
//{
// LayoutStrategy->Layout(EdGraph);
// LayoutStrategy->ConditionalBeginDestroy();
//}
//else
//{
// LOG_ERROR(TEXT("[AutoArrange] LayoutStrategy is null."));
//}
if (LayoutStrategy != nullptr)
{
LayoutStrategy->Layout(EdGraph);
LayoutStrategy->ConditionalBeginDestroy();
}
else
{
UE_LOG(LogAssetEditorComboActionGraph, Error, TEXT("[AutoArrange] LayoutStrategy is null."));
}
}
bool FAssetEditor_ComboActionGraph::CanAutoArrange() const
@@ -931,7 +904,7 @@ void FAssetEditor_ComboActionGraph::OnFinishedChangingProperties(const FProperty
TSharedRef<SDockTab> FAssetEditor_ComboActionGraph::SpawnTab_Viewport(const FSpawnTabArgs &Args)
{
//check(Args.GetTabId() == FAssetEditorTabs_ComboActionGraph::ViewportID);
check(Args.GetTabId() == FAssetEditorTabs_ComboActionGraph::ViewportID);
TSharedRef<SDockTab> SpawnedTab = SNew(SDockTab)
.Label(LOCTEXT("ViewportTab_Title", "Viewport"));
@@ -946,7 +919,7 @@ TSharedRef<SDockTab> FAssetEditor_ComboActionGraph::SpawnTab_Viewport(const FSpa
TSharedRef<SDockTab> FAssetEditor_ComboActionGraph::SpawnTab_Details(const FSpawnTabArgs& Args)
{
//check(Args.GetTabId() == FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID);
check(Args.GetTabId() == FAssetEditorTabs_ComboActionGraph::ComboActionGraphPropertyID);
auto DockTab = SNew(SDockTab)
.Label(LOCTEXT("Details_Title", "Property"))
@@ -958,21 +931,5 @@ TSharedRef<SDockTab> FAssetEditor_ComboActionGraph::SpawnTab_Details(const FSpaw
return DockTab;
}
TSharedRef<SDockTab> FAssetEditor_ComboActionGraph::SpawnTab_Search(const FSpawnTabArgs& Args)
{
//check(Args.GetTabId() == FAssetEditorTabs_MounteaDialogueGraph::SearchToolbarID);
//auto DockTab = SNew(SDockTab)
// .Label(LOCTEXT("Search_Title", "Search"))
// [
// this->FindResultsView.ToSharedRef()
// ];
//DockTab->SetTabIcon(FAppStyle::GetBrush("Kismet.Tabs.FindResults"));
//return DockTab;
return SNew(SDockTab);
}
#undef LOCTEXT_NAMESPACE
@@ -1,8 +1,10 @@
// Copyright Dominik Pavlicek 2023. All Rights Reserved.
// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#pragma once
//#include "Search/SComboActionSearch.h"
#include "CoreMinimal.h"
#include "Toolkits/AssetEditorToolkit.h"
DECLARE_LOG_CATEGORY_EXTERN(LogAssetEditorComboActionGraph, Log, All);
@@ -26,7 +28,7 @@ public:
virtual void RegisterTabSpawners(const TSharedRef<FTabManager> &InTabManager) override;
virtual void UnregisterTabSpawners(const TSharedRef<FTabManager> &InTabManager) override;
virtual bool CloseWindow() override;
virtual bool CloseWindow(EAssetEditorCloseReason InCloseReason) override;
// End of IToolkit interface
#pragma endregion
@@ -47,7 +49,7 @@ public:
#pragma region Toolbar
void UpdateToolbar();
//TSharedPtr<FAssetEditorToolbarComboActionGraph> GetToolbarBuilder() { return ToolbarBuilder; }
TSharedPtr<class FAssetEditorToolbarComboActionGraph> GetToolbarBuilder() { return this->ToolbarBuilder; }
void RegisterToolbarTab(const TSharedRef<class FTabManager> &InTabManager);
#pragma endregion
@@ -94,8 +96,6 @@ private:
void RebuildComboActionGraph();
void SummonSearchUI(FString NewSearch = FString(), bool bSelectFirstResult = false);
#pragma region GraphEditorCommands
void SelectAllNodes();
@@ -132,7 +132,7 @@ private:
void OnFinishedChangingProperties(const FPropertyChangedEvent &PropertyChangedEvent);
//void OnPackageSaved(const FString &PackageFileName, UObject *Outer);
void OnPackageSaved(const FString &PackageFileName, UObject *Outer);
#pragma endregion
@@ -142,21 +142,20 @@ private:
TSharedRef<SDockTab> SpawnTab_Viewport(const FSpawnTabArgs &Args);
TSharedRef<SDockTab> SpawnTab_Details(const FSpawnTabArgs &Args);
TSharedRef<SDockTab> SpawnTab_Search(const FSpawnTabArgs &Args);
class UComboActionGraphEditorSettings *ComboActionGraphEditorSettings;
class UComboActionGraph *EditingGraph;
//Toolbar
//TSharedPtr<FAssetEditorToolbarComboActionGraph> ToolbarBuilder;
TSharedPtr<FAssetEditorToolbarComboActionGraph> ToolbarBuilder;
/** Handle to the registered OnPackageSave delegate */
FDelegateHandle OnPackageSavedDelegateHandle;
TSharedPtr<SGraphEditor> ViewportWidget;
TSharedPtr<class IDetailsView> PropertyWidget;
//TSharedPtr<SComboActionSearch> FindResultsView;
//TSharedPtr<class SComboActionSearch> FindResultsView;
/** The command list for this editor */
TSharedPtr<FUICommandList> GraphEditorCommands;
@@ -6,7 +6,6 @@
#include "Helpers/ComboActionEditorBFC.h"
#include "Nodes/ComboActionGraphNode.h"
#include "Settings/ComboActionGraphEditorSettings.h"
#include "Settings/FComboActionGraphEditorStyle.h"
#define LOCTEXT_NAMESPACE "UEdComboActionGraphNode"
@@ -164,7 +163,7 @@ FText UEdComboActionGraphNode::GetTooltipText() const
FSlateIcon UEdComboActionGraphNode::GetIconAndTint(FLinearColor& OutColor) const
{
static const FSlateIcon Icon = FSlateIcon(FComboActionGraphEditorStyle::GetAppStyleSetName(), "MDSStyleSet.Node.Icon.small");
static const FSlateIcon Icon = FSlateIcon(FComboInputSlateStyle::GetAppStyleSetName(), "MDSStyleSet.Node.Icon.small");
OutColor = this->ComboActionGraphNode->GetBackgroundColor();
return Icon;
}
@@ -0,0 +1,44 @@
// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#include "FAssetEditorToolbarComboActionGraph.h"
#include "ComboInputEditor.h"
#include "Ed/AssetEditor_ComboActionGraph.h"
#include "Ed/FComboActionGraphEditorCommands.h"
#define LOCTEXT_NAMESPACE "AssetEditorToolbarComboActionGraph"
void FAssetEditorToolbarComboActionGraph::AddComboActionGraphToolbar(TSharedPtr<FExtender> Extender)
{
check(this->ComboActionGraphEditor.IsValid());
TSharedPtr<FAssetEditor_ComboActionGraph> ComboActionGraphEditorPtr = this->ComboActionGraphEditor.Pin();
TSharedPtr<FExtender> ToolbarExtender = MakeShareable(new FExtender);
ToolbarExtender->AddToolBarExtension("Asset", EExtensionHook::After, ComboActionGraphEditorPtr->GetToolkitCommands(), FToolBarExtensionDelegate::CreateSP( this, &FAssetEditorToolbarComboActionGraph::FillComboActionGraphToolbar ));
ComboActionGraphEditorPtr->AddToolbarExtender(ToolbarExtender);
}
void FAssetEditorToolbarComboActionGraph::FillComboActionGraphToolbar(FToolBarBuilder &ToolbarBuilder)
{
check(this->ComboActionGraphEditor.IsValid());
TSharedPtr<FAssetEditor_ComboActionGraph> MounteaDialogueGraphEditorPtr = this->ComboActionGraphEditor.Pin();
ToolbarBuilder.BeginSection("Util");
{
ToolbarBuilder.AddToolBarButton(FComboActionGraphEditorCommands::Get().AutoArrange,
NAME_None,
LOCTEXT("AutoArrange_Label", "Auto Arrange"),
LOCTEXT("AutoArrange_ToolTip", "ALPHA version!\n\nTries its best to arrange Graph Nodes. Don't judge too harshly please."),
FSlateIcon(FComboInputSlateStyle::GetAppStyleSetName(), "MDSStyleSet.AutoArrange"));
ToolbarBuilder.AddToolBarButton(FComboActionGraphEditorCommands::Get().ValidateGraph,
NAME_None,
LOCTEXT("ValidateGraph_Label", "Validate Graph"),
LOCTEXT("ValidateGraph_ToolTip", "Validates Graph if there are any invalid connections or broken data."),
FSlateIcon(FComboInputSlateStyle::GetAppStyleSetName(), "MDSStyleSet.ValidateGraph"));
}
ToolbarBuilder.EndSection();
}
#undef LOCTEXT_NAMESPACE
@@ -0,0 +1,22 @@
// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
class FAssetEditorToolbarComboActionGraph : public TSharedFromThis<FAssetEditorToolbarComboActionGraph>
{
public:
FAssetEditorToolbarComboActionGraph(TSharedPtr<FAssetEditor_ComboActionGraph> InComboActionGraphEditor)
: ComboActionGraphEditor(InComboActionGraphEditor) {}
void AddComboActionGraphToolbar(TSharedPtr<FExtender> Extender);
private:
void FillComboActionGraphToolbar(FToolBarBuilder &ToolbarBuilder);
protected:
TWeakPtr<FAssetEditor_ComboActionGraph> ComboActionGraphEditor;
};
@@ -0,0 +1,30 @@
// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#include "FComboActionGraphEditorCommands.h"
#define LOCTEXT_NAMESPACE "ComboActionGraphEditorCommands"
void FComboActionGraphEditorCommands::RegisterCommands()
{
UI_COMMAND
(
AutoArrange,
"Auto Arrange",
"Auto Arrange",
EUserInterfaceActionType::Button,
FInputChord()
);
UI_COMMAND
(
ValidateGraph,
"Validate Graph",
"Validate Graph",
EUserInterfaceActionType::Button,
FInputChord()
);
}
#undef LOCTEXT_NAMESPACE
@@ -0,0 +1,19 @@
// ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
class FComboActionGraphEditorCommands : public TCommands<FComboActionGraphEditorCommands>
{
public:
FComboActionGraphEditorCommands()
: TCommands<FComboActionGraphEditorCommands>("ComboActionGraphEditor", NSLOCTEXT("Contexts", "ComboActionGraphEditor", "Combo Action Graph Editor"), NAME_None, FAppStyle::GetAppStyleSetName())
{
}
TSharedPtr<FUICommandInfo> AutoArrange;
TSharedPtr<FUICommandInfo> ValidateGraph;
virtual void RegisterCommands() override;
};
@@ -6,7 +6,6 @@
#include "Ed/EdComboActionGraphEdge.h"
#include "Ed/EdComboActionGraphNode.h"
#include "Settings/ComboActionGraphEditorSettings.h"
#include "Settings/FComboActionGraphEditorStyle.h"
DEFINE_LOG_CATEGORY(LogConnectionDrawingPolicy_ComboActionGraph);
@@ -21,16 +20,16 @@ FConnectionDrawingPolicy_ComboActionGraph::FConnectionDrawingPolicy_ComboActionG
switch (GraphEditorSettings->GetArrowType())
{
case EComboActionArrowType::SimpleArrow:
ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.SimpleArrow"));
ArrowImage = ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Graph.SimpleArrow"));
break;
case EComboActionArrowType::HollowArrow:
ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.HollowArrow"));
ArrowImage = ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Graph.HollowArrow"));
break;
case EComboActionArrowType::FancyArrow:
ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.FancyArrow"));
ArrowImage = ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Graph.FancyArrow"));
break;
case EComboActionArrowType::Bubble:
ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.Bubble"));
ArrowImage = ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Graph.Bubble"));
break;
case EComboActionArrowType::None:
default:
@@ -16,7 +16,6 @@
#include "Blueprint/UserWidget.h"
#include "ComboActionGraph.h"
#include "Settings/ComboActionGraphEditorSettings.h"
#include "Settings/FComboActionGraphEditorStyle.h"
#include "Widgets/Layout/SGridPanel.h"
#include "Widgets/Layout/SScaleBox.h"
@@ -86,13 +85,13 @@ protected:
switch (GraphEditorSettings->GetNodeType())
{
case EComboActionNodeType::SoftCorners:
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.TextSoftEdges");
case EComboActionNodeType::HardCorners:
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextHardEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.TextHardEdges");
}
}
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.PinDocksOverlay"));
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Graph.PinDocksOverlay"));
}
};
@@ -131,7 +130,7 @@ void SEdComboActionGraphNode::OnMouseLeave(const FPointerEvent& MouseEvent)
const FSlateBrush *SEdComboActionGraphNode::GetIndexBrush() const
{
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.TextSoftEdges");
}
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
@@ -160,7 +159,7 @@ void SEdComboActionGraphNode::UpdateGraphNode()
this->ContentScale.Bind(this, &SGraphNode::GetContentScale);
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
const FSlateBrush *CircleBrush = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Node.IndexCircle"));
const FSlateBrush *CircleBrush = ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Node.IndexCircle"));
this->GetOrAddSlot(ENodeZone::Left)
.SlotOffset(TAttribute<FVector2D>(this, &SEdComboActionGraphNode::GetIndexSlotOffset))
.SlotSize(TAttribute<FVector2D>(this, &SEdComboActionGraphNode::GetIndexSlotSize))
@@ -382,7 +381,7 @@ void SEdComboActionGraphNode::UpdateGraphNode()
.AutoHeight()
[
SAssignNew(InlineEditableText, SInlineEditableTextBlock)
.Style(ComboInputEditorModule.ComboActionGraphEditorStyleSet.Get(), "MDSStyleSet.NodeTitleInlineEditableText")
.Style(ComboInputEditorModule.GetComboInputEditorStyleSet().Get(), "MDSStyleSet.NodeTitleInlineEditableText")
.Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle)
.OnVerifyTextChanged(
this, &SEdComboActionGraphNode::OnVerifyNameTextChanged)
@@ -1004,13 +1003,13 @@ const FSlateBrush *SEdComboActionGraphNode::GetNodeTypeBrush() const
switch (GraphEditorSettings->GetNodeType())
{
case EComboActionNodeType::SoftCorners:
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.SoftEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.SoftEdges");
case EComboActionNodeType::HardCorners:
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.HardEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.HardEdges");
}
}
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.SoftEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.SoftEdges");
}
const FSlateBrush *SEdComboActionGraphNode::GetTextNodeTypeBrush() const
@@ -1021,13 +1020,13 @@ const FSlateBrush *SEdComboActionGraphNode::GetTextNodeTypeBrush() const
switch (GraphEditorSettings->GetNodeType())
{
case EComboActionNodeType::SoftCorners:
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.TextSoftEdges");
case EComboActionNodeType::HardCorners:
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextHardEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.TextHardEdges");
}
}
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush("MDSStyleSet.Node.TextSoftEdges");
}
FSlateColor SEdComboActionGraphNode::GetBorderBackgroundColor() const
@@ -1101,7 +1100,7 @@ const FSlateBrush*SEdComboActionGraphNode::GetInheritsImageBrush() const
}
}
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush( bHasDecorators ? "MDSStyleSet.Icon.OK" : "MDSStyleSet.Icon.Error" );
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush( bHasDecorators ? "MDSStyleSet.Icon.OK" : "MDSStyleSet.Icon.Error" );
}
FSlateColor SEdComboActionGraphNode::GetInheritsImageTint() const
@@ -1121,7 +1120,7 @@ FSlateColor SEdComboActionGraphNode::GetInheritsImageTint() const
const FSlateBrush*SEdComboActionGraphNode::GetBulletPointImageBrush() const
{
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush( "MDSStyleSet.Icon.BulletPoint" );
return ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush( "MDSStyleSet.Icon.BulletPoint" );
}
FText SEdComboActionGraphNode::GetIndexOverlayTooltipText() const
@@ -3,19 +3,18 @@
#include "SEdComboActionGraphNodeIndex.h"
#include "ComboInputEditor.h"
#include "Settings/FComboActionGraphEditorStyle.h"
void SEdComboActionGraphNodeIndex::Construct(const FArguments &InArgs)
{
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
const FSlateBrush* CircleBrush = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Node.IndexCircle"));
const FSlateBrush* CircleBrush = ComboInputEditorModule.GetComboInputEditorStyleSet()->GetBrush(TEXT("MDSStyleSet.Node.IndexCircle"));
ChildSlot
[
SNew(SOverlay)
+SOverlay::Slot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
.HAlign(EHorizontalAlignment::HAlign_Fill)
.VAlign(EVerticalAlignment::VAlign_Fill)
[
// Add a dummy box here to make sure the widget doesnt get smaller than the brush
SNew(SBox)
@@ -24,15 +23,15 @@ void SEdComboActionGraphNodeIndex::Construct(const FArguments &InArgs)
]
+SOverlay::Slot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
.HAlign(EHorizontalAlignment::HAlign_Fill)
.VAlign(EVerticalAlignment::VAlign_Fill)
[
SNew(SBorder)
.BorderImage(CircleBrush)
.BorderBackgroundColor(this, &SEdComboActionGraphNodeIndex::GetBackgroundColor)
.Padding(FMargin(4.0f))
.VAlign(VAlign_Center)
.HAlign(HAlign_Center)
.VAlign(EVerticalAlignment::VAlign_Center)
.HAlign(EHorizontalAlignment::HAlign_Center)
]
];
}