EM_Task/TraceInsights/Public/Insights/ViewModels/ITimingEvent.h
Boshuang Zhao 5144a49c9b add
2026-02-13 16:18:33 +08:00

66 lines
2.1 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Insights/Common/SimpleRtti.h"
class FBaseTimingTrack;
////////////////////////////////////////////////////////////////////////////////////////////////////
class TRACEINSIGHTS_API ITimingEvent
{
INSIGHTS_DECLARE_RTTI_BASE(ITimingEvent)
public:
virtual const TSharedRef<const FBaseTimingTrack> GetTrack() const = 0;
bool CheckTrack(const FBaseTimingTrack* TrackPtr) const { return &GetTrack().Get() == TrackPtr; }
virtual uint32 GetDepth() const = 0;
virtual double GetStartTime() const = 0;
virtual double GetEndTime() const = 0;
virtual double GetDuration() const = 0;
virtual bool Equals(const ITimingEvent& Other) const = 0;
static bool AreEquals(const ITimingEvent& A, const ITimingEvent& B)
{
return A.Equals(B);
}
static bool AreValidAndEquals(const TSharedPtr<const ITimingEvent> A, const TSharedPtr<const ITimingEvent> B)
{
return A.IsValid() && B.IsValid() && (*A).Equals(*B);
}
};
////////////////////////////////////////////////////////////////////////////////////////////////////
class TRACEINSIGHTS_API ITimingEventFilter
{
INSIGHTS_DECLARE_RTTI_BASE(ITimingEventFilter)
public:
/**
* Returns true if the track passes the filter.
*/
virtual bool FilterTrack(const FBaseTimingTrack& InTrack) const = 0;
/**
* Returns true if the timing event passes the filter.
*/
virtual bool FilterEvent(const ITimingEvent& InEvent) const = 0;
virtual bool FilterEvent(double InEventStartTime, double InEventEndTime, uint32 InEventDepth, const TCHAR* InEventName, uint64 InEventType = 0, uint32 InEventColor = 0) const = 0;
/**
* Returns a number that changes each time an attribute of this filter changes.
*/
virtual uint32 GetChangeNumber() const = 0;
};
////////////////////////////////////////////////////////////////////////////////////////////////////