// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Framework/Commands/Commands.h" #include "Insights/ITimingViewExtender.h" #include "Insights/ViewModels/TimingEventsTrack.h" #include "MassInsightsAnalysis/Model/MassInsights.h" #include "Templates/SharedPointer.h" //////////////////////////////////////////////////////////////////////////////////////////////////// namespace MassInsightsUI { class FMassInsightsTrack; class FMassInsightsViewCommands : public TCommands { public: FMassInsightsViewCommands(); virtual ~FMassInsightsViewCommands() override; virtual void RegisterCommands() override; public: TSharedPtr ShowHideRegionTrack; }; class FMassInsightsSharedState : public UE::Insights::Timing::ITimingViewExtender, public TSharedFromThis { friend class FMassInsightsTrack; public: virtual ~FMassInsightsSharedState() override = default; ////////////////////////////////////////////////// // ITimingViewExtender interface virtual void OnBeginSession(UE::Insights::Timing::ITimingViewSession& InSession) override; virtual void OnEndSession(UE::Insights::Timing::ITimingViewSession& InSession) override; virtual void Tick(UE::Insights::Timing::ITimingViewSession& InSession, const TraceServices::IAnalysisSession& InAnalysisSession) override; virtual void ExtendOtherTracksFilterMenu(UE::Insights::Timing::ITimingViewSession& InSession, FMenuBuilder& InOutMenuBuilder) override; ////////////////////////////////////////////////// void ShowHideRegionsTrack(); bool IsRegionsTrackVisible() const {return bShowHideRegionsTrack;}; void BindCommands(); private: TSharedPtr MassInsightsTrack; bool bShowHideRegionsTrack = true; }; class FMassInsightsTrack : public FTimingEventsTrack { INSIGHTS_DECLARE_RTTI(FMassInsightsTrack, FTimingEventsTrack) public: FMassInsightsTrack(FMassInsightsSharedState& InSharedState); virtual ~FMassInsightsTrack() override; virtual void BuildContextMenu(FMenuBuilder& MenuBuilder) override; virtual void InitTooltip(FTooltipDrawState& InOutTooltip, const ITimingEvent& InTooltipEvent) const override; virtual const TSharedPtr SearchEvent(const FTimingEventSearchParameters& InSearchParameters) const override; virtual void BuildDrawState(ITimingEventsTrackDrawStateBuilder& Builder, const ITimingTrackUpdateContext& Context) override; virtual void BuildFilteredDrawState(ITimingEventsTrackDrawStateBuilder& Builder, const ITimingTrackUpdateContext& Context) override; virtual void SetFilterConfigurator(TSharedPtr InFilterConfigurator) override; protected: bool FindRegionEvent(const FTimingEventSearchParameters& InParameters, TFunctionRef InFoundPredicate) const; private: TSharedPtr FilterConfigurator; FMassInsightsSharedState& SharedState; TSharedPtr AnalysisSession; }; } // namespace MassInsightsUI