Within the actor snapshot area, you can categorize information into different sub-trees, each of which are expandable. However as you scrub through the timeline and new events happen, any sub-categories are always closed. It is not worth expanding them all every time we change frames, so you're basically forced to not use the subcategories even though they are implemented.
// ExampleActor.h #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "VisualLogger/VisualLoggerDebugSnapshotInterface.h" #include "ExampleActor.generated.h" UCLASS() class AExampleActor : public AActor, public IVisualLoggerDebugSnapshotInterface { GENERATED_BODY() public: virtual void Tick(float DeltaTime) override; protected: int32 Points = 0; #if ENABLE_VISUAL_LOG virtual void GrabDebugSnapshot(FVisualLogEntry* Snapshot) const override; #endif }; // ExampleActor.cpp #include "ExampleActor.h" #include "VisualLogger/VisualLogger.h" void AExampleActor::Tick(float DeltaTime) { Super::Tick(DeltaTime) Points += 1; } #if ENABLE_VISUAL_LOG void AExampleActor::GrabDebugSnapshot(FVisualLogEntry* Snapshot) const { IVisualLoggerDebugSnapshotInterface::GrabDebugSnapshot(Snapshot); const int32 CatIndex = Snapshot->Status.AddZeroed(); FVisualLogStatusCategory& Category = Snapshot->Status[CatIndex]; Category.Category = TEXT("Example Actor"); Category.Add(TEXT("Points"), FString::Printf(TEXT("%d"), Points)); FVisualLogStatusCategory SubCategory(TEXT("Sub category")); SubCategory.Add(TEXT("This is always auto-closed"), "Drag through the timeline and it defaults to closed"); Category.AddChild(SubCategory); }
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-160330 in the post.