What is the proper way to handle waiting for a reference to be valid?

Just spent quite a few hours dealing with this last week. I also do this to specify my own spawn parameters as the Engines RestartPlayer’s settings allow the the pawn to not spawn due to collisions.

Override GameModeBase::RestartPlayer(AController* Player)

Loads stats into PlayerState (my method)

  • Gameplay Ability System resides here
    Calls GameModeBase::GetDefaultPawnClassForController (which is also overriden)
    Spawns the pawn (the location and rotation information was retrieved at the Load Stats call)
    Calls additional setup method on the pawn
    Calls GameModeBase::FinishRestartPlayer (not overriden)