19 #include "CoreMinimal.h"
21 #include "GameFramework/Character.h"
23 #include "GameFramework/GameState.h"
35 #include "RRGameState.generated.h"
64 class RAPYUTASIMULATIONPLUGINS_API
ARRGameState :
public AGameState
84 virtual void StartSim();
93 TObjectPtr<ARRGameMode> GameMode =
nullptr;
102 int8 SCENE_INSTANCES_NUM = 1;
111 int32 OPERATION_BATCHES_NUM = 5;
120 float SCENE_INSTANCES_DISTANCE_INTERVAL = 5000.f;
154 template<
typename TScenceInstanceClass>
160 TScenceInstanceClass* instance = SceneInstanceList.IsValidIndex(InSceneInstanceId)
162 ? Cast<TScenceInstanceClass>(SceneInstanceList[InSceneInstanceId])
192 return SceneInstanceList.IsValidIndex(InSceneInstanceId) && SceneInstanceList[InSceneInstanceId];
198 virtual bool HasSceneInstanceListBeenCreated(
bool bIsLogged =
false)
const;
200 virtual bool HasInitialized(
bool bIsLogged =
false)
const;
204 virtual bool HaveAllSceneInstancesCompleted()
const;
215 AActor* MainEnvironment =
nullptr;
224 AActor* MainFloor =
nullptr;
233 AActor* MainWall =
nullptr;
253 FString SIM_OUTPUTS_BASE_FOLDER_NAME = TEXT(
"OutputData");
273 return FPaths::IsRelative(SIM_OUTPUTS_BASE_FOLDER_NAME)
275 ? FPaths::ConvertRelativePathToFull(FPaths::ProjectSavedDir() / SIM_OUTPUTS_BASE_FOLDER_NAME)
277 : SIM_OUTPUTS_BASE_FOLDER_NAME;
322 TArray<FVector> ENTITY_BOUNDING_BOX_VERTEX_NORMALS = {
350 static const TArray<FVector> bbVertexNormals = {ENTITY_BOUNDING_BOX_VERTEX_NORMALS[3],
352 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[6],
354 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[5],
356 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[0],
358 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[7],
360 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[2],
362 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[1],
364 ENTITY_BOUNDING_BOX_VERTEX_NORMALS[4]};
366 return bbVertexNormals[InVertexIdx];
372 void SetAllEntitiesActivated(
bool bIsActivated);
374 ARRMeshActor* FindEntityByModel(
const FString& InEntityModelName,
bool bToActivate,
bool bToTakeAway);
386 for (
const auto& entity : InEntityList)
400 virtual void MoveEnvironmentToSceneInstance(int8 InSceneInstanceId);
420 virtual void CreateSceneInstance(int8 InSceneInstanceId);
440 virtual void InitializeSim(int8 InSceneInstanceId);
454 virtual void StartSubSim(int8 InSceneInstanceId);
470 virtual void CreateServiceObjects(int8 InSceneInstanceId);
476 virtual void SetupEnvironment();
482 virtual void FetchEnvStaticActors();
486 virtual void FinalizeSim();
488 virtual void PrintSimConfig()
const;
498 virtual void BeginPlay()
override;
510 virtual void BeginSubPlay();
528 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;