NetPingMsg.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Unity.Networking.Transport;
  5. namespace KairoEngine.Multiplayer
  6. {
  7. public class NetPingMsg : NetMsg
  8. {
  9. public override uint code { get { return (uint)NetOpCode.Ping; }}
  10. public uint pingId;
  11. public NetPingMsg() {}
  12. public NetPingMsg(uint pingId)
  13. {
  14. this.pingId = pingId;
  15. }
  16. public override void Serialize(ref DataStreamWriter writer)
  17. {
  18. writer.WriteByte((byte)code);
  19. writer.WriteUInt(pingId);
  20. }
  21. public override void Deserialize(ref DataStreamReader reader)
  22. {
  23. pingId = reader.ReadUInt();
  24. }
  25. public override void SendMessage(ServerBehaviour server, NetMsg netMsg, ref DataStreamWriter writer, int clientId)
  26. {
  27. if(server == null) return;
  28. NetPingMsg netPingMsg = (NetPingMsg)netMsg;
  29. string text = $"Sending ping to client (ID {clientId}, PingId = {netPingMsg.pingId})";
  30. if(server.debug) Debug.Log(text);
  31. NetMsgEvents.Trigger($"{server.eventStreamName}_PingSent", text, clientId, code, netPingMsg);
  32. netPingMsg.Serialize(ref writer);
  33. }
  34. public override NetMsg ReceiveMessage(ClientBehaviour client, ref DataStreamReader stream)
  35. {
  36. NetPingMsg netPingMsg = new NetPingMsg();
  37. netPingMsg.Deserialize(ref stream);
  38. return netPingMsg;
  39. }
  40. public override void ReadMessage(ClientBehaviour client)
  41. {
  42. string text = $"Server sent a ping (PingId = {pingId})";
  43. if(client.debug) Debug.Log(text);
  44. NetMsgEvents.Trigger($"{client.eventStreamName}_PingReceived", text, -1, code, this);
  45. }
  46. }
  47. }