RapyutaSimulationPlugins
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
ARRGameState Class Reference

Game state which handles multiple URRSceneInstance which spit game in scenes for data gen, large world and etc. More...

#include <RRGameState.h>

Inheritance diagram for ARRGameState:
Inheritance graph
[legend]
Collaboration diagram for ARRGameState:
Collaboration graph
[legend]

Public Member Functions

 ARRGameState ()
 
virtual void StartSim ()
 Create Scene Instances for SCENE_INSTANCES_NUM by calling. More...
 
template<typename TScenceInstanceClass >
TScenceInstanceClass * GetSceneInstance (int8 InSceneInstanceId) const
 Get the Scene Instance object. More...
 
bool HasSceneInstance (int8 InSceneInstanceId)
 Check SceneInstance with given Id is exists. More...
 
virtual bool HasSceneInstanceListBeenCreated (bool bIsLogged=false) const
 
virtual bool HasInitialized (bool bIsLogged=false) const
 
virtual bool HaveAllSceneInstancesCompleted () const
 
FString GetSimOutputsBaseFolderPath () const
 Get the Sim Outputs Base Folder Path object. More...
 
FORCEINLINE FVector GetEntityBBVertexNormal (int8 InVertexIdx)
 
void SetAllEntitiesActivated (bool bIsActivated)
 
ARRMeshActorFindEntityByModel (const FString &InEntityModelName, bool bToActivate, bool bToTakeAway)
 
void AddEntity (ARRMeshActor *InEntity)
 
template<typename T >
void AddEntities (const TArray< T * > InEntityList)
 
virtual void MoveEnvironmentToSceneInstance (int8 InSceneInstanceId)
 Move all env static actors to a scene instance. More...
 

Public Attributes

TObjectPtr< ARRGameModeGameMode = nullptr
 
int8 SCENE_INSTANCES_NUM = 1
 
int32 OPERATION_BATCHES_NUM = 5
 
float SCENE_INSTANCES_DISTANCE_INTERVAL = 5000.f
 
int8 LastSceneInstanceId = URRActorCommon::DEFAULT_SCENE_INSTANCE_ID
 
TArray< URRSceneInstance * > SceneInstanceList
 
AActor * MainEnvironment = nullptr
 
AActor * MainFloor = nullptr
 
AActor * MainWall = nullptr
 
TArray< ALight * > MainLights
 
FString SIM_OUTPUTS_BASE_FOLDER_NAME = TEXT("OutputData")
 
TArray< FVector > ENTITY_BOUNDING_BOX_VERTEX_NORMALS
 

Protected Member Functions

virtual void CreateSceneInstance (int8 InSceneInstanceId)
 Create a Scene Instance object. More...
 
virtual void InitializeSim (int8 InSceneInstanceId)
 Spawn ARRSceneDirector, which runs the main operation of the mode. More...
 
virtual void StartSubSim (int8 InSceneInstanceId)
 Trigger OnStartSim of URRSceneInstance::ActorCommon. More...
 
virtual void CreateServiceObjects (int8 InSceneInstanceId)
 Create scene's common objects. More...
 
virtual void SetupEnvironment ()
 Stream level & Fetch static-env actors. More...
 
virtual void FetchEnvStaticActors ()
 Fetch env static actors (floors, walls, lights, etc.) if setup in the scene/level. More...
 
virtual void FinalizeSim ()
 
virtual void PrintSimConfig () const
 
virtual void BeginPlay () override
 Call BeginSubPlay. More...
 
virtual void BeginSubPlay ()
 Trigger OnBeginPlay() for plugins' own common artifacts, which have been created earlier in this ::[StartSim()]. More...
 
virtual void EndPlay (const EEndPlayReason::Type EndPlayReason) override
 This function works like an unwinding stack. where the children class's contents. More...
 

Protected Attributes

TSubclassOf< URRSceneInstanceSceneInstanceClass
 
TArray< ARRMeshActor * > AllDynamicMeshEntities
 Pool of all entities having been spawned. More...
 

Private Attributes

TArray< AActor * > OrphanEntities
 To avoid early GC, this exists only to keep ones temporarily taken away from [AllDynamicMeshEntities] & recycled later. More...
 

Detailed Description

Game state which handles multiple URRSceneInstance which spit game in scenes for data gen, large world and etc.

See also
AGameState
Todo:
add documentation

UCLASS(Config = RapyutaSimSettings)

Constructor & Destructor Documentation

◆ ARRGameState()

ARRGameState::ARRGameState ( )

Member Function Documentation

◆ AddEntities()

template<typename T >
void ARRGameState::AddEntities ( const TArray< T * >  InEntityList)
inline

◆ AddEntity()

void ARRGameState::AddEntity ( ARRMeshActor InEntity)

◆ BeginPlay()

virtual void ARRGameState::BeginPlay ( )
overrideprotectedvirtual

Call BeginSubPlay.

◆ BeginSubPlay()

virtual void ARRGameState::BeginSubPlay ( )
protectedvirtual

Trigger OnBeginPlay() for plugins' own common artifacts, which have been created earlier in this ::[StartSim()].

◆ CreateSceneInstance()

virtual void ARRGameState::CreateSceneInstance ( int8  InSceneInstanceId)
protectedvirtual

Create a Scene Instance object.

Create SceneInstance and SceneDirector's own PlayerController, which actually creates its instance based on PlayerControllerClass

configured in [GameMode]'s ctor! ! [PlayerController] MUST BE CREATED EARLIER THAN ALL OTHER SIM SCENE'S ACTORS AND

OBJECTS

Parameters
InSceneInstanceId

◆ CreateServiceObjects()

virtual void ARRGameState::CreateServiceObjects ( int8  InSceneInstanceId)
protectedvirtual

Create scene's common objects.

Instantiate Actor Common, of which the ctor should not depend on any play resource.

Common objects in general must be created here first, then will be referenced anywhere else.

Parameters
InSceneInstanceId

◆ EndPlay()

virtual void ARRGameState::EndPlay ( const EEndPlayReason::Type  EndPlayReason)
overrideprotectedvirtual

This function works like an unwinding stack. where the children class's contents.

are finalized ahead of parent's

=> Reaching here means that all ~Common's OnEndPlay() have already finished!

Parameters
EndPlayReason

◆ FetchEnvStaticActors()

virtual void ARRGameState::FetchEnvStaticActors ( )
protectedvirtual

Fetch env static actors (floors, walls, lights, etc.) if setup in the scene/level.

◆ FinalizeSim()

virtual void ARRGameState::FinalizeSim ( )
protectedvirtual

◆ FindEntityByModel()

ARRMeshActor* ARRGameState::FindEntityByModel ( const FString &  InEntityModelName,
bool  bToActivate,
bool  bToTakeAway 
)

◆ GetEntityBBVertexNormal()

FORCEINLINE FVector ARRGameState::GetEntityBBVertexNormal ( int8  InVertexIdx)
inline

◆ GetSceneInstance()

template<typename TScenceInstanceClass >
TScenceInstanceClass* ARRGameState::GetSceneInstance ( int8  InSceneInstanceId) const
inline

Get the Scene Instance object.

Template Parameters
TScenceInstanceClass
Parameters
InSceneInstanceId
Returns
TScenceInstanceClass*

◆ GetSimOutputsBaseFolderPath()

FString ARRGameState::GetSimOutputsBaseFolderPath ( ) const
inline

Get the Sim Outputs Base Folder Path object.

To faciliate testing on CI, Outputs base folder need to be cleared during the test.

Thus, it would be clearer as using [ProjectSavedDir()] as the CI default output folder.

Returns
FString

◆ HasInitialized()

virtual bool ARRGameState::HasInitialized ( bool  bIsLogged = false) const
virtual

◆ HasSceneInstance()

bool ARRGameState::HasSceneInstance ( int8  InSceneInstanceId)
inline

Check SceneInstance with given Id is exists.

Parameters
InSceneInstanceId
Returns
true
false

◆ HasSceneInstanceListBeenCreated()

virtual bool ARRGameState::HasSceneInstanceListBeenCreated ( bool  bIsLogged = false) const
virtual

◆ HaveAllSceneInstancesCompleted()

virtual bool ARRGameState::HaveAllSceneInstancesCompleted ( ) const
virtual

◆ InitializeSim()

virtual void ARRGameState::InitializeSim ( int8  InSceneInstanceId)
protectedvirtual

Spawn ARRSceneDirector, which runs the main operation of the mode.

This, due to making use of scene instance's actors, is spawned last.

ALSO, we should not write Scene-specific operation/functionality-related -starting codes inside scene instance's actors

(camera, actors, spawners) and leave it up to [SceneDirector] to decide the start sequence order!

Parameters
InSceneInstanceId

◆ MoveEnvironmentToSceneInstance()

virtual void ARRGameState::MoveEnvironmentToSceneInstance ( int8  InSceneInstanceId)
virtual

Move all env static actors to a scene instance.

◆ PrintSimConfig()

virtual void ARRGameState::PrintSimConfig ( ) const
protectedvirtual

◆ SetAllEntitiesActivated()

void ARRGameState::SetAllEntitiesActivated ( bool  bIsActivated)

◆ SetupEnvironment()

virtual void ARRGameState::SetupEnvironment ( )
protectedvirtual

Stream level & Fetch static-env actors.

◆ StartSim()

virtual void ARRGameState::StartSim ( )
virtual

◆ StartSubSim()

virtual void ARRGameState::StartSubSim ( int8  InSceneInstanceId)
protectedvirtual

Trigger OnStartSim of URRSceneInstance::ActorCommon.

Parameters
InSceneInstanceId

Member Data Documentation

◆ AllDynamicMeshEntities

TArray<ARRMeshActor*> ARRGameState::AllDynamicMeshEntities
protected

Pool of all entities having been spawned.

UPROPERTY()

◆ ENTITY_BOUNDING_BOX_VERTEX_NORMALS

TArray<FVector> ARRGameState::ENTITY_BOUNDING_BOX_VERTEX_NORMALS
Initial value:
= {
{0.f, 0.f, 0.f},
{0.f, 1.f, 0.f},
{0.f, 0.f, 1.f},
{1.f, 0.f, 0.f},
{1.f, 1.f, 1.f},
{1.f, 0.f, 1.f},
{1.f, 1.f, 0.f},
{0.f, 1.f, 1.f},
}

UPROPERTY(config)

◆ GameMode

TObjectPtr<ARRGameMode> ARRGameState::GameMode = nullptr

◆ LastSceneInstanceId

int8 ARRGameState::LastSceneInstanceId = URRActorCommon::DEFAULT_SCENE_INSTANCE_ID

◆ MainEnvironment

AActor* ARRGameState::MainEnvironment = nullptr

◆ MainFloor

AActor* ARRGameState::MainFloor = nullptr

◆ MainLights

TArray<ALight*> ARRGameState::MainLights

◆ MainWall

AActor* ARRGameState::MainWall = nullptr

◆ OPERATION_BATCHES_NUM

int32 ARRGameState::OPERATION_BATCHES_NUM = 5

◆ OrphanEntities

TArray<AActor*> ARRGameState::OrphanEntities
private

To avoid early GC, this exists only to keep ones temporarily taken away from [AllDynamicMeshEntities] & recycled later.

UPROPERTY()

◆ SCENE_INSTANCES_DISTANCE_INTERVAL

float ARRGameState::SCENE_INSTANCES_DISTANCE_INTERVAL = 5000.f

◆ SCENE_INSTANCES_NUM

int8 ARRGameState::SCENE_INSTANCES_NUM = 1

◆ SceneInstanceClass

TSubclassOf<URRSceneInstance> ARRGameState::SceneInstanceClass
protected

◆ SceneInstanceList

TArray<URRSceneInstance*> ARRGameState::SceneInstanceList

◆ SIM_OUTPUTS_BASE_FOLDER_NAME

FString ARRGameState::SIM_OUTPUTS_BASE_FOLDER_NAME = TEXT("OutputData")

The documentation for this class was generated from the following file: