#include "FLESHEditorStyle.h" #include "Styling/SlateStyleRegistry.h" #include "Styling/SlateTypes.h" #include "Styling/CoreStyle.h" #include "Interfaces/IPluginManager.h" #include "SlateOptMacros.h" #include "Styling/SlateStyle.h" #include "Brushes/SlateImageBrush.h" #include "Framework/Application/SlateApplication.h" TSharedPtr FFLESHEditorStyle::StyleInstance = nullptr; void FFLESHEditorStyle::Initialize() { if (!StyleInstance.IsValid()) { StyleInstance = Create(); FSlateStyleRegistry::RegisterSlateStyle(*StyleInstance); } } void FFLESHEditorStyle::Shutdown() { FSlateStyleRegistry::UnRegisterSlateStyle(*StyleInstance); ensure(StyleInstance.IsUnique()); StyleInstance.Reset(); } void FFLESHEditorStyle::ReloadTextures() { if (FSlateApplication::IsInitialized()) { FSlateApplication::Get().GetRenderer()->ReloadTextureResources(); } } FName FFLESHEditorStyle::GetStyleSetName() { static FName StyleSetName(TEXT("FLESHEditorStyle")); return StyleSetName; } const ISlateStyle& FFLESHEditorStyle::Get() { return *StyleInstance; } BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION TSharedRef FFLESHEditorStyle::Create() { TSharedRef Style = MakeShareable(new FSlateStyleSet(GetStyleSetName())); Style->SetContentRoot(IPluginManager::Get().FindPlugin("FLESH")->GetBaseDir() / TEXT("Resources")); // Set editor icon Style->Set("FLESHEditor.OpenPluginWindow", new FSlateImageBrush(Style->RootToContentDir(TEXT("ButtonIcon_40x"), TEXT(".png")), FVector2D(40.0f, 40.0f))); // Set editor colors const FLinearColor MainColor(0.8f, 0.1f, 0.1f, 1.0f); // Blood red const FLinearColor DarkColor(0.4f, 0.05f, 0.05f, 1.0f); // Dark red const FLinearColor LightColor(1.0f, 0.3f, 0.3f, 1.0f); // Light red // Set editor button style const FButtonStyle& DefaultButtonStyle = FCoreStyle::Get().GetWidgetStyle("Button"); FButtonStyle RedButtonStyle = DefaultButtonStyle; RedButtonStyle.Normal.TintColor = MainColor; RedButtonStyle.Hovered.TintColor = LightColor; RedButtonStyle.Pressed.TintColor = DarkColor; Style->Set("FLESHEditor.RedButton", RedButtonStyle); return Style; } END_SLATE_FUNCTION_BUILD_OPTIMIZATION