Code compiles now, at least. That's a start.

This commit is contained in:
Jamie Greunbaum 2023-09-27 12:21:35 -04:00
parent ea4dd54ec9
commit 8b6cfafc45
12 changed files with 111 additions and 130 deletions

View File

@ -25,10 +25,16 @@ public class ComboInputEditor : ModuleRules
{ {
"Core", "Core",
"CoreUObject", "CoreUObject",
"Engine",
"UnrealEd",
"AssetTools", "AssetTools",
"Slate",
"SlateCore", "SlateCore",
"Projects", "Projects",
"GraphEditor" "GraphEditor",
"DeveloperSettings",
"ToolMenus",
} }
); );

View File

@ -14,6 +14,8 @@
#define LOCTEXT_NAMESPACE "ComboActionGraph" #define LOCTEXT_NAMESPACE "ComboActionGraph"
int32 UComboActionGraphSchema::CurrentCacheRefreshID = 0;
UEdGraphNode *FAssetSchemaAction_ComboActionGraphSchema_NewNode::PerformAction(UEdGraph *ParentGraph, UEdGraphPin *FromPin, const FVector2D Location, bool bSelectNewNode) UEdGraphNode *FAssetSchemaAction_ComboActionGraphSchema_NewNode::PerformAction(UEdGraph *ParentGraph, UEdGraphPin *FromPin, const FVector2D Location, bool bSelectNewNode)
{ {

View File

@ -7,6 +7,7 @@
#include "AssetTypeActions/AssetTypeActions_DataAsset.h" #include "AssetTypeActions/AssetTypeActions_DataAsset.h"
#include "Interfaces/IPluginManager.h" #include "Interfaces/IPluginManager.h"
#include "Settings/FComboActionGraphEditorStyle.h"
#include "Styling/SlateStyle.h" #include "Styling/SlateStyle.h"
#include "Styling/SlateStyleMacros.h" #include "Styling/SlateStyleMacros.h"
#include "Styling/SlateStyleRegistry.h" #include "Styling/SlateStyleRegistry.h"
@ -159,8 +160,12 @@ void FComboInputEditorModule::StartupModule()
this->RegisterAssetTypeActions(AssetTools, MakeShareable(new FAssetTypeActions_ComboInputAsset)); this->RegisterAssetTypeActions(AssetTools, MakeShareable(new FAssetTypeActions_ComboInputAsset));
// Make a new style set for Combo Input, which will register any custom icons for the types in this plugin // Make a new style set for Combo Input, which will register any custom icons for the types in this plugin
StyleSet = MakeShared<FComboInputSlateStyle>(); this->ComboInputEditorStyleSet = MakeShared<FComboInputSlateStyle>();
FSlateStyleRegistry::RegisterSlateStyle(*StyleSet.Get()); FSlateStyleRegistry::RegisterSlateStyle(*this->ComboInputEditorStyleSet.Get());
// Make a new style set for Combo Action Graph
this->ComboActionGraphEditorStyleSet = MakeShared<FComboActionGraphEditorStyle>();
FSlateStyleRegistry::RegisterSlateStyle(*this->ComboActionGraphEditorStyleSet.Get());
} }
void FComboInputEditorModule::ShutdownModule() void FComboInputEditorModule::ShutdownModule()

View File

@ -2,11 +2,11 @@
#include "Ed/EdComboActionGraph.h" #include "Ed/EdComboActionGraph.h"
#include "ComboActionGraph.h"
#include "Ed/EdComboActionGraphEdge.h" #include "Ed/EdComboActionGraphEdge.h"
#include "Ed/EdComboActionGraphNode.h" #include "Ed/EdComboActionGraphNode.h"
#include "ComboActionGraph.h"
#include "Nodes/ComboActionGraphNode.h"
#include "Nodes/ComboActionGraphEdge.h" #include "Nodes/ComboActionGraphEdge.h"
#include "Nodes/ComboActionGraphNode.h"
//#include "Helpers/MounteaDialogueGraphEditorHelpers.h" //#include "Helpers/MounteaDialogueGraphEditorHelpers.h"
//#include "Helpers/MounteaDialogueGraphEditorUtilities.h" //#include "Helpers/MounteaDialogueGraphEditorUtilities.h"
//#include "Helpers/MounteaDialogueSystemEditorBFC.h" //#include "Helpers/MounteaDialogueSystemEditorBFC.h"

View File

@ -11,7 +11,7 @@ DECLARE_LOG_CATEGORY_EXTERN(LogEdComboActionGraph, Log, All);
UCLASS() UCLASS()
class COMBOINPUT_API UEdComboActionGraph : public UEdGraph class COMBOINPUTEDITOR_API UEdComboActionGraph : public UEdGraph
{ {
GENERATED_BODY() GENERATED_BODY()
@ -32,10 +32,10 @@ public:
public: public:
UPROPERTY(Transient) UPROPERTY(Transient)
TMap<class UComboActionGraphNode*, class UEdComboActionGraphNode*> NodeMap; TMap<class UComboActionGraphNode*, class UEdComboActionGraphNode*> NodeMap;
UPROPERTY(Transient) UPROPERTY(Transient)
TMap<class UComboActionGraphEdge*, class UEdComboActionGraphEdge*> EdgeMap; TMap<class UComboActionGraphEdge*, class UEdComboActionGraphEdge*> EdgeMap;
protected: protected:

View File

@ -2,12 +2,12 @@
#include "SEdComboActionGraphNode.h" #include "SEdComboActionGraphNode.h"
#include "ComboInputEditor.h"
#include "Nodes/ComboActionGraphNode.h" #include "Nodes/ComboActionGraphNode.h"
#include "Helpers/ComboActionGraphColors.h" #include "Helpers/ComboActionGraphColors.h"
#include "Ed/SEdComboActionGraphNodeIndex.h" #include "Ed/SEdComboActionGraphNodeIndex.h"
#include "Ed/EdComboActionGraphNode.h" #include "Ed/EdComboActionGraphNode.h"
//#include "SLevelOfDetailBranchNode.h"
#include "Widgets/Text/SInlineEditableTextBlock.h" #include "Widgets/Text/SInlineEditableTextBlock.h"
#include "SCommentBubble.h" #include "SCommentBubble.h"
#include "SlateOptMacros.h" #include "SlateOptMacros.h"
@ -79,18 +79,20 @@ protected:
const FSlateBrush *GetPinBorder() const const FSlateBrush *GetPinBorder() const
{ {
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
if (const UComboActionGraphEditorSettings *GraphEditorSettings = GetMutableDefault<UComboActionGraphEditorSettings>()) if (const UComboActionGraphEditorSettings *GraphEditorSettings = GetMutableDefault<UComboActionGraphEditorSettings>())
{ {
switch (GraphEditorSettings->GetNodeType()) switch (GraphEditorSettings->GetNodeType())
{ {
case EComboActionNodeType::SoftCorners: case EComboActionNodeType::SoftCorners:
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.TextSoftEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
case EComboActionNodeType::HardCorners: case EComboActionNodeType::HardCorners:
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.TextHardEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextHardEdges");
} }
} }
return FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Graph.PinDocksOverlay")); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.PinDocksOverlay"));
} }
}; };
@ -128,7 +130,8 @@ void SEdComboActionGraphNode::OnMouseLeave(const FPointerEvent& MouseEvent)
const FSlateBrush *SEdComboActionGraphNode::GetIndexBrush() const const FSlateBrush *SEdComboActionGraphNode::GetIndexBrush() const
{ {
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.TextSoftEdges"); FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
} }
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
@ -156,7 +159,8 @@ void SEdComboActionGraphNode::UpdateGraphNode()
this->ContentScale.Bind(this, &SGraphNode::GetContentScale); this->ContentScale.Bind(this, &SGraphNode::GetContentScale);
const FSlateBrush* CircleBrush = FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Node.IndexCircle")); FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
const FSlateBrush *CircleBrush = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Node.IndexCircle"));
this->GetOrAddSlot(ENodeZone::Left) this->GetOrAddSlot(ENodeZone::Left)
.SlotOffset(TAttribute<FVector2D>(this, &SEdComboActionGraphNode::GetIndexSlotOffset)) .SlotOffset(TAttribute<FVector2D>(this, &SEdComboActionGraphNode::GetIndexSlotOffset))
.SlotSize(TAttribute<FVector2D>(this, &SEdComboActionGraphNode::GetIndexSlotSize)) .SlotSize(TAttribute<FVector2D>(this, &SEdComboActionGraphNode::GetIndexSlotSize))
@ -378,7 +382,7 @@ void SEdComboActionGraphNode::UpdateGraphNode()
.AutoHeight() .AutoHeight()
[ [
SAssignNew(InlineEditableText, SInlineEditableTextBlock) SAssignNew(InlineEditableText, SInlineEditableTextBlock)
.Style(FComboActionGraphEditorStyle::Get(), "MDSStyleSet.NodeTitleInlineEditableText") .Style(ComboInputEditorModule.ComboActionGraphEditorStyleSet.Get(), "MDSStyleSet.NodeTitleInlineEditableText")
.Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle) .Text(NodeTitle.Get(), &SNodeTitle::GetHeadTitle)
.OnVerifyTextChanged( .OnVerifyTextChanged(
this, &SEdComboActionGraphNode::OnVerifyNameTextChanged) this, &SEdComboActionGraphNode::OnVerifyNameTextChanged)
@ -994,34 +998,36 @@ void SEdComboActionGraphNode::OnNameTextCommitted(const FText& InText, ETextComm
const FSlateBrush *SEdComboActionGraphNode::GetNodeTypeBrush() const const FSlateBrush *SEdComboActionGraphNode::GetNodeTypeBrush() const
{ {
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
if (GraphEditorSettings) if (GraphEditorSettings)
{ {
switch (GraphEditorSettings->GetNodeType()) switch (GraphEditorSettings->GetNodeType())
{ {
case EComboActionNodeType::SoftCorners: case EComboActionNodeType::SoftCorners:
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.SoftEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.SoftEdges");
case EComboActionNodeType::HardCorners: case EComboActionNodeType::HardCorners:
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.HardEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.HardEdges");
} }
} }
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.SoftEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.SoftEdges");
} }
const FSlateBrush *SEdComboActionGraphNode::GetTextNodeTypeBrush() const const FSlateBrush *SEdComboActionGraphNode::GetTextNodeTypeBrush() const
{ {
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
if (GraphEditorSettings) if (GraphEditorSettings)
{ {
switch (GraphEditorSettings->GetNodeType()) switch (GraphEditorSettings->GetNodeType())
{ {
case EComboActionNodeType::SoftCorners: case EComboActionNodeType::SoftCorners:
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.TextSoftEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
case EComboActionNodeType::HardCorners: case EComboActionNodeType::HardCorners:
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.TextHardEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextHardEdges");
} }
} }
return FComboActionGraphEditorStyle::GetBrush("MDSStyleSet.Node.TextSoftEdges"); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush("MDSStyleSet.Node.TextSoftEdges");
} }
FSlateColor SEdComboActionGraphNode::GetBorderBackgroundColor() const FSlateColor SEdComboActionGraphNode::GetBorderBackgroundColor() const
@ -1084,6 +1090,8 @@ const FSlateBrush*SEdComboActionGraphNode::GetNameIcon() const
const FSlateBrush*SEdComboActionGraphNode::GetInheritsImageBrush() const const FSlateBrush*SEdComboActionGraphNode::GetInheritsImageBrush() const
{ {
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
bool bHasDecorators = false; bool bHasDecorators = false;
if (const UEdComboActionGraphNode *EdParentNode = Cast<UEdComboActionGraphNode>(this->GraphNode)) if (const UEdComboActionGraphNode *EdParentNode = Cast<UEdComboActionGraphNode>(this->GraphNode))
{ {
@ -1093,7 +1101,7 @@ const FSlateBrush*SEdComboActionGraphNode::GetInheritsImageBrush() const
} }
} }
return FComboActionGraphEditorStyle::GetBrush( bHasDecorators ? "MDSStyleSet.Icon.OK" : "MDSStyleSet.Icon.Error" ); return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush( bHasDecorators ? "MDSStyleSet.Icon.OK" : "MDSStyleSet.Icon.Error" );
} }
FSlateColor SEdComboActionGraphNode::GetInheritsImageTint() const FSlateColor SEdComboActionGraphNode::GetInheritsImageTint() const
@ -1112,7 +1120,8 @@ FSlateColor SEdComboActionGraphNode::GetInheritsImageTint() const
const FSlateBrush*SEdComboActionGraphNode::GetBulletPointImageBrush() const const FSlateBrush*SEdComboActionGraphNode::GetBulletPointImageBrush() const
{ {
return FComboActionGraphEditorStyle::GetBrush( "MDSStyleSet.Icon.BulletPoint" ); FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
return ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush( "MDSStyleSet.Icon.BulletPoint" );
} }
FText SEdComboActionGraphNode::GetIndexOverlayTooltipText() const FText SEdComboActionGraphNode::GetIndexOverlayTooltipText() const

View File

@ -2,12 +2,14 @@
#include "SEdComboActionGraphNodeIndex.h" #include "SEdComboActionGraphNodeIndex.h"
#include "ComboInputEditor.h"
#include "Settings/FComboActionGraphEditorStyle.h" #include "Settings/FComboActionGraphEditorStyle.h"
void SEdComboActionGraphNodeIndex::Construct(const FArguments &InArgs) void SEdComboActionGraphNodeIndex::Construct(const FArguments &InArgs)
{ {
const FSlateBrush* CircleBrush = FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Node.IndexCircle")); FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
const FSlateBrush* CircleBrush = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Node.IndexCircle"));
ChildSlot ChildSlot
[ [
SNew(SOverlay) SNew(SOverlay)

View File

@ -2,6 +2,7 @@
#include "FConnectionDrawingPolicy_ComboActionGraph.h" #include "FConnectionDrawingPolicy_ComboActionGraph.h"
#include "ComboInputEditor.h"
#include "Ed/EdComboActionGraphEdge.h" #include "Ed/EdComboActionGraphEdge.h"
#include "Ed/EdComboActionGraphNode.h" #include "Ed/EdComboActionGraphNode.h"
#include "Settings/ComboActionGraphEditorSettings.h" #include "Settings/ComboActionGraphEditorSettings.h"
@ -16,19 +17,20 @@ FConnectionDrawingPolicy_ComboActionGraph::FConnectionDrawingPolicy_ComboActionG
{ {
if (const UComboActionGraphEditorSettings* GraphEditorSettings = GetMutableDefault<UComboActionGraphEditorSettings>()) if (const UComboActionGraphEditorSettings* GraphEditorSettings = GetMutableDefault<UComboActionGraphEditorSettings>())
{ {
FComboInputEditorModule &ComboInputEditorModule = FComboInputEditorModule::Get();
switch (GraphEditorSettings->GetArrowType()) switch (GraphEditorSettings->GetArrowType())
{ {
case EComboActionArrowType::SimpleArrow: case EComboActionArrowType::SimpleArrow:
ArrowImage = FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Graph.SimpleArrow")); ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.SimpleArrow"));
break; break;
case EComboActionArrowType::HollowArrow: case EComboActionArrowType::HollowArrow:
ArrowImage = FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Graph.HollowArrow")); ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.HollowArrow"));
break; break;
case EComboActionArrowType::FancyArrow: case EComboActionArrowType::FancyArrow:
ArrowImage = FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Graph.FancyArrow")); ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.FancyArrow"));
break; break;
case EComboActionArrowType::Bubble: case EComboActionArrowType::Bubble:
ArrowImage = FComboActionGraphEditorStyle::GetBrush(TEXT("MDSStyleSet.Graph.Bubble")); ArrowImage = ComboInputEditorModule.ComboActionGraphEditorStyleSet->GetBrush(TEXT("MDSStyleSet.Graph.Bubble"));
break; break;
case EComboActionArrowType::None: case EComboActionArrowType::None:
default: default:

View File

@ -69,11 +69,12 @@ enum class EComboActionArrowType : uint8
#pragma endregion #pragma endregion
/** /**
* Combo Action Graph global settings. * Combo Action Graph global settings.
*/ */
UCLASS(config = MounteaSettings) UCLASS(config = ComboActionSettings)
class COMBOINPUT_API UComboActionGraphEditorSettings : public UDeveloperSettings class COMBOINPUTEDITOR_API UComboActionGraphEditorSettings : public UDeveloperSettings
{ {
GENERATED_BODY() GENERATED_BODY()

View File

@ -1,35 +1,14 @@
// Copyright Dominik Pavlicek 2023. All Rights Reserved. // ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#include "FComboActionGraphEditorStyle.h" #include "FComboActionGraphEditorStyle.h"
#include "Interfaces/IPluginManager.h" #include "Interfaces/IPluginManager.h"
#include "Misc/Paths.h" #include "Misc/Paths.h"
#include "Styling/SlateStyleMacros.h"
#include "Styling/SlateStyleRegistry.h" #include "Styling/SlateStyleRegistry.h"
#define IMAGE_BRUSH(RelativePath, ...) FSlateImageBrush(StyleSet->RootToContentDir(RelativePath, TEXT(".png")), __VA_ARGS__)
#define BOX_BRUSH(RelativePath, ...) FSlateBoxBrush(StyleSet->RootToContentDir(RelativePath, TEXT(".png")), __VA_ARGS__)
#define DEFAULT_FONT(...) FCoreStyle::GetDefaultFontStyle(__VA_ARGS__)
FComboActionGraphEditorStyle::FComboActionGraphEditorStyle() : FSlateStyleSet("ComboActionGraphEditorStyle")
TSharedPtr<FSlateStyleSet> FComboActionGraphEditorStyle::StyleSet = nullptr;
void FComboActionGraphEditorStyle::Initialize()
{
if (!StyleSet.IsValid() )
{
Create();
FSlateStyleRegistry::RegisterSlateStyle(*StyleSet.Get());
}
}
void FComboActionGraphEditorStyle::Shutdown()
{
FSlateStyleRegistry::UnRegisterSlateStyle(*StyleSet.Get());
ensure(StyleSet.IsUnique());
StyleSet.Reset();
}
void FComboActionGraphEditorStyle::Create()
{ {
const FVector2D Icon12x12(12.0f, 12.0f); const FVector2D Icon12x12(12.0f, 12.0f);
const FVector2D Icon16x16(16.0f, 16.0f); const FVector2D Icon16x16(16.0f, 16.0f);
@ -38,66 +17,65 @@ void FComboActionGraphEditorStyle::Create()
const FVector2D Icon128x128(128.f, 128.f); const FVector2D Icon128x128(128.f, 128.f);
const FVector2D Icon200x70(200.f, 70.f); const FVector2D Icon200x70(200.f, 70.f);
StyleSet = MakeShareable(new FSlateStyleSet(GetAppStyleSetName())); this->SetContentRoot(IPluginManager::Get().FindPlugin("ComboInput")->GetBaseDir() / TEXT("Resources"));
StyleSet->SetContentRoot(IPluginManager::Get().FindPlugin("ComboInput")->GetBaseDir() / TEXT("Resources")); this->SetCoreContentRoot(IPluginManager::Get().FindPlugin("ComboInput")->GetBaseDir() / TEXT("Content"));
StyleSet->SetCoreContentRoot(IPluginManager::Get().FindPlugin("ComboInput")->GetBaseDir() / TEXT("Content"));
StyleSet->Set("MDSStyleSet.AutoArrange.small", new IMAGE_BRUSH(TEXT("AutoArrangeIcon"), Icon16x16)); this->Set("MDSStyleSet.AutoArrange.small", new IMAGE_BRUSH(TEXT("AutoArrangeIcon"), Icon16x16));
StyleSet->Set("MDSStyleSet.AutoArrange", new IMAGE_BRUSH(TEXT("AutoArrangeIcon"), Icon40x40)); this->Set("MDSStyleSet.AutoArrange", new IMAGE_BRUSH(TEXT("AutoArrangeIcon"), Icon40x40));
StyleSet->Set("MDSStyleSet.AutoArrange.large", new IMAGE_BRUSH(TEXT("AutoArrangeIcon"), Icon64x64)); this->Set("MDSStyleSet.AutoArrange.large", new IMAGE_BRUSH(TEXT("AutoArrangeIcon"), Icon64x64));
StyleSet->Set("MDSStyleSet.GraphSettings.small", new IMAGE_BRUSH(TEXT("GraphSettings"), Icon16x16)); this->Set("MDSStyleSet.GraphSettings.small", new IMAGE_BRUSH(TEXT("GraphSettings"), Icon16x16));
StyleSet->Set("MDSStyleSet.GraphSettings", new IMAGE_BRUSH(TEXT("GraphSettings"), Icon40x40)); this->Set("MDSStyleSet.GraphSettings", new IMAGE_BRUSH(TEXT("GraphSettings"), Icon40x40));
StyleSet->Set("MDSStyleSet.GraphSettings.large", new IMAGE_BRUSH(TEXT("GraphSettings"), Icon64x64)); this->Set("MDSStyleSet.GraphSettings.large", new IMAGE_BRUSH(TEXT("GraphSettings"), Icon64x64));
StyleSet->Set("MDSStyleSet.ValidateGraph.small", new IMAGE_BRUSH(TEXT("ValidateGraph"), Icon16x16)); this->Set("MDSStyleSet.ValidateGraph.small", new IMAGE_BRUSH(TEXT("ValidateGraph"), Icon16x16));
StyleSet->Set("MDSStyleSet.ValidateGraph", new IMAGE_BRUSH(TEXT("ValidateGraph"), Icon40x40)); this->Set("MDSStyleSet.ValidateGraph", new IMAGE_BRUSH(TEXT("ValidateGraph"), Icon40x40));
StyleSet->Set("MDSStyleSet.ValidateGraph.large", new IMAGE_BRUSH(TEXT("ValidateGraph"), Icon64x64)); this->Set("MDSStyleSet.ValidateGraph.large", new IMAGE_BRUSH(TEXT("ValidateGraph"), Icon64x64));
StyleSet->Set("MDSStyleSet.Graph.NodeOverlay", new BOX_BRUSH( TEXT("NodeOverlay"), FMargin(8.0f/64.0f, 3.0f/32.0f, 0, 0) )); this->Set("MDSStyleSet.Graph.NodeOverlay", new BOX_BRUSH( TEXT("NodeOverlay"), FMargin(8.0f/64.0f, 3.0f/32.0f, 0, 0) ));
StyleSet->Set("MDSStyleSet.Graph.PinDocksOverlay", new BOX_BRUSH( TEXT("PinDocksOverlay"), FMargin(8.0f/64.0f, 3.0f/32.0f, 0, 0) )); this->Set("MDSStyleSet.Graph.PinDocksOverlay", new BOX_BRUSH( TEXT("PinDocksOverlay"), FMargin(8.0f/64.0f, 3.0f/32.0f, 0, 0) ));
StyleSet->Set("MDSStyleSet.Graph.SimpleArrow", new IMAGE_BRUSH(TEXT("SimpleArrow"), Icon16x16)); this->Set("MDSStyleSet.Graph.SimpleArrow", new IMAGE_BRUSH(TEXT("SimpleArrow"), Icon16x16));
StyleSet->Set("MDSStyleSet.Graph.HollowArrow", new IMAGE_BRUSH(TEXT("HollowArrow"), Icon16x16)); this->Set("MDSStyleSet.Graph.HollowArrow", new IMAGE_BRUSH(TEXT("HollowArrow"), Icon16x16));
StyleSet->Set("MDSStyleSet.Graph.FancyArrow", new IMAGE_BRUSH(TEXT("FancyArrow"), Icon16x16)); this->Set("MDSStyleSet.Graph.FancyArrow", new IMAGE_BRUSH(TEXT("FancyArrow"), Icon16x16));
StyleSet->Set("MDSStyleSet.Graph.Bubble", new IMAGE_BRUSH(TEXT("Bubble"), Icon16x16)); this->Set("MDSStyleSet.Graph.Bubble", new IMAGE_BRUSH(TEXT("Bubble"), Icon16x16));
StyleSet->Set("MDSStyleSet.Node.SoftEdges", new BOX_BRUSH( TEXT("NodeSoftCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) )); this->Set("MDSStyleSet.Node.SoftEdges", new BOX_BRUSH( TEXT("NodeSoftCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) ));
StyleSet->Set("MDSStyleSet.Node.HardEdges", new BOX_BRUSH( TEXT("NodeHardCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) )); this->Set("MDSStyleSet.Node.HardEdges", new BOX_BRUSH( TEXT("NodeHardCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) ));
StyleSet->Set("MDSStyleSet.Node.TextSoftEdges", new BOX_BRUSH( TEXT("TextSoftCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) )); this->Set("MDSStyleSet.Node.TextSoftEdges", new BOX_BRUSH( TEXT("TextSoftCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) ));
StyleSet->Set("MDSStyleSet.Node.TextHardEdges", new BOX_BRUSH( TEXT("TextHardCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) )); this->Set("MDSStyleSet.Node.TextHardEdges", new BOX_BRUSH( TEXT("TextHardCorners") , FMargin(16.f/64.f, 25.f/64.f, 16.f/64.f, 16.f/64.f) ));
StyleSet->Set("MDSStyleSet.Node.IndexCircle", new IMAGE_BRUSH(TEXT("IndexIcon"), Icon16x16)); this->Set("MDSStyleSet.Node.IndexCircle", new IMAGE_BRUSH(TEXT("IndexIcon"), Icon16x16));
StyleSet->Set("MDSStyleSet.Icon.OK", new IMAGE_BRUSH(TEXT("OKIcon"), Icon16x16)); this->Set("MDSStyleSet.Icon.OK", new IMAGE_BRUSH(TEXT("OKIcon"), Icon16x16));
StyleSet->Set("MDSStyleSet.Icon.Error", new IMAGE_BRUSH(TEXT("ErroIcon"), Icon16x16)); this->Set("MDSStyleSet.Icon.Error", new IMAGE_BRUSH(TEXT("ErroIcon"), Icon16x16));
StyleSet->Set("MDSStyleSet.Icon.BulletPoint", new IMAGE_BRUSH(TEXT("CircleBox"), Icon16x16)); this->Set("MDSStyleSet.Icon.BulletPoint", new IMAGE_BRUSH(TEXT("CircleBox"), Icon16x16));
StyleSet->Set("MDSStyleSet.Graph.CornerImage", new IMAGE_BRUSH(TEXT("Icon128"), Icon128x128)); this->Set("MDSStyleSet.Graph.CornerImage", new IMAGE_BRUSH(TEXT("Icon128"), Icon128x128));
StyleSet->Set("MDSStyleSet.Icon.Browse", new IMAGE_BRUSH(TEXT("BrowseIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.Browse", new IMAGE_BRUSH(TEXT("BrowseIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Icon.Edit", new IMAGE_BRUSH(TEXT("EditIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.Edit", new IMAGE_BRUSH(TEXT("EditIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Buttons.Documentation", new IMAGE_BRUSH(TEXT("Documentation"), Icon200x70)); this->Set("MDSStyleSet.Buttons.Documentation", new IMAGE_BRUSH(TEXT("Documentation"), Icon200x70));
StyleSet->Set("MDSStyleSet.Buttons.Documentation.small", new IMAGE_BRUSH(TEXT("DocumentationIcon"), Icon12x12)); this->Set("MDSStyleSet.Buttons.Documentation.small", new IMAGE_BRUSH(TEXT("DocumentationIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Node.Icon.large", new IMAGE_BRUSH(TEXT("DialogueNodeIcon"), Icon64x64)); this->Set("MDSStyleSet.Node.Icon.large", new IMAGE_BRUSH(TEXT("DialogueNodeIcon"), Icon64x64));
StyleSet->Set("MDSStyleSet.Node.Icon", new IMAGE_BRUSH(TEXT("DialogueNodeIcon"), Icon16x16)); this->Set("MDSStyleSet.Node.Icon", new IMAGE_BRUSH(TEXT("DialogueNodeIcon"), Icon16x16));
StyleSet->Set("MDSStyleSet.Node.Icon.small", new IMAGE_BRUSH(TEXT("DialogueNodeIcon"), Icon12x12)); this->Set("MDSStyleSet.Node.Icon.small", new IMAGE_BRUSH(TEXT("DialogueNodeIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Icon.Close", new IMAGE_BRUSH(TEXT("CloseIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.Close", new IMAGE_BRUSH(TEXT("CloseIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Icon.SupportDiscord", new IMAGE_BRUSH(TEXT("DiscordIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.SupportDiscord", new IMAGE_BRUSH(TEXT("DiscordIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Icon.HeartIcon", new IMAGE_BRUSH(TEXT("HeartIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.HeartIcon", new IMAGE_BRUSH(TEXT("HeartIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Icon.UBIcon", new IMAGE_BRUSH(TEXT("UnrealBucketIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.UBIcon", new IMAGE_BRUSH(TEXT("UnrealBucketIcon"), Icon12x12));
StyleSet->Set("MDSStyleSet.Icon.MoneyIcon", new IMAGE_BRUSH(TEXT("MoneyIcon"), Icon12x12)); this->Set("MDSStyleSet.Icon.MoneyIcon", new IMAGE_BRUSH(TEXT("MoneyIcon"), Icon12x12));
const FButtonStyle MounteaButtonStyle = FButtonStyle() const FButtonStyle MounteaButtonStyle = FButtonStyle()
.SetNormal(BOX_BRUSH("RoundedSelection_16x", 4.0f / 16.0f, FLinearColor(1, 1, 1, 0.1f))) .SetNormal(BOX_BRUSH("RoundedSelection_16x", 4.0f / 16.0f, FLinearColor(1, 1, 1, 0.1f)))
.SetHovered(BOX_BRUSH("RoundedSelection_16x", 4.0f / 16.0f, FLinearColor(1, .55f, 0, 0.2f))) .SetHovered(BOX_BRUSH("RoundedSelection_16x", 4.0f / 16.0f, FLinearColor(1, .55f, 0, 0.2f)))
.SetPressed(BOX_BRUSH("RoundedSelection_16x", 4.0f / 16.0f, FLinearColor(1, .55f, 0, 0.4f))); .SetPressed(BOX_BRUSH("RoundedSelection_16x", 4.0f / 16.0f, FLinearColor(1, .55f, 0, 0.4f)));
StyleSet->Set("MDSStyleSet.Buttons.Style", MounteaButtonStyle); this->Set("MDSStyleSet.Buttons.Style", MounteaButtonStyle);
{ {
const FScrollBarStyle ScrollBar = GetWidgetStyle<FScrollBarStyle>( "ScrollBar" ); const FScrollBarStyle ScrollBar = GetWidgetStyle<FScrollBarStyle>( "ScrollBar" );
@ -115,7 +93,7 @@ void FComboActionGraphEditorStyle::Create()
.SetColorAndOpacity( FLinearColor(230.0f/255.0f,230.0f/255.0f,230.0f/255.0f) ) .SetColorAndOpacity( FLinearColor(230.0f/255.0f,230.0f/255.0f,230.0f/255.0f) )
.SetShadowOffset( FVector2D( 2,2 ) ) .SetShadowOffset( FVector2D( 2,2 ) )
.SetShadowColorAndOpacity( FLinearColor(0.f,0.f,0.f, 0.7f) ); .SetShadowColorAndOpacity( FLinearColor(0.f,0.f,0.f, 0.7f) );
StyleSet->Set( "MDSStyleSet.NodeTitle", NodeTitle ); this->Set( "MDSStyleSet.NodeTitle", NodeTitle );
FEditableTextBoxStyle NodeTitleEditableText = FEditableTextBoxStyle() FEditableTextBoxStyle NodeTitleEditableText = FEditableTextBoxStyle()
.SetFont(NormalText.Font) .SetFont(NormalText.Font)
@ -124,15 +102,11 @@ void FComboActionGraphEditorStyle::Create()
.SetBackgroundImageFocused( BOX_BRUSH( "TextBox_Hovered", FMargin(4.0f/16.0f) ) ) .SetBackgroundImageFocused( BOX_BRUSH( "TextBox_Hovered", FMargin(4.0f/16.0f) ) )
.SetBackgroundImageReadOnly( BOX_BRUSH( "TextBox_ReadOnly", FMargin(4.0f/16.0f) ) ) .SetBackgroundImageReadOnly( BOX_BRUSH( "TextBox_ReadOnly", FMargin(4.0f/16.0f) ) )
.SetScrollBarStyle( ScrollBar ); .SetScrollBarStyle( ScrollBar );
StyleSet->Set( "MDSStyleSet.NodeTitleEditableText", NodeTitleEditableText ); this->Set( "MDSStyleSet.NodeTitleEditableText", NodeTitleEditableText );
StyleSet->Set( "MDSStyleSet.NodeTitleInlineEditableText", FInlineEditableTextBlockStyle() this->Set( "MDSStyleSet.NodeTitleInlineEditableText", FInlineEditableTextBlockStyle()
.SetTextStyle(NodeTitle) .SetTextStyle(NodeTitle)
.SetEditableTextBoxStyle(NodeTitleEditableText) .SetEditableTextBoxStyle(NodeTitleEditableText)
); );
} }
} }
#undef DEFAULT_FONT
#undef BOX_BRUSH
#undef IMAGE_BRUSH

View File

@ -1,40 +1,18 @@
// Copyright Dominik Pavlicek 2023. All Rights Reserved. // ©2023 Batty Bovine Productions, LLC. All Rights Reserved.
#pragma once #pragma once
#include "CoreMinimal.h" #include "CoreMinimal.h"
#include "Styling/SlateStyle.h"
class FComboActionGraphEditorStyle class FComboActionGraphEditorStyle final : public FSlateStyleSet
{ {
public: public:
FComboActionGraphEditorStyle();
static void Create();
static void Initialize();
static void Shutdown();
static ISlateStyle &Get()
{
return *(StyleSet.Get());
}
static const FSlateBrush *GetBrush(FName PropertyName, const ANSICHAR *Specifier = NULL)
{
return StyleSet->GetBrush(PropertyName, Specifier);
};
static const FName &GetAppStyleSetName() static const FName &GetAppStyleSetName()
{ {
static FName StyleSetName(TEXT("ComboActionGraphEditorStyle")); static FName StyleSetName(TEXT("ComboActionGraphEditorStyle"));
return StyleSetName; return StyleSetName;
}; };
template< class T >
static const T &GetWidgetStyle( FName PropertyName, const ANSICHAR *Specifier = NULL )
{
return StyleSet->GetWidgetStyle< T >( PropertyName, Specifier );
}
private:
static TSharedPtr<FSlateStyleSet> StyleSet;
}; };

View File

@ -67,6 +67,8 @@ public:
static EAssetTypeCategories::Type GetInputAssetsCategory() { return FComboInputEditorModule::ComboAssetsCategory; } static EAssetTypeCategories::Type GetInputAssetsCategory() { return FComboInputEditorModule::ComboAssetsCategory; }
TSharedPtr<class FSlateStyleSet> ComboActionGraphEditorStyleSet;
private: private:
void RegisterAssetTypeActions(IAssetTools &AssetTools, TSharedRef<IAssetTypeActions> Action) void RegisterAssetTypeActions(IAssetTools &AssetTools, TSharedRef<IAssetTypeActions> Action)
{ {
@ -78,5 +80,5 @@ private:
TArray<TSharedPtr<IAssetTypeActions>> CreatedAssetTypeActions; TArray<TSharedPtr<IAssetTypeActions>> CreatedAssetTypeActions;
TSharedPtr<class FSlateStyleSet> StyleSet; TSharedPtr<class FSlateStyleSet> ComboInputEditorStyleSet;
}; };