I override PostLogin and get the PlayerState from APlayerController
void AProjectOrbGameMode::PostLogin(APlayerController* NewPlayer)
{
Super::PostLogin(NewPlayer);
// Initializing player values
AOrbPlayerState* playerState = Cast<AOrbPlayerState>(NewPlayer->PlayerState);
playerState->TeamID = 1;
UE_LOG(LogTemp, Log, TEXT("PostLogin"));
}
And in ChoosePlayerStart, I want to choose the player start based on TeamID. But when I tried to access the TeamID from PlayerStats in ChoosePlayerStart its 0.
AActor* AProjectOrbGameMode::ChoosePlayerStart_Implementation(AController* PlayerController)
{
AOrbPlayerState* orbPlayerState = Cast<AOrbPlayerState>(PlayerController->PlayerState);
int playerTeamID = orbPlayerState->TeamID;
UE_LOG(LogTemp, Log, TEXT("Player TeamID: %d"), playerTeamID);
// code regarding selection of player start
}
Is this because PostLogin and ChoosePlayerStart both happen in single frame and Replicated variables only update at the end of frame?
EDIT: ChoosePlayerStart runs before PostLogin which is why the values are default. How can I select the player start based on TeamID if the TeamID is initialized after selecting the player start?