diff --git a/Lidgren.Network/Encryption/NetAESEncryption.cs b/Lidgren.Network/Encryption/NetAESEncryption.cs index 5ed5582..9ab9557 100644 --- a/Lidgren.Network/Encryption/NetAESEncryption.cs +++ b/Lidgren.Network/Encryption/NetAESEncryption.cs @@ -7,18 +7,30 @@ namespace Lidgren.Network public class NetAESEncryption : NetCryptoProviderBase { public NetAESEncryption(NetPeer peer) +#if UNITY + : base(peer, new RijndaelManaged()) +#else : base(peer, new AesCryptoServiceProvider()) +#endif { } public NetAESEncryption(NetPeer peer, string key) +#if UNITY + : base(peer, new RijndaelManaged()) +#else : base(peer, new AesCryptoServiceProvider()) +#endif { SetKey(key); } public NetAESEncryption(NetPeer peer, byte[] data, int offset, int count) +#if UNITY + : base(peer, new RijndaelManaged()) +#else : base(peer, new AesCryptoServiceProvider()) +#endif { SetKey(data, offset, count); } diff --git a/Lidgren.Network/NetBuffer.Write.cs b/Lidgren.Network/NetBuffer.Write.cs index 03e18ff..72f937c 100644 --- a/Lidgren.Network/NetBuffer.Write.cs +++ b/Lidgren.Network/NetBuffer.Write.cs @@ -101,6 +101,16 @@ namespace Lidgren.Network m_bitLength += 8; } + /// + /// Writes a byte at a given offset in the buffer + /// + public void WriteAt(Int32 offset, byte source) { + int newBitLength = Math.Max(m_bitLength, offset + 8); + EnsureBufferSize(newBitLength); + NetBitWriter.WriteByte((byte) source, 8, m_data, offset); + m_bitLength = newBitLength; + } + /// /// Writes a signed byte /// diff --git a/Lidgren.Network/NetConnection.Latency.cs b/Lidgren.Network/NetConnection.Latency.cs index c4e0205..b7b031e 100644 --- a/Lidgren.Network/NetConnection.Latency.cs +++ b/Lidgren.Network/NetConnection.Latency.cs @@ -46,15 +46,7 @@ namespace Lidgren.Network internal void InitializePing() { - double now = NetTime.Now; - - // randomize ping sent time (0.25 - 1.0 x ping interval) - m_sentPingTime = now; - m_sentPingTime -= (m_peerConfiguration.PingInterval * 0.25f); // delay ping for a little while - m_sentPingTime -= (MWCRandom.Instance.NextSingle() * (m_peerConfiguration.PingInterval * 0.75f)); - m_timeoutDeadline = now + (m_peerConfiguration.m_connectionTimeout * 2.0); // initially allow a little more time - - // make it better, quick :-) + m_timeoutDeadline = NetTime.Now + (m_peerConfiguration.m_connectionTimeout * 2.0); // initially allow a little more time SendPing(); } diff --git a/Lidgren.Network/NetPeer.Internal.cs b/Lidgren.Network/NetPeer.Internal.cs index 1b100fa..d6b0e01 100644 --- a/Lidgren.Network/NetPeer.Internal.cs +++ b/Lidgren.Network/NetPeer.Internal.cs @@ -69,15 +69,8 @@ namespace Lidgren.Network return; // remove all callbacks regardless of sync context - RestartRemoveCallbacks: - for (int i = 0; i < m_receiveCallbacks.Count; i++) - { - if (m_receiveCallbacks[i].Item2.Equals(callback)) - { - m_receiveCallbacks.RemoveAt(i); - goto RestartRemoveCallbacks; - } - } + m_receiveCallbacks.RemoveAll(tuple => tuple.Item2.Equals(callback)); + if (m_receiveCallbacks.Count < 1) m_receiveCallbacks = null; } diff --git a/Lidgren.Network/Platform/PlatformConstrained.cs b/Lidgren.Network/Platform/PlatformConstrained.cs index 7e10a6f..6d77640 100644 --- a/Lidgren.Network/Platform/PlatformConstrained.cs +++ b/Lidgren.Network/Platform/PlatformConstrained.cs @@ -1,4 +1,4 @@ -#if __CONSTRAINED__ || UNITY_STANDALONE_LINUX +#if __CONSTRAINED__ || UNITY_STANDALONE_LINUX || UNITY using System; using System.Collections.Generic; using System.Net; @@ -27,9 +27,9 @@ namespace Lidgren.Network public static IPAddress GetMyAddress(out IPAddress mask) { mask = null; -#if UNITY_ANDROID || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_IOS try { +#if UNITY_ANDROID || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX || UNITY_IOS || UNITY if (!(UnityEngine.Application.internetReachability == UnityEngine.NetworkReachability.NotReachable)) { return null;