I try spawn players in GameMode in HandleStartingNewPlayer, its have link on player controller. I set by UI players type in PlayerController and in HandleStartingNewPlayer its check type and spawn, but its work only for one player, others players spawn not what they selected, they spawn first player type. I dunno how i can get player data in HandleStartingNewPlayer.
Summary
void AGameLevelMode::HandleStartingNewPlayer_Implementation(APlayerController* NewPlayer)
{
Super::HandleStartingNewPlayer_Implementation(NewPlayer);
ACharacterAvatar* TempCharToCheck = Cast<ACharacterAvatar>(NewPlayer->GetPawn());
AMyAdvancedPlayerController *TempPlayerRef = Cast<AMyAdvancedPlayerController>(NewPlayer);
if(TempCharToCheck)
{
GEngine->AddOnScreenDebugMessage(-1, 30.0f, FColor::Red, TEXT("AGameModeCharacterEditor.cpp: TEMP EXIST"));
return;
}
if(NewPlayer->GetPawn())
{
NewPlayer->GetPawn()->Destroy();
}
UWorld* World = GetWorld();
FActorSpawnParameters SpawnInfo;
SpawnInfo.Owner = NewPlayer;
SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AdjustIfPossibleButAlwaysSpawn;
//get avi presets
GetGenderAvatar = TempPlayerRef->CharacterData.CharGender == EGender::EWS_Female? GetFemaleAvatar: GetMaleAvatar; //GetFemaleAvatar;
//if(GetFemaleAvatar) { GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Purple, TEXT("AGameModeCharacterEditor.cpp: BP_FEMALE EXIST"));}
//if(GetMaleAvatar) { GEngine->AddOnScreenDebugMessage(-1, 10.0f, FColor::Blue, TEXT("AGameModeCharacterEditor.cpp: BP_MALE EXIST")); }
//GEngine->AddOnScreenDebugMessage(-1, 30.0f, FColor::Red, TEXT("AGameModeCharacterEditor.cpp: TRY INSTANCE"));
if(GetGenderAvatar)
{
UE_LOG(LogTemp, Warning, TEXT("AGameModeCharacterEditor.cpp: DO INSTANCE CHARACTER"));
//GEngine->AddOnScreenDebugMessage(-1, 30.0f, FColor::Red, TEXT("AGameModeCharacterEditor.cpp: DO INSTANCE CHARACTER"));
ACharacterAvatar* NewCustomDoll = World->SpawnActor<ACharacterAvatar>(GetGenderAvatar, SpawnLocation, SpawnRotation, SpawnInfo);
//maybe need relocate this to character
NewPlayer->Possess(NewCustomDoll);
NewPlayer->bShowMouseCursor = true;
}
}