After months of trying to work this one out, I finally narrowed it down - though I can’t figure out why it’s occurring. Zak Middleton managed to fix the Possession issue in 4.8, but it appears that wasn’t the only issue occuring.
OnRep_Pawn only fires on clients if the object you’re possessing has just been Spawned by the Server. It does NOT get called if the Pawn you’re trying to possess already exists in the world (both Client and Server that is).
Here’s a video of the issue occurring in my game. The vehicles are just Pawns (not Characters). When I spawn in as a a Character class object, OnRep_Pawn get’s fired. If I try to possess one of the Vehicles on the Client, OnRep_Pawn never get’s called. This is because they already exist on the Client and server.
WHen I first spawn in as a vehicle, OnRep_Pawn also get’s called. It doesn’t get called if I subsequently try to re-possess the vehicle after hopping out of it, because it wasn’t just spawned by the server. The Debug Messages should indicate this!
This is the code I'm using in my Custom Player Controller to do this:void ABZGame_PlayerController::OnRep_Pawn()
{
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Red, TEXT("OnRep_Pawn Called!"));
Super::OnRep_Pawn();
}