Files
UnrealEngine/Engine/Source/Developer/TraceInsights/Private/Insights/TimingProfiler/GraphTracks/TimingGraphTrack.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

77 lines
2.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
// TraceInsights
#include "Insights/TimingProfiler/ViewModels/ThreadTimingSharedState.h"
#include "Insights/ViewModels/GraphSeries.h"
#include "Insights/ViewModels/GraphTrack.h"
namespace UE::Insights::TimingProfiler
{
struct FFrameStatsCachedEvent;
class STimingView;
class FTimingGraphSeries;
class FTimingGraphTrack : public FGraphTrack
{
INSIGHTS_DECLARE_RTTI(FTimingGraphTrack, FGraphTrack)
public:
FTimingGraphTrack(TSharedPtr<STimingView> InTimingView);
virtual ~FTimingGraphTrack();
virtual void Update(const ITimingTrackUpdateContext& Context) override;
void AddDefaultFrameSeries();
TSharedPtr<FTimingGraphSeries> GetFrameSeries(ETraceFrameType FrameType);
TSharedPtr<FTimingGraphSeries> GetTimerSeries(uint32 TimerId);
TSharedPtr<FTimingGraphSeries> AddTimerSeries(uint32 TimerId, FLinearColor Color);
void RemoveTimerSeries(uint32 TimerId);
TSharedPtr<FTimingGraphSeries> GetFrameStatsTimerSeries(uint32 TimerId, ETraceFrameType FrameType);
TSharedPtr<FTimingGraphSeries> AddFrameStatsTimerSeries(uint32 TimerId, ETraceFrameType FrameType, FLinearColor Color);
void RemoveFrameStatsTimerSeries(uint32 TimerId, ETraceFrameType FrameType);
TSharedPtr<FTimingGraphSeries> GetStatsCounterSeries(uint32 CounterId);
TSharedPtr<FTimingGraphSeries> AddStatsCounterSeries(uint32 CounterId, FLinearColor Color);
void RemoveStatsCounterSeries(uint32 CounterId);
bool HasAnySeriesForTimer(uint32 TimerId) const;
uint32 GetNumSeriesForTimer(uint32 TimerId) const;
void GetVisibleTimelineIndexes(TSet<uint32>& TimelineIndexes);
void GetVisibleCpuSamplingThreads(TSet<uint32>& Threads);
private:
void RegisterTimingViewCallbacks();
void UnregisterTimingViewCallbacks();
TSharedPtr<FThreadTimingSharedState> GetThreadTimingSharedState() const;
virtual void DrawVerticalAxisGrid(const ITimingTrackDrawContext& Context) const override;
void LoadDefaultSettings();
private:
virtual void ContextMenu_ToggleOption_Execute(EGraphOptions Option);
private:
FDelegateHandle OnTrackVisibilityChangedHandle;
FDelegateHandle OnTrackAddedHandle;
FDelegateHandle OnTrackRemovedHandle;
FDelegateHandle GameFrameSeriesVisibilityHandle;
FDelegateHandle RenderingFrameSeriesVisibilityHandle;
TWeakPtr<STimingView> TimingView;
bool bNotifyTimersOnDestruction;
};
} // namespace UE::Insights::TimingProfiler