/** * SPAWNING AND SENDING PLAYERS **/ public void SendPlayersToClient(NetPeer peer, NetDataWriter writer) { Dictionary <Guid, Player> currentPlayers = clientPlayers; foreach (Player player in currentPlayers.Values) { Packet03CreatePlayer createPlayer = new Packet03CreatePlayer(player.guid, player.gameObject.transform.position, player.gameObject.transform.eulerAngles, false); createPlayer.Serialize(writer); peer.Send(writer, DeliveryMethod.ReliableUnordered); } }
public void OnPeerConnected(NetPeer peer) { Debug.Log("[SERVER] We have new peer " + peer.EndPoint); connectedPeers.Add(peer); NetDataWriter peerWriter = new NetDataWriter(); // Send all objects to client ServerObjects.Instance.SendObjectsToClient(peer, peerWriter); // Then send them all players that are already in the game ServerObjects.Instance.SendPlayersToClient(peer, peerWriter); // Then create OUR player and send them our player Packet03CreatePlayer newClientPlayer = new Packet03CreatePlayer(Guid.NewGuid(), ServerObjects.Instance.spawnPoint.transform.position, Vector3.zero, true); newClientPlayer.Serialize(peerWriter); peer.Send(peerWriter, DeliveryMethod.ReliableUnordered); // Send this new player to server clients as well newClientPlayer.ExecuteServerSide(peer, peerWriter); }
public void AddPlayer(Packet03CreatePlayer packet, NetPeer thisPeer, NetDataWriter writer) { GameObject newPlayer = Instantiate(serverPlayer, packet.position, Quaternion.Euler(packet.eulerAngles), worldParent.transform); Player player = newPlayer.GetComponent <Player>(); player.guid = packet.guid; player.ipAddress = thisPeer.EndPoint.Address.ToString(); player.port = thisPeer.EndPoint.Port; clientPlayers.Add(player.guid, player); Debug.Log("New player spawned.. " + clientPlayers.Count + " players in server."); // If this is the server - we should send this new player to our connected clients - apart from our new one foreach (NetPeer peer in Server.Instance.connectedPeers) { if (peer != thisPeer) { Packet03CreatePlayer createPlayer = packet; createPlayer.ourPlayer = false; createPlayer.Serialize(writer); peer.Send(writer, DeliveryMethod.ReliableUnordered); } } }