80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "VisualizerEvents.h"
|
|
|
|
#if defined( _WIN64 )
|
|
static_assert(sizeof(FVisualizerEvent) == 88, "FVisualizerEvent size has changed. Please update the save/load functions");
|
|
#endif
|
|
|
|
TSharedPtr< FVisualizerEvent > FVisualizerEvent::LoadVisualizerEventRecursively(FArchive *Ar, TSharedPtr< FVisualizerEvent > InParentEvent)
|
|
{
|
|
double Start;
|
|
double Duration;
|
|
double DurationMs;
|
|
int32 Category;
|
|
FString EventName;
|
|
bool IsSelected;
|
|
|
|
*Ar << Start;
|
|
*Ar << Duration;
|
|
*Ar << DurationMs;
|
|
*Ar << Category;
|
|
*Ar << EventName;
|
|
*Ar << IsSelected;
|
|
|
|
TSharedPtr< FVisualizerEvent > VisualizerEvent(new FVisualizerEvent(Start, Duration,DurationMs,Category,EventName));
|
|
VisualizerEvent->ParentEvent = InParentEvent;
|
|
|
|
uint32 NumChildren;
|
|
|
|
Ar->SerializeInt(NumChildren, MAX_uint32);
|
|
VisualizerEvent->Children.Reserve(NumChildren);
|
|
|
|
for (uint32 i = 0; i < NumChildren; ++i)
|
|
{
|
|
TSharedPtr< FVisualizerEvent > ChildEvent = LoadVisualizerEventRecursively(Ar, VisualizerEvent);
|
|
VisualizerEvent->Children.Add(ChildEvent);
|
|
}
|
|
|
|
return VisualizerEvent;
|
|
|
|
}
|
|
|
|
TSharedPtr< FVisualizerEvent > FVisualizerEvent::LoadVisualizerEvent(FArchive *Ar)
|
|
{
|
|
//FArchive Ar;
|
|
// Assumption: InProfileData contains only one (root) element. Otherwise an extra FVisualizerEvent root event is required.
|
|
TSharedPtr< FVisualizerEvent > DummyRoot;
|
|
// Recursively create visualizer event data.
|
|
TSharedPtr< FVisualizerEvent > StatEvents(LoadVisualizerEventRecursively( Ar, DummyRoot));
|
|
return StatEvents;
|
|
}
|
|
|
|
|
|
|
|
void FVisualizerEvent::SaveVisualizerEventRecursively(FArchive *Ar, TSharedPtr< FVisualizerEvent > VisualizerEvent )
|
|
{
|
|
//Write all simple members
|
|
*Ar << VisualizerEvent->Start;
|
|
*Ar << VisualizerEvent->Duration;
|
|
*Ar << VisualizerEvent->DurationMs;
|
|
*Ar << VisualizerEvent->Category;
|
|
*Ar << VisualizerEvent->EventName;
|
|
*Ar << VisualizerEvent->IsSelected;
|
|
|
|
uint32 NumChildren;
|
|
|
|
NumChildren = VisualizerEvent->Children.Num();
|
|
Ar->SerializeInt(NumChildren, MAX_uint32);
|
|
|
|
for(uint32 i = 0; i < NumChildren; ++i)
|
|
{
|
|
TSharedPtr< FVisualizerEvent > Child;
|
|
|
|
Child = VisualizerEvent->Children[i];
|
|
SaveVisualizerEventRecursively(Ar, Child);
|
|
}
|
|
}
|
|
|
|
|