Agrarsense
AgrarsenseGameModeBase.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 "GameFramework/GameModeBase.h"
10#include "Blueprint/UserWidget.h"
11#include "Templates/SubclassOf.h"
12
14
15#include "AgrarsenseGameModeBase.generated.h"
16
18class UROSCommands;
19class UROSHandler;
20
22class ALidarManager;
23class ASpectator;
24class AWeather;
25class ATagger;
26
27/*
28* AAgrarsenseGameModeBase is the base game mode class for the AGRARSENSE simulator.
29* It handles initialization, actor spawning, and provides access to various manager instances.
30*/
31UCLASS()
32class AGRARSENSE_API AAgrarsenseGameModeBase : public AGameModeBase
33{
34
35 GENERATED_BODY()
36
37public:
38
39 AAgrarsenseGameModeBase(const FObjectInitializer& ObjectInitializer);
40
45 UFUNCTION(BlueprintCallable)
46 ALidarManager* GetLidarManager()
47 {
48 return LidarManager;
49 }
50
55 UFUNCTION(BlueprintCallable)
56 UROSHandler* GetROSHandle()
57 {
58 return ROSHandle;
59 }
60
65 UFUNCTION(BlueprintCallable, BlueprintPure)
66 ASimulationLevelManager* GetSimulationLevelManager()
67 {
68 return SimulationLevelManager;
69 }
70
75 UFUNCTION(BlueprintCallable, BlueprintPure)
76 AInstancedRendererManager* GetInstancedRenderer()
77 {
78 return InstancedRenderer;
79 }
80
85 UFUNCTION(BlueprintCallable, BlueprintPure)
86 AWeather* GetWeatherActor()
87 {
88 return Weather;
89 }
90
95 UFUNCTION(BlueprintCallable, BlueprintPure)
96 ASpectator* GetSpectator()
97 {
98 return Spectator;
99 }
100
105 UFUNCTION(BlueprintCallable)
106 UROSCommands* GetROSCommands()
107 {
108 return ROSCommands;
109 }
110
115 UPROPERTY(Category = "Agrarsense Game Mode", EditAnywhere)
116 TSubclassOf<ALidarManager> LidarManagerClass;
117
122 UPROPERTY(Category = "Agrarsense Game Mode", EditAnywhere)
123 TSubclassOf<UUserWidget> DeveloperTools;
124
129 UPROPERTY(Category = "Agrarsense Game Mode", EditAnywhere)
130 TSubclassOf<ASimulationLevelManager> SimulationLevelManagerClass;
131
132protected:
133
137 void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
138
142 void BeginPlay() override;
143
147 void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
148
149private:
150
154 void ParseMapChangeLaunchArgument();
155
160 void SpawnNeededActorsInitGame();
161
166 void SpawnNeededActorsBeginPlay();
167
168#if WITH_EDITOR
169 void EditorEndPlayCleanup();
170#endif
171
172 UPROPERTY()
173 ALidarManager* LidarManager = nullptr;
174
175 UPROPERTY()
176 UROSHandler* ROSHandle = nullptr;
177
178 UPROPERTY()
179 ASimulationLevelManager* SimulationLevelManager = nullptr;
180
181 UPROPERTY()
182 AInstancedRendererManager* InstancedRenderer = nullptr;
183
184 UPROPERTY()
185 AWeather* Weather = nullptr;
186
187 UPROPERTY()
188 UROSCommands* ROSCommands = nullptr;
189
190 UPROPERTY()
191 ASpectator* Spectator = nullptr;
192
193 UPROPERTY()
194 ATagger* Tagger = nullptr;
195
196 static bool AttemptToLaunchROSBridge;
197
198 static bool StartMessageLogged;
199
200 static bool MapChanged;
201
202};
Definition: Tagger.h:29
virtual void BeginPlay() override
Definition: Tagger.cpp:26
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override
Definition: Tagger.cpp:54