You've already forked LuckyWorld
Optimizing the code
This commit is contained in:
@ -2,4 +2,66 @@
|
||||
|
||||
|
||||
#include "UI/Settings/ObjectsListUserWidget.h"
|
||||
#include "Engine/StreamableManager.h"
|
||||
#include "Engine/AssetManager.h"
|
||||
#include "Engine/Texture2D.h"
|
||||
#include "Core/LuckyRobotsGameInstance.h"
|
||||
|
||||
void UObjectsListUserWidget::NativeConstruct()
|
||||
{
|
||||
Super::NativeConstruct();
|
||||
|
||||
SelectableItemData.Icon;
|
||||
|
||||
SetVisibility(ESlateVisibility::Collapsed);
|
||||
|
||||
if (!SelectableItemData.Icon.IsNull())
|
||||
{
|
||||
FStreamableManager& Streamable = UAssetManager::GetStreamableManager();
|
||||
Streamable.RequestAsyncLoad(SelectableItemData.Icon.ToSoftObjectPath(),
|
||||
FStreamableDelegate::CreateUObject(this, &UObjectsListUserWidget::OnIconLoaded));
|
||||
}
|
||||
|
||||
DoUpdateChecked();
|
||||
}
|
||||
|
||||
void UObjectsListUserWidget::OnIconLoaded()
|
||||
{
|
||||
UTexture2D* LoadedTexture = Cast<UTexture2D>(SelectableItemData.Icon.Get());
|
||||
if (LoadedTexture)
|
||||
{
|
||||
UpdateIcon(LoadedTexture);
|
||||
SetVisibility(ESlateVisibility::Visible);
|
||||
}
|
||||
}
|
||||
|
||||
void UObjectsListUserWidget::DoUpdateChecked()
|
||||
{
|
||||
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
|
||||
if (GameInstance)
|
||||
{
|
||||
bIsChecked = GameInstance->GetCurrentRandomMeshes().Find(SelectableItemData.Mesh) >= 0;
|
||||
}
|
||||
|
||||
DoDisplayChecked();
|
||||
}
|
||||
|
||||
void UObjectsListUserWidget::ToggleChecked()
|
||||
{
|
||||
ULuckyRobotsGameInstance* GameInstance = Cast<ULuckyRobotsGameInstance>(GetGameInstance());
|
||||
if (GameInstance)
|
||||
{
|
||||
if (GameInstance->GetCurrentRandomMeshes().Find(SelectableItemData.Mesh) >= 0)
|
||||
{
|
||||
GameInstance->CurrentCaptureSettingsData.RandomMeshes.Remove(SelectableItemData.Mesh);
|
||||
}
|
||||
else
|
||||
{
|
||||
GameInstance->CurrentCaptureSettingsData.RandomMeshes.Add(SelectableItemData.Mesh);
|
||||
}
|
||||
|
||||
GameInstance->OnRandomMeshesUpdated.Broadcast();
|
||||
}
|
||||
|
||||
DoUpdateChecked();
|
||||
}
|
Reference in New Issue
Block a user