// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameplayTagContainer.h" #include "Kismet/BlueprintFunctionLibrary.h" #include "CommonActivatableWidget.h" #include "CommonUIExtensions.generated.h" 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; };