// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CommonUserWidget.h" #include "Performance/LyraPerformanceStatTypes.h" #include "UObject/ObjectPtr.h" #include "UObject/UObjectGlobals.h" #include "LyraPerfStatWidgetBase.generated.h" class ULyraPerformanceStatSubsystem; class UObject; struct FFrame; /** * ULyraPerfStatWidgetBase * * Base class for a widget that displays a single stat, e.g., FPS, ping, etc... */ UCLASS(Abstract) class ULyraPerfStatWidgetBase : public UCommonUserWidget { public: ULyraPerfStatWidgetBase(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get()); GENERATED_BODY() public: // Returns the stat this widget is supposed to display UFUNCTION(BlueprintPure) ELyraDisplayablePerformanceStat GetStatToDisplay() const { return StatToDisplay; } // Polls for the value of this stat (unscaled) UFUNCTION(BlueprintPure) double FetchStatValue(); protected: // Cached subsystem pointer UPROPERTY(Transient) TObjectPtr CachedStatSubsystem; // The stat to display UPROPERTY(EditAnywhere, BlueprintReadOnly, Category=Display) ELyraDisplayablePerformanceStat StatToDisplay; };