public override void OnPlayerLeftRoom(Player otherPlayer)
{
base.OnPlayerLeftRoom(otherPlayer);
// Notify others that the player has left the room.
if (otherPlayer != null && m_ActorNumberByPhotonViewIndex.TryGetValue(otherPlayer.ActorNumber, out int index)) {
var photonView = m_Players[index];
// Inactive players may rejoin. Remember the last location of the inactive player.
if (otherPlayer.IsInactive) {
if (m_InactivePlayers == null) {
m_InactivePlayers = new Dictionary<Player, InactivePlayer>();
}
var removeEvent = Scheduler.Schedule<Player>(m_InactiveTimeout, (Player player) => { m_InactivePlayers.Remove(player); }, otherPlayer);
m_InactivePlayers.Add(otherPlayer, new InactivePlayer(index, photonView.transform.position, photonView.transform.rotation, removeEvent));
}
EventHandler.ExecuteEvent("OnPlayerLeftRoom", otherPlayer, photonView.gameObject);
m_ActorNumberByPhotonViewIndex.Remove(otherPlayer.ActorNumber);
GameObject.Destroy(photonView.gameObject);
m_Players.Remove(photonView);
for (int j = index; j < m_Players.Count; ++j) {
m_ActorNumberByPhotonViewIndex[m_Players[j].Owner.ActorNumber] = j;
}
}
}