// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreTypes.h" #include "Framework/Commands/Commands.h" // TraceInsights #include "Insights/ViewModels/TimingEventsTrack.h" namespace TraceServices { struct FLoadTimeProfilerCpuEvent; } namespace UE::Insights { class FFilterConfigurator; } class FTimingEventSearchParameters; namespace UE::Insights::LoadingProfiler { class FLoadingSharedState; class STimingView; //////////////////////////////////////////////////////////////////////////////////////////////////// class FLoadingTimingTrack : public FTimingEventsTrack { INSIGHTS_DECLARE_RTTI(FLoadingTimingTrack, FTimingEventsTrack) public: explicit FLoadingTimingTrack(FLoadingSharedState& InSharedState, uint32 InTimelineIndex, const FString& InName) : FTimingEventsTrack(InName) , SharedState(InSharedState) , TimelineIndex(InTimelineIndex) { } virtual ~FLoadingTimingTrack() {} virtual void BuildDrawState(ITimingEventsTrackDrawStateBuilder& Builder, const ITimingTrackUpdateContext& Context) override; virtual void BuildFilteredDrawState(ITimingEventsTrackDrawStateBuilder& Builder, const ITimingTrackUpdateContext& Context) override; virtual void InitTooltip(FTooltipDrawState& InOutTooltip, const ITimingEvent& InTooltipEvent) const override; virtual const TSharedPtr SearchEvent(const FTimingEventSearchParameters& InSearchParameters) const override; virtual void SetFilterConfigurator(TSharedPtr InFilterConfigurator) override; protected: // Helper function to find an event given search parameters bool FindLoadTimeProfilerCpuEvent(const FTimingEventSearchParameters& InParameters, TFunctionRef InFoundPredicate) const; virtual bool HasCustomFilter() const override; protected: FLoadingSharedState& SharedState; uint32 TimelineIndex; TSharedPtr FilterConfigurator; }; //////////////////////////////////////////////////////////////////////////////////////////////////// } // namespace UE::Insights::LoadingProfiler