Agrarsense
SensorFactory.h
Go to the documentation of this file.
1// Copyright (c) 2023 FrostBit Software Lab at the Lapland University of Applied Sciences
2//
3// This work is licensed under the terms of the MIT license.
4// For a copy, see <https://opensource.org/licenses/MIT>.
5
6#pragma once
7
8#include "CoreMinimal.h"
9#include "Kismet/BlueprintFunctionLibrary.h"
10#include "Engine.h"
11#include "Math/Transform.h"
12
15
16#include "SensorFactory.generated.h"
17
18class UWorld;
19
20class ASensor;
21class ALidar;
22class ACamera;
23class AThermalCamera;
24class ADepthCamera;
27class ADVSCamera;
28class ARadar;
31class AOverlapSensor;
32
38struct FCameraParameters;
39struct FLidarParameters;
40struct FRadarParameters;
41
42USTRUCT(BlueprintType)
44{
45 GENERATED_BODY()
46
47 UPROPERTY(EditAnywhere, BlueprintReadWrite)
48 FTransform Transform;
49
50 UPROPERTY(EditAnywhere, BlueprintReadWrite)
51 FString SensorIdentifier;
52
53 UPROPERTY(EditAnywhere, BlueprintReadWrite)
54 FString SensorName;
55
56 UPROPERTY(EditAnywhere, BlueprintReadWrite)
57 bool SimulateSensor = true;
58
59 UPROPERTY(EditAnywhere, BlueprintReadWrite)
60 AActor* Parent = nullptr;
61};
62
68UCLASS()
69class AGRARSENSE_API USensorFactory : public UBlueprintFunctionLibrary
70{
71 GENERATED_BODY()
72
73public:
74
75 UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Sensor")
76 static USensorMapDataAsset* GetSensorMapDataAsset();
77
84 UFUNCTION(BlueprintCallable, Category = "Sensor")
85 static ALidar* SpawnLidarSensor(const FSensorSpawnParameters SpawnParameters, FLidarParameters SensorParameters);
86
93 UFUNCTION(BlueprintCallable, Category = "Sensor")
94 static ACamera* SpawnCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters);
95
102 UFUNCTION(BlueprintCallable, Category = "Sensor")
103 static AThermalCamera* SpawnThermalCamera(const FSensorSpawnParameters SpawnParameters, FThermalCameraParameters SensorParameters);
104
111 UFUNCTION(BlueprintCallable, Category = "Sensor")
112 static ADepthCamera* SpawnDepthCamera(const FSensorSpawnParameters SpawnParameters, FDepthCameraParameters SensorParameters);
113
120 UFUNCTION(BlueprintCallable, Category = "Sensor")
121 static ASemanticSegmentationCamera* SpawnSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters);
122
129 UFUNCTION(BlueprintCallable, Category = "Sensor")
130 static AInstanceSegmentationCamera* SpawnInstanceSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters);
131
132
139 UFUNCTION(BlueprintCallable, Category = "Sensor")
140 static ADVSCamera* SpawnDVSCamera(const FSensorSpawnParameters SpawnParameters, FDVSCameraParameters SensorParameters);
141
148 UFUNCTION(BlueprintCallable, Category = "Sensor")
149 static ARadar* SpawnRadar(const FSensorSpawnParameters SpawnParameters, FRadarParameters SensorParameters);
150
156 UFUNCTION(BlueprintCallable, Category = "Sensor")
157 static ACollisionSensor* SpawnCollisionSensor(const FSensorSpawnParameters SpawnParameters, const FCollisionSensorParameters CollisionSensorParameters);
158
166 UFUNCTION(BlueprintCallable, Category = "Sensor")
167 static ATransformSensor* SpawnTransformSensor(const FSensorSpawnParameters SpawnParameters, FTransformSensorParameters SensorParameters);
168
176 UFUNCTION(BlueprintCallable, Category = "Sensor")
177 static AOverlapSensor* SpawnOverlapSensor(const FSensorSpawnParameters SpawnParameters, FOverlapSensorParameters SensorParameters);
178
179
180private:
181
182 /*
183 * Templated function that spawns an Actor of the specified class and returns a pointer to the Actor.
184 * @param FSensorSpawnParameters Spawnparameters
185 * @param SpawnSensorModel Should spawn sensor visual model
186 */
187 template <typename T>
188 static T* SpawnSensor(const FSensorSpawnParameters& SpawnParameters, bool SpawnSensorModel = true);
189
196 static void SetSensorIdentifierAndNameWithFallbacks(ASensor* Sensor, const FString& SensorIdentifier, const FString& SensorName);
197
203 static ASensorModel* SpawnModelClassForSensor(ASensor* attachTo);
204
211 static ASensorModel* SpawnModelClass(TSubclassOf<ASensorModel> ModelClass, ASensor* AttachTo);
212
216 static void Initialize();
217
222 static UWorld* GetGameWorld();
223
227 static TWeakObjectPtr<USensorMapDataAsset> SensorMapDataAsset;
228
229};
Definition: Camera.h:53
Definition: Lidar.h:35
Definition: Radar.h:26
Definition: Sensor.h:45
static TWeakObjectPtr< USensorMapDataAsset > SensorMapDataAsset