// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CommonInputBaseTypes.h" #include "GameplayTagContainer.h" #include "HAL/Platform.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "Templates/SubclassOf.h" #include "UObject/NameTypes.h" #include "UObject/SoftObjectPtr.h" #include "UObject/UObjectGlobals.h" #include "CommonUIExtensions.generated.h" class APlayerController; class UCommonActivatableWidget; class ULocalPlayer; class UObject; class UUserWidget; struct FFrame; struct FGameplayTag; UCLASS() class COMMONGAME_API UCommonUIExtensions : public UBlueprintFunctionLibrary { GENERATED_BODY() public: UCommonUIExtensions() { } UFUNCTION(BlueprintPure, BlueprintCosmetic, Category = "Global UI Extensions", meta = (WorldContext = "WidgetContextObject")) static ECommonInputType GetOwningPlayerInputType(const UUserWidget* WidgetContextObject); UFUNCTION(BlueprintPure, BlueprintCosmetic, Category = "Global UI Extensions", meta = (WorldContext = "WidgetContextObject")) static bool IsOwningPlayerUsingTouch(const UUserWidget* WidgetContextObject); UFUNCTION(BlueprintPure, BlueprintCosmetic, Category = "Global UI Extensions", meta = (WorldContext = "WidgetContextObject")) static bool IsOwningPlayerUsingGamepad(const UUserWidget* WidgetContextObject); UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Global UI Extensions") static UCommonActivatableWidget* PushContentToLayer_ForPlayer(const ULocalPlayer* LocalPlayer, UPARAM(meta = (Categories = "UI.Layer")) FGameplayTag LayerName, UPARAM(meta = (AllowAbstract = false)) TSubclassOf WidgetClass); UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Global UI Extensions") static void PushStreamedContentToLayer_ForPlayer(const ULocalPlayer* LocalPlayer, UPARAM(meta = (Categories = "UI.Layer")) FGameplayTag LayerName, UPARAM(meta = (AllowAbstract = false)) TSoftClassPtr WidgetClass); UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Global UI Extensions") static void PopContentFromLayer(UCommonActivatableWidget* ActivatableWidget); UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Global UI Extensions") static ULocalPlayer* GetLocalPlayerFromController(APlayerController* PlayerController); UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Global UI Extensions") static FName SuspendInputForPlayer(APlayerController* PlayerController, FName SuspendReason); static FName SuspendInputForPlayer(ULocalPlayer* LocalPlayer, FName SuspendReason); UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category = "Global UI Extensions") static void ResumeInputForPlayer(APlayerController* PlayerController, FName SuspendToken); static void ResumeInputForPlayer(ULocalPlayer* LocalPlayer, FName SuspendToken); private: static int32 InputSuspensions; };