Files
UnrealEngine/Engine/Source/Editor/ViewportInteraction/Private/ViewportInteractionStyle.cpp
2025-05-18 13:04:45 +08:00

74 lines
2.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "ViewportInteractionStyle.h"
#include "Containers/UnrealString.h"
#include "Framework/Application/SlateApplication.h"
#include "Math/Vector2D.h"
#include "Misc/AssertionMacros.h"
#include "Misc/Paths.h"
#include "Rendering/SlateRenderer.h"
#include "Styling/SlateStyleRegistry.h"
class ISlateStyle;
TSharedPtr< FSlateStyleSet > FViewportInteractionStyle::ViewportInteractionStyleInstance = NULL;
void FViewportInteractionStyle::Initialize()
{
if ( !ViewportInteractionStyleInstance.IsValid() )
{
ViewportInteractionStyleInstance = Create();
FSlateStyleRegistry::RegisterSlateStyle( *ViewportInteractionStyleInstance);
}
}
void FViewportInteractionStyle::Shutdown()
{
FSlateStyleRegistry::UnRegisterSlateStyle( *ViewportInteractionStyleInstance);
ensure(ViewportInteractionStyleInstance.IsUnique() );
ViewportInteractionStyleInstance.Reset();
}
FName FViewportInteractionStyle::GetStyleSetName()
{
static FName StyleSetName(TEXT("ViewportInteractionStyle"));
return StyleSetName;
}
#define IMAGE_BRUSH( RelativePath, ... ) FSlateImageBrush( Style->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ )
#define BOX_BRUSH( RelativePath, ... ) FSlateBoxBrush( Style->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ )
#define BORDER_BRUSH( RelativePath, ... ) FSlateBorderBrush( Style->RootToContentDir( RelativePath, TEXT(".png") ), __VA_ARGS__ )
const FVector2D Icon14x14(14.0f, 14.0f);
const FVector2D Icon16x16(16.0f, 16.0f);
const FVector2D Icon20x20(20.0f, 20.0f);
const FVector2D Icon40x40(40.0f, 40.0f);
const FVector2D Icon64x64(64.0f, 64.0f);
const FVector2D Icon512x512(512.0f, 512.0f);
TSharedRef< FSlateStyleSet > FViewportInteractionStyle::Create()
{
TSharedRef< FSlateStyleSet > Style = MakeShareable(new FSlateStyleSet(FViewportInteractionStyle::GetStyleSetName()));
Style->SetContentRoot(FPaths::EngineContentDir() / TEXT("Editor/Slate"));
Style->SetCoreContentRoot(FPaths::EngineContentDir() / TEXT("Slate"));
return Style;
}
void FViewportInteractionStyle::ReloadTextures()
{
FSlateApplication::Get().GetRenderer()->ReloadTextureResources();
}
const ISlateStyle& FViewportInteractionStyle::Get()
{
return *ViewportInteractionStyleInstance;
}
#undef IMAGE_BRUSH
#undef BOX_BRUSH
#undef BORDER_BRUSH