8#include "Components/ActorComponent.h"
9#include "CoreMinimal.h"
10#include "GameFramework/Actor.h"
19#include "SensorsManagerComponent.generated.h"
57UCLASS(ClassGroup = (Custom), meta = (BlueprintSpawnableComponent))
58class AGRARSENSE_API USensorsManagerComponent :
public UActorComponent
64 USensorsManagerComponent();
66 ~USensorsManagerComponent();
72 UFUNCTION(BlueprintCallable)
78 UFUNCTION(BlueprintCallable)
79 TArray<ALidar*> GetLidars()
const {
return Lidars; }
84 UFUNCTION(BlueprintCallable)
85 TArray<ACamera*> GetCameras()
const {
return Cameras; }
90 UFUNCTION(BlueprintCallable)
91 TArray<AThermalCamera*> GetThermalCameras()
const {
return ThermalCameras; }
96 UFUNCTION(BlueprintCallable)
97 TArray<ADVSCamera*> GetDVSCameras()
const {
return DVSCameras; }
102 UFUNCTION(BlueprintCallable)
103 TArray<ASemanticSegmentationCamera*> GetSegmentationCameras()
const {
return SegmentationCameras; }
108 UFUNCTION(BlueprintCallable)
109 TArray<ADepthCamera*> GetDepthCameras()
const {
return DepthCameras; }
114 UFUNCTION(BlueprintCallable)
115 TArray<ARadar*> GetRadars()
const {
return Radars; }
130 UFUNCTION(BlueprintCallable)
131 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);
146 UFUNCTION(BlueprintCallable)
147 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);
162 UFUNCTION(BlueprintCallable)
163 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);
178 UFUNCTION(BlueprintCallable)
179 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);
194 UFUNCTION(BlueprintCallable)
195 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);
210 UFUNCTION(BlueprintCallable)
211 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);
226 UFUNCTION(BlueprintCallable)
227 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);
242 UFUNCTION(BlueprintCallable)
243 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);
245 UFUNCTION(BlueprintCallable)
259 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);
265 UFUNCTION(BlueprintCallable)
266 void DestroyLidar(
ALidar* lidarToDestroy);
272 UFUNCTION(BlueprintCallable)
273 void DestroyCamera(
ACamera* cameraToDestroy);
279 UFUNCTION(BlueprintCallable)
280 void DestroyThermalCamera(
AThermalCamera* thermalCameraToDestroy);
286 UFUNCTION(BlueprintCallable)
287 void DestroyDVSCamera(
ADVSCamera* thermalCameraToDestroy);
293 UFUNCTION(BlueprintCallable)
300 UFUNCTION(BlueprintCallable)
301 void DestroyDepthCamera(
ADepthCamera* depthCameraToDestroy);
307 UFUNCTION(BlueprintCallable)
308 void DestroyRadar(
ARadar* radarToDestroy);
314 UFUNCTION(BlueprintCallable)
315 void DestroySensor(
ASensor* sensorToDestroy);
320 UFUNCTION(BlueprintCallable)
321 void DestroyAllSensors();
328 UFUNCTION(BlueprintCallable)
331 UFUNCTION(BlueprintCallable)
339 UFUNCTION(BlueprintCallable)
340 void AttachSensorToActor(
ASensor* sensor, AActor* attachToActor);
348 UFUNCTION(BlueprintCallable)
349 void AttachSensorToBone(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName);
357 UFUNCTION(BlueprintCallable)
358 void AttachSensor(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName);
365 USceneComponent* GetComponentByHierarchyName(FString hierarchyName);
370 UPROPERTY(BlueprintAssignable)
371 FLidarSpawned OnLidarSpawned;
374 UPROPERTY(BlueprintAssignable)
375 FCameraSpawned OnCameraSpawned;
378 UPROPERTY(BlueprintAssignable)
379 FThermalCameraSpawned OnThermalCameraSpawned;
382 UPROPERTY(BlueprintAssignable)
383 FDVSCameraSpawned OnDVSCameraSpawned;
386 UPROPERTY(BlueprintAssignable)
387 FSegmentationCameraSpawned OnSegmentationCameraSpawned;
390 UPROPERTY(BlueprintAssignable)
391 FInstanceSegmentationCameraSpawned OnInstanceSegmentationCameraSpawned;
394 UPROPERTY(BlueprintAssignable)
395 FDepthCameraSpawned OnDepthCameraSpawned;
398 UPROPERTY(BlueprintAssignable)
399 FRadarSpawned OnRadarSpawned;
402 UPROPERTY(BlueprintAssignable)
403 FSensorSpawned OnSensorSpawned;
406 UPROPERTY(BlueprintAssignable)
407 FLidarDestroyed OnLidarDestroyed;
410 UPROPERTY(BlueprintAssignable)
411 FCameraDestroyed OnCameraDestroyed;
414 UPROPERTY(BlueprintAssignable)
415 FThermalCameraDestroyed OnThermalCameraDestroyed;
418 UPROPERTY(BlueprintAssignable)
419 FDVSCameraDestroyed OnDVSCameraDestroyed;
422 UPROPERTY(BlueprintAssignable)
423 FSegmentationCameraDestroyed OnSegmentationCameraDestroyed;
426 UPROPERTY(BlueprintAssignable)
427 FInstanceSegmentationCameraDestroyed OnInstanceSegmentationCameraDestroyed;
430 UPROPERTY(BlueprintAssignable)
431 FDepthCameraDestroyed OnDepthCameraDestroyed;
434 UPROPERTY(BlueprintAssignable)
435 FRadarDestroyed OnRadarDestroyed;
438 UPROPERTY(BlueprintAssignable)
439 FSensorDestroyed OnSensorDestroyed;
443 static const FString ComponentHierarchySeparator;
451 FTransform SensorRelativeTransformToWorld(
const FTransform& relativeTransform);
459 FTransform SensorRelativeTransformToComponentWorld(
const FTransform& relativeTransform,
const FTransform& componentTransformWorld);
461 FTransform GetSensorAttachmentTransform(
const FTransform& sensorRelativeTransform, USceneComponent* attachToComponent,
const FName& attachToBone,
bool revertScaleToVectorOne =
true);
467 void AttachSensorToOwner(
ASensor* sensor);
473 void DestroySensorActor(AActor* sensorActor);
480 void OnCameraWindowClosed(
ACamera* camera);
486 void AddSensorDestroyListener(
ASensor* sensor);
492 void RemoveSensorDestroyListener(
ASensor* sensor);
499 void OnSensorDestroy(
ASensor* sensor);
@ InstanceSegmentationCamera
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FSensorDestroyed, ESensorTypes, sensorType, FString, sensorIdentifier)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FLidarSpawned, ALidar *, lidar)