gurkan01 8605e20018 all Plugin revert
2025-04-03 15:29:06 +03:00

123 lines
3.3 KiB
C++

/************************************************************************************
* *
* Copyright (C) 2020 Truong Bui. *
* Website: https://github.com/truong-bui/AsyncLoadingScreen *
* Licensed under the MIT License. See 'LICENSE' file for full license information. *
* *
************************************************************************************/
#include "SHorizontalLoadingWidget.h"
#include "LoadingScreenSettings.h"
#include "Widgets/Layout/SSpacer.h"
#include "Widgets/Images/SImage.h"
#include "Slate/DeferredCleanupSlateBrush.h"
#include "Widgets/Text/STextBlock.h"
#include "Widgets/SBoxPanel.h"
void SHorizontalLoadingWidget::Construct(const FArguments& InArgs, const FLoadingWidgetSettings& Settings)
{
bPlayReverse = Settings.ImageSequenceSettings.bPlayReverse;
// Root is a Horizontal Box of course
TSharedRef<SHorizontalBox> Root = SNew(SHorizontalBox);
// Construct Loading Icon Widget
ConstructLoadingIcon(Settings);
EVisibility LoadingTextVisibility;
if (Settings.LoadingText.IsEmpty())
{
LoadingTextVisibility = EVisibility::Collapsed;
}
else
{
LoadingTextVisibility = EVisibility::SelfHitTestInvisible;
}
// If loading text is on the right
if (Settings.bLoadingTextRightPosition)
{
// Add Loading Icon on the left first
Root.Get().AddSlot()
.HAlign(Settings.LoadingIconAlignment.HorizontalAlignment)
.VAlign(Settings.LoadingIconAlignment.VerticalAlignment)
.AutoWidth()
[
LoadingIcon
];
// Add a Spacer in middle
Root.Get().AddSlot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
.AutoWidth()
[
SNew(SSpacer)
.Size(FVector2D(Settings.Space, 0.0f))
];
// Add Loading Text on the right
Root.Get().AddSlot()
.HAlign(Settings.TextAlignment.HorizontalAlignment)
.VAlign(Settings.TextAlignment.VerticalAlignment)
.AutoWidth()
[
SNew(STextBlock)
.Visibility(LoadingTextVisibility)
.ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
.Font(Settings.Appearance.Font)
.ShadowOffset(Settings.Appearance.ShadowOffset)
.ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
.Justification(Settings.Appearance.Justification)
.Text(Settings.LoadingText)
];
}
// If loading text is on the left
else
{
// Add Loading Text on the left first
Root.Get().AddSlot()
.HAlign(Settings.TextAlignment.HorizontalAlignment)
.VAlign(Settings.TextAlignment.VerticalAlignment)
.AutoWidth()
[
SNew(STextBlock)
.Visibility(LoadingTextVisibility)
.ColorAndOpacity(Settings.Appearance.ColorAndOpacity)
.Font(Settings.Appearance.Font)
.ShadowOffset(Settings.Appearance.ShadowOffset)
.ShadowColorAndOpacity(Settings.Appearance.ShadowColorAndOpacity)
.Justification(Settings.Appearance.Justification)
.Text(Settings.LoadingText)
];
// Add a Spacer in middle
Root.Get().AddSlot()
.HAlign(HAlign_Fill)
.VAlign(VAlign_Fill)
.AutoWidth()
[
SNew(SSpacer)
.Size(FVector2D(Settings.Space, 0.0f))
];
// Add Loading Icon on the right finally
Root.Get().AddSlot()
.HAlign(Settings.LoadingIconAlignment.HorizontalAlignment)
.VAlign(Settings.LoadingIconAlignment.VerticalAlignment)
.AutoWidth()
[
LoadingIcon
];
}
// Add root to this widget
ChildSlot
[
Root
];
}