Optimizing the code
This commit is contained in:
parent
aa363ac736
commit
df872258a6
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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();
|
||||
}
|
@ -14,8 +14,29 @@ UCLASS()
|
||||
class LUCKYWORLDV2_API UObjectsListUserWidget : public UUserWidget
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
|
||||
protected:
|
||||
virtual void NativeConstruct() override;
|
||||
void OnIconLoaded();
|
||||
|
||||
public:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
bool bIsChecked;
|
||||
|
||||
public:
|
||||
UPROPERTY(EditAnywhere, BlueprintReadWrite)
|
||||
FSelectableItemData SelectableItemData;
|
||||
|
||||
public:
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void DoUpdateChecked();
|
||||
|
||||
UFUNCTION(BlueprintCallable)
|
||||
void ToggleChecked();
|
||||
public:
|
||||
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
||||
void UpdateIcon(UTexture2D* Image);
|
||||
|
||||
UFUNCTION(BlueprintCallable, BlueprintImplementableEvent)
|
||||
void DoDisplayChecked();
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user