diff --git a/TestVelGameServer/Assets/VelGameServer/NetworkManager.cs b/TestVelGameServer/Assets/VelGameServer/NetworkManager.cs index a02b498..64d83fd 100644 --- a/TestVelGameServer/Assets/VelGameServer/NetworkManager.cs +++ b/TestVelGameServer/Assets/VelGameServer/NetworkManager.cs @@ -93,7 +93,25 @@ public class NetworkManager : MonoBehaviour if (me.room != m.text) { + //we got a left message, kill it + //change ownership of all objects to + + foreach (KeyValuePair kvp in objects) + { + if (kvp.Value.owner == players[m.sender]) //the owner is the player that left + { + if (me.isLocal && me == masterPlayer) //I'm the local master player, so can take ownership immediately + { + me.takeOwnership(kvp.Key); + } + else if (players[m.sender] == masterPlayer) //the master player left, so everyone should set the owner null (we should get a new master shortly) + { + kvp.Value.owner = null; + } + } + } + Destroy(players[m.sender].gameObject); players.Remove(m.sender); } @@ -143,7 +161,10 @@ public class NetworkManager : MonoBehaviour foreach(KeyValuePair kvp in objects) { - kvp.Value.owner = masterPlayer; + if (kvp.Value.owner == null) + { + kvp.Value.owner = masterPlayer; + } } }