void UpdatePing(uint recvTime, uint sendTime, uint ackTime) { uint aliased = recvTime - sendTime; aliasedRtt = (aliasedRtt * 0.9f) + ((float)aliased / 1000f * 0.1f); if (UdpSocket.CalculateNetworkPing) { uint network = aliased - UdpMath.Clamp(ackTime, 0, aliased); networkRtt = (networkRtt * 0.9f) + ((float)network / 1000f * 0.1f); } }
internal void OnEventConnectionOption(UdpEvent ev) { switch (ev.Option) { case UdpConnectionOption.AlwaysSendMtu: alwaysSendMtu = ev.OptionIntValue == 1; break; case UdpConnectionOption.MtuSize: mtu = UdpMath.Clamp(ev.OptionIntValue, socket.Config.MtuMin, socket.Config.MtuMax); break; } }
UdpHeader MakeHeader(bool isObject) { UdpHeader header = new UdpHeader(); header.IsObject = isObject; header.AckHistory = recvHistory; header.AckSequence = recvSequence; header.ObjSequence = UdpMath.SeqNext(sendSequence, UdpHeader.SEQ_MASK); header.Now = socket.GetCurrentTime(); if (recvTime > 0) { header.AckTime = (ushort)UdpMath.Clamp(header.Now - recvTime, 0, socket.Config.MaxPing); } return(header); }