public void SpawnPlayerAfterRoundStart(NetworkConnection conn) { Debug.Log("Spawn player from address " + conn.address); CharacterResponse character = SpawnPlayerWithoutLoginServer(conn); Debug.Log("Spawning player after round start " + "conn: " + conn.address + " character: " + character.name); //Something has gone horribly wrong if (character == null) { throw new Exception("Could not read character data"); } // Spawn player based on their character choices Transform startPos = GetStartPosition(); GameObject player = startPos != null ? Instantiate(playerPrefab, startPos.position, startPos.rotation) : Instantiate(playerPrefab); player.name = character.name; if (NetworkClient.connection.identity != null) { NetworkServer.DestroyPlayerForConnection(conn); } //Destroy dummy player //NetworkServer.DestroyPlayerForConnection(conn); //Spawn actual player NetworkServer.AddPlayerForConnection(conn, player); }
private IEnumerator SpawnPlayerAfterRoundStart(NetworkConnection conn, CharacterSelectMessage characterSelection) { // TODO: Should store players in an object until round is started, then spawn them all at once. yield return(new WaitUntil(() => roundManager.IsRoundStarted)); //Something has gone horribly wrong if (characterSelection?.character == null) { throw new Exception("Could not read character data"); } // Spawn player based on their character choices Transform startPos = GetStartPosition(); GameObject player = startPos != null ? Instantiate(playerPrefab, startPos.position, startPos.rotation) : Instantiate(playerPrefab); player.name = characterSelection.character.name; // NetworkServer.ReplacePlayerForConnection(conn, player); //Destroy dummy player NetworkServer.DestroyPlayerForConnection(conn); //Spawn actual player NetworkServer.AddPlayerForConnection(conn, player); }
public virtual void OnServerDisconnect(NetworkConnection conn) { NetworkServer.DestroyPlayerForConnection(conn); if (LogFilter.Debug) { Debug.Log("OnServerDisconnect: Client disconnected."); } }
public override void OnServerDisconnect(NetworkConnection conn) { Debug.Log("Server Disconnected"); if (ball != null) { NetworkServer.Destroy(ball); } // call base functionality (actually destroys the player) NetworkServer.DestroyPlayerForConnection(conn); //Stoping the host also calls the OnStopClient method //calling stop host even aftter the session was stopped by the manager causes a deadlock if (NetworkServer.active && NetworkClient.isConnected) { StopHost(); } }