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;
49 ASensor* CastedSensor = Cast<ASensor>(lidar);
51 AddSensorDestroyListener(CastedSensor);
53 AttachSensor(CastedSensor, attachToComponent, attachToBone);
55 Lidars.Emplace(lidar);
58 OnLidarSpawned.Broadcast(lidar);
59 OnSensorSpawned.Broadcast(CastedSensor);
64ACamera* USensorsManagerComponent::SpawnCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters cameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
67 if (!attachToComponent && !attachToBone.IsNone())
69 attachToComponent = GetOwner()->GetRootComponent();
72 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
83 ASensor* CastedSensor = Cast<ASensor>(camera);
85 AttachSensor(CastedSensor, attachToComponent, attachToBone);
87 AddSensorDestroyListener(CastedSensor);
89 Cameras.Emplace(camera);
94 OnCameraSpawned.Broadcast(camera);
95 OnSensorSpawned.Broadcast(CastedSensor);
100AThermalCamera* USensorsManagerComponent::SpawnThermalCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FThermalCameraParameters thermalCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
104 if (!attachToComponent && !attachToBone.IsNone())
106 attachToComponent = GetOwner()->GetRootComponent();
109 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
120 ASensor* CastedSensor = Cast<ASensor>(thermalCamera);
122 AttachSensor(CastedSensor, attachToComponent, attachToBone);
124 AddSensorDestroyListener(CastedSensor);
126 ThermalCameras.Emplace(thermalCamera);
129 thermalCamera->
OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
131 OnThermalCameraSpawned.Broadcast(thermalCamera);
132 OnSensorSpawned.Broadcast(CastedSensor);
134 return thermalCamera;
137ADVSCamera* USensorsManagerComponent::SpawnDVSCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FDVSCameraParameters DVSCameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
140 if (!attachToComponent && !attachToBone.IsNone())
142 attachToComponent = GetOwner()->GetRootComponent();
145 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
154 createdModel =
DVSCamera->GetSensorModel();
156 ASensor* CastedSensor = Cast<ASensor>(DVSCamera);
158 AttachSensor(CastedSensor, attachToComponent, attachToBone);
160 AddSensorDestroyListener(CastedSensor);
162 DVSCameras.Emplace(DVSCamera);
165 DVSCamera->OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
167 OnDVSCameraSpawned.Broadcast(DVSCamera);
168 OnSensorSpawned.Broadcast(CastedSensor);
173ASemanticSegmentationCamera* USensorsManagerComponent::SpawnSegmentationCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters cameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
176 if (!attachToComponent && !attachToBone.IsNone())
178 attachToComponent = GetOwner()->GetRootComponent();
181 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
185 if (!segmentationCamera)
192 ASensor* CastedSensor = Cast<ASensor>(segmentationCamera);
194 AttachSensor(CastedSensor, attachToComponent, attachToBone);
196 AddSensorDestroyListener(CastedSensor);
198 SegmentationCameras.Emplace(segmentationCamera);
201 segmentationCamera->
OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
203 OnSegmentationCameraSpawned.Broadcast(segmentationCamera);
204 OnSensorSpawned.Broadcast(CastedSensor);
206 return segmentationCamera;
209AInstanceSegmentationCamera* USensorsManagerComponent::SpawnInstanceSegmentationCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FCameraBaseParameters CameraParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
212 if (!attachToComponent && !attachToBone.IsNone())
214 attachToComponent = GetOwner()->GetRootComponent();
217 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
221 if (!InstanceSegmentationCamera)
228 ASensor* CastedSensor = Cast<ASensor>(InstanceSegmentationCamera);
230 AttachSensor(CastedSensor, attachToComponent, attachToBone);
232 AddSensorDestroyListener(CastedSensor);
234 InstanceSegmentationCameras.Emplace(InstanceSegmentationCamera);
239 OnInstanceSegmentationCameraSpawned.Broadcast(InstanceSegmentationCamera);
240 OnSensorSpawned.Broadcast(CastedSensor);
245ADepthCamera* USensorsManagerComponent::SpawnDepthCamera(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FDepthCameraParameters DepthCameraParameters,
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;
264 ASensor* CastedSensor = Cast<ASensor>(depthCamera);
266 AttachSensor(CastedSensor, attachToComponent, attachToBone);
268 AddSensorDestroyListener(CastedSensor);
270 DepthCameras.Emplace(depthCamera);
273 depthCamera->
OnCameraWindowClosed.AddDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
275 OnDepthCameraSpawned.Broadcast(depthCamera);
276 OnSensorSpawned.Broadcast(CastedSensor);
281ARadar* USensorsManagerComponent::SpawnRadar(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
FRadarParameters radarParameters,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
284 if (!attachToComponent && !attachToBone.IsNone())
286 attachToComponent = GetOwner()->GetRootComponent();
289 FTransform sensorTransform = isTransformRelativeToComponent ? GetSensorAttachmentTransform(transform, attachToComponent, attachToBone) : transform;
300 ASensor* CastedSensor = Cast<ASensor>(radar);
302 AttachSensor(CastedSensor, attachToComponent, attachToBone);
304 AddSensorDestroyListener(CastedSensor);
306 Radars.Emplace(radar);
309 OnRadarSpawned.Broadcast(radar);
310 OnSensorSpawned.Broadcast(CastedSensor);
315ASensor* USensorsManagerComponent::SpawnSensor(
const FTransform& transform,
bool isTransformRelativeToComponent,
const FString sensorIdentifier,
const FString sensorName,
ESensorTypes sensorType,
bool simulateSensor,
ASensorModel*& createdModel, USceneComponent* attachToComponent, FName attachToBone)
322 sensor = Cast<ASensor>(SpawnLidar(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FLidarParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
325 sensor = Cast<ASensor>(SpawnCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FCameraBaseParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
328 sensor = Cast<ASensor>(SpawnThermalCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FThermalCameraParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
331 sensor = Cast<ASensor>(SpawnDVSCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FDVSCameraParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
334 sensor = Cast<ASensor>(SpawnSegmentationCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FCameraBaseParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
337 sensor = Cast<ASensor>(SpawnDepthCamera(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FDepthCameraParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
340 sensor = Cast<ASensor>(SpawnRadar(transform, isTransformRelativeToComponent, sensorIdentifier, sensorName,
FRadarParameters(), simulateSensor, createdModel, attachToComponent, attachToBone));
349void USensorsManagerComponent::DestroyLidar(
ALidar* lidarToDestroy)
354 Lidars.Remove(lidarToDestroy);
356 ASensor* CastedSensor = Cast<ASensor>(lidarToDestroy);
358 RemoveSensorDestroyListener(CastedSensor);
361 DestroySensorActor(CastedSensor);
363 OnLidarDestroyed.Broadcast(sensorIdentifier);
368void USensorsManagerComponent::DestroyCamera(
ACamera* cameraToDestroy)
374 cameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
375 Cameras.Remove(cameraToDestroy);
377 ASensor* CastedSensor = Cast<ASensor>(cameraToDestroy);
379 RemoveSensorDestroyListener(CastedSensor);
382 DestroySensorActor(CastedSensor);
384 OnCameraDestroyed.Broadcast(sensorIdentifier);
389void USensorsManagerComponent::DestroyThermalCamera(
AThermalCamera* thermalCameraToDestroy)
391 if (thermalCameraToDestroy)
395 thermalCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
396 ThermalCameras.Remove(thermalCameraToDestroy);
398 ASensor* CastedSensor = Cast<ASensor>(thermalCameraToDestroy);
400 RemoveSensorDestroyListener(CastedSensor);
403 DestroySensorActor(CastedSensor);
405 OnThermalCameraDestroyed.Broadcast(sensorIdentifier);
410void USensorsManagerComponent::DestroyDVSCamera(
ADVSCamera* DVSCameraToDestroy)
412 if (DVSCameraToDestroy)
416 DVSCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
417 DVSCameras.Remove(DVSCameraToDestroy);
419 ASensor* CastedSensor = Cast<ASensor>(DVSCameraToDestroy);
421 RemoveSensorDestroyListener(CastedSensor);
424 DestroySensorActor(CastedSensor);
426 OnDVSCameraDestroyed.Broadcast(sensorIdentifier);
433 if (segmentationCameraToDestroy)
437 segmentationCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
438 SegmentationCameras.Remove(segmentationCameraToDestroy);
440 ASensor* CastedSensor = Cast<ASensor>(segmentationCameraToDestroy);
442 RemoveSensorDestroyListener(CastedSensor);
445 DestroySensorActor(CastedSensor);
447 OnSegmentationCameraDestroyed.Broadcast(sensorIdentifier);
452void USensorsManagerComponent::DestroyDepthCamera(
ADepthCamera* depthCameraToDestroy)
454 if (depthCameraToDestroy)
458 depthCameraToDestroy->
OnCameraWindowClosed.RemoveDynamic(
this, &USensorsManagerComponent::OnCameraWindowClosed);
459 DepthCameras.Remove(depthCameraToDestroy);
461 ASensor* CastedSensor = Cast<ASensor>(depthCameraToDestroy);
463 RemoveSensorDestroyListener(CastedSensor);
466 DestroySensorActor(CastedSensor);
468 OnDepthCameraDestroyed.Broadcast(sensorIdentifier);
473void USensorsManagerComponent::DestroyRadar(
ARadar* radarToDestroy)
479 Radars.Remove(radarToDestroy);
481 ASensor* CastedSensor = Cast<ASensor>(radarToDestroy);
483 RemoveSensorDestroyListener(CastedSensor);
486 DestroySensorActor(CastedSensor);
488 OnRadarDestroyed.Broadcast(sensorIdentifier);
493void USensorsManagerComponent::DestroySensor(
ASensor* sensorToDestroy)
502 DestroyLidar(Cast<ALidar>(sensorToDestroy));
505 DestroyCamera(Cast<ACamera>(sensorToDestroy));
508 DestroyThermalCamera(Cast<AThermalCamera>(sensorToDestroy));
511 DestroyDVSCamera(Cast<ADVSCamera>(sensorToDestroy));
514 DestroySegmentationCamera(Cast<ASemanticSegmentationCamera>(sensorToDestroy));
517 DestroyDepthCamera(Cast<ADepthCamera>(sensorToDestroy));
520 DestroyRadar(Cast<ARadar>(sensorToDestroy));
528void USensorsManagerComponent::DestroyAllSensors()
530 TArray<ASensor*> SensorsTempArray =
Sensors;
532 for (
const auto& sensor : SensorsTempArray)
534 DestroySensor(sensor);
538FTransform USensorsManagerComponent::SensorRelativeTransformToWorld(
const FTransform& relativeTransform)
540 AActor* owner = GetOwner();
541 return relativeTransform * owner->GetActorTransform();
544FTransform USensorsManagerComponent::SensorRelativeTransformToComponentWorld(
const FTransform& relativeTransform,
const FTransform& componentTransformWorld)
546 return relativeTransform * componentTransformWorld;
549FTransform USensorsManagerComponent::GetSensorAttachmentTransform(
const FTransform& sensorRelativeTransform, USceneComponent* attachToComponent,
const FName& attachToBone,
bool revertScaleToVectorOne)
551 FTransform worldTransform;
554 if (attachToComponent)
556 worldTransform = SensorRelativeTransformToComponentWorld(sensorRelativeTransform, attachToComponent->GetSocketTransform(attachToBone));
560 worldTransform = SensorRelativeTransformToWorld(sensorRelativeTransform);
563 if (revertScaleToVectorOne)
565 worldTransform.SetScale3D(FVector(1, 1, 1));
568 return worldTransform;
571USceneComponent* USensorsManagerComponent::GetComponentByHierarchyName(FString hierarchyName)
575 TArray<FString> componentNames;
577 AActor* owner = GetOwner();
580 USceneComponent* matchingComponent = owner->GetRootComponent();
583 hierarchyName.ParseIntoArray(componentNames, *ComponentHierarchySeparator,
true);
585 if (componentNames.Num() > 0)
588 FString initialComponentName = componentNames[0];
589 USceneComponent* initialComponent =
nullptr;
590 bool skipFirstComponentName =
true;
592 TArray<USceneComponent*> ownerComponents;
593 owner->GetComponents<USceneComponent>(ownerComponents);
596 for (USceneComponent* childComponent : ownerComponents)
598 if (childComponent && childComponent->GetName() == initialComponentName)
600 initialComponent = childComponent;
601 matchingComponent = initialComponent;
606 if (!initialComponent)
610 initialComponent = owner->GetRootComponent();
612 skipFirstComponentName =
false;
615 USceneComponent* currentComponent = initialComponent;
618 if (currentComponent && componentNames.Num() > (skipFirstComponentName ? 1 : 0))
621 bool bComponentFound =
false;
624 for (int32 i = (skipFirstComponentName ? 1 : 0); i < componentNames.Num(); ++i)
626 FString componentName = componentNames[i];
628 bComponentFound =
false;
631 for (USceneComponent* childComponent : currentComponent->GetAttachChildren())
633 FString childComponentName = childComponent->GetName();
638 if (childComponent && childComponent->GetName() == componentName)
641 currentComponent = childComponent;
642 bComponentFound =
true;
649 if (!bComponentFound)
652 UE_LOG(LogTemp, Warning, TEXT(
"Component '%s' not found. Breaking out of the loop"), *componentName);
661 FString foundComponentName = currentComponent->GetName();
662 matchingComponent = currentComponent;
667 UE_LOG(LogTemp, Warning, TEXT(
"Component not found"));
672 return matchingComponent;
675void USensorsManagerComponent::AttachSensorToOwner(
ASensor* sensor)
678 AActor* owner = GetOwner();
681 AttachSensorToActor(sensor, owner);
684void USensorsManagerComponent::AttachSensorToActor(
ASensor* sensor, AActor* attachToActor)
686 if (sensor && attachToActor)
688 sensor->AttachToActor(attachToActor, FAttachmentTransformRules::KeepWorldTransform);
694void USensorsManagerComponent::AttachSensorToBone(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName)
696 if (!sensor || !attachToComponent)
701 if (IsValid(attachToComponent))
703 sensor->AttachToComponent(attachToComponent, FAttachmentTransformRules::KeepWorldTransform, boneName);
705 USceneComponent* currentParentComponent = attachToComponent->GetAttachParent();
708 FString fullComponentName = attachToComponent->GetName();
711 if (currentParentComponent)
713 fullComponentName = attachToComponent->GetName();
716 while (currentParentComponent && currentParentComponent->GetAttachParent())
718 FString ParentComponentName = currentParentComponent->GetName();
721 fullComponentName = FString::Format(TEXT(
"{0}{1}{2}"), { *ParentComponentName, *ComponentHierarchySeparator, *fullComponentName });
724 currentParentComponent = currentParentComponent->GetAttachParent();
735void USensorsManagerComponent::AttachSensor(
ASensor* sensor, USceneComponent* attachToComponent,
const FName& boneName)
738 if (IsValid(attachToComponent) || !boneName.IsNone())
740 AttachSensorToBone(sensor, attachToComponent, boneName);
744 AttachSensorToOwner(sensor);
748void USensorsManagerComponent::DestroySensorActor(AActor* sensorActor)
755 TArray<AActor*> attachedActors;
756 sensorActor->GetAttachedActors(attachedActors);
758 for (AActor* CActor : attachedActors)
766 sensorActor->Destroy();
773 for (
const auto& LidarData : preset.
LidarDatas)
778 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
783 SpawnLidar(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, LidarData.LidarParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
786 for (
const auto& RadarData : preset.
RadarDatas)
791 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
796 SpawnRadar(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, RadarData.RadarParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
805 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
810 SpawnCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
819 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
824 SpawnThermalCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
833 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
838 SpawnDVSCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.DVSCameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
847 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
852 SpawnSegmentationCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
861 USceneComponent* attachToComponent = GetComponentByHierarchyName(sensorData.
AttachedToComponent);
866 SpawnDepthCamera(sensorTransform,
true, sensorData.
SensorIdentifier, sensorData.
SensorName, CameraData.CameraParameters, simulateSensors, createdModel, attachToComponent, attachToBone);
874 for (
const auto& Lidar : Lidars)
876 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(Lidar));
884 for (
const auto& Radar : Radars)
886 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(Radar));
894 for (
const auto& Camera : Cameras)
896 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(Camera));
903 for (
const auto& ThermalCamera : ThermalCameras)
905 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(ThermalCamera));
912 for (
const auto& DVSCamera : DVSCameras)
914 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(DVSCamera));
921 for (
const auto& SegmentationCamera : SegmentationCameras)
923 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(SegmentationCamera));
930 for (
const auto& DepthCamera : DepthCameras)
932 FSensorPreset sensorPreset = GetSensorPreset(Cast<ASensor>(DepthCamera));
946 FTransform relativeTransform = sensor->GetRootComponent()->GetRelativeTransform();
948 sensorPreset.
Location = relativeTransform.GetLocation();
949 sensorPreset.
Rotation = relativeTransform.Rotator();
959void USensorsManagerComponent::AddSensorDestroyListener(
ASensor* sensor)
963 sensor->
OnSensorDestroy.AddDynamic(
this, &USensorsManagerComponent::OnSensorDestroy);
967void USensorsManagerComponent::RemoveSensorDestroyListener(
ASensor* sensor)
971 sensor->
OnSensorDestroy.RemoveDynamic(
this, &USensorsManagerComponent::OnSensorDestroy);
975void USensorsManagerComponent::OnCameraWindowClosed(
ACamera* camera)
979 ASensor* CastedSensor = Cast<ASensor>(camera);
980 DestroySensor(CastedSensor);
984void USensorsManagerComponent::OnSensorDestroy(
ASensor* sensor)
989 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 ASemanticSegmentationCamera * SpawnSegmentationCamera(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FCameraBaseParameters cameraParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
static ARadar * SpawnRadar(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FRadarParameters radarParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
static ADVSCamera * SpawnDVSCamera(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FDVSCameraParameters DVSCameraParameters, bool SimulateSensor, AActor *Parent=nullptr)
static AInstanceSegmentationCamera * SpawnInstanceSegmentationCamera(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FCameraBaseParameters cameraParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
static ALidar * SpawnLidarSensor(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FLidarParameters lidarParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
static ACamera * SpawnCamera(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FCameraBaseParameters cameraParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
static ADepthCamera * SpawnDepthCamera(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FDepthCameraParameters depthCameraParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
static AThermalCamera * SpawnThermalCamera(const FTransform &transform, const FString sensorIdentifier, const FString sensorName, FThermalCameraParameters thermalCameraParameters, bool SimulateSensor=true, AActor *Parent=nullptr)
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