void HandleMovement(NetworkServer.IClient client, Packet packet) { try { if (client.Id != Id) { return; } var bytes = packet.ToArray(); var localPacket = new Packet(bytes); var packetLength = localPacket.ReadInt(); var clientId = localPacket.ReadInt(); localPacket.SetId((PacketId)localPacket.ReadInt()); if (localPacket.Id != PacketId.PlayerMovement) { return; } var inputLength = localPacket.ReadInt(); var inputs = new bool[inputLength]; for (var index = 0; index < inputs.Length; index++) { inputs[index] = localPacket.ReadBool(); } var rotation = localPacket.ReadQuaternion(); SetInput(inputs, rotation); } catch (Exception e) { Debug.Log($"Error reading packet from client {client.Id}: " + e); } }
protected override void OnClientReceivedPacket(NetworkServer.IClient client, Packet packet) { // Debug.Log($"The client {client.Id} has sent a message, id: {packet.Id}"); if (packet.Id == PacketId.TestPacket) { Debug.Log($"The client {client.Id} has sent a test message, msg: {packet.ReadString()}"); } }
/// <summary> /// Handles a client disconnection. /// </summary> void OnDisconnect(NetworkServer.IClient client) { var id = client.Id; var disconnectedPlayer = _players[id]; _players.Remove(id); ThreadManager.Schedule(() => Destroy(disconnectedPlayer.gameObject)); //Send destroy }
void SpawnPlayer(NetworkServer.IClient client) { var position = Vector3.up + _distanceBetweenPlayerSpawn; var rotation = Quaternion.identity; var userName = string.Empty; var id = client.Id; var player = Instantiate(playerPrefab); _players.Add(id, player); player.Initialize(id, userName, position, rotation); SendNewPlayerToAllPlayers(player); SendAllPlayersToNewPlayer(player); _distanceBetweenPlayerSpawn += Vector3.forward; }
protected override void OnClientDisconnect(NetworkServer.IClient client) { Debug.Log($"A client has disconnect with Id {client.Id}"); }
/// <summary> /// Called when a client receives a packet. /// </summary> protected virtual void OnClientReceivedPacket(NetworkServer.IClient client, Packet packet) { }
/// <summary> /// Called when a client is disconnected from the server. /// </summary> protected virtual void OnClientDisconnect(NetworkServer.IClient client) { }