// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "Interfaces/IHttpRequest.h" #include "Kismet/BlueprintAsyncActionBase.h" #include "Blueprint/UserWidget.h" #include "Engine/StreamableManager.h" #include "GameFramework/PlayerController.h" #include "GameplayTagContainer.h" #include "Engine/CancellableAsyncAction.h" #include "AsyncAction_PushContentToLayerForPlayer.generated.h" class UGameInstance; DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FPushContentToLayerForPlayerAsyncDelegate, UCommonActivatableWidget*, UserWidget); /** * */ UCLASS(BlueprintType) class COMMONGAME_API UAsyncAction_PushContentToLayerForPlayer : public UCancellableAsyncAction { GENERATED_UCLASS_BODY() public: virtual void Cancel() override; UFUNCTION(BlueprintCallable, BlueprintCosmetic, meta=(WorldContext = "WorldContextObject", BlueprintInternalUseOnly="true")) static UAsyncAction_PushContentToLayerForPlayer* PushContentToLayerForPlayer(APlayerController* OwningPlayer, UPARAM(meta = (AllowAbstract=false)) TSoftClassPtr WidgetClass, UPARAM(meta = (Categories = "UI.Layer")) FGameplayTag LayerName, bool bSuspendInputUntilComplete = true); virtual void Activate() override; public: UPROPERTY(BlueprintAssignable) FPushContentToLayerForPlayerAsyncDelegate BeforePush; UPROPERTY(BlueprintAssignable) FPushContentToLayerForPlayerAsyncDelegate AfterPush; private: FGameplayTag LayerName; bool bSuspendInputUntilComplete = false; TWeakObjectPtr OwningPlayerPtr; TSoftClassPtr WidgetClass; TSharedPtr StreamingHandle; };