private void REQ_LocalPlayer(NetReader reader) { if (!clientInputs.ContainsKey(reader.connectionId)) { clientInputs.Add(reader.connectionId, new ClientInputMapping()); } ClientInputMapping clientMapping = clientInputs[reader.connectionId]; // check bounds if (clientMapping.pairs.Count >= Globals.MAX_PLAYERS_PER_CLIENT) { Debug.LogWarning("can't add any more players from this client: " + reader.connectionId); return; } // find the next available car GamePlayer newPlayer = PlayerInputManager.FindNewPlayer(); if (newPlayer == null) { Debug.LogWarning("Tried to get a new player for client " + reader.connectionId + " but all players are full!"); return; } // convert this car to be a player newPlayer.clientConnection = reader.connectionId; newPlayer.playerType = PlayerType.REMOTE; newPlayer.AddInput(PlayerInput.None); // add a pairing between this client and player int clientNum = clientMapping.pairs.Count; ClientPlayerPair pair = new ClientPlayerPair(clientNum, newPlayer); // links a client (player) number to an actual player class clientMapping.pairs.Add(pair); // notify the player as to which car it is controlling. NetWriter writer = NetworkManager.StartNetworkMessage("new_local_player", thisNetworkID); writer.WriteInt(clientNum); // notify the client newPlayer.car.thisNetworkID.WriteBytes(writer); // write the ID of the car it's controlling NetworkManager.SendMessageToClient(writer, NetworkCore.AllCostMsg, reader.connectionId); }