Agrarsense
SensorManager.cpp
Go to the documentation of this file.
1// Copyright (c) 2024 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#include "SensorManager.h"
7#include "Sensor.h"
8
9#include "Engine.h"
10#include "Engine/World.h"
11#include "Engine/GameViewportClient.h"
12#include "Engine/GameInstance.h"
13
15
16void USensorManager::Initialize(FSubsystemCollectionBase& Collection)
17{
18 Super::Initialize(Collection);
19
20#if WITH_EDITOR
21 UE_LOG(LogTemp, Warning, TEXT("SensorManager Initialized."));
22#endif
23}
24
26{
27 Super::Deinitialize();
28
29 SensorManagerPtr = nullptr;
30 Sensors.Empty();
31
32#if WITH_EDITOR
33 UE_LOG(LogTemp, Warning, TEXT("SensorManager Destroyed."));
34#endif
35}
36
38{
39 if (SensorManagerPtr && IsValid(SensorManagerPtr))
40 {
41 return SensorManagerPtr;
42 }
43
44 if (GEngine && GEngine->GameViewport)
45 {
46 if (UWorld* World = GEngine->GameViewport->GetWorld())
47 {
48 if (UGameInstance* GameInstance = World->GetGameInstance())
49 {
50 SensorManagerPtr = GameInstance->GetSubsystem<USensorManager>();
51 return SensorManagerPtr;
52 }
53 }
54 }
55
56 return nullptr;
57}
58
60{
61 USensorManager* Manager = Get();
62 if (Manager && SensorPtr)
63 {
64 Manager->Sensors.Add(SensorPtr);
65 Manager->OnSensorSpawned.Broadcast(SensorPtr);
66 }
67}
68
70{
71 USensorManager* Manager = Get();
72 if (Manager && SensorPtr)
73 {
74 Manager->Sensors.Remove(SensorPtr);
75 Manager->OnSensorDestroyed.Broadcast(SensorPtr);
76 }
77}
78
79TArray<ASensor*> USensorManager::GetAllSensors() const
80{
81 return Sensors;
82}
83
84TArray<ASensor*> USensorManager::GetAllSensorsOfType(ESensorTypes SensorType) const
85{
86 TArray<ASensor*> SensorsOfType;
87
88 for (ASensor* Sensor : Sensors)
89 {
90 if (Sensor && Sensor->GetSensorType() == SensorType)
91 {
92 SensorsOfType.Add(Sensor);
93 }
94 }
95
96 return SensorsOfType;
97}
ESensorTypes
Definition: SensorTypes.h:15
Definition: Sensor.h:44
static USensorManager * Get()
FSensorDestroyedDelegate OnSensorDestroyed
Definition: SensorManager.h:68
static void AddSensor(ASensor *SensorPtr)
TArray< ASensor * > Sensors
Definition: SensorManager.h:81
TArray< ASensor * > GetAllSensorsOfType(ESensorTypes SensorType) const
static USensorManager * SensorManagerPtr
Definition: SensorManager.h:78
TArray< ASensor * > GetAllSensors() const
FSensorSpawnedDelegate OnSensorSpawned
Definition: SensorManager.h:61
static void RemoveSensor(ASensor *SensorPtr)
virtual void Initialize(FSubsystemCollectionBase &Collection) override
virtual void Deinitialize() override