8#include "Components/ActorComponent.h"
9#include "CoreMinimal.h"
10#include "GameFramework/Actor.h"
19#include "SensorsManagerComponent.generated.h"
56UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
57class AGRARSENSE_API USensorsManagerComponent :
public UActorComponent
63 USensorsManagerComponent();
65 ~USensorsManagerComponent();
71 UFUNCTION(BlueprintCallable)
77 UFUNCTION(BlueprintCallable)
78 TArray<ALidar*> GetLidars()
const {
return Lidars; }
83 UFUNCTION(BlueprintCallable)
84 TArray<ACamera*> GetCameras()
const {
return Cameras; }
89 UFUNCTION(BlueprintCallable)
90 TArray<AThermalCamera*> GetThermalCameras()
const {
return ThermalCameras; }
95 UFUNCTION(BlueprintCallable)
96 TArray<ADVSCamera*> GetDVSCameras()
const {
return DVSCameras; }
101 UFUNCTION(BlueprintCallable)
102 TArray<ASemanticSegmentationCamera*> GetSegmentationCameras()
const {
return SegmentationCameras; }
107 UFUNCTION(BlueprintCallable)
108 TArray<ADepthCamera*> GetDepthCameras()
const {
return DepthCameras; }
113 UFUNCTION(BlueprintCallable)
114 TArray<ARadar*> GetRadars()
const {
return Radars; }
135 UFUNCTION(BlueprintCallable)
136 ALidar* SpawnLidar(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FLidarParameters lidarParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
151 UFUNCTION(BlueprintCallable)
152 ACamera* SpawnCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters cameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
167 UFUNCTION(BlueprintCallable)
168 AThermalCamera* SpawnThermalCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FThermalCameraParameters thermalCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
183 UFUNCTION(BlueprintCallable)
184 ADVSCamera* SpawnDVSCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FDVSCameraParameters DVSCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
199 UFUNCTION(BlueprintCallable)
200 ASemanticSegmentationCamera* SpawnSegmentationCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters CameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
215 UFUNCTION(BlueprintCallable)
216 AInstanceSegmentationCamera* SpawnInstanceSegmentationCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters CameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
231 UFUNCTION(BlueprintCallable)
232 ADepthCamera* SpawnDepthCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FDepthCameraParameters DepthCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
247 UFUNCTION(BlueprintCallable)
248 ARadar* SpawnRadar(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FRadarParameters radarParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
250 UFUNCTION(BlueprintCallable)
264 ASensor* SpawnSensor(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
ESensorTypes sensorType,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent =
nullptr, FName attachToBone = NAME_None);
270 UFUNCTION(BlueprintCallable)
271 void DestroyLidar(
ALidar* lidarToDestroy);
277 UFUNCTION(BlueprintCallable)
278 void DestroyCamera(
ACamera* cameraToDestroy);
284 UFUNCTION(BlueprintCallable)
285 void DestroyThermalCamera(
AThermalCamera* thermalCameraToDestroy);
291 UFUNCTION(BlueprintCallable)
292 void DestroyDVSCamera(
ADVSCamera* thermalCameraToDestroy);
298 UFUNCTION(BlueprintCallable)
305 UFUNCTION(BlueprintCallable)
306 void DestroyDepthCamera(
ADepthCamera* depthCameraToDestroy);
312 UFUNCTION(BlueprintCallable)
313 void DestroyRadar(
ARadar* radarToDestroy);
319 UFUNCTION(BlueprintCallable)
320 void DestroySensor(
ASensor* sensorToDestroy);
325 UFUNCTION(BlueprintCallable)
326 void DestroyAllSensors();
333 UFUNCTION(BlueprintCallable)
336 UFUNCTION(BlueprintCallable)
344 UFUNCTION(BlueprintCallable)
345 void AttachSensorToActor(
ASensor* sensor, AActor* attachToActor);
353 UFUNCTION(BlueprintCallable)
354 void AttachSensorToBone(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName);
362 UFUNCTION(BlueprintCallable)
363 void AttachSensor(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName);
370 USceneComponent* GetComponentByHierarchyName(FString hierarchyName);
375 UPROPERTY(BlueprintAssignable)
376 FLidarSpawned OnLidarSpawned;
379 UPROPERTY(BlueprintAssignable)
380 FCameraSpawned OnCameraSpawned;
383 UPROPERTY(BlueprintAssignable)
384 FThermalCameraSpawned OnThermalCameraSpawned;
387 UPROPERTY(BlueprintAssignable)
388 FDVSCameraSpawned OnDVSCameraSpawned;
391 UPROPERTY(BlueprintAssignable)
392 FSegmentationCameraSpawned OnSegmentationCameraSpawned;
395 UPROPERTY(BlueprintAssignable)
396 FInstanceSegmentationCameraSpawned OnInstanceSegmentationCameraSpawned;
399 UPROPERTY(BlueprintAssignable)
400 FDepthCameraSpawned OnDepthCameraSpawned;
403 UPROPERTY(BlueprintAssignable)
404 FRadarSpawned OnRadarSpawned;
407 UPROPERTY(BlueprintAssignable)
408 FSensorSpawned OnSensorSpawned;
411 UPROPERTY(BlueprintAssignable)
412 FLidarDestroyed OnLidarDestroyed;
415 UPROPERTY(BlueprintAssignable)
416 FCameraDestroyed OnCameraDestroyed;
419 UPROPERTY(BlueprintAssignable)
420 FThermalCameraDestroyed OnThermalCameraDestroyed;
423 UPROPERTY(BlueprintAssignable)
424 FDVSCameraDestroyed OnDVSCameraDestroyed;
427 UPROPERTY(BlueprintAssignable)
428 FSegmentationCameraDestroyed OnSegmentationCameraDestroyed;
431 UPROPERTY(BlueprintAssignable)
432 FInstanceSegmentationCameraDestroyed OnInstanceSegmentationCameraDestroyed;
435 UPROPERTY(BlueprintAssignable)
436 FDepthCameraDestroyed OnDepthCameraDestroyed;
439 UPROPERTY(BlueprintAssignable)
440 FRadarDestroyed OnRadarDestroyed;
443 UPROPERTY(BlueprintAssignable)
444 FSensorDestroyed OnSensorDestroyed;
448 static const FString ComponentHierarchySeparator;
456 FTransform SensorRelativeTransformToWorld(
const FTransform& relativeTransform);
464 FTransform SensorRelativeTransformToComponentWorld(
const FTransform& relativeTransform,
const FTransform& componentTransformWorld);
466 FTransform GetSensorAttachmentTransform(
const FTransform& sensorRelativeTransform, USceneComponent* attachToComponent,
const FName& attachToBone,
bool revertScaleToVectorOne =
true);
472 void AttachSensorToOwner(
ASensor* sensor);
478 void DestroySensorActor(AActor* sensorActor);
485 void OnCameraWindowClosed(
ACamera* camera);
491 void AddSensorDestroyListener(
ASensor* sensor);
497 void RemoveSensorDestroyListener(
ASensor* sensor);
504 void OnSensorDestroy(
ASensor* sensor);
@ InstanceSegmentationCamera
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FSensorDestroyed, ESensorTypes, sensorType, FString, sensorIdentifier)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLidarSpawned, ALidar *, lidar)