Agrarsense
Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
APhotoCapture Class Reference

#include <PhotoCapture.h>

Inheritance diagram for APhotoCapture:
Inheritance graph
[legend]
Collaboration diagram for APhotoCapture:
Collaboration graph
[legend]

Public Member Functions

 APhotoCapture (const FObjectInitializer &ObjectInitializer)
 
void SetupPhotoCapture (FCaptureData NewCaptureData)
 

Protected Member Functions

virtual void BeginPlay () override
 
virtual void Tick (float DeltaTime) override
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 

Private Member Functions

void Capture ()
 
void UpdateCameraPositions (const FTransform &Transform)
 
void CaptureImages ()
 
void DestroyCameras ()
 

Private Attributes

FCaptureData CaptureData
 
int32 FrameCounter = 0
 

Detailed Description

Definition at line 41 of file PhotoCapture.h.

Constructor & Destructor Documentation

◆ APhotoCapture()

APhotoCapture::APhotoCapture ( const FObjectInitializer &  ObjectInitializer)

Definition at line 11 of file PhotoCapture.cpp.

11 : Super(ObjectInitializer)
12{
13 RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("SceneRoot"));
14 PrimaryActorTick.bCanEverTick = true;
15 PrimaryActorTick.bStartWithTickEnabled = false;
16 PrimaryActorTick.TickGroup = TG_PrePhysics;
17 SetActorTickEnabled(false);
18}

Member Function Documentation

◆ BeginPlay()

void APhotoCapture::BeginPlay ( )
overrideprotectedvirtual

Definition at line 55 of file PhotoCapture.cpp.

56{
57 Super::BeginPlay();
58}

◆ Capture()

void APhotoCapture::Capture ( )
private

Definition at line 74 of file PhotoCapture.cpp.

75{
76 // A bit convoluted logic due to its not guaranteed that we can move actor
77 // and save the camera image in the same frame.
78
80 {
84 {
85 FrameCounter = 0;
87 {
90 }
91 }
92 }
93
95 {
96 // Disable tick
97 SetActorTickEnabled(false);
98
99 // Destroy this Actor with delay so Camera sensors has time to save the last images
100 FTimerHandle Handle;
101 GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([this]
102 {
104 Destroy();
105 }), 1.0f, false);
106 }
107}
void DestroyCameras()
void CaptureImages()
void UpdateCameraPositions(const FTransform &Transform)
int32 FrameCounter
Definition: PhotoCapture.h:75
FCaptureData CaptureData
Definition: PhotoCapture.h:73
int32 FramesToKeepInSamePosition
Definition: PhotoCapture.h:30
TArray< FTransform > CapturePositions
Definition: PhotoCapture.h:24
int32 CurrentCaptureIndex
Definition: PhotoCapture.h:27

References CaptureData, CaptureImages(), FCaptureData::CapturePositions, FCaptureData::CurrentCaptureIndex, Destroy, DestroyCameras(), FrameCounter, FCaptureData::FramesToKeepInSamePosition, and UpdateCameraPositions().

Referenced by Tick().

◆ CaptureImages()

void APhotoCapture::CaptureImages ( )
private

Definition at line 121 of file PhotoCapture.cpp.

122{
123 for (int32 i = 0; i < CaptureData.Cameras.Num(); i++)
124 {
125 ACamera* CameraPtr = CaptureData.Cameras[i];
126 if (CameraPtr)
127 {
128 CameraPtr->SaveCurrentFrameToDisk();
129 }
130 }
131}
Definition: Camera.h:53
void SaveCurrentFrameToDisk()
Definition: Camera.h:184
TArray< ACamera * > Cameras
Definition: PhotoCapture.h:21

References FCaptureData::Cameras, CaptureData, and ACamera::SaveCurrentFrameToDisk().

Referenced by Capture().

◆ DestroyCameras()

void APhotoCapture::DestroyCameras ( )
private

Definition at line 133 of file PhotoCapture.cpp.

134{
135 for (int32 i = 0; i < CaptureData.Cameras.Num(); i++)
136 {
137 ACamera* CameraPtr = CaptureData.Cameras[i];
138 if (CameraPtr)
139 {
140 CameraPtr->Destroy();
141 }
142 }
143}

References FCaptureData::Cameras, and CaptureData.

Referenced by Capture(), and SetupPhotoCapture().

◆ EndPlay()

void APhotoCapture::EndPlay ( const EEndPlayReason::Type  EndPlayReason)
overrideprotectedvirtual

Definition at line 66 of file PhotoCapture.cpp.

67{
68 Super::EndPlay(EndPlayReason);
69
70 CaptureData.Cameras.Empty();
72}

References FCaptureData::Cameras, CaptureData, and FCaptureData::CapturePositions.

◆ SetupPhotoCapture()

void APhotoCapture::SetupPhotoCapture ( FCaptureData  NewCaptureData)

Definition at line 20 of file PhotoCapture.cpp.

21{
22 CaptureData = NewCaptureData;
23
24 if (CaptureData.CapturePositions.Num() != 0 && CaptureData.Cameras.Num() != 0)
25 {
26 for (int32 i = 0; i < CaptureData.Cameras.Num(); i++)
27 {
28 ACamera* CameraPtr = CaptureData.Cameras[i];
29 if (CameraPtr)
30 {
31 FCameraBaseParameters params = CameraPtr->GetCameraParameters();
32 params.SaveImageToDisk = false;
33 params.SendDataToROS = false;
34 CameraPtr->ChangeCameraParameters(params);
35 }
36 }
37
39
40 // Enable This Actor tick with delay
41 FTimerHandle Handle;
42 GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([this]
43 {
45 SetActorTickEnabled(true);
46 }), 0.1f, false);
47 }
48 else
49 {
51 Destroy();
52 }
53}
void ChangeCameraParameters(FCameraBaseParameters newParameters)
Definition: Camera.cpp:54
FCameraBaseParameters GetCameraParameters()
Definition: Camera.h:91

References FCaptureData::Cameras, CaptureData, FCaptureData::CapturePositions, ACamera::ChangeCameraParameters(), Destroy, DestroyCameras(), ACamera::GetCameraParameters(), FCameraBaseParameters::SaveImageToDisk, FCameraBaseParameters::SendDataToROS, and UpdateCameraPositions().

Referenced by USimulatorJsonParser::ParseDataCapture().

◆ Tick()

void APhotoCapture::Tick ( float  DeltaTime)
overrideprotectedvirtual

Definition at line 60 of file PhotoCapture.cpp.

61{
62 Super::Tick(DeltaTime);
63 Capture();
64}

References Capture().

◆ UpdateCameraPositions()

void APhotoCapture::UpdateCameraPositions ( const FTransform &  Transform)
private

Definition at line 109 of file PhotoCapture.cpp.

110{
111 for (int32 i = 0; i < CaptureData.Cameras.Num(); i++)
112 {
113 ACamera* CameraPtr = CaptureData.Cameras[i];
114 if (CameraPtr)
115 {
116 CameraPtr->SetActorTransform(Transform);
117 }
118 }
119}

References FCaptureData::Cameras, CaptureData, and Transform.

Referenced by Capture(), and SetupPhotoCapture().

Member Data Documentation

◆ CaptureData

FCaptureData APhotoCapture::CaptureData
private

◆ FrameCounter

int32 APhotoCapture::FrameCounter = 0
private

Definition at line 75 of file PhotoCapture.h.

Referenced by Capture().


The documentation for this class was generated from the following files: