public void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod) { int packetID = reader.GetInt(); switch (packetID) { case 2: Packet02CreateWorldObject worldPacket = new Packet02CreateWorldObject(); worldPacket.Deserialize(reader); worldPacket.ExecuteClientSide(); break; case 3: Packet03CreatePlayer createPlayer = new Packet03CreatePlayer(); createPlayer.Deserialize(reader); createPlayer.ExecuteClientSide(); break; case 4: Packet04PlayerMove playerMove = new Packet04PlayerMove(); playerMove.Deserialize(reader); playerMove.ExecuteClientSide(); break; } }
/** * 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); } }
/** * SPAWNING AND MOVING PLAYERS **/ public void AddPlayer(Packet03CreatePlayer packet) { if (packet.ourPlayer) { GameObject newPlayer = Instantiate(clientPlayer, packet.position, Quaternion.Euler(packet.eulerAngles), worldParent.transform); Player player = newPlayer.GetComponent <Player>(); player.guid = packet.guid; clientPlayers.Add(packet.guid, player); Debug.Log("New player spawned.. " + clientPlayers.Count + " players in server."); } else { GameObject newPlayer = Instantiate(serverPlayer, packet.position, Quaternion.Euler(packet.eulerAngles), worldParent.transform); Player player = newPlayer.GetComponent <Player>(); player.guid = packet.guid; clientPlayers.Add(packet.guid, player); Debug.Log("New player spawned.. " + clientPlayers.Count + " players in server."); } }
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); } } }