LEAP Documentation 40220
Documentation for the LEAP project
AdvancedWidgetComponent.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Components/WidgetComponent.h"
8#include "AdvancedWidgetComponent.generated.h"
9
11
12UENUM(BlueprintType)
13enum class EClampType : uint8
14{
15 SCREEN = 0,
16 CENTER = 1,
17};
18
19UCLASS(Blueprintable, ClassGroup = "UserInterface", hidecategories = (Object, Activation, "Components|Activation", Sockets, Base, Lighting, LOD, Mesh), editinlinenew, meta = (BlueprintSpawnableComponent))
20class PROJECTX_API UAdvancedWidgetComponent : public UWidgetComponent, public IReactsToMatchEvents
21{
22 GENERATED_UCLASS_BODY()
23
24public:
25 virtual void BeginPlay() override;
26 virtual void EndPlay(const EEndPlayReason::Type Reason) override;
27 UFUNCTION()
28 virtual void MenuToggled(UAdvancedUserWidget* OpenedWidget, bool bToggle);
29
30 void ManageVisibility();
31 bool ShouldClampToScreen() const { return bClampToScreen; }
32 bool IsWidgetVisible() const override;
33 virtual void InitWidget() override;
34 virtual void ReleaseResources() override;
35
36 virtual void MatchEnded() override;
37
38 virtual void ModifyScreenPosition(FVector2D& ScreenPosition);
39
40 UFUNCTION(BlueprintCallable)
41 float GetClampRadius() const {return ClampRadius;}
42 UFUNCTION(BlueprintCallable)
43 EClampType GetClampType() const { return ClampType; }
44 UFUNCTION(BlueprintCallable, Category = UserInterface)
45 virtual void SetScreenPositionOverride(const FVector2D& NewScreenPosition, float OverrideStrength = -1.f);
46
47 UFUNCTION(BlueprintCallable)
48 bool IsUsingScreenPositionOverride() const { return ScreenPositionOverrideStrength > 0.f; }
49
50 UFUNCTION(BlueprintImplementableEvent)
51 void OnWidgetClamped(bool bIsClamped);
52
53 UFUNCTION(BlueprintCallable, Category= UserInterfaceCommand, meta=(WorldContext="WorldContextObject", DeterminesOutputType="WidgetComponentClass", DynamicOutputParam="OutWidgetComponents"))
54 static void GetAllWidgetComponentsOfClass(const UObject* WorldContextObject, TSubclassOf<UAdvancedWidgetComponent> WidgetComponentClass, TArray<UAdvancedWidgetComponent*>& OutWidgetComponents);
55 UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="WidgetComponentClass", DynamicOutputParam="WidgetComponent"))
56 static void CreateWidgetComponent(AActor* Owner, const FTransform& Transform, TSubclassOf<UWidgetComponent> WidgetComponentClass, UWidgetComponent*& WidgetComponent);
57
58protected:
59 virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) override;
60
61protected:
62#if !UE_SERVER
63 class UGameViewportClient* OwningViewport = NULL;
64#endif // !UE_SERVER
65
66 /* Clamp to screen. */
67 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Layers)
68 bool bClampToScreen = false;
69 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Layers)
71 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Layers)
72 float ClampRadius = 0.f;
73 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Layers)
74 bool bHideWhenDeployScreenActive = false;
75 /* Will activate pooling for this user widget. You will want to use PoolConstruct on the widget to ensure it runs init code each time it's instanced */
76 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = Layers)
77 bool bPoolUserWidget = false;
78
79 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite)
80 float MaxDesiredDrawDistance = 100000.0f;
81
82 /* Should be auto destroyed on match end or not. */
83 UPROPERTY(EditDefaultsOnly, Category = Layers)
84 bool bAutoCleanup = true;
85
86 float ScreenPositionOverrideStrength = 0.f;
87 FVector2D ScreenPositionOverride = FVector2D(0, 0);
88 bool bDeployScreenActive = false;
89};
EClampType
Definition: AdvancedWidgetComponent.h:14
Definition: ReactsToMatchEvents.h:16
virtual void MatchEnded()
Definition: ReactsToMatchEvents.cpp:16
Definition: AdvancedUserWidget.h:30