23#include "Engine/GameViewportClient.h"
24#include "Engine/World.h"
37 FSoftObjectPath SensorMapDataAssetPath(TEXT(
"/Game/Agrarsense/Data/Sensors/SensorMap"));
43 UE_LOG(LogTemp, Warning, TEXT(
"USensorFactory.cpp: Loaded SensorMapDataAsset successfully."));
47 UE_LOG(LogTemp, Warning, TEXT(
"USensorFactory.cpp: Loading SensorMapDataAsset failed."));
61 ALidar* Sensor = SpawnSensor<ALidar>(SpawnParameters,
true);
62 if (!Sensor)
return nullptr;
64 Sensor->
Init(SensorParameters);
70 ACamera* Sensor = SpawnSensor<ACamera>(SpawnParameters,
true);
71 if (!Sensor)
return nullptr;
73 Sensor->
Init(SensorParameters);
79 AThermalCamera* Sensor = SpawnSensor<AThermalCamera>(SpawnParameters,
true);
80 if (!Sensor)
return nullptr;
88 ADepthCamera* Sensor = SpawnSensor<ADepthCamera>(SpawnParameters,
true);
89 if (!Sensor)
return nullptr;
98 if (!Sensor)
return nullptr;
107 if (!Sensor)
return nullptr;
109 Sensor->
Init(SensorParameters);
115 ADVSCamera* Sensor = SpawnSensor<ADVSCamera>(SpawnParameters,
true);
116 if (!Sensor)
return nullptr;
124 ARadar* Sensor = SpawnSensor<ARadar>(SpawnParameters,
true);
125 if (!Sensor)
return nullptr;
133 ACollisionSensor* Sensor = SpawnSensor<ACollisionSensor>(SpawnParameters,
false);
134 if (!Sensor)
return nullptr;
142 ATransformSensor* Sensor = SpawnSensor<ATransformSensor>(SpawnParameters,
false);
143 if (!Sensor)
return nullptr;
146 Sensor->AttachToActor(SensorParameters.
OwningActor, FAttachmentTransformRules::KeepWorldTransform);
152 AOverlapSensor* Sensor = SpawnSensor<AOverlapSensor>(SpawnParameters,
false);
153 if (!Sensor)
return nullptr;
155 Sensor->
Init(SensorParameters);
166 Sensor = World->SpawnActorDeferred<T>(T::StaticClass(), SpawnParameters.
Transform);
171 if (SpawnParameters.
Parent)
173 Sensor->SetParentActorPtr(SpawnParameters.
Parent);
176 Sensor->FinishSpawning(SpawnParameters.
Transform);
178 if (SpawnSensorModel)
190 bool generateIdentifier = SensorIdentifier.IsEmpty();
191 bool generateName = SensorName.IsEmpty();
193 FString generatedSensorIdentifier;
197 if (generateIdentifier)
208 Sensor->
SetSensorIdentifier(generateIdentifier ? generatedSensorIdentifier : SensorIdentifier);
232 TSubclassOf<ASensorModel> modelClass =
nullptr;
238 if (matchFound && sensorData)
258 return createdModelActor;
263 FVector sensorLocation = attachTo->GetActorLocation();
264 createdModelActor = World->SpawnActor<
ASensorModel>(modelClass);
266 if (createdModelActor)
268 createdModelActor->AttachToActor(attachTo, FAttachmentTransformRules::SnapToTargetIncludingScale);
276 return createdModelActor;
281 return (GEngine && GEngine->GameViewport) ? GEngine->GameViewport->GetWorld() :
nullptr;
virtual void Init(FCameraBaseParameters parameters, bool SimulateSensor=true)
void Init(AActor *NewOwner, bool SimulateSensor=true)
void DVSInit(FDVSCameraParameters Parameters, bool SimulateSensor=true)
void DepthInit(FDepthCameraParameters Parameters, bool SimulateSensor=true)
void Init(FCameraBaseParameters parameters, bool SimulateSensor=true) override
void Init(FLidarParameters parameters, bool SimulateSensor=true)
void Init(FOverlapSensorParameters InParameters)
void Init(FRadarParameters parameters, bool SimulateSensor=true)
void Init(FCameraBaseParameters parameters, bool SimulateSensor=true) override
void SetAttachedToSensor(ASensor *NewAttachedToSensor)
void SetSensorModel(ASensorModel *NewSensorModel)
void SetSensorName(const FString newName)
FString GetSensorIdentifier() const
virtual ESensorTypes GetSensorType() const
void SetSensorIdentifier(const FString newIdentifier)
void ThermalInit(FThermalCameraParameters Parameters, bool SimulateSensor=true)
static FString ConvertSensorTypeToString(ESensorTypes Sensortype)
TSubclassOf< ASensorModel > ModelClass
static AInstanceSegmentationCamera * SpawnInstanceSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters)
static ASensorModel * SpawnModelClassForSensor(ASensor *attachTo)
static AThermalCamera * SpawnThermalCamera(const FSensorSpawnParameters SpawnParameters, FThermalCameraParameters SensorParameters)
static ASemanticSegmentationCamera * SpawnSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters)
static TWeakObjectPtr< USensorMapDataAsset > SensorMapDataAsset
static ASensorModel * SpawnModelClass(TSubclassOf< ASensorModel > ModelClass, ASensor *AttachTo)
static ATransformSensor * SpawnTransformSensor(const FSensorSpawnParameters SpawnParameters, FTransformSensorParameters SensorParameters)
static UWorld * GetGameWorld()
Gets the current game world from the viewport.
static ARadar * SpawnRadar(const FSensorSpawnParameters SpawnParameters, FRadarParameters SensorParameters)
static ACollisionSensor * SpawnCollisionSensor(const FSensorSpawnParameters SpawnParameters)
static ACamera * SpawnCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters)
static ADepthCamera * SpawnDepthCamera(const FSensorSpawnParameters SpawnParameters, FDepthCameraParameters SensorParameters)
static T * SpawnSensor(const FSensorSpawnParameters &SpawnParameters, bool SpawnSensorModel=true)
static USensorMapDataAsset * GetSensorMapDataAsset()
static ADVSCamera * SpawnDVSCamera(const FSensorSpawnParameters SpawnParameters, FDVSCameraParameters SensorParameters)
static void SetSensorIdentifierAndNameWithFallbacks(ASensor *Sensor, const FString &SensorIdentifier, const FString &SensorName)
static ALidar * SpawnLidarSensor(const FSensorSpawnParameters SpawnParameters, FLidarParameters SensorParameters)
static AOverlapSensor * SpawnOverlapSensor(const FSensorSpawnParameters SpawnParameters, FOverlapSensorParameters SensorParameters)
USensorDataAsset * GetAssetDataBySensorType(ESensorTypes SensorType, bool &MatchFound)