19const FString USensorsManagerComponent::ComponentHierarchySeparator = TEXT(
"_|_");
21USensorsManagerComponent::USensorsManagerComponent()
23 PrimaryComponentTick.bCanEverTick =
false;
26USensorsManagerComponent::~USensorsManagerComponent()
30ALidar* USensorsManagerComponent::SpawnLidar(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FLidarParameters lidarParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
33 if (!attachToComponent && !attachToBone.IsNone())
35 attachToComponent = GetOwner()->GetRootComponent();
38 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
46 SpawnParams.
Parent = GetOwner();
57 ASensor* CastedSensor = Cast<ASensor>(lidar);
59 AddSensorDestroyListener(CastedSensor);
61 AttachSensor(CastedSensor, attachToComponent, attachToBone);
63 Lidars.Emplace(lidar);
66 OnLidarSpawned.Broadcast(lidar);
67 OnSensorSpawned.Broadcast(CastedSensor);
72ACamera* USensorsManagerComponent::SpawnCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters cameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
75 if (!attachToComponent && !attachToBone.IsNone())
77 attachToComponent = GetOwner()->GetRootComponent();
80 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
87 SpawnParams.
Parent = GetOwner();
98 ASensor* CastedSensor = Cast<ASensor>(camera);
100 AttachSensor(CastedSensor, attachToComponent, attachToBone);
102 AddSensorDestroyListener(CastedSensor);
104 Cameras.Emplace(camera);
109 OnCameraSpawned.Broadcast(camera);
110 OnSensorSpawned.Broadcast(CastedSensor);
115AThermalCamera* USensorsManagerComponent::SpawnThermalCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FThermalCameraParameters thermalCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
119 if (!attachToComponent && !attachToBone.IsNone())
121 attachToComponent = GetOwner()->GetRootComponent();
124 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
131 SpawnParams.
Parent = GetOwner();
142 ASensor* CastedSensor = Cast<ASensor>(thermalCamera);
144 AttachSensor(CastedSensor, attachToComponent, attachToBone);
146 AddSensorDestroyListener(CastedSensor);
148 ThermalCameras.Emplace(thermalCamera);
151 thermalCamera->
OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
153 OnThermalCameraSpawned.Broadcast(thermalCamera);
154 OnSensorSpawned.Broadcast(CastedSensor);
156 return thermalCamera;
159ADVSCamera* USensorsManagerComponent::SpawnDVSCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FDVSCameraParameters DVSCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
162 if (!attachToComponent && !attachToBone.IsNone())
164 attachToComponent = GetOwner()->GetRootComponent();
167 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
174 SpawnParams.
Parent = GetOwner();
183 createdModel =
DVSCamera->GetSensorModel();
185 ASensor* CastedSensor = Cast<ASensor>(DVSCamera);
187 AttachSensor(CastedSensor, attachToComponent, attachToBone);
189 AddSensorDestroyListener(CastedSensor);
191 DVSCameras.Emplace(DVSCamera);
194 DVSCamera->OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
196 OnDVSCameraSpawned.Broadcast(DVSCamera);
197 OnSensorSpawned.Broadcast(CastedSensor);
202ASemanticSegmentationCamera* USensorsManagerComponent::SpawnSegmentationCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters cameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
205 if (!attachToComponent && !attachToBone.IsNone())
207 attachToComponent = GetOwner()->GetRootComponent();
210 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
217 SpawnParams.
Parent = GetOwner();
221 if (!segmentationCamera)
228 ASensor* CastedSensor = Cast<ASensor>(segmentationCamera);
230 AttachSensor(CastedSensor, attachToComponent, attachToBone);
232 AddSensorDestroyListener(CastedSensor);
234 SegmentationCameras.Emplace(segmentationCamera);
237 segmentationCamera->
OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
239 OnSegmentationCameraSpawned.Broadcast(segmentationCamera);
240 OnSensorSpawned.Broadcast(CastedSensor);
242 return segmentationCamera;
245AInstanceSegmentationCamera* USensorsManagerComponent::SpawnInstanceSegmentationCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters CameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
248 if (!attachToComponent && !attachToBone.IsNone())
250 attachToComponent = GetOwner()->GetRootComponent();
253 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
260 SpawnParams.
Parent = GetOwner();
264 if (!InstanceSegmentationCamera)
271 ASensor* CastedSensor = Cast<ASensor>(InstanceSegmentationCamera);
273 AttachSensor(CastedSensor, attachToComponent, attachToBone);
275 AddSensorDestroyListener(CastedSensor);
277 InstanceSegmentationCameras.Emplace(InstanceSegmentationCamera);
282 OnInstanceSegmentationCameraSpawned.Broadcast(InstanceSegmentationCamera);
283 OnSensorSpawned.Broadcast(CastedSensor);
288ADepthCamera* USensorsManagerComponent::SpawnDepthCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FDepthCameraParameters DepthCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
291 if (!attachToComponent && !attachToBone.IsNone())
293 attachToComponent = GetOwner()->GetRootComponent();
296 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
303 SpawnParams.
Parent = GetOwner();
314 ASensor* CastedSensor = Cast<ASensor>(depthCamera);
316 AttachSensor(CastedSensor, attachToComponent, attachToBone);
318 AddSensorDestroyListener(CastedSensor);
320 DepthCameras.Emplace(depthCamera);
323 depthCamera->
OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
325 OnDepthCameraSpawned.Broadcast(depthCamera);
326 OnSensorSpawned.Broadcast(CastedSensor);
331ARadar* USensorsManagerComponent::SpawnRadar(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FRadarParameters radarParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
334 if (!attachToComponent && !attachToBone.IsNone())
336 attachToComponent = GetOwner()->GetRootComponent();
339 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
346 SpawnParams.
Parent = GetOwner();
357 ASensor* CastedSensor = Cast<ASensor>(radar);
359 AttachSensor(CastedSensor, attachToComponent, attachToBone);
361 AddSensorDestroyListener(CastedSensor);
363 Radars.Emplace(radar);
366 OnRadarSpawned.Broadcast(radar);
367 OnSensorSpawned.Broadcast(CastedSensor);
372ASensor* USensorsManagerComponent::SpawnSensor(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
ESensorTypes sensorType,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
379 sensor = Cast<ASensor>(SpawnLidar(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FLidarParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
382 sensor = Cast<ASensor>(SpawnCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FCameraBaseParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
385 sensor = Cast<ASensor>(SpawnThermalCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FThermalCameraParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
388 sensor = Cast<ASensor>(SpawnDVSCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FDVSCameraParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
391 sensor = Cast<ASensor>(SpawnSegmentationCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FCameraBaseParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
394 sensor = Cast<ASensor>(SpawnDepthCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FDepthCameraParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
397 sensor = Cast<ASensor>(SpawnRadar(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FRadarParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
406void USensorsManagerComponent::DestroyLidar(
ALidar* lidarToDestroy)
411 Lidars.Remove(lidarToDestroy);
413 ASensor* CastedSensor = Cast<ASensor>(lidarToDestroy);
415 RemoveSensorDestroyListener(CastedSensor);
418 DestroySensorActor(CastedSensor);
420 OnLidarDestroyed.Broadcast(sensorIdentifier);
425void USensorsManagerComponent::DestroyCamera(
ACamera* cameraToDestroy)
431 cameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
432 Cameras.Remove(cameraToDestroy);
434 ASensor* CastedSensor = Cast<ASensor>(cameraToDestroy);
436 RemoveSensorDestroyListener(CastedSensor);
439 DestroySensorActor(CastedSensor);
441 OnCameraDestroyed.Broadcast(sensorIdentifier);
446void USensorsManagerComponent::DestroyThermalCamera(
AThermalCamera* thermalCameraToDestroy)
448 if (thermalCameraToDestroy)
452 thermalCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
453 ThermalCameras.Remove(thermalCameraToDestroy);
455 ASensor* CastedSensor = Cast<ASensor>(thermalCameraToDestroy);
457 RemoveSensorDestroyListener(CastedSensor);
460 DestroySensorActor(CastedSensor);
462 OnThermalCameraDestroyed.Broadcast(sensorIdentifier);
467void USensorsManagerComponent::DestroyDVSCamera(
ADVSCamera* DVSCameraToDestroy)
469 if (DVSCameraToDestroy)
473 DVSCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
474 DVSCameras.Remove(DVSCameraToDestroy);
476 ASensor* CastedSensor = Cast<ASensor>(DVSCameraToDestroy);
478 RemoveSensorDestroyListener(CastedSensor);
481 DestroySensorActor(CastedSensor);
483 OnDVSCameraDestroyed.Broadcast(sensorIdentifier);
490 if (segmentationCameraToDestroy)
494 segmentationCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
495 SegmentationCameras.Remove(segmentationCameraToDestroy);
497 ASensor* CastedSensor = Cast<ASensor>(segmentationCameraToDestroy);
499 RemoveSensorDestroyListener(CastedSensor);
502 DestroySensorActor(CastedSensor);
504 OnSegmentationCameraDestroyed.Broadcast(sensorIdentifier);
509void USensorsManagerComponent::DestroyDepthCamera(
ADepthCamera* depthCameraToDestroy)
511 if (depthCameraToDestroy)
515 depthCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
516 DepthCameras.Remove(depthCameraToDestroy);
518 ASensor* CastedSensor = Cast<ASensor>(depthCameraToDestroy);
520 RemoveSensorDestroyListener(CastedSensor);
523 DestroySensorActor(CastedSensor);
525 OnDepthCameraDestroyed.Broadcast(sensorIdentifier);
530void USensorsManagerComponent::DestroyRadar(
ARadar* radarToDestroy)
536 Radars.Remove(radarToDestroy);
538 ASensor* CastedSensor = Cast<ASensor>(radarToDestroy);
540 RemoveSensorDestroyListener(CastedSensor);
543 DestroySensorActor(CastedSensor);
545 OnRadarDestroyed.Broadcast(sensorIdentifier);
550void USensorsManagerComponent::DestroySensor(
ASensor* sensorToDestroy)
559 DestroyLidar(Cast<ALidar>(sensorToDestroy));
562 DestroyCamera(Cast<ACamera>(sensorToDestroy));
565 DestroyThermalCamera(Cast<AThermalCamera>(sensorToDestroy));
568 DestroyDVSCamera(Cast<ADVSCamera>(sensorToDestroy));
571 DestroySegmentationCamera(Cast<ASemanticSegmentationCamera>(sensorToDestroy));
574 DestroyDepthCamera(Cast<ADepthCamera>(sensorToDestroy));
577 DestroyRadar(Cast<ARadar>(sensorToDestroy));
585void USensorsManagerComponent::DestroyAllSensors()
587 TArray<ASensor*> SensorsTempArray =
Sensors;
589 for (
const auto& sensor : SensorsTempArray)
591 DestroySensor(sensor);
595FTransform USensorsManagerComponent::SensorRelativeTransformToWorld(
const FTransform& relativeTransform)
597 AActor* owner = GetOwner();
598 return relativeTransform * owner->GetActorTransform();
601FTransform USensorsManagerComponent::SensorRelativeTransformToComponentWorld(
const FTransform& relativeTransform,
const FTransform& componentTransformWorld)
603 return relativeTransform * componentTransformWorld;
606FTransform USensorsManagerComponent::GetSensorAttachmentTransform(
const FTransform& sensorRelativeTransform, USceneComponent* attachToComponent,
const FName& attachToBone,
bool revertScaleToVectorOne)
608 FTransform worldTransform;
611 if (attachToComponent)
613 worldTransform = SensorRelativeTransformToComponentWorld(sensorRelativeTransform, attachToComponent->GetSocketTransform(attachToBone));
617 worldTransform = SensorRelativeTransformToWorld(sensorRelativeTransform);
620 if (revertScaleToVectorOne)
622 worldTransform.SetScale3D(FVector(1, 1, 1));
625 return worldTransform;
628USceneComponent* USensorsManagerComponent::GetComponentByHierarchyName(FString hierarchyName)
632 TArray<FString> componentNames;
634 AActor* owner = GetOwner();
637 USceneComponent* matchingComponent = owner->GetRootComponent();
640 hierarchyName.ParseIntoArray(componentNames, *ComponentHierarchySeparator,
true);
642 if (componentNames.Num() > 0)
645 FString initialComponentName = componentNames[0];
646 USceneComponent* initialComponent =
nullptr;
647 bool skipFirstComponentName =
true;
649 TArray<USceneComponent*> ownerComponents;
650 owner->GetComponents<USceneComponent>(ownerComponents);
653 for (USceneComponent* childComponent : ownerComponents)
655 if (childComponent && childComponent->GetName() == initialComponentName)
657 initialComponent = childComponent;
658 matchingComponent = initialComponent;
663 if (!initialComponent)
667 initialComponent = owner->GetRootComponent();
669 skipFirstComponentName =
false;
672 USceneComponent* currentComponent = initialComponent;
675 if (currentComponent && componentNames.Num() > (skipFirstComponentName ? 1 : 0))
678 bool bComponentFound =
false;
681 for (int32 i = (skipFirstComponentName ? 1 : 0); i < componentNames.Num(); ++i)
683 FString componentName = componentNames[i];
685 bComponentFound =
false;
688 for (USceneComponent* childComponent : currentComponent->GetAttachChildren())
690 FString childComponentName = childComponent->GetName();
695 if (childComponent && childComponent->GetName() == componentName)
698 currentComponent = childComponent;
699 bComponentFound =
true;
706 if (!bComponentFound)
709 UE_LOG(LogTemp, Warning, TEXT(
"Component '%s' not found. Breaking out of the loop"), *componentName);
718 FString foundComponentName = currentComponent->GetName();
719 matchingComponent = currentComponent;
724 UE_LOG(LogTemp, Warning, TEXT(
"Component not found"));
729 return matchingComponent;
732void USensorsManagerComponent::AttachSensorToOwner(
ASensor* sensor)
735 AActor* owner = GetOwner();
738 AttachSensorToActor(sensor, owner);
741void USensorsManagerComponent::AttachSensorToActor(
ASensor* sensor, AActor* attachToActor)
743 if (sensor && attachToActor)
745 sensor->AttachToActor(attachToActor, FAttachmentTransformRules::KeepWorldTransform);
751void USensorsManagerComponent::AttachSensorToBone(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName)
753 if (!sensor || !attachToComponent)
758 if (IsValid(attachToComponent))
760 sensor->AttachToComponent(attachToComponent, FAttachmentTransformRules::KeepWorldTransform, boneName);
762 USceneComponent* currentParentComponent = attachToComponent->GetAttachParent();
765 FString fullComponentName = attachToComponent->GetName();
768 if (currentParentComponent)
770 fullComponentName = attachToComponent->GetName();
773 while (currentParentComponent && currentParentComponent->GetAttachParent())
775 FString ParentComponentName = currentParentComponent->GetName();
778 fullComponentName = FString::Format(TEXT(
"{0}{1}{2}"), { *ParentComponentName, *ComponentHierarchySeparator, *fullComponentName });
781 currentParentComponent = currentParentComponent->GetAttachParent();
792void USensorsManagerComponent::AttachSensor(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName)
795 if (IsValid(attachToComponent) || !boneName.IsNone())
797 AttachSensorToBone(sensor, attachToComponent, boneName);
801 AttachSensorToOwner(sensor);
805void USensorsManagerComponent::DestroySensorActor(AActor* sensorActor)
812 TArray<AActor*> attachedActors;
813 sensorActor->GetAttachedActors(attachedActors);
815 for (AActor* CActor : attachedActors)
823 sensorActor->Destroy();
830 for (
const auto& LidarData : preset.
LidarDatas)
835 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
840 SpawnLidar(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, LidarData.LidarParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
843 for (
const auto& RadarData : preset.
RadarDatas)
848 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
853 SpawnRadar(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, RadarData.RadarParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
862 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
867 SpawnCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
876 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
881 SpawnThermalCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
890 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
895 SpawnDVSCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.DVSCameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
904 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
909 SpawnSegmentationCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
918 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
923 SpawnDepthCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
931 for (
const auto& Lidar : Lidars)
933 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(Lidar));
941 for (
const auto& Radar : Radars)
943 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(Radar));
951 for (
const auto& Camera : Cameras)
953 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(Camera));
960 for (
const auto& ThermalCamera : ThermalCameras)
962 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(ThermalCamera));
969 for (
const auto& DVSCamera : DVSCameras)
971 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(DVSCamera));
978 for (
const auto& SegmentationCamera : SegmentationCameras)
980 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(SegmentationCamera));
987 for (
const auto& DepthCamera : DepthCameras)
989 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(DepthCamera));
1003 FTransform relativeTransform = sensor->GetRootComponent()->GetRelativeTransform();
1005 sensorPreset.
Location = relativeTransform.GetLocation();
1006 sensorPreset.
Rotation = relativeTransform.Rotator();
1013 return sensorPreset;
1016void USensorsManagerComponent::AddSensorDestroyListener(
ASensor* sensor)
1020 sensor->
OnSensorDestroy.AddDynamic(
this, &USensorsManagerComponent::OnSensorDestroy);
1024void USensorsManagerComponent::RemoveSensorDestroyListener(
ASensor* sensor)
1028 sensor->
OnSensorDestroy.RemoveDynamic(
this, &USensorsManagerComponent::OnSensorDestroy);
1032void USensorsManagerComponent::OnCameraWindowClosed(
ACamera* camera)
1036 ASensor* CastedSensor = Cast<ASensor>(camera);
1037 DestroySensor(CastedSensor);
1041void USensorsManagerComponent::OnSensorDestroy(
ASensor* sensor)
1046 DestroySensor(sensor);
@ SemanticSegmentationCamera
@ InstanceSegmentationCamera
FCameraDelegate_OnWindowClosed OnCameraWindowClosed
FSensorDestroy OnSensorDestroy
FString GetSensorIdentifier() const
FString GetSensorName() const
virtual ESensorTypes GetSensorType() const
FString AttachedToComponent
ASensorModel * GetSensorModel() const
static AInstanceSegmentationCamera * SpawnInstanceSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters)
static AThermalCamera * SpawnThermalCamera(const FSensorSpawnParameters SpawnParameters, FThermalCameraParameters SensorParameters)
static ASemanticSegmentationCamera * SpawnSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters)
static ARadar * SpawnRadar(const FSensorSpawnParameters SpawnParameters, FRadarParameters SensorParameters)
static ACamera * SpawnCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters)
static ADepthCamera * SpawnDepthCamera(const FSensorSpawnParameters SpawnParameters, FDepthCameraParameters SensorParameters)
static ADVSCamera * SpawnDVSCamera(const FSensorSpawnParameters SpawnParameters, FDVSCameraParameters SensorParameters)
static ALidar * SpawnLidarSensor(const FSensorSpawnParameters SpawnParameters, FLidarParameters SensorParameters)
FCameraBaseParameters CameraParameters
FDVSCameraParameters DVSCameraParameters
FDepthCameraParameters CameraParameters
FLidarParameters LidarParameters
FRadarParameters RadarParameters
FCameraBaseParameters CameraParameters
FString AttachedToComponent
FThermalCameraParameters CameraParameters
TArray< FRadarPreset > RadarDatas
TArray< FLidarPreset > LidarDatas
TArray< FThermalCameraPreset > ThermalCameraDatas
TArray< FDVSCameraPreset > DVSCameraDatas
TArray< FSemanticSegmentationCameraPreset > SegmentationCameraDatas
TArray< FCameraPreset > CameraDatas
TArray< FDepthCameraPreset > DepthCameraDatas