// 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 GetDetailsViewInternal() override; virtual TSharedPtr GetTimelineViewInternal() override; virtual bool UpdateInternal() override; virtual TConstArrayView> GetChildrenInternal(TArray>& OutTracks) const override; virtual FName GetNameInternal() const override; virtual FSlateIcon GetIconInternal() override; virtual FText GetDisplayNameInternal() const override; virtual uint64 GetObjectIdInternal() const override; virtual bool HasDebugDataInternal() const override; virtual bool HandleDoubleClickInternal() override; virtual FText GetStepCommandTooltipInternal(EStepMode) const override; virtual TOptional GetStepFrameTimeInternal(EStepMode, double) const override; mutable FText DisplayName; FString ObjectName; FSlateIcon Icon; TSharedPtr ExistenceRange; FObjectId ObjectId; TArray ChildTrackCreators; TArray> Children; /** This child track will be used by the current object track to replace its own appearance and timeline values */ TSharedPtr PrimaryChildTrack; bool bAddController; mutable bool bDisplayNameValid; bool bIconSearched; }; }