11#include "GeoReferencingSystem.h" 
   12#include "TimerManager.h" 
   16    RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT(
"SceneRoot"));
 
   17    PrimaryActorTick.bCanEverTick = 
true;
 
   18    PrimaryActorTick.bStartWithTickEnabled = 
false;
 
   19    PrimaryActorTick.TickGroup = TG_PrePhysics;
 
   20    SetActorTickEnabled(
false);
 
   29        AGeoReferencingSystem* GeoReferencingSystem = AGeoReferencingSystem::GetGeoReferencingSystem(GetWorld());
 
   31        if (GeoReferencingSystem)
 
   35                FVector Location = 
Transform.GetLocation();
 
   37                FGeographicCoordinates GeographicCoordinates;
 
   38                GeographicCoordinates.Latitude = Location.X;
 
   39                GeographicCoordinates.Longitude = Location.Y;
 
   40                GeographicCoordinates.Altitude = Location.Z;
 
   44                Transform.SetLocation(InUnrealCoordinates);
 
   49            SimulatorLog::Log(
"Couldn't convert GPS coordinates into Unreal transform because couldn't find GeoReferencingSystem.");
 
   56        TArray<FTransform> NewCapturePositions;
 
   60            FVector OriginalPosition = OriginalTransform.GetLocation();
 
   61            FRotator OriginalRotation = OriginalTransform.GetRotation().Rotator();
 
   64            NewCapturePositions.Add(OriginalTransform);
 
   66            for (int32 i = 0; i < NumPhotos; i++)
 
   68                FTransform CameraTransform = FTransform::Identity;
 
   73                    CameraTransform.SetLocation(OriginalPosition + FVector(0, 100, 0));
 
   74                    CameraTransform.SetRotation(FQuat(OriginalRotation));
 
   77                    CameraTransform.SetLocation(OriginalPosition + FVector(0, -100, 0));
 
   78                    CameraTransform.SetRotation(FQuat(OriginalRotation + FRotator(0, 180, 0)));
 
   81                    CameraTransform.SetLocation(OriginalPosition + FVector(-100, 0, 0));
 
   82                    CameraTransform.SetRotation(FQuat(OriginalRotation + FRotator(0, 90, 0)));
 
   85                    CameraTransform.SetLocation(OriginalPosition + FVector(100, 0, 0));
 
   86                    CameraTransform.SetRotation(FQuat(OriginalRotation + FRotator(0, 270, 0)));
 
   91                NewCapturePositions.Add(CameraTransform);
 
  116        GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([
this]
 
  119                SetActorTickEnabled(
true);
 
  136    Super::Tick(DeltaTime);
 
  142    Super::EndPlay(EndPlayReason);
 
  171        SetActorTickEnabled(
false);
 
  175        GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([
this]
 
  214            CameraPtr->Destroy();
 
void ChangeCameraParameters(FCameraBaseParameters newParameters)
void SaveCurrentFrameToDisk()
FCameraBaseParameters GetCameraParameters()
virtual void Tick(float DeltaTime) override
virtual void BeginPlay() override
APhotoCapture(const FObjectInitializer &ObjectInitializer)
void SetupPhotoCapture(FCaptureData NewCaptureData)
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
void UpdateCameraPositions(const FTransform &Transform)
static void Log(const FString &Message, bool LogToTextFile=true, bool LogToROS=true)
static FVector GeographicToUnrealCoordinates(AGeoReferencingSystem *GeoReferencingSystem, const FGeographicCoordinates &GeographicCoordinates)
int32 FramesToKeepInSamePosition
TArray< FTransform > CapturePositions
TArray< ACamera * > Cameras
int32 CurrentCaptureIndex