When my Pawn dies I call this function:
void ATestPawn::Explode()
{
GEngine->AddOnScreenDebugMessage(1, 15.0f, FColor::Red, "I'm dead.");
ShipMeshComponent->SetVisibility(false);
UnPossessed();
auto gameMode = GetWorld()->GetAuthGameMode();
auto TestGameMode = Cast<ATestGameMode>(gameMode);
TestGameMode->RegisterPawnDeath(PlayerController);
Destroy();
}
It goes into my game mode:
void ATestGameMode::RegisterPawnDeath(APlayerController* PlayerController)
{
//if (!PlayerController) return; //PlayerController is NULL for clients NOT for server
FActorSpawnParameters params;
params.bNoCollisionFail = true;
params.Owner = this;
params.Instigator = NULL;
params.bDeferConstruction = false;
auto PlayerStart = GetWorld()->SpawnActor<APlayerStart>(APlayerStart::StaticClass(), FVector(0, 0, 210.0f), FRotator::ZeroRotator, params);
PlayerController->Possess(SpawnDefaultPawnFor(PlayerController, PlayerStart)); //It crashes on this Line PlayerController is NULL
}
I get a crash on the last line. PlayerController is NULL for clients but not for server. I am using a custom player controller.
I am getting stuck on how this respawning, player controllers, and game mode stuff. Any help would be appreciated.