// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Subsystems/GameInstanceSubsystem.h" #include "Blueprint/UserWidget.h" #include "LyraLoadingScreenSubsystem.generated.h" DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLoadingScreenWidgetChangedDelegate, TSubclassOf, NewWidgetClass); /** * Tracks/stores the current loading screen configuration in a place * that persists across map transitions */ UCLASS() class LYRAGAME_API ULyraLoadingScreenSubsystem : public UGameInstanceSubsystem { GENERATED_BODY() public: ULyraLoadingScreenSubsystem(); // Sets the loading screen widget class to display inside of the loading screen widget host UFUNCTION(BlueprintCallable) void SetLoadingScreenContentWidget(TSubclassOf NewWidgetClass); // Returns the last set loading screen widget class to display inside of the loading screen widget host UFUNCTION(BlueprintPure) TSubclassOf GetLoadingScreenContentWidget() const; private: UPROPERTY(BlueprintAssignable, meta=(AllowPrivateAccess)) FLoadingScreenWidgetChangedDelegate OnLoadingScreenWidgetChanged; UPROPERTY() TSubclassOf LoadingScreenWidgetClass; };