fixed bug when master server leaves, ownership wasn't be transferred properly

handTracking
Kyle Johnsen 2022-01-04 00:16:43 -05:00
parent 775bc52e3e
commit c15c7abf1d
1 changed files with 22 additions and 1 deletions

View File

@ -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<string, NetworkObject> 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<string,NetworkObject> kvp in objects)
{
kvp.Value.owner = masterPlayer;
if (kvp.Value.owner == null)
{
kvp.Value.owner = masterPlayer;
}
}
}