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;