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
37struct FCameraParameters;
38struct FLidarParameters;
39struct FRadarParameters;
40
41USTRUCT(BlueprintType)
43{
44 GENERATED_BODY()
45
46 UPROPERTY(EditAnywhere, BlueprintReadWrite)
47 FTransform Transform;
48
49 UPROPERTY(EditAnywhere, BlueprintReadWrite)
50 FString SensorIdentifier;
51
52 UPROPERTY(EditAnywhere, BlueprintReadWrite)
53 FString SensorName;
54
55 UPROPERTY(EditAnywhere, BlueprintReadWrite)
56 bool SimulateSensor = true;
57
58 UPROPERTY(EditAnywhere, BlueprintReadWrite)
59 AActor* Parent = nullptr;
60};
61
67UCLASS()
68class AGRARSENSE_API USensorFactory : public UBlueprintFunctionLibrary
69{
70 GENERATED_BODY()
71
72public:
73
74 UFUNCTION(BlueprintCallable, BlueprintPure, Category = "Sensor")
75 static USensorMapDataAsset* GetSensorMapDataAsset();
76
83 UFUNCTION(BlueprintCallable, Category = "Sensor")
84 static ALidar* SpawnLidarSensor(const FSensorSpawnParameters SpawnParameters, FLidarParameters SensorParameters);
85
92 UFUNCTION(BlueprintCallable, Category = "Sensor")
93 static ACamera* SpawnCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters);
94
101 UFUNCTION(BlueprintCallable, Category = "Sensor")
102 static AThermalCamera* SpawnThermalCamera(const FSensorSpawnParameters SpawnParameters, FThermalCameraParameters SensorParameters);
103
110 UFUNCTION(BlueprintCallable, Category = "Sensor")
111 static ADepthCamera* SpawnDepthCamera(const FSensorSpawnParameters SpawnParameters, FDepthCameraParameters SensorParameters);
112
119 UFUNCTION(BlueprintCallable, Category = "Sensor")
120 static ASemanticSegmentationCamera* SpawnSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters);
121
128 UFUNCTION(BlueprintCallable, Category = "Sensor")
129 static AInstanceSegmentationCamera* SpawnInstanceSegmentationCamera(const FSensorSpawnParameters SpawnParameters, FCameraBaseParameters SensorParameters);
130
131
138 UFUNCTION(BlueprintCallable, Category = "Sensor")
139 static ADVSCamera* SpawnDVSCamera(const FSensorSpawnParameters SpawnParameters, FDVSCameraParameters SensorParameters);
140
147 UFUNCTION(BlueprintCallable, Category = "Sensor")
148 static ARadar* SpawnRadar(const FSensorSpawnParameters SpawnParameters, FRadarParameters SensorParameters);
149
155 UFUNCTION(BlueprintCallable, Category = "Sensor")
156 static ACollisionSensor* SpawnCollisionSensor(const FSensorSpawnParameters SpawnParameters);
157
165 UFUNCTION(BlueprintCallable, Category = "Sensor")
166 static ATransformSensor* SpawnTransformSensor(const FSensorSpawnParameters SpawnParameters, FTransformSensorParameters SensorParameters);
167
175 UFUNCTION(BlueprintCallable, Category = "Sensor")
176 static AOverlapSensor* SpawnOverlapSensor(const FSensorSpawnParameters SpawnParameters, FOverlapSensorParameters SensorParameters);
177
178
179private:
180
181 /*
182 * Templated function that spawns an Actor of the specified class and returns a pointer to the Actor.
183 * @param FSensorSpawnParameters Spawnparameters
184 * @param SpawnSensorModel Should spawn sensor visual model
185 */
186 template <typename T>
187 static T* SpawnSensor(const FSensorSpawnParameters& SpawnParameters, bool SpawnSensorModel = true);
188
195 static void SetSensorIdentifierAndNameWithFallbacks(ASensor* Sensor, const FString& SensorIdentifier, const FString& SensorName);
196
202 static ASensorModel* SpawnModelClassForSensor(ASensor* attachTo);
203
210 static ASensorModel* SpawnModelClass(TSubclassOf<ASensorModel> ModelClass, ASensor* AttachTo);
211
215 static void Initialize();
216
221 static UWorld* GetGameWorld();
222
226 static TWeakObjectPtr<USensorMapDataAsset> SensorMapDataAsset;
227
228};
Definition: Camera.h:53
Definition: Lidar.h:35
Definition: Radar.h:26
Definition: Sensor.h:45
static TWeakObjectPtr< USensorMapDataAsset > SensorMapDataAsset