Files
UnrealEngineUWP/Engine/Source/Runtime/MovieSceneCapture/Private/LevelCapture.cpp
Ryan Vance 7c51ff94af Merging //UE4/Dev-Main to Dev-VR (//UE4/Dev-VR)
CL 1 of 8
#rb integration

[CL 4748712 by Ryan Vance in Dev-VR branch]
2019-01-17 18:54:05 -05:00

61 lines
1.4 KiB
C++

// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#include "LevelCapture.h"
#include "UObject/LazyObjectPtr.h"
#include "Engine/World.h"
ULevelCapture::ULevelCapture(const FObjectInitializer& Init)
: Super(Init)
{
bAutoStartCapture = true;
}
void ULevelCapture::SetPrerequisiteActor(AActor* InPrerequisiteActor)
{
PrerequisiteActorId = TLazyObjectPtr<>(InPrerequisiteActor).GetUniqueID().GetGuid();
}
void ULevelCapture::Initialize(TSharedPtr<FSceneViewport> InViewport, int32 PIEInstance)
{
CaptureStrategy = MakeShareable(new FFixedTimeStepCaptureStrategy(Settings.FrameRate));
CaptureStrategy->OnInitialize();
Super::Initialize(InViewport, PIEInstance);
PIECaptureInstance = PIEInstance;
if (bAutoStartCapture)
{
StartCapture();
}
}
void ULevelCapture::OnTick(float DeltaSeconds)
{
AActor* Actor = PrerequisiteActor.Get();
if (!Actor)
{
// We need to look the actor up
TLazyObjectPtr<AActor> LazyActor;
if (PIECaptureInstance != -1)
{
LazyActor = FUniqueObjectGuid(PrerequisiteActorId).FixupForPIE(PIECaptureInstance);
}
else
{
LazyActor = FUniqueObjectGuid(PrerequisiteActorId);
}
PrerequisiteActor = Actor = LazyActor.Get();
}
if (Actor && Actor->GetWorld() && !Actor->GetWorld()->HasBegunPlay())
{
return;
}
if (!PrerequisiteActorId.IsValid() || (Actor && Actor->HasActorBegunPlay()))
{
CaptureThisFrame(DeltaSeconds);
}
}