Files
FLESH/Source/FLESHEditor/Private/FLESHEditorStyle.cpp
2025-04-23 01:18:06 +08:00

76 lines
2.3 KiB
C++

#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<FSlateStyleSet> 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<FSlateStyleSet> FFLESHEditorStyle::Create()
{
TSharedRef<FSlateStyleSet> 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<FButtonStyle>("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