// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "RewindDebuggerTrack.h" #include "SEventTimelineView.h" namespace RewindDebugger { class IRewindDebuggerTrackCreator; struct FTrackCreatorAndTrack { const IRewindDebuggerTrackCreator* Creator; TSharedPtr Track; }; class FRewindDebuggerObjectTrack : public FRewindDebuggerTrack { public: FRewindDebuggerObjectTrack(const FObjectId& InObjectId, const FString& InObjectName, bool bInAddController = false); TSharedPtr GetExistenceRange() const { return ExistenceRange; } private: virtual TSharedPtr GetTimelineViewInternal() override; virtual bool UpdateInternal() override; virtual void IterateSubTracksInternal(TFunction SubTrack)> IteratorFunction) override; virtual FName GetNameInternal() const override { return ""; } virtual FSlateIcon GetIconInternal() override { return Icon; } virtual FText GetDisplayNameInternal() const override; virtual uint64 GetObjectIdInternal() const override { return ObjectId.GetMainId(); } virtual uint64 GetChildElementIdInternal() const override { return ObjectId.GetChildElementId(); } virtual bool HasDebugDataInternal() const override { return false; } virtual bool HandleDoubleClickInternal() override; mutable FText DisplayName; FString ObjectName; FSlateIcon Icon; TSharedPtr ExistenceRange; FObjectId ObjectId; TArray TrackChildren; TArray> Children; bool bAddController; mutable bool bDisplayNameValid; bool bIconSearched; }; }