// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "GameFramework/Actor.h" #include "VisualLogger/VisualLoggerTypes.h" #include "DebugRenderSceneProxy.h" #include "VisualLoggerRenderingActor.generated.h" class UPrimitiveComponent; struct FVisualLoggerDBRow; /** * Transient actor used to draw visual logger data on level */ DECLARE_MULTICAST_DELEGATE_OneParam(FOnSelectionChanged, class AActor*); UCLASS(config = Engine, NotBlueprintable, Transient, notplaceable, AdvancedClassDisplay) class LOGVISUALIZER_API AVisualLoggerRenderingActor : public AActor { struct FTimelineDebugShapes { TArray Lines; TArray Cones; TArray Boxes; TArray Points; TArray Meshes; TArray Texts; TArray Cylinders; TArray Capsules; TArray Arrows; TArray LogEntriesPath; void Reset() { Lines.Reset(); Cones.Reset(); Boxes.Reset(); Points.Reset(); Meshes.Reset(); Texts.Reset(); Cylinders.Reset(); Capsules.Reset(); Arrows.Reset(); LogEntriesPath.Reset(); } }; public: GENERATED_UCLASS_BODY() virtual ~AVisualLoggerRenderingActor(); void ResetRendering(); void ObjectSelectionChanged(const TArray& Selection); void OnItemSelectionChanged(const FVisualLoggerDBRow& BDRow, int32 ItemIndex); private: void AddDebugRendering(); #if ENABLE_VISUAL_LOG void GetDebugShapes(const FVisualLogDevice::FVisualLogEntryItem& EntryItem, FTimelineDebugShapes& DebugShapes); #endif void OnFiltersChanged(); public: UPrimitiveComponent* RenderingComponent; FTimelineDebugShapes TestDebugShapes; TArray CachedRowSelection; TMap DebugShapesPerRow; };