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;
|
|
};
|