Files
UnrealEngineUWP/Engine/Source/Developer/TaskGraph/Private/VisualizerEvents.cpp
ryan durand 471d972e62 Updating copyright for Engine Developer.
#rnx
#rb none


#ROBOMERGE-SOURCE: CL 10869240 via CL 10869516 via CL 10869902
#ROBOMERGE-BOT: (v613-10869866)

[CL 10870584 by ryan durand in Main branch]
2019-12-26 15:32:37 -05:00

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);
}
}