66 lines
1.9 KiB
C
66 lines
1.9 KiB
C
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||
|
|
||
|
#pragma once
|
||
|
|
||
|
#include "ChartCreation.h"
|
||
|
#include "Subsystems/GameInstanceSubsystem.h"
|
||
|
#include "LyraPerformanceStatTypes.h"
|
||
|
|
||
|
#include "LyraPerformanceStatSubsystem.generated.h"
|
||
|
|
||
|
class ULyraPerformanceStatSubsystem;
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Observer which caches the stats for the previous frame
|
||
|
struct FLyraPerformanceStatCache : public IPerformanceDataConsumer
|
||
|
{
|
||
|
public:
|
||
|
FLyraPerformanceStatCache(ULyraPerformanceStatSubsystem* InSubsystem)
|
||
|
: MySubsystem(InSubsystem)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
//~IPerformanceDataConsumer interface
|
||
|
virtual void StartCharting() override;
|
||
|
virtual void ProcessFrame(const FFrameData& FrameData) override;
|
||
|
virtual void StopCharting() override;
|
||
|
//~End of IPerformanceDataConsumer interface
|
||
|
|
||
|
double GetCachedStat(ELyraDisplayablePerformanceStat Stat) const;
|
||
|
|
||
|
protected:
|
||
|
IPerformanceDataConsumer::FFrameData CachedData;
|
||
|
ULyraPerformanceStatSubsystem* MySubsystem;
|
||
|
|
||
|
float CachedServerFPS = 0.0f;
|
||
|
float CachedPingMS = 0.0f;
|
||
|
float CachedPacketLossIncomingPercent = 0.0f;
|
||
|
float CachedPacketLossOutgoingPercent = 0.0f;
|
||
|
float CachedPacketRateIncoming = 0.0f;
|
||
|
float CachedPacketRateOutgoing = 0.0f;
|
||
|
float CachedPacketSizeIncoming = 0.0f;
|
||
|
float CachedPacketSizeOutgoing = 0.0f;
|
||
|
};
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
// Subsystem to allow access to performance stats for display purposes
|
||
|
UCLASS(BlueprintType)
|
||
|
class ULyraPerformanceStatSubsystem : public UGameInstanceSubsystem
|
||
|
{
|
||
|
GENERATED_BODY()
|
||
|
|
||
|
public:
|
||
|
UFUNCTION(BlueprintCallable)
|
||
|
double GetCachedStat(ELyraDisplayablePerformanceStat Stat) const;
|
||
|
|
||
|
//~USubsystem interface
|
||
|
virtual void Initialize(FSubsystemCollectionBase& Collection) override;
|
||
|
virtual void Deinitialize() override;
|
||
|
//~End of USubsystem interface
|
||
|
|
||
|
protected:
|
||
|
TSharedPtr<FLyraPerformanceStatCache> Tracker;
|
||
|
};
|