From 83096a908ac1223b8d3a48eccaa333e18017d8cc Mon Sep 17 00:00:00 2001 From: cxxpxr <60411087+cxxpxr@users.noreply.github.com> Date: Thu, 19 Aug 2021 04:38:45 -0400 Subject: [PATCH] Experimental Ignorance integration --- .../LRM_LoadBalancer/Config.cs | 1 + .../LRM_LoadBalancer/Program/Program.cs | 2 + .../LRM_LoadBalancer/Program/ProgramExtra.cs | 5 +- .../LRM/Config.cs | 14 +- .../LRM/Program/Program.cs | 2 +- .../LRM/RelayHandler/RelayHandler.cs | 43 +- .../LRM/RelayHandler/RelayHandlerCallbacks.cs | 15 +- .../RelayHandler/RelayHandlerRoomMethods.cs | 2 +- .../Ignorance/Core/IgnoranceClient.cs | 288 ++++ .../Ignorance/Core/IgnoranceServer.cs | 303 ++++ .../Ignorance/Dependencies/ENet.cs | 1385 ++++++++++++++++ .../MultiCompiled/Ignorance/Ignorance.cs | 510 ++++++ .../Ignorance/IgnoranceDefinitions.cs | 94 ++ .../Ignorance/Plugins/Linux/libenet.so | Bin 0 -> 60144 bytes .../Ignorance/Plugins/Windows/README.txt | 3 + .../Ignorance/Plugins/Windows/enet.dll | Bin 0 -> 124928 bytes .../Ignorance/Plugins/readme.txt | 35 + UnityProject/Assets/Ignorance.meta | 8 + UnityProject/Assets/Ignorance/Demo.meta | 8 + .../Assets/Ignorance/Demo/PongChamp.meta | 8 + .../Ignorance/Demo/PongChamp/AtariBall.prefab | 188 +++ .../Demo/PongChamp/AtariBall.prefab.meta | 8 + .../Demo/PongChamp/AtariRacket.prefab | 188 +++ .../Demo/PongChamp/AtariRacket.prefab.meta | 8 + .../Ignorance/Demo/PongChamp/Demo.unity | 1166 ++++++++++++++ .../Ignorance/Demo/PongChamp/Demo.unity.meta | 7 + .../Ignorance/Demo/PongChamp/Scripts.meta | 8 + .../Demo/PongChamp/Scripts/AtariPongBall.cs | 67 + .../PongChamp/Scripts/AtariPongBall.cs.meta | 12 + .../Demo/PongChamp/Scripts/AtariPongRacket.cs | 25 + .../PongChamp/Scripts/AtariPongRacket.cs.meta | 12 + .../Demo/PongChamp/Scripts/OnlineTimer.cs | 49 + .../PongChamp/Scripts/OnlineTimer.cs.meta | 11 + .../Demo/PongChamp/TenryuuBall.prefab | 178 +++ .../Demo/PongChamp/TenryuuBall.prefab.meta | 7 + .../Ignorance/Demo/PongChamp/Textures.meta | 8 + .../Demo/PongChamp/Textures/PoutRyuu.png | Bin 0 -> 30056 bytes .../Demo/PongChamp/Textures/PoutRyuu.png.meta | 128 ++ .../Demo/PongChamp/Textures/Sprites.meta | 8 + .../Demo/PongChamp/Textures/Sprites/Ball.png | Bin 0 -> 2791 bytes .../PongChamp/Textures/Sprites/Ball.png.meta | 88 + .../PongChamp/Textures/Sprites/DottedLine.png | Bin 0 -> 2799 bytes .../Textures/Sprites/DottedLine.png.meta | 88 + .../PongChamp/Textures/Sprites/Racket.png | Bin 0 -> 2800 bytes .../Textures/Sprites/Racket.png.meta | 88 + .../Textures/Sprites/WallHorizontal.png | Bin 0 -> 2796 bytes .../Textures/Sprites/WallHorizontal.png.meta | 88 + .../Textures/Sprites/WallVertical.png | Bin 0 -> 2800 bytes .../Textures/Sprites/WallVertical.png.meta | 88 + .../Demo/PongChamp/Textures/pogchamp.png | Bin 0 -> 129087 bytes .../Demo/PongChamp/Textures/pogchamp.png.meta | 121 ++ .../Assets/Ignorance/Demo/Super Basic.meta | 8 + .../Demo/Super Basic/SuperBasic.unity | 641 ++++++++ .../Demo/Super Basic/SuperBasic.unity.meta | 7 + UnityProject/Assets/LRMTestScene.unity | 122 +- .../BallMaterial.physicsMaterial2D.meta | 8 +- .../Examples/Pong/Sprites/Racket.png.meta | 10 +- .../Mirror/Runtime/Transport/Ignorance.meta | 8 + .../Runtime/Transport/Ignorance/Core.meta | 8 + .../Ignorance/Core/IgnoranceClient.cs | 296 ++++ .../Ignorance/Core/IgnoranceClient.cs.meta | 11 + .../Ignorance/Core/IgnoranceServer.cs | 328 ++++ .../Ignorance/Core/IgnoranceServer.cs.meta | 11 + .../Transport/Ignorance/Dependencies.meta | 8 + .../Transport/Ignorance/Dependencies/ENet.cs | 1411 +++++++++++++++++ .../Ignorance/Dependencies/ENet.cs.meta | 11 + .../Runtime/Transport/Ignorance/Editor.meta | 8 + .../Ignorance/Editor/AddScriptingDefine.cs | 83 + .../Editor/AddScriptingDefine.cs.meta | 11 + .../Ignorance/Editor/IgnoranceToolbox.cs | 44 + .../Ignorance/Editor/IgnoranceToolbox.cs.meta | 11 + .../Runtime/Transport/Ignorance/Ignorance.cs | 746 +++++++++ .../Transport/Ignorance/Ignorance.cs.meta | 11 + .../Ignorance/IgnoranceDefinitions.cs | 94 ++ .../Ignorance/IgnoranceDefinitions.cs.meta | 11 + .../Runtime/Transport/Ignorance/Plugins.meta | 8 + .../Transport/Ignorance/Plugins/Android.meta | 8 + .../Ignorance/Plugins/Android/arm64-v8a.meta | 8 + .../Plugins/Android/arm64-v8a/libenet.so | Bin 0 -> 47024 bytes .../Plugins/Android/arm64-v8a/libenet.so.meta | 111 ++ .../Plugins/Android/armeabi-v7a.meta | 8 + .../Plugins/Android/armeabi-v7a/libenet.so | Bin 0 -> 42636 bytes .../Android/armeabi-v7a/libenet.so.meta | 106 ++ .../Ignorance/Plugins/Android/x86.meta | 8 + .../Ignorance/Plugins/Android/x86/libenet.so | Bin 0 -> 50764 bytes .../Plugins/Android/x86/libenet.so.meta | 80 + .../Transport/Ignorance/Plugins/Linux.meta | 8 + .../Ignorance/Plugins/Linux/libenet.so | Bin 0 -> 60144 bytes .../Ignorance/Plugins/Linux/libenet.so.meta | 97 ++ .../Transport/Ignorance/Plugins/Windows.meta | 8 + .../Ignorance/Plugins/Windows/README.txt | 3 + .../Ignorance/Plugins/Windows/README.txt.meta | 7 + .../Ignorance/Plugins/Windows/enet.dll | Bin 0 -> 124928 bytes .../Ignorance/Plugins/Windows/enet.dll.meta | 111 ++ .../Transport/Ignorance/Plugins/iOS.meta | 8 + .../Plugins/iOS/libenet-release-arm64.a | Bin 0 -> 164440 bytes .../Plugins/iOS/libenet-release-arm64.a.meta | 80 + .../Plugins/iOS/libenet-release-armv7.a | Bin 0 -> 145208 bytes .../Plugins/iOS/libenet-release-armv7.a.meta | 80 + .../Plugins/iOS/libenet-release-simulator64.a | Bin 0 -> 167208 bytes .../iOS/libenet-release-simulator64.a.meta | 80 + .../Transport/Ignorance/Plugins/macOS.meta | 8 + .../Ignorance/Plugins/macOS/libenet.dylib | Bin 0 -> 53596 bytes .../Plugins/macOS/libenet.dylib.meta | 32 + .../Transport/Ignorance/Plugins/readme.txt | 35 + .../Ignorance/Plugins/readme.txt.meta | 7 + .../Runtime/Transport/Ignorance/version.txt | 1 + .../Transport/Ignorance/version.txt.meta | 7 + .../Transport/LRM/Editor/LRMInspector.cs | 10 +- .../Transport/LRM/LRMDirectConnectModule.cs | 57 +- .../LRM/LRMTransport/LRMTransportOverrides.cs | 76 +- .../LRM/LRMTransport/LRMTransportRequests.cs | 4 - .../LightReflectiveMirrorTransport.cs | 26 +- .../ProjectSettings/ProjectSettings.asset | 2 +- 114 files changed, 10152 insertions(+), 204 deletions(-) create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceClient.cs create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceServer.cs create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Dependencies/ENet.cs create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Ignorance.cs create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/IgnoranceDefinitions.cs create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Plugins/Linux/libenet.so create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Plugins/Windows/README.txt create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Plugins/Windows/enet.dll create mode 100644 ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Plugins/readme.txt create mode 100644 UnityProject/Assets/Ignorance.meta create mode 100644 UnityProject/Assets/Ignorance/Demo.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/AtariBall.prefab create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/AtariBall.prefab.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/AtariRacket.prefab create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/AtariRacket.prefab.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Demo.unity create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Demo.unity.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongBall.cs create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongBall.cs.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/Ball.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/Ball.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/DottedLine.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/DottedLine.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/Racket.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/Racket.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/WallHorizontal.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/WallHorizontal.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/WallVertical.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/WallVertical.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/pogchamp.png create mode 100644 UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/pogchamp.png.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/Super Basic.meta create mode 100644 UnityProject/Assets/Ignorance/Demo/Super Basic/SuperBasic.unity create mode 100644 UnityProject/Assets/Ignorance/Demo/Super Basic/SuperBasic.unity.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceClient.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceClient.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux/libenet.so create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux/libenet.so.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Windows.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Windows/README.txt create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Windows/README.txt.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Windows/enet.dll create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Windows/enet.dll.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-arm64.a create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-arm64.a.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt.meta create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt create mode 100644 UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt.meta diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Config.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Config.cs index a961dca..683e3f9 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Config.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Config.cs @@ -12,5 +12,6 @@ namespace LightReflectiveMirror.LoadBalancing public string AuthKey = "AuthKey"; public ushort EndpointPort = 7070; public bool ShowDebugLogs = false; + public int RandomlyGeneratedIDLength = 5; } } diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs index f07b874..910f428 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/Program.cs @@ -23,6 +23,8 @@ namespace LightReflectiveMirror.LoadBalancing const string API_PATH = "/api/stats"; readonly string CONFIG_PATH = System.Environment.GetEnvironmentVariable("LRM_LB_CONFIG_PATH") ?? "config.json"; + private Random _cachedRandom = new(); + public static Config conf; public static Program instance; diff --git a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/ProgramExtra.cs b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/ProgramExtra.cs index 84c17f7..02adf21 100644 --- a/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/ProgramExtra.cs +++ b/LoadBalancerProject-DONT-IMPORT-INTO-UNITY/LRM_LoadBalancer/Program/ProgramExtra.cs @@ -28,14 +28,13 @@ namespace LightReflectiveMirror.LoadBalancing public string GenerateServerID() { - const int LENGTH = 5; const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var randomID = ""; + var random = _cachedRandom; do { - var random = new System.Random(); - randomID = new string(Enumerable.Repeat(chars, LENGTH) + randomID = new string(Enumerable.Repeat(chars, conf.RandomlyGeneratedIDLength) .Select(s => s[random.Next(s.Length)]).ToArray()); } while (cachedRooms.ContainsKey(randomID)); diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Config.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Config.cs index 38227e1..7578ffd 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Config.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Config.cs @@ -1,5 +1,7 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; +using System.Runtime.InteropServices; using System.Text; namespace LightReflectiveMirror @@ -9,12 +11,15 @@ namespace LightReflectiveMirror //======================== // Required Settings //======================== - public string TransportDLL = "MultiCompiled.dll"; public string TransportClass = "kcp2k.KcpTransport"; public string AuthenticationKey = "Secret Auth Key"; public ushort TransportPort = 7777; public int UpdateLoopTime = 10; public int UpdateHeartbeatInterval = 100; + + // this wont be used if you are using load balancer + // load balancer will generate instead. + public int RandomlyGeneratedIDLength = 5; //======================== // Endpoint REST API Settings @@ -37,5 +42,10 @@ namespace LightReflectiveMirror public string LoadBalancerAddress = "127.0.0.1"; public ushort LoadBalancerPort = 7070; public LRMRegions LoadBalancerRegion = LRMRegions.NorthAmerica; + + public static string GetTransportDLL() + { + return RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "MultiCompiled_WIN.dll" : "MultiCompiled_LINUX.dll"; + } } } diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Program/Program.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Program/Program.cs index dc203ab..3a5b6a3 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Program/Program.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/Program/Program.cs @@ -41,7 +41,7 @@ namespace LightReflectiveMirror WriteLogMessage("Loading Assembly... ", ConsoleColor.White, true); try { - var asm = Assembly.LoadFile(Path.GetFullPath(conf.TransportDLL)); + var asm = Assembly.LoadFile(Path.GetFullPath(Config.GetTransportDLL())); WriteLogMessage($"OK", ConsoleColor.Green); WriteLogMessage("\nLoading Transport Class... ", ConsoleColor.White, true); diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandler.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandler.cs index 5e800f2..2839a1b 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandler.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandler.cs @@ -9,7 +9,7 @@ namespace LightReflectiveMirror // constructor for new relay handler public RelayHandler(int maxPacketSize) { - this._maxPacketSize = maxPacketSize; + _maxPacketSize = maxPacketSize; _sendBuffers = ArrayPool.Create(maxPacketSize, 50); } @@ -22,14 +22,13 @@ namespace LightReflectiveMirror private string GenerateRoomID() { - const int LENGTH = 5; const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var randomID = ""; var random = _cachedRandom; do { - randomID = new string(Enumerable.Repeat(chars, LENGTH) + randomID = new string(Enumerable.Repeat(chars, Program.conf.RandomlyGeneratedIDLength) .Select(s => s[random.Next(s.Length)]).ToArray()); } while (DoesServerIdExist(randomID)); @@ -74,7 +73,7 @@ namespace LightReflectiveMirror { if (room.clients.Contains(sendTo)) { - SendData(clientData, channel, sendTo); + SendData(clientData, channel, sendTo, clientId); } } else @@ -84,11 +83,22 @@ namespace LightReflectiveMirror } } - private void SendData(byte[] clientData, int channel, int sendTo) + private void SendData(byte[] clientData, int channel, int sendTo, int senderId) { - int pos = 0; - byte[] sendBuffer = _sendBuffers.Rent(_maxPacketSize); + // 1 byte for opcode + var headerLength = 1; + var payloadLength = headerLength + clientData.Length; + if (payloadLength > _maxPacketSize) + { + Program.transport.ServerDisconnect(senderId); + Program.WriteLogMessage($"Client {senderId} tried to send more than max packet size! Disconnecting..."); + return; + } + + int pos = 0; + byte[] sendBuffer = _sendBuffers.Rent(payloadLength); + sendBuffer.WriteByte(ref pos, (byte)OpCodes.GetData); sendBuffer.WriteBytes(ref pos, clientData); @@ -96,15 +106,26 @@ namespace LightReflectiveMirror _sendBuffers.Return(sendBuffer); } - private void SendDataToRoomHost(int clientId, byte[] clientData, int channel, Room room) + private void SendDataToRoomHost(int senderId, byte[] clientData, int channel, Room room) { + // 1 byte - opcode, 4 bytes for sizeof(int) client id + var headerLength = 5; + var payloadLength = headerLength + clientData.Length; + + if(payloadLength > _maxPacketSize) + { + Program.transport.ServerDisconnect(senderId); + Program.WriteLogMessage($"Client {senderId} tried to send more than max packet size! Disconnecting..."); + return; + } + // We are not the host, so send the data to the host. - int pos = 0; - byte[] sendBuffer = _sendBuffers.Rent(_maxPacketSize); + int pos = 0; + byte[] sendBuffer = _sendBuffers.Rent(payloadLength); sendBuffer.WriteByte(ref pos, (byte)OpCodes.GetData); sendBuffer.WriteBytes(ref pos, clientData); - sendBuffer.WriteInt(ref pos, clientId); + sendBuffer.WriteInt(ref pos, senderId); Program.transport.ServerSend(room.hostId, channel, new ArraySegment(sendBuffer, 0, pos)); _sendBuffers.Return(sendBuffer); diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerCallbacks.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerCallbacks.cs index 2bfe4a2..c7f2da9 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerCallbacks.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerCallbacks.cs @@ -58,8 +58,15 @@ namespace LightReflectiveMirror switch (opcode) { - case OpCodes.CreateRoom: - CreateRoom(clientId, data.ReadInt(ref pos), data.ReadString(ref pos), data.ReadBool(ref pos), data.ReadString(ref pos), data.ReadBool(ref pos), data.ReadString(ref pos), data.ReadBool(ref pos), data.ReadInt(ref pos)); + case OpCodes.CreateRoom: // bruh + CreateRoom(clientId, data.ReadInt (ref pos), + data.ReadString(ref pos), + data.ReadBool (ref pos), + data.ReadString(ref pos), + data.ReadBool (ref pos), + data.ReadString(ref pos), + data.ReadBool (ref pos), + data.ReadInt (ref pos)); break; case OpCodes.RequestID: SendClientID(clientId); @@ -100,7 +107,9 @@ namespace LightReflectiveMirror } catch { - // Do Nothing. Client probably sent some invalid data. + // sent invalid data, boot them hehe + Program.WriteLogMessage($"Client {clientId} sent bad data! Removing from LRM node."); + Program.transport.ServerDisconnect(clientId); } } diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs index 622d69a..c0668a3 100644 --- a/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/LRM/RelayHandler/RelayHandlerRoomMethods.cs @@ -98,7 +98,7 @@ namespace LightReflectiveMirror { sendJoinPos = 0; sendJoinBuffer.WriteByte(ref sendJoinPos, (byte)OpCodes.DirectConnectIP); - Console.WriteLine(Program.instance.NATConnections[clientId].Address.ToString()); + sendJoinBuffer.WriteString(ref sendJoinPos, Program.instance.NATConnections[clientId].Address.ToString()); sendJoinBuffer.WriteInt(ref sendJoinPos, Program.instance.NATConnections[clientId].Port); sendJoinBuffer.WriteBool(ref sendJoinPos, true); diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceClient.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceClient.cs new file mode 100644 index 0000000..f5b902b --- /dev/null +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceClient.cs @@ -0,0 +1,288 @@ +// Ignorance 1.4.x +// Ignorance. It really kicks the Unity LLAPIs ass. +// https://github.com/SoftwareGuy/Ignorance +// ----------------- +// Copyright (c) 2019 - 2020 Matt Coburn (SoftwareGuy/Coburn64) +// Ignorance Transport is licensed under the MIT license. Refer +// to the LICENSE file for more information. + +using ENet; +// using NetStack.Buffers; +using System; +using System.Collections.Concurrent; +using System.Threading; +using Event = ENet.Event; // fixes CS0104 ambigous reference between the same thing in UnityEngine +using EventType = ENet.EventType; // fixes CS0104 ambigous reference between the same thing in UnityEngine +using Object = System.Object; // fixes CS0104 ambigous reference between the same thing in UnityEngine + +namespace IgnoranceTransport +{ + public class IgnoranceClient + { + // Client connection address and port + public string ConnectAddress = "127.0.0.1"; + public int ConnectPort = 7777; + // How many channels are expected + public int ExpectedChannels = 2; + // Native poll waiting time + public int PollTime = 1; + // Maximum Packet Size + public int MaximumPacketSize = 33554432; + // General Verbosity by default. + public int Verbosity = 1; + + // Queues + public ConcurrentQueue Incoming = new ConcurrentQueue(); + public ConcurrentQueue Outgoing = new ConcurrentQueue(); + public ConcurrentQueue Commands = new ConcurrentQueue(); + public ConcurrentQueue ConnectionEvents = new ConcurrentQueue(); + public ConcurrentQueue StatusUpdates = new ConcurrentQueue(); + + public bool IsAlive => WorkerThread != null && WorkerThread.IsAlive; + + private volatile bool CeaseOperation = false; + private Thread WorkerThread; + + public void Start() + { + // Debug.Log("IgnoranceClient.Start()"); + + if (WorkerThread != null && WorkerThread.IsAlive) + { + // Cannot do that. + // Debug.LogError("A worker thread is already running. Cannot start another."); + return; + } + + CeaseOperation = false; + ThreadParamInfo threadParams = new ThreadParamInfo() + { + Address = ConnectAddress, + Port = ConnectPort, + Channels = ExpectedChannels, + PollTime = PollTime, + PacketSizeLimit = MaximumPacketSize, + Verbosity = Verbosity + }; + + // Drain queues. + if (Incoming != null) while (Incoming.TryDequeue(out _)) ; + if (Outgoing != null) while (Outgoing.TryDequeue(out _)) ; + if (Commands != null) while (Commands.TryDequeue(out _)) ; + if (ConnectionEvents != null) while (ConnectionEvents.TryDequeue(out _)) ; + if (StatusUpdates != null) while (StatusUpdates.TryDequeue(out _)) ; + + WorkerThread = new Thread(ThreadWorker); + WorkerThread.Start(threadParams); + + // Debug.Log("Client has dispatched worker thread."); + } + + public void Stop() + { + // Debug.Log("Telling client thread to stop, this may take a while depending on network load"); + CeaseOperation = true; + } + + // This runs in a seperate thread, be careful accessing anything outside of it's thread + // or you may get an AccessViolation/crash. + private void ThreadWorker(Object parameters) + { + // if (Verbosity > 0) + // Debug.Log("Ignorance Client: Initializing. Please stand by..."); + + ThreadParamInfo setupInfo; + Address clientAddress = new Address(); + Peer clientPeer; + Host clientENetHost; + Event clientENetEvent; + IgnoranceClientStats icsu = default; + + // Grab the setup information. + if (parameters.GetType() == typeof(ThreadParamInfo)) + { + setupInfo = (ThreadParamInfo)parameters; + } + else + { + // Debug.LogError("Ignorance Client: Startup failure: Invalid thread parameters. Aborting."); + return; + } + + // Attempt to initialize ENet inside the thread. + if (Library.Initialize()) + { + Console.WriteLine("Ignorance Client: ENet initialized."); + } + else + { + // Debug.LogError("Ignorance Client: Failed to initialize ENet. This threads' fucked."); + return; + } + + // Attempt to connect to our target. + clientAddress.SetHost(setupInfo.Address); + clientAddress.Port = (ushort)setupInfo.Port; + + using (clientENetHost = new Host()) + { + // TODO: Maybe try catch this + clientENetHost.Create(); + clientPeer = clientENetHost.Connect(clientAddress, setupInfo.Channels); + + while (!CeaseOperation) + { + bool pollComplete = false; + + // Step 0: Handle commands. + while (Commands.TryDequeue(out IgnoranceCommandPacket commandPacket)) + { + switch (commandPacket.Type) + { + default: + break; + + case IgnoranceCommandType.ClientWantsToStop: + CeaseOperation = true; + break; + + case IgnoranceCommandType.ClientRequestsStatusUpdate: + // Respond with statistics so far. + if (!clientPeer.IsSet) + break; + + icsu.RTT = clientPeer.RoundTripTime; + + icsu.BytesReceived = clientPeer.BytesReceived; + icsu.BytesSent = clientPeer.BytesSent; + + icsu.PacketsReceived = clientENetHost.PacketsReceived; + icsu.PacketsSent = clientPeer.PacketsSent; + icsu.PacketsLost = clientPeer.PacketsLost; + + StatusUpdates.Enqueue(icsu); + break; + } + } + // Step 1: Send out data. + // ---> Sending to Server + while (Outgoing.TryDequeue(out IgnoranceOutgoingPacket outgoingPacket)) + { + // TODO: Revise this, could we tell the Peer to disconnect right here? + // Stop early if we get a client stop packet. + // if (outgoingPacket.Type == IgnorancePacketType.ClientWantsToStop) break; + + int ret = clientPeer.Send(outgoingPacket.Channel, ref outgoingPacket.Payload); + + } + + // Step 2: + // <----- Receive Data packets + // This loops until polling is completed. It may take a while, if it's + // a slow networking day. + while (!pollComplete) + { + Packet incomingPacket; + Peer incomingPeer; + int incomingPacketLength; + + // Any events worth checking out? + if (clientENetHost.CheckEvents(out clientENetEvent) <= 0) + { + // If service time is met, break out of it. + if (clientENetHost.Service(setupInfo.PollTime, out clientENetEvent) <= 0) break; + + // Poll is done. + pollComplete = true; + } + + // Setup the packet references. + incomingPeer = clientENetEvent.Peer; + + // Now, let's handle those events. + switch (clientENetEvent.Type) + { + case EventType.None: + default: + break; + + case EventType.Connect: + ConnectionEvents.Enqueue(new IgnoranceConnectionEvent() + { + NativePeerId = incomingPeer.ID, + IP = incomingPeer.IP, + Port = incomingPeer.Port + }); + break; + + case EventType.Disconnect: + case EventType.Timeout: + ConnectionEvents.Enqueue(new IgnoranceConnectionEvent() + { + WasDisconnect = true + }); + break; + + + case EventType.Receive: + // Receive event type usually includes a packet; so cache its reference. + incomingPacket = clientENetEvent.Packet; + + if (!incomingPacket.IsSet) + { + + break; + } + + incomingPacketLength = incomingPacket.Length; + + // Never consume more than we can have capacity for. + if (incomingPacketLength > setupInfo.PacketSizeLimit) + { + + incomingPacket.Dispose(); + break; + } + + IgnoranceIncomingPacket incomingQueuePacket = new IgnoranceIncomingPacket + { + Channel = clientENetEvent.ChannelID, + NativePeerId = incomingPeer.ID, + Payload = incomingPacket + }; + + Incoming.Enqueue(incomingQueuePacket); + break; + } + } + } + + Console.WriteLine("Ignorance Server: Shutdown commencing, disconnecting and flushing connection."); + + // Flush the client and disconnect. + clientPeer.Disconnect(0); + clientENetHost.Flush(); + + // Fix for client stuck in limbo, since the disconnection event may not be fired until next loop. + ConnectionEvents.Enqueue(new IgnoranceConnectionEvent() + { + WasDisconnect = true + }); + } + + // Deinitialize + Library.Deinitialize(); + } + + + private struct ThreadParamInfo + { + public int Channels; + public int PollTime; + public int Port; + public int PacketSizeLimit; + public int Verbosity; + public string Address; + } + } +} diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceServer.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceServer.cs new file mode 100644 index 0000000..0e7bae9 --- /dev/null +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Core/IgnoranceServer.cs @@ -0,0 +1,303 @@ +// Ignorance 1.4.x +// Ignorance. It really kicks the Unity LLAPIs ass. +// https://github.com/SoftwareGuy/Ignorance +// ----------------- +// Copyright (c) 2019 - 2020 Matt Coburn (SoftwareGuy/Coburn64) +// Ignorance Transport is licensed under the MIT license. Refer +// to the LICENSE file for more information. + +using ENet; +// using NetStack.Buffers; +using System.Collections.Concurrent; +using System.Threading; +using Event = ENet.Event; // fixes CS0104 ambigous reference between the same thing in UnityEngine +using EventType = ENet.EventType; // fixes CS0104 ambigous reference between the same thing in UnityEngine +using Object = System.Object; // fixes CS0104 ambigous reference between the same thing in UnityEngine + +namespace IgnoranceTransport +{ + public class IgnoranceServer + { + // Server Properties + // - Bind Settings + public string BindAddress = "127.0.0.1"; + public int BindPort = 7777; + // - Maximum allowed channels, peers, etc. + public int MaximumChannels = 2; + public int MaximumPeers = 100; + public int MaximumPacketSize = 33554432; // ENet.cs: uint maxPacketSize = 32 * 1024 * 1024 = 33554432 + // - Native poll waiting time + public int PollTime = 1; + public int Verbosity = 1; + + public bool IsAlive => WorkerThread != null && WorkerThread.IsAlive; + + private volatile bool CeaseOperation = false; + + // Queues + public ConcurrentQueue Incoming = new ConcurrentQueue(); + public ConcurrentQueue Outgoing = new ConcurrentQueue(); + public ConcurrentQueue Commands = new ConcurrentQueue(); + public ConcurrentQueue ConnectionEvents = new ConcurrentQueue(); + public ConcurrentQueue DisconnectionEvents = new ConcurrentQueue(); + + // Thread + private Thread WorkerThread; + + public void Start() + { + if (WorkerThread != null && WorkerThread.IsAlive) + { + // Cannot do that. + + return; + } + + CeaseOperation = false; + ThreadParamInfo threadParams = new ThreadParamInfo() + { + Address = BindAddress, + Port = BindPort, + Peers = MaximumPeers, + Channels = MaximumChannels, + PollTime = PollTime, + PacketSizeLimit = MaximumPacketSize, + Verbosity = Verbosity + }; + + // Drain queues. + if (Incoming != null) while (Incoming.TryDequeue(out _)) ; + if (Outgoing != null) while (Outgoing.TryDequeue(out _)) ; + if (Commands != null) while (Commands.TryDequeue(out _)) ; + if (ConnectionEvents != null) while (ConnectionEvents.TryDequeue(out _)) ; + if (DisconnectionEvents != null) while (DisconnectionEvents.TryDequeue(out _)) ; + + WorkerThread = new Thread(ThreadWorker); + WorkerThread.Start(threadParams); + + + } + + public void Stop() + { + + CeaseOperation = true; + } + + private void ThreadWorker(Object parameters) + { + + // Thread cache items + ThreadParamInfo setupInfo; + Address serverAddress = new Address(); + Host serverENetHost; + Event serverENetEvent; + + Peer[] serverPeerArray; + + // Grab the setup information. + if (parameters.GetType() == typeof(ThreadParamInfo)) + { + setupInfo = (ThreadParamInfo)parameters; + } + else + { + return; + } + + // Attempt to initialize ENet inside the thread. + if (Library.Initialize()) + { + + } + else + { + + return; + } + + // Configure the server address. + serverAddress.SetHost(setupInfo.Address); + serverAddress.Port = (ushort)setupInfo.Port; + serverPeerArray = new Peer[setupInfo.Peers]; + + using (serverENetHost = new Host()) + { + // Create the server object. + serverENetHost.Create(serverAddress, setupInfo.Peers, setupInfo.Channels); + + // Loop until we're told to cease operations. + while (!CeaseOperation) + { + // Intermission: Command Handling + while (Commands.TryDequeue(out IgnoranceCommandPacket commandPacket)) + { + switch (commandPacket.Type) + { + default: + break; + + // Boot a Peer off the Server. + case IgnoranceCommandType.ServerKickPeer: + uint targetPeer = commandPacket.PeerId; + + if (!serverPeerArray[targetPeer].IsSet) continue; + + IgnoranceConnectionEvent iced = new IgnoranceConnectionEvent() + { + WasDisconnect = true, + NativePeerId = targetPeer + }; + + DisconnectionEvents.Enqueue(iced); + + // Disconnect and reset the peer array's entry for that peer. + serverPeerArray[targetPeer].DisconnectNow(0); + serverPeerArray[targetPeer] = default; + break; + } + } + + // Step One: + // ---> Sending to peers + while (Outgoing.TryDequeue(out IgnoranceOutgoingPacket outgoingPacket)) + { + // Only create a packet if the server knows the peer. + if (serverPeerArray[outgoingPacket.NativePeerId].IsSet) + { + int ret = serverPeerArray[outgoingPacket.NativePeerId].Send(outgoingPacket.Channel, ref outgoingPacket.Payload); + + } + else + { + // A peer might have disconnected, this is OK - just log the packet if set to paranoid. + + } + + } + + // Step 2 + // <--- Receiving from peers + bool pollComplete = false; + + while (!pollComplete) + { + Packet incomingPacket; + Peer incomingPeer; + int incomingPacketLength; + + // Any events happening? + if (serverENetHost.CheckEvents(out serverENetEvent) <= 0) + { + // If service time is met, break out of it. + if (serverENetHost.Service(setupInfo.PollTime, out serverENetEvent) <= 0) break; + + pollComplete = true; + } + + // Setup the packet references. + incomingPeer = serverENetEvent.Peer; + + switch (serverENetEvent.Type) + { + // Idle. + case EventType.None: + default: + break; + + // Connection Event. + case EventType.Connect: + IgnoranceConnectionEvent ice = new IgnoranceConnectionEvent() + { + NativePeerId = incomingPeer.ID, + IP = incomingPeer.IP, + Port = incomingPeer.Port + }; + + ConnectionEvents.Enqueue(ice); + + // Assign a reference to the Peer. + serverPeerArray[incomingPeer.ID] = incomingPeer; + break; + + // Disconnect/Timeout. Mirror doesn't care if it's either, so we lump them together. + case EventType.Disconnect: + case EventType.Timeout: + if (!serverPeerArray[incomingPeer.ID].IsSet) break; + + IgnoranceConnectionEvent iced = new IgnoranceConnectionEvent() + { + WasDisconnect = true, + NativePeerId = incomingPeer.ID + }; + + DisconnectionEvents.Enqueue(iced); + + // Reset the peer array's entry for that peer. + serverPeerArray[incomingPeer.ID] = default; + break; + + case EventType.Receive: + // Receive event type usually includes a packet; so cache its reference. + incomingPacket = serverENetEvent.Packet; + if (!incomingPacket.IsSet) + { + + break; + } + + incomingPacketLength = incomingPacket.Length; + + // Firstly check if the packet is too big. If it is, do not process it - drop it. + if (incomingPacketLength > setupInfo.PacketSizeLimit) + { + + incomingPacket.Dispose(); + break; + } + + IgnoranceIncomingPacket incomingQueuePacket = new IgnoranceIncomingPacket + { + Channel = serverENetEvent.ChannelID, + NativePeerId = incomingPeer.ID, + Payload = incomingPacket, + }; + + // Enqueue. + Incoming.Enqueue(incomingQueuePacket); + break; + } + } + } + + + // Cleanup and flush everything. + serverENetHost.Flush(); + + // Kick everyone. + for (int i = 0; i < serverPeerArray.Length; i++) + { + if (!serverPeerArray[i].IsSet) continue; + serverPeerArray[i].DisconnectNow(0); + } + } + + // Flush again to ensure ENet gets those Disconnection stuff out. + // May not be needed; better to err on side of caution + + + Library.Deinitialize(); + } + + private struct ThreadParamInfo + { + public int Channels; + public int Peers; + public int PollTime; + public int Port; + public int PacketSizeLimit; + public int Verbosity; + public string Address; + } + } +} diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Dependencies/ENet.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Dependencies/ENet.cs new file mode 100644 index 0000000..564c4b5 --- /dev/null +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Dependencies/ENet.cs @@ -0,0 +1,1385 @@ +/* + * Managed C# wrapper for an extended version of ENet + * This is a fork from upstream and is available at http://github.com/SoftwareGuy/ENet-CSharp + * + * Copyright (c) 2019 Matt Coburn (SoftwareGuy/Coburn64), Chris Burns (c6burns) + * Copyright (c) 2013 James Bellinger, 2016 Nate Shoffner, 2018 Stanislav Denisov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +using System; +using System.Runtime.InteropServices; +using System.Security; +using System.Text; + +namespace ENet +{ + [Flags] + public enum PacketFlags + { + None = 0, + Reliable = 1 << 0, + Unsequenced = 1 << 1, + NoAllocate = 1 << 2, + UnreliableFragmented = 1 << 3, + Instant = 1 << 4, + Unthrottled = 1 << 5, + Sent = 1 << 8 + } + + public enum EventType + { + None = 0, + Connect = 1, + Disconnect = 2, + Receive = 3, + Timeout = 4 + } + + public enum PeerState + { + Uninitialized = -1, + Disconnected = 0, + Connecting = 1, + AcknowledgingConnect = 2, + ConnectionPending = 3, + ConnectionSucceeded = 4, + Connected = 5, + DisconnectLater = 6, + Disconnecting = 7, + AcknowledgingDisconnect = 8, + Zombie = 9 + } + + [StructLayout(LayoutKind.Explicit, Size = 18)] + internal struct ENetAddress + { + [FieldOffset(16)] + public ushort port; + } + + [StructLayout(LayoutKind.Sequential)] + internal struct ENetEvent + { + public EventType type; + public IntPtr peer; + public byte channelID; + public uint data; + public IntPtr packet; + } + + [StructLayout(LayoutKind.Sequential)] + internal struct ENetCallbacks + { + public AllocCallback malloc; + public FreeCallback free; + public NoMemoryCallback noMemory; + } + + public delegate IntPtr AllocCallback(IntPtr size); + public delegate void FreeCallback(IntPtr memory); + public delegate void NoMemoryCallback(); + public delegate void PacketFreeCallback(Packet packet); + public delegate int InterceptCallback(ref Event @event, ref Address address, IntPtr receivedData, int receivedDataLength); + public delegate ulong ChecksumCallback(IntPtr buffers, int bufferCount); + + internal static class ArrayPool + { + [ThreadStatic] + private static byte[] byteBuffer; + [ThreadStatic] + private static IntPtr[] pointerBuffer; + + public static byte[] GetByteBuffer() + { + if (byteBuffer == null) + byteBuffer = new byte[64]; + + return byteBuffer; + } + + public static IntPtr[] GetPointerBuffer() + { + if (pointerBuffer == null) + pointerBuffer = new IntPtr[Library.maxPeers]; + + return pointerBuffer; + } + } + + public struct Address + { + private ENetAddress nativeAddress; + + internal ENetAddress NativeData + { + get + { + return nativeAddress; + } + + set + { + nativeAddress = value; + } + } + + internal Address(ENetAddress address) + { + nativeAddress = address; + } + + public ushort Port + { + get + { + return nativeAddress.port; + } + + set + { + nativeAddress.port = value; + } + } + + public string GetIP() + { + StringBuilder ip = new StringBuilder(1025); + + if (Native.enet_address_get_ip(ref nativeAddress, ip, (IntPtr)ip.Capacity) != 0) + return String.Empty; + + return ip.ToString(); + } + + public bool SetIP(string ip) + { + if (ip == null) + throw new ArgumentNullException("ip"); + + return Native.enet_address_set_ip(ref nativeAddress, ip) == 0; + } + + public string GetHost() + { + StringBuilder hostName = new StringBuilder(1025); + + if (Native.enet_address_get_hostname(ref nativeAddress, hostName, (IntPtr)hostName.Capacity) != 0) + return String.Empty; + + return hostName.ToString(); + } + + public bool SetHost(string hostName) + { + if (hostName == null) + throw new ArgumentNullException("hostName"); + + return Native.enet_address_set_hostname(ref nativeAddress, hostName) == 0; + } + } + + public struct Event + { + private ENetEvent nativeEvent; + + internal ENetEvent NativeData + { + get + { + return nativeEvent; + } + + set + { + nativeEvent = value; + } + } + + internal Event(ENetEvent @event) + { + nativeEvent = @event; + } + + public EventType Type + { + get + { + return nativeEvent.type; + } + } + + public Peer Peer + { + get + { + return new Peer(nativeEvent.peer); + } + } + + public byte ChannelID + { + get + { + return nativeEvent.channelID; + } + } + + public uint Data + { + get + { + return nativeEvent.data; + } + } + + public Packet Packet + { + get + { + return new Packet(nativeEvent.packet); + } + } + } + + public class Callbacks + { + private ENetCallbacks nativeCallbacks; + + internal ENetCallbacks NativeData + { + get + { + return nativeCallbacks; + } + + set + { + nativeCallbacks = value; + } + } + + public Callbacks(AllocCallback allocCallback, FreeCallback freeCallback, NoMemoryCallback noMemoryCallback) + { + nativeCallbacks.malloc = allocCallback; + nativeCallbacks.free = freeCallback; + nativeCallbacks.noMemory = noMemoryCallback; + } + } + + public struct Packet : IDisposable + { + private IntPtr nativePacket; + + internal IntPtr NativeData + { + get + { + return nativePacket; + } + + set + { + nativePacket = value; + } + } + + internal Packet(IntPtr packet) + { + nativePacket = packet; + } + + public void Dispose() + { + if (nativePacket != IntPtr.Zero) + { + Native.enet_packet_dispose(nativePacket); + nativePacket = IntPtr.Zero; + } + } + + public bool IsSet + { + get + { + return nativePacket != IntPtr.Zero; + } + } + + public IntPtr Data + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_get_data(nativePacket); + } + } + + public IntPtr UserData + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_get_user_data(nativePacket); + } + + set + { + ThrowIfNotCreated(); + + Native.enet_packet_set_user_data(nativePacket, value); + } + } + + public int Length + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_get_length(nativePacket); + } + } + + public bool HasReferences + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_check_references(nativePacket) != 0; + } + } + + internal void ThrowIfNotCreated() + { + if (nativePacket == IntPtr.Zero) + throw new InvalidOperationException("Packet not created"); + } + + public void SetFreeCallback(IntPtr callback) + { + ThrowIfNotCreated(); + + Native.enet_packet_set_free_callback(nativePacket, callback); + } + + public void SetFreeCallback(PacketFreeCallback callback) + { + ThrowIfNotCreated(); + + Native.enet_packet_set_free_callback(nativePacket, Marshal.GetFunctionPointerForDelegate(callback)); + } + + public void Create(byte[] data) + { + if (data == null) + throw new ArgumentNullException("data"); + + Create(data, data.Length); + } + + public void Create(byte[] data, int length) + { + Create(data, length, PacketFlags.None); + } + + public void Create(byte[] data, PacketFlags flags) + { + Create(data, data.Length, flags); + } + + public void Create(byte[] data, int length, PacketFlags flags) + { + if (data == null) + throw new ArgumentNullException("data"); + + if (length < 0 || length > data.Length) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create(data, (IntPtr)length, flags); + } + + public void Create(IntPtr data, int length, PacketFlags flags) + { + if (data == IntPtr.Zero) + throw new ArgumentNullException("data"); + + if (length < 0) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create(data, (IntPtr)length, flags); + } + + public void Create(byte[] data, int offset, int length, PacketFlags flags) + { + if (data == null) + throw new ArgumentNullException("data"); + + if (offset < 0) + throw new ArgumentOutOfRangeException("offset"); + + if (length < 0 || length > data.Length) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create_offset(data, (IntPtr)length, (IntPtr)offset, flags); + } + + public void Create(IntPtr data, int offset, int length, PacketFlags flags) + { + if (data == IntPtr.Zero) + throw new ArgumentNullException("data"); + + if (offset < 0) + throw new ArgumentOutOfRangeException("offset"); + + if (length < 0) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create_offset(data, (IntPtr)length, (IntPtr)offset, flags); + } + + public void CopyTo(byte[] destination, int startPos = 0) + { + if (destination == null) + throw new ArgumentNullException("destination"); + + // Fix by katori, prevents trying to copy a NULL + // from native world (ie. disconnect a client) + if (Data == null) + { + return; + } + + Marshal.Copy(Data, destination, startPos, Length); + } + } + + public class Host : IDisposable + { + private IntPtr nativeHost; + + internal IntPtr NativeData + { + get + { + return nativeHost; + } + + set + { + nativeHost = value; + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (nativeHost != IntPtr.Zero) + { + Native.enet_host_destroy(nativeHost); + nativeHost = IntPtr.Zero; + } + } + + ~Host() + { + Dispose(false); + } + + public bool IsSet + { + get + { + return nativeHost != IntPtr.Zero; + } + } + + public uint PeersCount + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_peers_count(nativeHost); + } + } + + public uint PacketsSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_packets_sent(nativeHost); + } + } + + public uint PacketsReceived + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_packets_received(nativeHost); + } + } + + public uint BytesSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_bytes_sent(nativeHost); + } + } + + public uint BytesReceived + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_bytes_received(nativeHost); + } + } + + internal void ThrowIfNotCreated() + { + if (nativeHost == IntPtr.Zero) + throw new InvalidOperationException("Host not created"); + } + + private static void ThrowIfChannelsExceeded(int channelLimit) + { + if (channelLimit < 0 || channelLimit > Library.maxChannelCount) + throw new ArgumentOutOfRangeException("channelLimit"); + } + + public void Create() + { + Create(null, 1, 0); + } + + public void Create(int bufferSize) + { + Create(null, 1, 0, 0, 0, bufferSize); + } + + public void Create(Address? address, int peerLimit) + { + Create(address, peerLimit, 0); + } + + public void Create(Address? address, int peerLimit, int channelLimit) + { + Create(address, peerLimit, channelLimit, 0, 0, 0); + } + + public void Create(int peerLimit, int channelLimit) + { + Create(null, peerLimit, channelLimit, 0, 0, 0); + } + + public void Create(int peerLimit, int channelLimit, uint incomingBandwidth, uint outgoingBandwidth) + { + Create(null, peerLimit, channelLimit, incomingBandwidth, outgoingBandwidth, 0); + } + + public void Create(Address? address, int peerLimit, int channelLimit, uint incomingBandwidth, uint outgoingBandwidth) + { + Create(address, peerLimit, channelLimit, incomingBandwidth, outgoingBandwidth, 0); + } + + public void Create(Address? address, int peerLimit, int channelLimit, uint incomingBandwidth, uint outgoingBandwidth, int bufferSize) + { + if (nativeHost != IntPtr.Zero) + throw new InvalidOperationException("Host already created"); + + if (peerLimit < 0 || peerLimit > Library.maxPeers) + throw new ArgumentOutOfRangeException("peerLimit"); + + ThrowIfChannelsExceeded(channelLimit); + + if (address != null) + { + var nativeAddress = address.Value.NativeData; + + nativeHost = Native.enet_host_create(ref nativeAddress, (IntPtr)peerLimit, (IntPtr)channelLimit, incomingBandwidth, outgoingBandwidth, bufferSize); + } + else + { + nativeHost = Native.enet_host_create(IntPtr.Zero, (IntPtr)peerLimit, (IntPtr)channelLimit, incomingBandwidth, outgoingBandwidth, bufferSize); + } + + if (nativeHost == IntPtr.Zero) + throw new InvalidOperationException("Host creation call failed"); + } + + public void PreventConnections(bool state) + { + ThrowIfNotCreated(); + + Native.enet_host_prevent_connections(nativeHost, (byte)(state ? 1 : 0)); + } + + public void Broadcast(byte channelID, ref Packet packet) + { + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + Native.enet_host_broadcast(nativeHost, channelID, packet.NativeData); + packet.NativeData = IntPtr.Zero; + } + + public void Broadcast(byte channelID, ref Packet packet, Peer excludedPeer) + { + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + Native.enet_host_broadcast_exclude(nativeHost, channelID, packet.NativeData, excludedPeer.NativeData); + packet.NativeData = IntPtr.Zero; + } + + public void Broadcast(byte channelID, ref Packet packet, Peer[] peers) + { + if (peers == null) + throw new ArgumentNullException("peers"); + + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + + if (peers.Length > 0) + { + IntPtr[] nativePeers = ArrayPool.GetPointerBuffer(); + int nativeCount = 0; + + for (int i = 0; i < peers.Length; i++) + { + if (peers[i].NativeData != IntPtr.Zero) + { + nativePeers[nativeCount] = peers[i].NativeData; + nativeCount++; + } + } + + Native.enet_host_broadcast_selective(nativeHost, channelID, packet.NativeData, nativePeers, (IntPtr)nativeCount); + } + + packet.NativeData = IntPtr.Zero; + } + + public int CheckEvents(out Event @event) + { + ThrowIfNotCreated(); + + ENetEvent nativeEvent; + + var result = Native.enet_host_check_events(nativeHost, out nativeEvent); + + if (result <= 0) + { + @event = default(Event); + + return result; + } + + @event = new Event(nativeEvent); + + return result; + } + + public Peer Connect(Address address) + { + return Connect(address, 0, 0); + } + + public Peer Connect(Address address, int channelLimit) + { + return Connect(address, channelLimit, 0); + } + + public Peer Connect(Address address, int channelLimit, uint data) + { + ThrowIfNotCreated(); + ThrowIfChannelsExceeded(channelLimit); + + var nativeAddress = address.NativeData; + var peer = new Peer(Native.enet_host_connect(nativeHost, ref nativeAddress, (IntPtr)channelLimit, data)); + + if (peer.NativeData == IntPtr.Zero) + throw new InvalidOperationException("Host connect call failed"); + + return peer; + } + + public int Service(int timeout, out Event @event) + { + if (timeout < 0) + throw new ArgumentOutOfRangeException("timeout"); + + ThrowIfNotCreated(); + + ENetEvent nativeEvent; + + var result = Native.enet_host_service(nativeHost, out nativeEvent, (uint)timeout); + + if (result <= 0) + { + @event = default(Event); + + return result; + } + + @event = new Event(nativeEvent); + + return result; + } + + public void SetBandwidthLimit(uint incomingBandwidth, uint outgoingBandwidth) + { + ThrowIfNotCreated(); + + Native.enet_host_bandwidth_limit(nativeHost, incomingBandwidth, outgoingBandwidth); + } + + public void SetChannelLimit(int channelLimit) + { + ThrowIfNotCreated(); + ThrowIfChannelsExceeded(channelLimit); + + Native.enet_host_channel_limit(nativeHost, (IntPtr)channelLimit); + } + + public void SetMaxDuplicatePeers(ushort number) + { + ThrowIfNotCreated(); + + Native.enet_host_set_max_duplicate_peers(nativeHost, number); + } + + public void SetInterceptCallback(IntPtr callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_intercept_callback(nativeHost, callback); + } + + public void SetInterceptCallback(InterceptCallback callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_intercept_callback(nativeHost, Marshal.GetFunctionPointerForDelegate(callback)); + } + + public void SetChecksumCallback(IntPtr callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_checksum_callback(nativeHost, callback); + } + + public void SetChecksumCallback(ChecksumCallback callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_checksum_callback(nativeHost, Marshal.GetFunctionPointerForDelegate(callback)); + } + + public void Flush() + { + ThrowIfNotCreated(); + + Native.enet_host_flush(nativeHost); + } + } + + public struct Peer + { + private IntPtr nativePeer; + private uint nativeID; + + internal IntPtr NativeData + { + get + { + return nativePeer; + } + + set + { + nativePeer = value; + } + } + + internal Peer(IntPtr peer) + { + nativePeer = peer; + nativeID = nativePeer != IntPtr.Zero ? Native.enet_peer_get_id(nativePeer) : 0; + } + + public bool IsSet + { + get + { + return nativePeer != IntPtr.Zero; + } + } + + public uint ID + { + get + { + return nativeID; + } + } + + public string IP + { + get + { + ThrowIfNotCreated(); + + byte[] ip = ArrayPool.GetByteBuffer(); + + if (Native.enet_peer_get_ip(nativePeer, ip, (IntPtr)ip.Length) == 0) + return Encoding.ASCII.GetString(ip, 0, ip.StringLength()); + else + return String.Empty; + } + } + + public ushort Port + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_port(nativePeer); + } + } + + public uint MTU + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_mtu(nativePeer); + } + } + + public PeerState State + { + get + { + return nativePeer == IntPtr.Zero ? PeerState.Uninitialized : Native.enet_peer_get_state(nativePeer); + } + } + + public uint RoundTripTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_rtt(nativePeer); + } + } + + public uint LastRoundTripTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_last_rtt(nativePeer); + } + } + + public uint LastSendTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_lastsendtime(nativePeer); + } + } + + public uint LastReceiveTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_lastreceivetime(nativePeer); + } + } + + public ulong PacketsSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_packets_sent(nativePeer); + } + } + + public ulong PacketsLost + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_packets_lost(nativePeer); + } + } + + public float PacketsThrottle + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_packets_throttle(nativePeer); + } + } + + public ulong BytesSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_bytes_sent(nativePeer); + } + } + + public ulong BytesReceived + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_bytes_received(nativePeer); + } + } + + public IntPtr Data + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_data(nativePeer); + } + + set + { + ThrowIfNotCreated(); + + Native.enet_peer_set_data(nativePeer, value); + } + } + + internal void ThrowIfNotCreated() + { + if (nativePeer == IntPtr.Zero) + throw new InvalidOperationException("Peer not created"); + } + + public void ConfigureThrottle(uint interval, uint acceleration, uint deceleration, uint threshold) + { + ThrowIfNotCreated(); + + Native.enet_peer_throttle_configure(nativePeer, interval, acceleration, deceleration, threshold); + } + + public int Send(byte channelID, ref Packet packet) + { + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + + return Native.enet_peer_send(nativePeer, channelID, packet.NativeData); + } + + public bool Receive(out byte channelID, out Packet packet) + { + ThrowIfNotCreated(); + + IntPtr nativePacket = Native.enet_peer_receive(nativePeer, out channelID); + + if (nativePacket != IntPtr.Zero) + { + packet = new Packet(nativePacket); + + return true; + } + + packet = default(Packet); + + return false; + } + + public void Ping() + { + ThrowIfNotCreated(); + + Native.enet_peer_ping(nativePeer); + } + + public void PingInterval(uint interval) + { + ThrowIfNotCreated(); + + Native.enet_peer_ping_interval(nativePeer, interval); + } + + public void Timeout(uint timeoutLimit, uint timeoutMinimum, uint timeoutMaximum) + { + ThrowIfNotCreated(); + + Native.enet_peer_timeout(nativePeer, timeoutLimit, timeoutMinimum, timeoutMaximum); + } + + public void Disconnect(uint data) + { + ThrowIfNotCreated(); + + Native.enet_peer_disconnect(nativePeer, data); + } + + public void DisconnectNow(uint data) + { + ThrowIfNotCreated(); + + Native.enet_peer_disconnect_now(nativePeer, data); + } + + public void DisconnectLater(uint data) + { + ThrowIfNotCreated(); + + Native.enet_peer_disconnect_later(nativePeer, data); + } + + public void Reset() + { + ThrowIfNotCreated(); + + Native.enet_peer_reset(nativePeer); + } + } + + public static class Extensions + { + public static int StringLength(this byte[] data) + { + if (data == null) + throw new ArgumentNullException("data"); + + int i; + + for (i = 0; i < data.Length && data[i] != 0; i++) ; + + return i; + } + } + + public static class Library + { + public const uint maxChannelCount = 0xFF; + public const uint maxPeers = 0xFFF; + public const uint maxPacketSize = 32 * 1024 * 1024; + public const uint throttleThreshold = 40; + public const uint throttleScale = 32; + public const uint throttleAcceleration = 2; + public const uint throttleDeceleration = 2; + public const uint throttleInterval = 5000; + public const uint timeoutLimit = 32; + public const uint timeoutMinimum = 5000; + public const uint timeoutMaximum = 30000; + public const uint version = (2 << 16) | (4 << 8) | (7); + + public static uint Time + { + get + { + return Native.enet_time_get(); + } + } + + public static bool Initialize() + { + if (Native.enet_linked_version() != version) + throw new InvalidOperationException("ENet native is out of date. Download the latest release from https://github.com/SoftwareGuy/ENet-CSharp/releases"); + + return Native.enet_initialize() == 0; + } + + public static bool Initialize(Callbacks callbacks) + { + if (callbacks == null) + throw new ArgumentNullException("callbacks"); + + if (Native.enet_linked_version() != version) + throw new InvalidOperationException("ENet native is out of date. Download the latest release from https://github.com/SoftwareGuy/ENet-CSharp/releases"); + + ENetCallbacks nativeCallbacks = callbacks.NativeData; + + return Native.enet_initialize_with_callbacks(version, ref nativeCallbacks) == 0; + } + + public static void Deinitialize() + { + Native.enet_deinitialize(); + } + + public static ulong CRC64(IntPtr buffers, int bufferCount) + { + return Native.enet_crc64(buffers, bufferCount); + } + } + + [SuppressUnmanagedCodeSecurity] + internal static class Native + { + private const string nativeLibrary = enetWindows; + + private const string enetLinux = "lib/linux/libenet"; + private const string enetWindows = "lib/win/enet"; + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_initialize(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_initialize_with_callbacks(uint version, ref ENetCallbacks inits); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_deinitialize(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_linked_version(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_time_get(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_crc64(IntPtr buffers, int bufferCount); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_set_ip(ref ENetAddress address, string ip); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_set_hostname(ref ENetAddress address, string hostName); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_get_ip(ref ENetAddress address, StringBuilder ip, IntPtr ipLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_get_hostname(ref ENetAddress address, StringBuilder hostName, IntPtr nameLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create(byte[] data, IntPtr dataLength, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create(IntPtr data, IntPtr dataLength, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create_offset(byte[] data, IntPtr dataLength, IntPtr dataOffset, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create_offset(IntPtr data, IntPtr dataLength, IntPtr dataOffset, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_packet_check_references(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_get_data(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_get_user_data(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_set_user_data(IntPtr packet, IntPtr userData); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_packet_get_length(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_packet_set_free_callback(IntPtr packet, IntPtr callback); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_packet_dispose(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_host_create(ref ENetAddress address, IntPtr peerLimit, IntPtr channelLimit, uint incomingBandwidth, uint outgoingBandwidth, int bufferSize); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_host_create(IntPtr address, IntPtr peerLimit, IntPtr channelLimit, uint incomingBandwidth, uint outgoingBandwidth, int bufferSize); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_host_connect(IntPtr host, ref ENetAddress address, IntPtr channelCount, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_broadcast(IntPtr host, byte channelID, IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_broadcast_exclude(IntPtr host, byte channelID, IntPtr packet, IntPtr excludedPeer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_broadcast_selective(IntPtr host, byte channelID, IntPtr packet, IntPtr[] peers, IntPtr peersLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_host_service(IntPtr host, out ENetEvent @event, uint timeout); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_host_check_events(IntPtr host, out ENetEvent @event); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_channel_limit(IntPtr host, IntPtr channelLimit); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_bandwidth_limit(IntPtr host, uint incomingBandwidth, uint outgoingBandwidth); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_peers_count(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_packets_sent(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_packets_received(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_bytes_sent(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_bytes_received(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_set_max_duplicate_peers(IntPtr host, ushort number); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_set_intercept_callback(IntPtr host, IntPtr callback); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_set_checksum_callback(IntPtr host, IntPtr callback); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_flush(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_destroy(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_prevent_connections(IntPtr host, byte state); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_throttle_configure(IntPtr peer, uint interval, uint acceleration, uint deceleration, uint threshold); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_id(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_peer_get_ip(IntPtr peer, byte[] ip, IntPtr ipLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ushort enet_peer_get_port(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_mtu(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern PeerState enet_peer_get_state(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_rtt(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_last_rtt(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_lastsendtime(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_lastreceivetime(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_packets_sent(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_packets_lost(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern float enet_peer_get_packets_throttle(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_bytes_sent(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_bytes_received(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_peer_get_data(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_set_data(IntPtr peer, IntPtr data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_peer_send(IntPtr peer, byte channelID, IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_peer_receive(IntPtr peer, out byte channelID); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_ping(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_ping_interval(IntPtr peer, uint pingInterval); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_timeout(IntPtr peer, uint timeoutLimit, uint timeoutMinimum, uint timeoutMaximum); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_disconnect(IntPtr peer, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_disconnect_now(IntPtr peer, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_disconnect_later(IntPtr peer, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_reset(IntPtr peer); + } +} diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Ignorance.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Ignorance.cs new file mode 100644 index 0000000..9abff62 --- /dev/null +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Ignorance.cs @@ -0,0 +1,510 @@ +// Ignorance 1.4.x +// Ignorance. It really kicks the Unity LLAPIs ass. +// https://github.com/SoftwareGuy/Ignorance +// ----------------- +// Copyright (c) 2019 - 2020 Matt Coburn (SoftwareGuy/Coburn64) +// Ignorance Transport is licensed under the MIT license. Refer +// to the LICENSE file for more information. +// ----------------- +// Ignorance Experimental (New) Version +// ----------------- +using ENet; +using Mirror; +using System; +using System.Collections.Generic; + +namespace IgnoranceTransport +{ + public class Ignorance : Transport + { + public int port = 7777; + + public IgnoranceLogType LogType = IgnoranceLogType.Standard; + public bool DebugDisplay = false; + + public bool serverBindsAll = true; + public string serverBindAddress = string.Empty; + public int serverMaxPeerCapacity = 50; + public int serverMaxNativeWaitTime = 1; + + public int clientMaxNativeWaitTime = 3; + + public IgnoranceChannelTypes[] Channels = new[] { IgnoranceChannelTypes.Reliable, IgnoranceChannelTypes.Unreliable }; + + public int PacketBufferCapacity = 4096; + + public int MaxAllowedPacketSize = 33554432; + + public IgnoranceClientStats ClientStatistics; + + public override bool Available() + { + return true; + } + + public override void Awake() + { + if (LogType != IgnoranceLogType.Nothing) + Console.WriteLine($"Thanks for using Ignorance {IgnoranceInternals.Version}. Keep up to date, report bugs and support the developer at https://github.com/SoftwareGuy/Ignorance!"); + } + + public override string ToString() + { + return $"Ignorance v{IgnoranceInternals.Version}"; + } + + public override void ClientConnect(string address) + { + ClientState = ConnectionState.Connecting; + cachedConnectionAddress = address; + + // Initialize. + InitializeClientBackend(); + + // Get going. + ignoreDataPackets = false; + + // Start! + Client.Start(); + } + + public override void ClientConnect(Uri uri) + { + if (uri.Scheme != IgnoranceInternals.Scheme) + throw new ArgumentException($"You used an invalid URI: {uri}. Please use {IgnoranceInternals.Scheme}://host:port instead", nameof(uri)); + + if (!uri.IsDefaultPort) + // Set the communication port to the one specified. + port = uri.Port; + + // Pass onwards to the proper handler. + ClientConnect(uri.Host); + } + + public override bool ClientConnected() => ClientState == ConnectionState.Connected; + + public override void ClientDisconnect() + { + if (Client != null) + Client.Stop(); + + // TODO: Figure this one out to see if it's related to a race condition. + // Maybe experiment with a while loop to pause main thread when disconnecting, + // since client might not stop on a dime. + // while(Client.IsAlive) ; + // v1.4.0b1: Probably fixed in IgnoranceClient.cs; need further testing. + + // ignoreDataPackets = true; + ClientState = ConnectionState.Disconnected; + } + + + // v1.4.0b6: Mirror rearranged the ClientSend params, so we need to apply a fix for that or + // we end up using the obsoleted version. The obsolete version isn't a fatal error, but + // it's best to stick with the new structures. + public override void ClientSend(int channelId, ArraySegment segment) + { + if (Client == null) + { + + return; + } + + if (channelId < 0 || channelId > Channels.Length) + { + + return; + } + + // Create our struct... + Packet clientOutgoingPacket = default; + int byteCount = segment.Count; + int byteOffset = segment.Offset; + // Set our desired flags... + PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; + + // Create the packet. + clientOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, desiredFlags); + // byteCount + + // Enqueue the packet. + IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket + { + Channel = (byte)channelId, + Payload = clientOutgoingPacket + }; + + // Pass the packet onto the thread for dispatch. + Client.Outgoing.Enqueue(dispatchPacket); + } + + public override bool ServerActive() + { + // Very simple check. + return Server != null && Server.IsAlive; + } + + public override bool ServerDisconnect(int connectionId) => ServerDisconnectLegacy(connectionId); + + public override string ServerGetClientAddress(int connectionId) + { + if (ConnectionLookupDict.TryGetValue(connectionId, out PeerConnectionData details)) + return $"{details.IP}:{details.Port}"; + + return "(unavailable)"; + } + + public override void ServerSend(int connectionId, int channelId, ArraySegment segment) + { + // Debug.Log($"ServerSend({connectionId}, {channelId}, <{segment.Count} byte segment>)"); + + if (Server == null) + { + // Debug.LogError("Cannot enqueue data packet; our Server object is null. Something has gone wrong."); + return; + } + + if (channelId < 0 || channelId > Channels.Length) + { + // Debug.LogError("Channel ID is out of bounds."); + return; + } + + // Packet Struct + Packet serverOutgoingPacket = default; + int byteCount = segment.Count; + int byteOffset = segment.Offset; + PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; + + // Create the packet. + serverOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, desiredFlags); + + // Enqueue the packet. + IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket + { + Channel = (byte)channelId, + NativePeerId = (uint)connectionId - 1, // ENet's native peer ID will be ConnID - 1 + Payload = serverOutgoingPacket + }; + + Server.Outgoing.Enqueue(dispatchPacket); + + } + + public override void ServerStart(ushort _port) + { + if (LogType != IgnoranceLogType.Nothing) + Console.WriteLine("Ignorance Server Instance starting up..."); + port = _port; + + InitializeServerBackend(); + + Server.Start(); + } + + public override void ServerStop() + { + if (Server != null) + { + if (LogType != IgnoranceLogType.Nothing) + Console.WriteLine("Ignorance Server Instance shutting down..."); + + Server.Stop(); + } + + ConnectionLookupDict.Clear(); + } + + public override Uri ServerUri() + { + UriBuilder builder = new UriBuilder + { + Scheme = IgnoranceInternals.Scheme, + Host = serverBindAddress, + Port = port + }; + + return builder.Uri; + } + + public override void Shutdown() + { + // TODO: Nothing needed here? + } + + private void InitializeServerBackend() + { + if (Server == null) + { + // Debug.LogWarning("IgnoranceServer reference for Server mode was null. This shouldn't happen, but to be safe we'll reinitialize it."); + Server = new IgnoranceServer(); + } + + // Set up the new IgnoranceServer reference. + if (serverBindsAll) + // MacOS is special. It's also a massive thorn in my backside. + Server.BindAddress = IgnoranceInternals.BindAllMacs; + else + // Use the supplied bind address. + Server.BindAddress = serverBindAddress; + + // Sets port, maximum peers, max channels, the server poll time, maximum packet size and verbosity. + Server.BindPort = port; + Server.MaximumPeers = serverMaxPeerCapacity; + Server.MaximumChannels = Channels.Length; + Server.PollTime = serverMaxNativeWaitTime; + Server.MaximumPacketSize = MaxAllowedPacketSize; + Server.Verbosity = (int)LogType; + + // Initializes the packet buffer. + // Allocates once, that's it. + if (InternalPacketBuffer == null) + InternalPacketBuffer = new byte[PacketBufferCapacity]; + } + + private void InitializeClientBackend() + { + if (Client == null) + { + // Debug.LogWarning("Ignorance: IgnoranceClient reference for Client mode was null. This shouldn't happen, but to be safe we'll reinitialize it."); + Client = new IgnoranceClient(); + } + + // Sets address, port, channels to expect, verbosity, the server poll time and maximum packet size. + Client.ConnectAddress = cachedConnectionAddress; + Client.ConnectPort = port; + Client.ExpectedChannels = Channels.Length; + Client.PollTime = clientMaxNativeWaitTime; + Client.MaximumPacketSize = MaxAllowedPacketSize; + Client.Verbosity = (int)LogType; + + // Initializes the packet buffer. + // Allocates once, that's it. + if (InternalPacketBuffer == null) + InternalPacketBuffer = new byte[PacketBufferCapacity]; + } + + private void ProcessServerPackets() + { + IgnoranceIncomingPacket incomingPacket; + IgnoranceConnectionEvent connectionEvent; + int adjustedConnectionId; + Packet payload; + + // Incoming connection events. + while (Server.ConnectionEvents.TryDequeue(out connectionEvent)) + { + adjustedConnectionId = (int)connectionEvent.NativePeerId + 1; + + // TODO: Investigate ArgumentException: An item with the same key has already been added. Key: + ConnectionLookupDict.Add(adjustedConnectionId, new PeerConnectionData + { + NativePeerId = connectionEvent.NativePeerId, + IP = connectionEvent.IP, + Port = connectionEvent.Port + }); + + OnServerConnected?.Invoke(adjustedConnectionId); + } + + // Handle incoming data packets. + // Console.WriteLine($"Server Incoming Queue is {Server.Incoming.Count}"); + while (Server.Incoming.TryDequeue(out incomingPacket)) + { + adjustedConnectionId = (int)incomingPacket.NativePeerId + 1; + payload = incomingPacket.Payload; + + int length = payload.Length; + ArraySegment dataSegment; + + // Copy to working buffer and dispose of it. + if (length > InternalPacketBuffer.Length) + { + byte[] oneFreshNTastyGcAlloc = new byte[length]; + + payload.CopyTo(oneFreshNTastyGcAlloc); + dataSegment = new ArraySegment(oneFreshNTastyGcAlloc, 0, length); + } + else + { + payload.CopyTo(InternalPacketBuffer); + dataSegment = new ArraySegment(InternalPacketBuffer, 0, length); + } + + payload.Dispose(); + + OnServerDataReceived?.Invoke(adjustedConnectionId, dataSegment, incomingPacket.Channel); + } + + // Disconnection events. + while (Server.DisconnectionEvents.TryDequeue(out IgnoranceConnectionEvent disconnectionEvent)) + { + adjustedConnectionId = (int)disconnectionEvent.NativePeerId + 1; + + ConnectionLookupDict.Remove(adjustedConnectionId); + + // Invoke Mirror handler. + OnServerDisconnected?.Invoke(adjustedConnectionId); + } + } + + private void ProcessClientPackets() + { + Packet payload; + + // Handle connection events. + while (Client.ConnectionEvents.TryDequeue(out IgnoranceConnectionEvent connectionEvent)) + { + + if (connectionEvent.WasDisconnect) + { + // Disconnected from server. + ClientState = ConnectionState.Disconnected; + + ignoreDataPackets = true; + OnClientDisconnected?.Invoke(); + } + else + { + // Connected to server. + ClientState = ConnectionState.Connected; + + ignoreDataPackets = false; + OnClientConnected?.Invoke(); + } + } + + // Now handle the incoming messages. + while (Client.Incoming.TryDequeue(out IgnoranceIncomingPacket incomingPacket)) + { + // Temporary fix: if ENet thread is too fast for Mirror, then ignore the packet. + // This is seen sometimes if you stop the client and there's still stuff in the queue. + if (ignoreDataPackets) + { + break; + } + + // Otherwise client recieved data, advise Mirror. + // print($"Byte array: {incomingPacket.RentedByteArray.Length}. Packet Length: {incomingPacket.Length}"); + payload = incomingPacket.Payload; + int length = payload.Length; + ArraySegment dataSegment; + + // Copy to working buffer and dispose of it. + if (length > InternalPacketBuffer.Length) + { + // Unity's favourite: A fresh 'n' tasty GC Allocation! + byte[] oneFreshNTastyGcAlloc = new byte[length]; + + payload.CopyTo(oneFreshNTastyGcAlloc); + dataSegment = new ArraySegment(oneFreshNTastyGcAlloc, 0, length); + } + else + { + payload.CopyTo(InternalPacketBuffer); + dataSegment = new ArraySegment(InternalPacketBuffer, 0, length); + } + + payload.Dispose(); + + OnClientDataReceived?.Invoke(dataSegment, incomingPacket.Channel); + } + + // Step 3: Handle other commands. + while (Client.Commands.TryDequeue(out IgnoranceCommandPacket commandPacket)) + { + switch (commandPacket.Type) + { + // ... + default: + break; + } + } + + // Step 4: Handle status updates. + if (Client.StatusUpdates.TryDequeue(out IgnoranceClientStats clientStats)) + { + ClientStatistics = clientStats; + } + } + + // Ignorance 1.4.0b5: To use Mirror's polling or not use Mirror's polling, that is up to the developer to decide + + // IMPORTANT: Set Ignorance' execution order before everything else. Yes, that's -32000 !! + // This ensures it has priority over other things. + + // FixedUpdate can be called many times per frame. + // Once we've handled stuff, we set a flag so that we don't poll again for this frame. + + private bool fixedUpdateCompletedWork; + public void FixedUpdate() + { + if (fixedUpdateCompletedWork) return; + + ProcessAndExecuteAllPackets(); + + // Flip the bool to signal we've done our work. + fixedUpdateCompletedWork = true; + } + + // Normally, Mirror blocks Update() due to poor design decisions... + // But thanks to Vincenzo, we've found a way to bypass that block. + // Update is called once per frame. We don't have to worry about this shit now. + public override void Update() + { + // Process what FixedUpdate missed, only if the boolean is not set. + if (!fixedUpdateCompletedWork) + ProcessAndExecuteAllPackets(); + + // Flip back the bool, so it can be reset. + fixedUpdateCompletedWork = false; + } + + // Processes and Executes All Packets. + private void ProcessAndExecuteAllPackets() + { + // Process Server Events... + if (Server.IsAlive) + ProcessServerPackets(); + + // Process Client Events... + if (Client.IsAlive) + { + ProcessClientPackets(); + } + } + + public override int GetMaxPacketSize(int channelId = 0) => MaxAllowedPacketSize; + + private bool ignoreDataPackets; + private string cachedConnectionAddress = string.Empty; + private IgnoranceServer Server = new IgnoranceServer(); + private IgnoranceClient Client = new IgnoranceClient(); + private Dictionary ConnectionLookupDict = new Dictionary(); + + private enum ConnectionState { Connecting, Connected, Disconnecting, Disconnected } + private ConnectionState ClientState = ConnectionState.Disconnected; + private byte[] InternalPacketBuffer; + + public bool ServerDisconnectLegacy(int connectionId) + { + if (Server == null) + { + // Debug.LogError("Cannot enqueue kick packet; our Server object is null. Something has gone wrong."); + // Return here because otherwise we will get a NRE when trying to enqueue the kick packet. + return false; + } + + IgnoranceCommandPacket kickPacket = new IgnoranceCommandPacket + { + Type = IgnoranceCommandType.ServerKickPeer, + PeerId = (uint)connectionId - 1 // ENet's native peer ID will be ConnID - 1 + }; + + // Pass the packet onto the thread for dispatch. + Server.Commands.Enqueue(kickPacket); + return true; + } + + } +} diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/IgnoranceDefinitions.cs b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/IgnoranceDefinitions.cs new file mode 100644 index 0000000..ca677ac --- /dev/null +++ b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/IgnoranceDefinitions.cs @@ -0,0 +1,94 @@ +using System; +using ENet; + +namespace IgnoranceTransport +{ + // Snipped from the transport files, as this will help + // me keep things up to date. + [Serializable] + public enum IgnoranceChannelTypes + { + Reliable = PacketFlags.Reliable, // TCP Emulation. + ReliableUnsequenced = PacketFlags.Reliable | PacketFlags.Unsequenced, // TCP Emulation, but no sequencing. + Unreliable = PacketFlags.Unsequenced, // Pure UDP. + UnreliableFragmented = PacketFlags.UnreliableFragmented, // Pure UDP, but fragmented. + UnreliableSequenced = PacketFlags.None, // Pure UDP, but sequenced. + Unthrottled = PacketFlags.Unthrottled, // Apparently ENet's version of Taco Bell. + } + + public class IgnoranceInternals + { + public const string Version = "1.4.0b6"; + public const string Scheme = "enet"; + public const string BindAllIPv4 = "0.0.0.0"; + public const string BindAllMacs = "::0"; + } + + public enum IgnoranceLogType + { + Nothing, + Standard, + Verbose + } + + // Struct optimized for cache efficiency. (Thanks Vincenzo!) + public struct IgnoranceIncomingPacket + { + public byte Channel; + public uint NativePeerId; + public Packet Payload; + } + + // Struct optimized for cache efficiency. (Thanks Vincenzo!) + public struct IgnoranceOutgoingPacket + { + public byte Channel; + public uint NativePeerId; + public Packet Payload; + } + + // Struct optimized for cache efficiency. (Thanks Vincenzo!) + public struct IgnoranceConnectionEvent + { + public bool WasDisconnect; + public ushort Port; + public uint NativePeerId; + public string IP; + } + + public struct IgnoranceCommandPacket + { + public IgnoranceCommandType Type; + public uint PeerId; + } + + public struct IgnoranceClientStats + { + // Stats only - may not always be used! + public uint RTT; + public ulong BytesReceived; + public ulong BytesSent; + public ulong PacketsReceived; + public ulong PacketsSent; + public ulong PacketsLost; + } + + public enum IgnoranceCommandType + { + // Client + ClientWantsToStop, + ClientRequestsStatusUpdate, + // ENet internal + ResponseToClientStatusRequest, + // Server + ServerKickPeer + } + + // TODO: Optimize struct for Cache performance. + public struct PeerConnectionData + { + public ushort Port; + public uint NativePeerId; + public string IP; + } +} diff --git a/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Plugins/Linux/libenet.so b/ServerProject-DONT-IMPORT-INTO-UNITY/MultiCompiled/Ignorance/Plugins/Linux/libenet.so new file mode 100644 index 0000000000000000000000000000000000000000..c64bfb75bee9db3d5c8c0c23fd880b209259ea50 GIT binary patch literal 60144 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 + } + + public override void OnStartServer() + { + base.OnStartServer(); + + // only simulate ball physics on server + rigidbody2d.simulated = true; + + // Serve the ball from left player + rigidbody2d.velocity = Vector2.right * speed; + } + + float HitFactor(Vector2 ballPos, Vector2 racketPos, float racketHeight) + { + // ascii art: + // || 1 <- at the top of the racket + // || + // || 0 <- at the middle of the racket + // || + // || -1 <- at the bottom of the racket + return (ballPos.y - racketPos.y) / racketHeight; + } + + // only call this on server + [ServerCallback] + void OnCollisionEnter2D(Collision2D col) + { + // Note: 'col' holds the collision information. If the + // Ball collided with a racket, then: + // col.gameObject is the racket + // col.transform.position is the racket's position + // col.collider is the racket's collider + + // did we hit a racket? then we need to calculate the hit factor + if (col.transform.GetComponent()) + { + // Calculate y direction via hit Factor + float y = HitFactor(transform.position, + col.transform.position, + col.collider.bounds.size.y); + + // Calculate x direction via opposite collision + float x = col.relativeVelocity.x > 0 ? 1 : -1; + + // Calculate direction, make length=1 via .normalized + Vector2 dir = new Vector2(x, y).normalized; + + // Set Velocity with dir * speed + rigidbody2d.velocity = dir * speed; + } + } + } +} diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongBall.cs.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongBall.cs.meta new file mode 100644 index 0000000..951bb58 --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongBall.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2a08d5ab1f59230458264367f00c54d8 +timeCreated: 1426602353 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs new file mode 100644 index 0000000..75f9d93 --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using Mirror; + +namespace Ignorance.Examples.PongChamp +{ + public class AtariPongRacket : NetworkBehaviour + { + public float speed = 1500; + private Rigidbody2D rigidbody2d; + + private void Awake() + { + rigidbody2d = GetComponent(); + } + + // need to use FixedUpdate for rigidbody + void FixedUpdate() + { + // only let the local player control the racket. + // don't control other player's rackets + if (isLocalPlayer) + rigidbody2d.velocity = new Vector2(0, Input.GetAxisRaw("Vertical")) * speed * Time.fixedDeltaTime; + } + } +} diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs.meta new file mode 100644 index 0000000..f0168bc --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/AtariPongRacket.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b68eb08343b29a54dbd5ed7830fb9211 +timeCreated: 1426597826 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs new file mode 100644 index 0000000..6f76470 --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs @@ -0,0 +1,49 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Mirror; +using System.Diagnostics; +using Debug = UnityEngine.Debug; + +public class OnlineTimer : NetworkBehaviour +{ + private Stopwatch stopwatch; + + // Start is called before the first frame update + private void Awake() + { + stopwatch = new Stopwatch(); + } + + public override void OnStartClient() + { + stopwatch.Reset(); + stopwatch.Start(); + + Debug.Log("Stopwatch started!"); + + base.OnStartClient(); + } + + public void OnDisable() + { + if(stopwatch.IsRunning) + { + System.TimeSpan ts = stopwatch.Elapsed; + stopwatch.Stop(); + + Debug.Log("Stopwatch stopped: duration " + string.Format("{0:00}:{1:00}:{2:00}.{3:00}", + ts.Hours, ts.Minutes, ts.Seconds, + ts.Milliseconds / 10)); + } + } + + private void OnGUI() + { + if (!stopwatch.IsRunning) return; + + GUI.Box(new Rect(new Vector2(2, Screen.height - 36), new Vector2(320, 32)), "ONLINE TIME: " + string.Format("{0:00}:{1:00}:{2:00}.{3:00}", + stopwatch.Elapsed.Hours, stopwatch.Elapsed.Minutes, stopwatch.Elapsed.Seconds, + stopwatch.Elapsed.Milliseconds / 10)); + } +} diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs.meta new file mode 100644 index 0000000..2f627ba --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Scripts/OnlineTimer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d0996ec573094c24890a4d4233ee871e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab b/UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab new file mode 100644 index 0000000..cec29bc --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab @@ -0,0 +1,178 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &542835289192032773 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 548291784780898253} + - component: {fileID: 394858453892616325} + - component: {fileID: 520653813702449573} + - component: {fileID: 440601958556739609} + - component: {fileID: 440842259441939327} + - component: {fileID: 8881572407762724401} + - component: {fileID: 5995301680282788937} + m_Layer: 0 + m_Name: TenryuuBall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548291784780898253 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &394858453892616325 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 824ee62c0fc357b4081855e43253a948, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!50 &520653813702449573 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 0.0001 + m_LinearDrag: 0 + m_AngularDrag: 0 + m_GravityScale: 0 + m_Material: {fileID: 6200000, guid: 97a3e4cddb8635c4eba1265f44d106bf, type: 2} + m_Interpolate: 2 + m_SleepingMode: 1 + m_CollisionDetection: 1 + m_Constraints: 4 +--- !u!114 &440601958556739609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} + m_Name: + m_EditorClassIdentifier: + sceneId: 0 + serverOnly: 0 + visible: 0 + m_AssetId: + hasSpawned: 0 +--- !u!114 &440842259441939327 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3} + m_Name: + m_EditorClassIdentifier: + syncMode: 0 + syncInterval: 0.1 + clientAuthority: 0 + localPositionSensitivity: 0.01 + localRotationSensitivity: 0.01 + localScaleSensitivity: 0.01 + compressRotation: 0 + interpolateScale: 1 + syncScale: 1 +--- !u!58 &8881572407762724401 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 1.28 +--- !u!114 &5995301680282788937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 542835289192032773} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a08d5ab1f59230458264367f00c54d8, type: 3} + m_Name: + m_EditorClassIdentifier: + syncMode: 0 + syncInterval: 0.1 + speed: 70 diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab.meta new file mode 100644 index 0000000..1a63d00 --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/TenryuuBall.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5339554c46006dd4e91cae9ff34c095d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures.meta new file mode 100644 index 0000000..793f2f2 --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23b5913b9b8b2e1419a41acde1b49883 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png new file mode 100644 index 0000000000000000000000000000000000000000..9db08b5726efc3889101f0be0b7d55af21625f51 GIT binary patch literal 30056 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 P00000NkvXXu0mjf+uI7) literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png.meta new file mode 100644 index 0000000..6253866 --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/PoutRyuu.png.meta @@ -0,0 +1,128 @@ +fileFormatVersion: 2 +guid: 824ee62c0fc357b4081855e43253a948 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: -1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites.meta b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites.meta new file mode 100644 index 0000000..a6798fb --- /dev/null +++ b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0dbfc247338e79a4dbe7474f69b46503 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/Ball.png b/UnityProject/Assets/Ignorance/Demo/PongChamp/Textures/Sprites/Ball.png new file mode 100644 index 0000000000000000000000000000000000000000..20c4387c8b1306491974318a9d601c60207d069f GIT binary patch literal 2791 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

b#YhU6FQuwV<4LVzi4zU4fe-q6`=WA@}z| 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 G#Qy Incoming = new ConcurrentQueue(); + public ConcurrentQueue Outgoing = new ConcurrentQueue(); + public ConcurrentQueue Commands = new ConcurrentQueue(); + public ConcurrentQueue ConnectionEvents = new ConcurrentQueue(); + public ConcurrentQueue StatusUpdates = new ConcurrentQueue(); + + public bool IsAlive => WorkerThread != null && WorkerThread.IsAlive; + + private volatile bool CeaseOperation = false; + private Thread WorkerThread; + + public void Start() + { + Debug.Log("IgnoranceClient.Start()"); + + if (WorkerThread != null && WorkerThread.IsAlive) + { + // Cannot do that. + Debug.LogError("A worker thread is already running. Cannot start another."); + return; + } + + CeaseOperation = false; + ThreadParamInfo threadParams = new ThreadParamInfo() + { + Address = ConnectAddress, + Port = ConnectPort, + Channels = ExpectedChannels, + PollTime = PollTime, + PacketSizeLimit = MaximumPacketSize, + Verbosity = Verbosity + }; + + // Drain queues. + if (Incoming != null) while (Incoming.TryDequeue(out _)) ; + if (Outgoing != null) while (Outgoing.TryDequeue(out _)) ; + if (Commands != null) while (Commands.TryDequeue(out _)) ; + if (ConnectionEvents != null) while (ConnectionEvents.TryDequeue(out _)) ; + if (StatusUpdates != null) while (StatusUpdates.TryDequeue(out _)) ; + + WorkerThread = new Thread(ThreadWorker); + WorkerThread.Start(threadParams); + + Debug.Log("Client has dispatched worker thread."); + } + + public void Stop() + { + Debug.Log("Telling client thread to stop, this may take a while depending on network load"); + CeaseOperation = true; + } + + // This runs in a seperate thread, be careful accessing anything outside of it's thread + // or you may get an AccessViolation/crash. + private void ThreadWorker(Object parameters) + { + if (Verbosity > 0) + Debug.Log("Ignorance Client: Initializing. Please stand by..."); + + ThreadParamInfo setupInfo; + Address clientAddress = new Address(); + Peer clientPeer; + Host clientENetHost; + Event clientENetEvent; + IgnoranceClientStats icsu = default; + + // Grab the setup information. + if (parameters.GetType() == typeof(ThreadParamInfo)) + { + setupInfo = (ThreadParamInfo)parameters; + } + else + { + Debug.LogError("Ignorance Client: Startup failure: Invalid thread parameters. Aborting."); + return; + } + + // Attempt to initialize ENet inside the thread. + if (Library.Initialize()) + { + Debug.Log("Ignorance Client: ENet initialized."); + } + else + { + Debug.LogError("Ignorance Client: Failed to initialize ENet. This threads' fucked."); + return; + } + + // Attempt to connect to our target. + clientAddress.SetHost(setupInfo.Address); + clientAddress.Port = (ushort)setupInfo.Port; + + using (clientENetHost = new Host()) + { + // TODO: Maybe try catch this + clientENetHost.Create(); + clientPeer = clientENetHost.Connect(clientAddress, setupInfo.Channels); + + while (!CeaseOperation) + { + bool pollComplete = false; + + // Step 0: Handle commands. + while (Commands.TryDequeue(out IgnoranceCommandPacket commandPacket)) + { + switch (commandPacket.Type) + { + default: + break; + + case IgnoranceCommandType.ClientWantsToStop: + CeaseOperation = true; + break; + + case IgnoranceCommandType.ClientRequestsStatusUpdate: + // Respond with statistics so far. + if (!clientPeer.IsSet) + break; + + icsu.RTT = clientPeer.RoundTripTime; + + icsu.BytesReceived = clientPeer.BytesReceived; + icsu.BytesSent = clientPeer.BytesSent; + + icsu.PacketsReceived = clientENetHost.PacketsReceived; + icsu.PacketsSent = clientPeer.PacketsSent; + icsu.PacketsLost = clientPeer.PacketsLost; + + StatusUpdates.Enqueue(icsu); + break; + } + } + // Step 1: Send out data. + // ---> Sending to Server + while (Outgoing.TryDequeue(out IgnoranceOutgoingPacket outgoingPacket)) + { + // TODO: Revise this, could we tell the Peer to disconnect right here? + // Stop early if we get a client stop packet. + // if (outgoingPacket.Type == IgnorancePacketType.ClientWantsToStop) break; + + int ret = clientPeer.Send(outgoingPacket.Channel, ref outgoingPacket.Payload); + + if (ret < 0 && setupInfo.Verbosity > 0) + Debug.LogWarning($"Ignorance Client: ENet error code {ret} while sending packet to Peer {outgoingPacket.NativePeerId}."); + } + + // Step 2: + // <----- Receive Data packets + // This loops until polling is completed. It may take a while, if it's + // a slow networking day. + while (!pollComplete) + { + Packet incomingPacket; + Peer incomingPeer; + int incomingPacketLength; + + // Any events worth checking out? + if (clientENetHost.CheckEvents(out clientENetEvent) <= 0) + { + // If service time is met, break out of it. + if (clientENetHost.Service(setupInfo.PollTime, out clientENetEvent) <= 0) break; + + // Poll is done. + pollComplete = true; + } + + // Setup the packet references. + incomingPeer = clientENetEvent.Peer; + + // Now, let's handle those events. + switch (clientENetEvent.Type) + { + case EventType.None: + default: + break; + + case EventType.Connect: + ConnectionEvents.Enqueue(new IgnoranceConnectionEvent() + { + NativePeerId = incomingPeer.ID, + IP = incomingPeer.IP, + Port = incomingPeer.Port + }); + break; + + case EventType.Disconnect: + case EventType.Timeout: + ConnectionEvents.Enqueue(new IgnoranceConnectionEvent() + { + WasDisconnect = true + }); + break; + + + case EventType.Receive: + // Receive event type usually includes a packet; so cache its reference. + incomingPacket = clientENetEvent.Packet; + + if (!incomingPacket.IsSet) + { + if (setupInfo.Verbosity > 0) + Debug.LogWarning($"Ignorance Client: A receive event did not supply us with a packet to work with. This should never happen."); + break; + } + + incomingPacketLength = incomingPacket.Length; + + // Never consume more than we can have capacity for. + if (incomingPacketLength > setupInfo.PacketSizeLimit) + { + if (setupInfo.Verbosity > 0) + Debug.LogWarning($"Ignorance Client: Incoming packet is too big. My limit is {setupInfo.PacketSizeLimit} byte(s) whilest this packet is {incomingPacketLength} bytes."); + + incomingPacket.Dispose(); + break; + } + + IgnoranceIncomingPacket incomingQueuePacket = new IgnoranceIncomingPacket + { + Channel = clientENetEvent.ChannelID, + NativePeerId = incomingPeer.ID, + Payload = incomingPacket + }; + + Incoming.Enqueue(incomingQueuePacket); + break; + } + } + } + + Debug.Log("Ignorance Server: Shutdown commencing, disconnecting and flushing connection."); + + // Flush the client and disconnect. + clientPeer.Disconnect(0); + clientENetHost.Flush(); + + // Fix for client stuck in limbo, since the disconnection event may not be fired until next loop. + ConnectionEvents.Enqueue(new IgnoranceConnectionEvent() + { + WasDisconnect = true + }); + } + + // Deinitialize + Library.Deinitialize(); + if (setupInfo.Verbosity > 0) + Debug.Log("Ignorance Client: Shutdown complete."); + } + + + private struct ThreadParamInfo + { + public int Channels; + public int PollTime; + public int Port; + public int PacketSizeLimit; + public int Verbosity; + public string Address; + } + } +} diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceClient.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceClient.cs.meta new file mode 100644 index 0000000..fe965ca --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7b9e2c091c3d42439840a02fe700252 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs new file mode 100644 index 0000000..4f71947 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs @@ -0,0 +1,328 @@ +// Ignorance 1.4.x +// Ignorance. It really kicks the Unity LLAPIs ass. +// https://github.com/SoftwareGuy/Ignorance +// ----------------- +// Copyright (c) 2019 - 2020 Matt Coburn (SoftwareGuy/Coburn64) +// Ignorance Transport is licensed under the MIT license. Refer +// to the LICENSE file for more information. + +using ENet; +// using NetStack.Buffers; +using System.Collections.Concurrent; +using System.Threading; +using UnityEngine; +using Event = ENet.Event; // fixes CS0104 ambigous reference between the same thing in UnityEngine +using EventType = ENet.EventType; // fixes CS0104 ambigous reference between the same thing in UnityEngine +using Object = System.Object; // fixes CS0104 ambigous reference between the same thing in UnityEngine + +namespace IgnoranceTransport +{ + public class IgnoranceServer + { + // Server Properties + // - Bind Settings + public string BindAddress = "127.0.0.1"; + public int BindPort = 7777; + // - Maximum allowed channels, peers, etc. + public int MaximumChannels = 2; + public int MaximumPeers = 100; + public int MaximumPacketSize = 33554432; // ENet.cs: uint maxPacketSize = 32 * 1024 * 1024 = 33554432 + // - Native poll waiting time + public int PollTime = 1; + public int Verbosity = 1; + + public bool IsAlive => WorkerThread != null && WorkerThread.IsAlive; + + private volatile bool CeaseOperation = false; + + // Queues + public ConcurrentQueue Incoming = new ConcurrentQueue(); + public ConcurrentQueue Outgoing = new ConcurrentQueue(); + public ConcurrentQueue Commands = new ConcurrentQueue(); + public ConcurrentQueue ConnectionEvents = new ConcurrentQueue(); + public ConcurrentQueue DisconnectionEvents = new ConcurrentQueue(); + + // Thread + private Thread WorkerThread; + + public void Start() + { + if (WorkerThread != null && WorkerThread.IsAlive) + { + // Cannot do that. + Debug.LogError("A worker thread is already running. Cannot start another."); + return; + } + + CeaseOperation = false; + ThreadParamInfo threadParams = new ThreadParamInfo() + { + Address = BindAddress, + Port = BindPort, + Peers = MaximumPeers, + Channels = MaximumChannels, + PollTime = PollTime, + PacketSizeLimit = MaximumPacketSize, + Verbosity = Verbosity + }; + + // Drain queues. + if (Incoming != null) while (Incoming.TryDequeue(out _)) ; + if (Outgoing != null) while (Outgoing.TryDequeue(out _)) ; + if (Commands != null) while (Commands.TryDequeue(out _)) ; + if (ConnectionEvents != null) while (ConnectionEvents.TryDequeue(out _)) ; + if (DisconnectionEvents != null) while (DisconnectionEvents.TryDequeue(out _)) ; + + WorkerThread = new Thread(ThreadWorker); + WorkerThread.Start(threadParams); + + // Announce + if (Verbosity > 0) + Debug.Log("Server has dispatched worker thread."); + } + + public void Stop() + { + if (Verbosity > 0) + Debug.Log("Telling server thread to stop, this may take a while depending on network load"); + CeaseOperation = true; + } + + private void ThreadWorker(Object parameters) + { + if (Verbosity > 0) + Debug.Log("Ignorance Server: Initializing. Please stand by..."); + + // Thread cache items + ThreadParamInfo setupInfo; + Address serverAddress = new Address(); + Host serverENetHost; + Event serverENetEvent; + + Peer[] serverPeerArray; + + // Grab the setup information. + if (parameters.GetType() == typeof(ThreadParamInfo)) + { + setupInfo = (ThreadParamInfo)parameters; + } + else + { + Debug.LogError("Ignorance Server: Startup failure: Invalid thread parameters. Aborting."); + return; + } + + // Attempt to initialize ENet inside the thread. + if (Library.Initialize()) + { + Debug.Log("Ignorance Server: ENet initialized."); + } + else + { + Debug.LogError("Ignorance Server: Failed to initialize ENet. This threads' fucked."); + return; + } + + // Configure the server address. + serverAddress.SetHost(setupInfo.Address); + serverAddress.Port = (ushort)setupInfo.Port; + serverPeerArray = new Peer[setupInfo.Peers]; + + using (serverENetHost = new Host()) + { + // Create the server object. + serverENetHost.Create(serverAddress, setupInfo.Peers, setupInfo.Channels); + + // Loop until we're told to cease operations. + while (!CeaseOperation) + { + // Intermission: Command Handling + while (Commands.TryDequeue(out IgnoranceCommandPacket commandPacket)) + { + switch (commandPacket.Type) + { + default: + break; + + // Boot a Peer off the Server. + case IgnoranceCommandType.ServerKickPeer: + uint targetPeer = commandPacket.PeerId; + + if (!serverPeerArray[targetPeer].IsSet) continue; + if (setupInfo.Verbosity > 0) + Debug.Log($"Ignorance Server: Booting Peer {targetPeer} off this server instance."); + + IgnoranceConnectionEvent iced = new IgnoranceConnectionEvent() + { + WasDisconnect = true, + NativePeerId = targetPeer + }; + + DisconnectionEvents.Enqueue(iced); + + // Disconnect and reset the peer array's entry for that peer. + serverPeerArray[targetPeer].DisconnectNow(0); + serverPeerArray[targetPeer] = default; + break; + } + } + + // Step One: + // ---> Sending to peers + while (Outgoing.TryDequeue(out IgnoranceOutgoingPacket outgoingPacket)) + { + // Only create a packet if the server knows the peer. + if (serverPeerArray[outgoingPacket.NativePeerId].IsSet) + { + int ret = serverPeerArray[outgoingPacket.NativePeerId].Send(outgoingPacket.Channel, ref outgoingPacket.Payload); + + if (ret < 0 && setupInfo.Verbosity > 0) + Debug.LogWarning($"Ignorance Server: ENet error code {ret} while sending packet to Peer {outgoingPacket.NativePeerId}."); + } + else + { + // A peer might have disconnected, this is OK - just log the packet if set to paranoid. + if (setupInfo.Verbosity > 1) + Debug.LogWarning("Ignorance Server: Can't send packet, a native peer object is not set. This may be normal if the Peer has disconnected before this send cycle."); + } + + } + + // Step 2 + // <--- Receiving from peers + bool pollComplete = false; + + while (!pollComplete) + { + Packet incomingPacket; + Peer incomingPeer; + int incomingPacketLength; + + // Any events happening? + if (serverENetHost.CheckEvents(out serverENetEvent) <= 0) + { + // If service time is met, break out of it. + if (serverENetHost.Service(setupInfo.PollTime, out serverENetEvent) <= 0) break; + + pollComplete = true; + } + + // Setup the packet references. + incomingPeer = serverENetEvent.Peer; + + switch (serverENetEvent.Type) + { + // Idle. + case EventType.None: + default: + break; + + // Connection Event. + case EventType.Connect: + if (setupInfo.Verbosity > 1) + Debug.Log("Ignorance Server: Here comes a new Peer connection."); + + IgnoranceConnectionEvent ice = new IgnoranceConnectionEvent() + { + NativePeerId = incomingPeer.ID, + IP = incomingPeer.IP, + Port = incomingPeer.Port + }; + + ConnectionEvents.Enqueue(ice); + + // Assign a reference to the Peer. + serverPeerArray[incomingPeer.ID] = incomingPeer; + break; + + // Disconnect/Timeout. Mirror doesn't care if it's either, so we lump them together. + case EventType.Disconnect: + case EventType.Timeout: + if (!serverPeerArray[incomingPeer.ID].IsSet) break; + + if (setupInfo.Verbosity > 1) + Debug.Log("Ignorance Server: Peer disconnection."); + + IgnoranceConnectionEvent iced = new IgnoranceConnectionEvent() + { + WasDisconnect = true, + NativePeerId = incomingPeer.ID + }; + + DisconnectionEvents.Enqueue(iced); + + // Reset the peer array's entry for that peer. + serverPeerArray[incomingPeer.ID] = default; + break; + + case EventType.Receive: + // Receive event type usually includes a packet; so cache its reference. + incomingPacket = serverENetEvent.Packet; + if (!incomingPacket.IsSet) + { + if (setupInfo.Verbosity > 0) + Debug.LogWarning($"Ignorance Server: A receive event did not supply us with a packet to work with. This should never happen."); + break; + } + + incomingPacketLength = incomingPacket.Length; + + // Firstly check if the packet is too big. If it is, do not process it - drop it. + if (incomingPacketLength > setupInfo.PacketSizeLimit) + { + if (setupInfo.Verbosity > 0) + Debug.LogWarning($"Ignorance Server: Incoming packet is too big. My limit is {setupInfo.PacketSizeLimit} byte(s) whilest this packet is {incomingPacketLength} bytes."); + + incomingPacket.Dispose(); + break; + } + + IgnoranceIncomingPacket incomingQueuePacket = new IgnoranceIncomingPacket + { + Channel = serverENetEvent.ChannelID, + NativePeerId = incomingPeer.ID, + Payload = incomingPacket, + }; + + // Enqueue. + Incoming.Enqueue(incomingQueuePacket); + break; + } + } + } + + if (Verbosity > 0) + Debug.Log("Ignorance Server: Shutdown commencing, flushing connections."); + + // Cleanup and flush everything. + serverENetHost.Flush(); + + // Kick everyone. + for (int i = 0; i < serverPeerArray.Length; i++) + { + if (!serverPeerArray[i].IsSet) continue; + serverPeerArray[i].DisconnectNow(0); + } + } + + // Flush again to ensure ENet gets those Disconnection stuff out. + // May not be needed; better to err on side of caution + + if (setupInfo.Verbosity > 0) + Debug.Log("Ignorance Server: Shutdown complete."); + + Library.Deinitialize(); + } + + private struct ThreadParamInfo + { + public int Channels; + public int Peers; + public int PollTime; + public int Port; + public int PacketSizeLimit; + public int Verbosity; + public string Address; + } + } +} diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs.meta new file mode 100644 index 0000000..8b3212b --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Core/IgnoranceServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1069f42b88a4adb4ab1990cec4949343 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies.meta new file mode 100644 index 0000000..565dc3b --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 12f903db684732e45b130ad56f7c86c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs new file mode 100644 index 0000000..cf4336c --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs @@ -0,0 +1,1411 @@ +/* + * Managed C# wrapper for an extended version of ENet + * This is a fork from upstream and is available at http://github.com/SoftwareGuy/ENet-CSharp + * + * Copyright (c) 2019 Matt Coburn (SoftwareGuy/Coburn64), Chris Burns (c6burns) + * Copyright (c) 2013 James Bellinger, 2016 Nate Shoffner, 2018 Stanislav Denisov + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +using System; +using System.Runtime.InteropServices; +using System.Security; +using System.Text; + +namespace ENet +{ + [Flags] + public enum PacketFlags + { + None = 0, + Reliable = 1 << 0, + Unsequenced = 1 << 1, + NoAllocate = 1 << 2, + UnreliableFragmented = 1 << 3, + Instant = 1 << 4, + Unthrottled = 1 << 5, + Sent = 1 << 8 + } + + public enum EventType + { + None = 0, + Connect = 1, + Disconnect = 2, + Receive = 3, + Timeout = 4 + } + + public enum PeerState + { + Uninitialized = -1, + Disconnected = 0, + Connecting = 1, + AcknowledgingConnect = 2, + ConnectionPending = 3, + ConnectionSucceeded = 4, + Connected = 5, + DisconnectLater = 6, + Disconnecting = 7, + AcknowledgingDisconnect = 8, + Zombie = 9 + } + + [StructLayout(LayoutKind.Explicit, Size = 18)] + internal struct ENetAddress + { + [FieldOffset(16)] + public ushort port; + } + + [StructLayout(LayoutKind.Sequential)] + internal struct ENetEvent + { + public EventType type; + public IntPtr peer; + public byte channelID; + public uint data; + public IntPtr packet; + } + + [StructLayout(LayoutKind.Sequential)] + internal struct ENetCallbacks + { + public AllocCallback malloc; + public FreeCallback free; + public NoMemoryCallback noMemory; + } + + public delegate IntPtr AllocCallback(IntPtr size); + public delegate void FreeCallback(IntPtr memory); + public delegate void NoMemoryCallback(); + public delegate void PacketFreeCallback(Packet packet); + public delegate int InterceptCallback(ref Event @event, ref Address address, IntPtr receivedData, int receivedDataLength); + public delegate ulong ChecksumCallback(IntPtr buffers, int bufferCount); + + internal static class ArrayPool + { + [ThreadStatic] + private static byte[] byteBuffer; + [ThreadStatic] + private static IntPtr[] pointerBuffer; + + public static byte[] GetByteBuffer() + { + if (byteBuffer == null) + byteBuffer = new byte[64]; + + return byteBuffer; + } + + public static IntPtr[] GetPointerBuffer() + { + if (pointerBuffer == null) + pointerBuffer = new IntPtr[Library.maxPeers]; + + return pointerBuffer; + } + } + + public struct Address + { + private ENetAddress nativeAddress; + + internal ENetAddress NativeData + { + get + { + return nativeAddress; + } + + set + { + nativeAddress = value; + } + } + + internal Address(ENetAddress address) + { + nativeAddress = address; + } + + public ushort Port + { + get + { + return nativeAddress.port; + } + + set + { + nativeAddress.port = value; + } + } + + public string GetIP() + { + StringBuilder ip = new StringBuilder(1025); + + if (Native.enet_address_get_ip(ref nativeAddress, ip, (IntPtr)ip.Capacity) != 0) + return String.Empty; + + return ip.ToString(); + } + + public bool SetIP(string ip) + { + if (ip == null) + throw new ArgumentNullException("ip"); + + return Native.enet_address_set_ip(ref nativeAddress, ip) == 0; + } + + public string GetHost() + { + StringBuilder hostName = new StringBuilder(1025); + + if (Native.enet_address_get_hostname(ref nativeAddress, hostName, (IntPtr)hostName.Capacity) != 0) + return String.Empty; + + return hostName.ToString(); + } + + public bool SetHost(string hostName) + { + if (hostName == null) + throw new ArgumentNullException("hostName"); + + return Native.enet_address_set_hostname(ref nativeAddress, hostName) == 0; + } + } + + public struct Event + { + private ENetEvent nativeEvent; + + internal ENetEvent NativeData + { + get + { + return nativeEvent; + } + + set + { + nativeEvent = value; + } + } + + internal Event(ENetEvent @event) + { + nativeEvent = @event; + } + + public EventType Type + { + get + { + return nativeEvent.type; + } + } + + public Peer Peer + { + get + { + return new Peer(nativeEvent.peer); + } + } + + public byte ChannelID + { + get + { + return nativeEvent.channelID; + } + } + + public uint Data + { + get + { + return nativeEvent.data; + } + } + + public Packet Packet + { + get + { + return new Packet(nativeEvent.packet); + } + } + } + + public class Callbacks + { + private ENetCallbacks nativeCallbacks; + + internal ENetCallbacks NativeData + { + get + { + return nativeCallbacks; + } + + set + { + nativeCallbacks = value; + } + } + + public Callbacks(AllocCallback allocCallback, FreeCallback freeCallback, NoMemoryCallback noMemoryCallback) + { + nativeCallbacks.malloc = allocCallback; + nativeCallbacks.free = freeCallback; + nativeCallbacks.noMemory = noMemoryCallback; + } + } + + public struct Packet : IDisposable + { + private IntPtr nativePacket; + + internal IntPtr NativeData + { + get + { + return nativePacket; + } + + set + { + nativePacket = value; + } + } + + internal Packet(IntPtr packet) + { + nativePacket = packet; + } + + public void Dispose() + { + if (nativePacket != IntPtr.Zero) + { + Native.enet_packet_dispose(nativePacket); + nativePacket = IntPtr.Zero; + } + } + + public bool IsSet + { + get + { + return nativePacket != IntPtr.Zero; + } + } + + public IntPtr Data + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_get_data(nativePacket); + } + } + + public IntPtr UserData + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_get_user_data(nativePacket); + } + + set + { + ThrowIfNotCreated(); + + Native.enet_packet_set_user_data(nativePacket, value); + } + } + + public int Length + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_get_length(nativePacket); + } + } + + public bool HasReferences + { + get + { + ThrowIfNotCreated(); + + return Native.enet_packet_check_references(nativePacket) != 0; + } + } + + internal void ThrowIfNotCreated() + { + if (nativePacket == IntPtr.Zero) + throw new InvalidOperationException("Packet not created"); + } + + public void SetFreeCallback(IntPtr callback) + { + ThrowIfNotCreated(); + + Native.enet_packet_set_free_callback(nativePacket, callback); + } + + public void SetFreeCallback(PacketFreeCallback callback) + { + ThrowIfNotCreated(); + + Native.enet_packet_set_free_callback(nativePacket, Marshal.GetFunctionPointerForDelegate(callback)); + } + + public void Create(byte[] data) + { + if (data == null) + throw new ArgumentNullException("data"); + + Create(data, data.Length); + } + + public void Create(byte[] data, int length) + { + Create(data, length, PacketFlags.None); + } + + public void Create(byte[] data, PacketFlags flags) + { + Create(data, data.Length, flags); + } + + public void Create(byte[] data, int length, PacketFlags flags) + { + if (data == null) + throw new ArgumentNullException("data"); + + if (length < 0 || length > data.Length) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create(data, (IntPtr)length, flags); + } + + public void Create(IntPtr data, int length, PacketFlags flags) + { + if (data == IntPtr.Zero) + throw new ArgumentNullException("data"); + + if (length < 0) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create(data, (IntPtr)length, flags); + } + + public void Create(byte[] data, int offset, int length, PacketFlags flags) + { + if (data == null) + throw new ArgumentNullException("data"); + + if (offset < 0) + throw new ArgumentOutOfRangeException("offset"); + + if (length < 0 || length > data.Length) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create_offset(data, (IntPtr)length, (IntPtr)offset, flags); + } + + public void Create(IntPtr data, int offset, int length, PacketFlags flags) + { + if (data == IntPtr.Zero) + throw new ArgumentNullException("data"); + + if (offset < 0) + throw new ArgumentOutOfRangeException("offset"); + + if (length < 0) + throw new ArgumentOutOfRangeException("length"); + + nativePacket = Native.enet_packet_create_offset(data, (IntPtr)length, (IntPtr)offset, flags); + } + + public void CopyTo(byte[] destination, int startPos = 0) + { + if (destination == null) + throw new ArgumentNullException("destination"); + + // Fix by katori, prevents trying to copy a NULL + // from native world (ie. disconnect a client) + if (Data == null) + { + return; + } + + Marshal.Copy(Data, destination, startPos, Length); + } + } + + public class Host : IDisposable + { + private IntPtr nativeHost; + + internal IntPtr NativeData + { + get + { + return nativeHost; + } + + set + { + nativeHost = value; + } + } + + public void Dispose() + { + Dispose(true); + GC.SuppressFinalize(this); + } + + protected virtual void Dispose(bool disposing) + { + if (nativeHost != IntPtr.Zero) + { + Native.enet_host_destroy(nativeHost); + nativeHost = IntPtr.Zero; + } + } + + ~Host() + { + Dispose(false); + } + + public bool IsSet + { + get + { + return nativeHost != IntPtr.Zero; + } + } + + public uint PeersCount + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_peers_count(nativeHost); + } + } + + public uint PacketsSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_packets_sent(nativeHost); + } + } + + public uint PacketsReceived + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_packets_received(nativeHost); + } + } + + public uint BytesSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_bytes_sent(nativeHost); + } + } + + public uint BytesReceived + { + get + { + ThrowIfNotCreated(); + + return Native.enet_host_get_bytes_received(nativeHost); + } + } + + internal void ThrowIfNotCreated() + { + if (nativeHost == IntPtr.Zero) + throw new InvalidOperationException("Host not created"); + } + + private static void ThrowIfChannelsExceeded(int channelLimit) + { + if (channelLimit < 0 || channelLimit > Library.maxChannelCount) + throw new ArgumentOutOfRangeException("channelLimit"); + } + + public void Create() + { + Create(null, 1, 0); + } + + public void Create(int bufferSize) + { + Create(null, 1, 0, 0, 0, bufferSize); + } + + public void Create(Address? address, int peerLimit) + { + Create(address, peerLimit, 0); + } + + public void Create(Address? address, int peerLimit, int channelLimit) + { + Create(address, peerLimit, channelLimit, 0, 0, 0); + } + + public void Create(int peerLimit, int channelLimit) + { + Create(null, peerLimit, channelLimit, 0, 0, 0); + } + + public void Create(int peerLimit, int channelLimit, uint incomingBandwidth, uint outgoingBandwidth) + { + Create(null, peerLimit, channelLimit, incomingBandwidth, outgoingBandwidth, 0); + } + + public void Create(Address? address, int peerLimit, int channelLimit, uint incomingBandwidth, uint outgoingBandwidth) + { + Create(address, peerLimit, channelLimit, incomingBandwidth, outgoingBandwidth, 0); + } + + public void Create(Address? address, int peerLimit, int channelLimit, uint incomingBandwidth, uint outgoingBandwidth, int bufferSize) + { + if (nativeHost != IntPtr.Zero) + throw new InvalidOperationException("Host already created"); + + if (peerLimit < 0 || peerLimit > Library.maxPeers) + throw new ArgumentOutOfRangeException("peerLimit"); + + ThrowIfChannelsExceeded(channelLimit); + + if (address != null) + { + var nativeAddress = address.Value.NativeData; + + nativeHost = Native.enet_host_create(ref nativeAddress, (IntPtr)peerLimit, (IntPtr)channelLimit, incomingBandwidth, outgoingBandwidth, bufferSize); + } + else + { + nativeHost = Native.enet_host_create(IntPtr.Zero, (IntPtr)peerLimit, (IntPtr)channelLimit, incomingBandwidth, outgoingBandwidth, bufferSize); + } + + if (nativeHost == IntPtr.Zero) + throw new InvalidOperationException("Host creation call failed"); + } + + public void PreventConnections(bool state) + { + ThrowIfNotCreated(); + + Native.enet_host_prevent_connections(nativeHost, (byte)(state ? 1 : 0)); + } + + public void Broadcast(byte channelID, ref Packet packet) + { + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + Native.enet_host_broadcast(nativeHost, channelID, packet.NativeData); + packet.NativeData = IntPtr.Zero; + } + + public void Broadcast(byte channelID, ref Packet packet, Peer excludedPeer) + { + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + Native.enet_host_broadcast_exclude(nativeHost, channelID, packet.NativeData, excludedPeer.NativeData); + packet.NativeData = IntPtr.Zero; + } + + public void Broadcast(byte channelID, ref Packet packet, Peer[] peers) + { + if (peers == null) + throw new ArgumentNullException("peers"); + + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + + if (peers.Length > 0) + { + IntPtr[] nativePeers = ArrayPool.GetPointerBuffer(); + int nativeCount = 0; + + for (int i = 0; i < peers.Length; i++) + { + if (peers[i].NativeData != IntPtr.Zero) + { + nativePeers[nativeCount] = peers[i].NativeData; + nativeCount++; + } + } + + Native.enet_host_broadcast_selective(nativeHost, channelID, packet.NativeData, nativePeers, (IntPtr)nativeCount); + } + + packet.NativeData = IntPtr.Zero; + } + + public int CheckEvents(out Event @event) + { + ThrowIfNotCreated(); + + ENetEvent nativeEvent; + + var result = Native.enet_host_check_events(nativeHost, out nativeEvent); + + if (result <= 0) + { + @event = default(Event); + + return result; + } + + @event = new Event(nativeEvent); + + return result; + } + + public Peer Connect(Address address) + { + return Connect(address, 0, 0); + } + + public Peer Connect(Address address, int channelLimit) + { + return Connect(address, channelLimit, 0); + } + + public Peer Connect(Address address, int channelLimit, uint data) + { + ThrowIfNotCreated(); + ThrowIfChannelsExceeded(channelLimit); + + var nativeAddress = address.NativeData; + var peer = new Peer(Native.enet_host_connect(nativeHost, ref nativeAddress, (IntPtr)channelLimit, data)); + + if (peer.NativeData == IntPtr.Zero) + throw new InvalidOperationException("Host connect call failed"); + + return peer; + } + + public int Service(int timeout, out Event @event) + { + if (timeout < 0) + throw new ArgumentOutOfRangeException("timeout"); + + ThrowIfNotCreated(); + + ENetEvent nativeEvent; + + var result = Native.enet_host_service(nativeHost, out nativeEvent, (uint)timeout); + + if (result <= 0) + { + @event = default(Event); + + return result; + } + + @event = new Event(nativeEvent); + + return result; + } + + public void SetBandwidthLimit(uint incomingBandwidth, uint outgoingBandwidth) + { + ThrowIfNotCreated(); + + Native.enet_host_bandwidth_limit(nativeHost, incomingBandwidth, outgoingBandwidth); + } + + public void SetChannelLimit(int channelLimit) + { + ThrowIfNotCreated(); + ThrowIfChannelsExceeded(channelLimit); + + Native.enet_host_channel_limit(nativeHost, (IntPtr)channelLimit); + } + + public void SetMaxDuplicatePeers(ushort number) + { + ThrowIfNotCreated(); + + Native.enet_host_set_max_duplicate_peers(nativeHost, number); + } + + public void SetInterceptCallback(IntPtr callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_intercept_callback(nativeHost, callback); + } + + public void SetInterceptCallback(InterceptCallback callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_intercept_callback(nativeHost, Marshal.GetFunctionPointerForDelegate(callback)); + } + + public void SetChecksumCallback(IntPtr callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_checksum_callback(nativeHost, callback); + } + + public void SetChecksumCallback(ChecksumCallback callback) + { + ThrowIfNotCreated(); + + Native.enet_host_set_checksum_callback(nativeHost, Marshal.GetFunctionPointerForDelegate(callback)); + } + + public void Flush() + { + ThrowIfNotCreated(); + + Native.enet_host_flush(nativeHost); + } + } + + public struct Peer + { + private IntPtr nativePeer; + private uint nativeID; + + internal IntPtr NativeData + { + get + { + return nativePeer; + } + + set + { + nativePeer = value; + } + } + + internal Peer(IntPtr peer) + { + nativePeer = peer; + nativeID = nativePeer != IntPtr.Zero ? Native.enet_peer_get_id(nativePeer) : 0; + } + + public bool IsSet + { + get + { + return nativePeer != IntPtr.Zero; + } + } + + public uint ID + { + get + { + return nativeID; + } + } + + public string IP + { + get + { + ThrowIfNotCreated(); + + byte[] ip = ArrayPool.GetByteBuffer(); + + if (Native.enet_peer_get_ip(nativePeer, ip, (IntPtr)ip.Length) == 0) + return Encoding.ASCII.GetString(ip, 0, ip.StringLength()); + else + return String.Empty; + } + } + + public ushort Port + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_port(nativePeer); + } + } + + public uint MTU + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_mtu(nativePeer); + } + } + + public PeerState State + { + get + { + return nativePeer == IntPtr.Zero ? PeerState.Uninitialized : Native.enet_peer_get_state(nativePeer); + } + } + + public uint RoundTripTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_rtt(nativePeer); + } + } + + public uint LastRoundTripTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_last_rtt(nativePeer); + } + } + + public uint LastSendTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_lastsendtime(nativePeer); + } + } + + public uint LastReceiveTime + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_lastreceivetime(nativePeer); + } + } + + public ulong PacketsSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_packets_sent(nativePeer); + } + } + + public ulong PacketsLost + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_packets_lost(nativePeer); + } + } + + public float PacketsThrottle + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_packets_throttle(nativePeer); + } + } + + public ulong BytesSent + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_bytes_sent(nativePeer); + } + } + + public ulong BytesReceived + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_bytes_received(nativePeer); + } + } + + public IntPtr Data + { + get + { + ThrowIfNotCreated(); + + return Native.enet_peer_get_data(nativePeer); + } + + set + { + ThrowIfNotCreated(); + + Native.enet_peer_set_data(nativePeer, value); + } + } + + internal void ThrowIfNotCreated() + { + if (nativePeer == IntPtr.Zero) + throw new InvalidOperationException("Peer not created"); + } + + public void ConfigureThrottle(uint interval, uint acceleration, uint deceleration, uint threshold) + { + ThrowIfNotCreated(); + + Native.enet_peer_throttle_configure(nativePeer, interval, acceleration, deceleration, threshold); + } + + public int Send(byte channelID, ref Packet packet) + { + ThrowIfNotCreated(); + + packet.ThrowIfNotCreated(); + + return Native.enet_peer_send(nativePeer, channelID, packet.NativeData); + } + + public bool Receive(out byte channelID, out Packet packet) + { + ThrowIfNotCreated(); + + IntPtr nativePacket = Native.enet_peer_receive(nativePeer, out channelID); + + if (nativePacket != IntPtr.Zero) + { + packet = new Packet(nativePacket); + + return true; + } + + packet = default(Packet); + + return false; + } + + public void Ping() + { + ThrowIfNotCreated(); + + Native.enet_peer_ping(nativePeer); + } + + public void PingInterval(uint interval) + { + ThrowIfNotCreated(); + + Native.enet_peer_ping_interval(nativePeer, interval); + } + + public void Timeout(uint timeoutLimit, uint timeoutMinimum, uint timeoutMaximum) + { + ThrowIfNotCreated(); + + Native.enet_peer_timeout(nativePeer, timeoutLimit, timeoutMinimum, timeoutMaximum); + } + + public void Disconnect(uint data) + { + ThrowIfNotCreated(); + + Native.enet_peer_disconnect(nativePeer, data); + } + + public void DisconnectNow(uint data) + { + ThrowIfNotCreated(); + + Native.enet_peer_disconnect_now(nativePeer, data); + } + + public void DisconnectLater(uint data) + { + ThrowIfNotCreated(); + + Native.enet_peer_disconnect_later(nativePeer, data); + } + + public void Reset() + { + ThrowIfNotCreated(); + + Native.enet_peer_reset(nativePeer); + } + } + + public static class Extensions + { + public static int StringLength(this byte[] data) + { + if (data == null) + throw new ArgumentNullException("data"); + + int i; + + for (i = 0; i < data.Length && data[i] != 0; i++) ; + + return i; + } + } + + public static class Library + { + public const uint maxChannelCount = 0xFF; + public const uint maxPeers = 0xFFF; + public const uint maxPacketSize = 32 * 1024 * 1024; + public const uint throttleThreshold = 40; + public const uint throttleScale = 32; + public const uint throttleAcceleration = 2; + public const uint throttleDeceleration = 2; + public const uint throttleInterval = 5000; + public const uint timeoutLimit = 32; + public const uint timeoutMinimum = 5000; + public const uint timeoutMaximum = 30000; + public const uint version = (2 << 16) | (4 << 8) | (7); + + public static uint Time + { + get + { + return Native.enet_time_get(); + } + } + + public static bool Initialize() + { + if (Native.enet_linked_version() != version) + throw new InvalidOperationException("ENet native is out of date. Download the latest release from https://github.com/SoftwareGuy/ENet-CSharp/releases"); + + return Native.enet_initialize() == 0; + } + + public static bool Initialize(Callbacks callbacks) + { + if (callbacks == null) + throw new ArgumentNullException("callbacks"); + + if (Native.enet_linked_version() != version) + throw new InvalidOperationException("ENet native is out of date. Download the latest release from https://github.com/SoftwareGuy/ENet-CSharp/releases"); + + ENetCallbacks nativeCallbacks = callbacks.NativeData; + + return Native.enet_initialize_with_callbacks(version, ref nativeCallbacks) == 0; + } + + public static void Deinitialize() + { + Native.enet_deinitialize(); + } + + public static ulong CRC64(IntPtr buffers, int bufferCount) + { + return Native.enet_crc64(buffers, bufferCount); + } + } + + [SuppressUnmanagedCodeSecurity] + internal static class Native + { + // This should address Unity usage and bug #66: Platform specific Enet / libenet + // https://github.com/SoftwareGuy/Ignorance/issues/66 +#if UNITY_EDITOR + // We are inside the Unity Editor. +#if UNITY_EDITOR_OSX + // Unity Editor on macOS needs to use libenet. + private const string nativeLibrary = "libenet"; +#else + private const string nativeLibrary = "enet"; +#endif +#endif + +#if !UNITY_EDITOR + // We're not inside the Unity Editor. +#if __APPLE__ && !(__IOS__ || UNITY_IOS) + // Use libenet on macOS. + private const string nativeLibrary = "libenet"; +#elif __IOS__ || UNITY_IOS + // We're building for a certain mobile fruity OS. + private const string nativeLibrary = "__Internal"; +#else + // Assume everything else, Windows et al. + private const string nativeLibrary = "enet"; +#endif +#endif + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_initialize(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_initialize_with_callbacks(uint version, ref ENetCallbacks inits); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_deinitialize(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_linked_version(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_time_get(); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_crc64(IntPtr buffers, int bufferCount); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_set_ip(ref ENetAddress address, string ip); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_set_hostname(ref ENetAddress address, string hostName); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_get_ip(ref ENetAddress address, StringBuilder ip, IntPtr ipLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_address_get_hostname(ref ENetAddress address, StringBuilder hostName, IntPtr nameLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create(byte[] data, IntPtr dataLength, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create(IntPtr data, IntPtr dataLength, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create_offset(byte[] data, IntPtr dataLength, IntPtr dataOffset, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_create_offset(IntPtr data, IntPtr dataLength, IntPtr dataOffset, PacketFlags flags); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_packet_check_references(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_get_data(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_get_user_data(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_packet_set_user_data(IntPtr packet, IntPtr userData); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_packet_get_length(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_packet_set_free_callback(IntPtr packet, IntPtr callback); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_packet_dispose(IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_host_create(ref ENetAddress address, IntPtr peerLimit, IntPtr channelLimit, uint incomingBandwidth, uint outgoingBandwidth, int bufferSize); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_host_create(IntPtr address, IntPtr peerLimit, IntPtr channelLimit, uint incomingBandwidth, uint outgoingBandwidth, int bufferSize); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_host_connect(IntPtr host, ref ENetAddress address, IntPtr channelCount, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_broadcast(IntPtr host, byte channelID, IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_broadcast_exclude(IntPtr host, byte channelID, IntPtr packet, IntPtr excludedPeer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_broadcast_selective(IntPtr host, byte channelID, IntPtr packet, IntPtr[] peers, IntPtr peersLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_host_service(IntPtr host, out ENetEvent @event, uint timeout); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_host_check_events(IntPtr host, out ENetEvent @event); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_channel_limit(IntPtr host, IntPtr channelLimit); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_bandwidth_limit(IntPtr host, uint incomingBandwidth, uint outgoingBandwidth); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_peers_count(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_packets_sent(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_packets_received(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_bytes_sent(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_host_get_bytes_received(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_set_max_duplicate_peers(IntPtr host, ushort number); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_set_intercept_callback(IntPtr host, IntPtr callback); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_set_checksum_callback(IntPtr host, IntPtr callback); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_flush(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_destroy(IntPtr host); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_host_prevent_connections(IntPtr host, byte state); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_throttle_configure(IntPtr peer, uint interval, uint acceleration, uint deceleration, uint threshold); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_id(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_peer_get_ip(IntPtr peer, byte[] ip, IntPtr ipLength); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ushort enet_peer_get_port(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_mtu(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern PeerState enet_peer_get_state(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_rtt(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_last_rtt(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_lastsendtime(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern uint enet_peer_get_lastreceivetime(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_packets_sent(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_packets_lost(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern float enet_peer_get_packets_throttle(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_bytes_sent(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern ulong enet_peer_get_bytes_received(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_peer_get_data(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_set_data(IntPtr peer, IntPtr data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern int enet_peer_send(IntPtr peer, byte channelID, IntPtr packet); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern IntPtr enet_peer_receive(IntPtr peer, out byte channelID); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_ping(IntPtr peer); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_ping_interval(IntPtr peer, uint pingInterval); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_timeout(IntPtr peer, uint timeoutLimit, uint timeoutMinimum, uint timeoutMaximum); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_disconnect(IntPtr peer, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_disconnect_now(IntPtr peer, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_disconnect_later(IntPtr peer, uint data); + + [DllImport(nativeLibrary, CallingConvention = CallingConvention.Cdecl)] + internal static extern void enet_peer_reset(IntPtr peer); + +#if UNITY_EDITOR + public static string nativeLibraryName { get { return nativeLibrary; } } +#endif + + } +} diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs.meta new file mode 100644 index 0000000..d58413a --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Dependencies/ENet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 12a7875e95f5ebb4a9b58390441dd933 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor.meta new file mode 100644 index 0000000..40c6fd2 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0995e08af14888348b42ecaa6eb21544 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs new file mode 100644 index 0000000..0ff3186 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs @@ -0,0 +1,83 @@ +#if UNITY_EDITOR +using System.Collections.Generic; +using System.Linq; +using UnityEditor; + +namespace IgnoranceTransport +{ + /// + /// Adds the given define symbols to PlayerSettings define symbols. + /// Just add your own define symbols to the Symbols property at the below. + /// + [InitializeOnLoad] + public class AddIgnoranceDefine : Editor + { + private static string existingDefines = string.Empty; + + /// + /// Symbols that will be added to the editor + /// + public static readonly string[] Symbols = new string[] { + "IGNORANCE", // Ignorance exists + "IGNORANCE_1", // Major version + "IGNORANCE_1_4" // Major and minor version + }; + + /// + /// Do not remove these symbols + /// + public static readonly string[] DoNotRemoveTheseSymbols = new string[] + { + "IGNORANCE_NO_UPNP", + "IGNORANCE_MIRROR_POLLING" + }; + + /// + /// Add define symbols as soon as Unity gets done compiling. + /// + static AddIgnoranceDefine() + { + // Get the current scripting defines + string definesString = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + if (existingDefines == definesString) + { + // 1.2.6: There is no need to apply the changes, return. + return; + } + + // Convert the string to a list + List allDefines = definesString.Split(';').ToList(); + // Remove any old version defines from previous installs + allDefines.RemoveAll(IsSafeToRemove); + // x => x.StartsWith("IGNORANCE") && !DoesSymbolExistInBlacklist(x)); + // Add any symbols that weren't already in the list + allDefines.AddRange(Symbols.Except(allDefines)); + + string newDefines = string.Join(";", allDefines.ToArray()); + PlayerSettings.SetScriptingDefineSymbolsForGroup( + EditorUserBuildSettings.selectedBuildTargetGroup, + newDefines + ); + + existingDefines = newDefines; + } + + // 1.2.4: Workaround to stop things from eating custom IGNORANCE_ symbols + static bool DoesSymbolExistInBlacklist(string symbol) + { + foreach(string s in DoNotRemoveTheseSymbols) + { + if (s == symbol.Trim()) return true; + } + + return false; + } + + static bool IsSafeToRemove (string input) + { + if (input.StartsWith("IGNORANCE") && !DoesSymbolExistInBlacklist(input)) return true; + return false; + } + } +} +#endif diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs.meta new file mode 100644 index 0000000..dbff870 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/AddScriptingDefine.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ed8acbde141f2d8469baf2142712de9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs new file mode 100644 index 0000000..dee6b62 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs @@ -0,0 +1,44 @@ +#if UNITY_EDITOR +using System.Collections.Generic; +using UnityEditor; + +namespace IgnoranceTransport +{ + public class IgnoranceToolbox + { +#pragma warning disable IDE0051 + [MenuItem("Ignorance/Mirror/Switch Update Method")] + public static void SwitchIgnoranceUpdateMethod () + { + + } + + [MenuItem("Ignorance/Debug/Reveal ENet Native Library Name")] + public static void RevealEnetLibraryName() + { + EditorUtility.DisplayDialog("Enet Library Name", $"Use this for debugging.\nYour platform expects the native Enet library to be called: {ENet.Native.nativeLibraryName}", "Got it"); + } + + [MenuItem("Ignorance/RTFM/Github Repository")] + private static void LaunchGithubRepo() + { + UnityEngine.Application.OpenURL("https://github.com/SoftwareGuy/Ignorance"); + } + + [MenuItem("Ignorance/RTFM/Github Issue Tracker")] + private static void LaunchGithubIssueTracker() + { + UnityEngine.Application.OpenURL("https://github.com/SoftwareGuy/Ignorance/issues"); + } + + [MenuItem("Ignorance/RTFM/ENet-CSharp Fork")] + private static void LaunchENetCSharpForkRepo() + { + UnityEngine.Application.OpenURL("https://github.com/SoftwareGuy/ENet-CSharp"); + } + + +#pragma warning restore + } +} +#endif diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs.meta new file mode 100644 index 0000000..cf61ba3 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Editor/IgnoranceToolbox.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1fdecc996313d614ca16214d4e2b9162 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs new file mode 100644 index 0000000..28dbf7a --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs @@ -0,0 +1,746 @@ +// Ignorance 1.4.x +// Ignorance. It really kicks the Unity LLAPIs ass. +// https://github.com/SoftwareGuy/Ignorance +// ----------------- +// Copyright (c) 2019 - 2020 Matt Coburn (SoftwareGuy/Coburn64) +// Ignorance Transport is licensed under the MIT license. Refer +// to the LICENSE file for more information. +// ----------------- +// Ignorance Experimental (New) Version +// ----------------- +using ENet; +using Mirror; +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace IgnoranceTransport +{ + [DisallowMultipleComponent] + public class Ignorance : Transport + { + #region Inspector options + public int port = 7777; + + [Header("Debug & Logging Configuration")] + [Tooltip("How verbose do you want Ignorance to be?")] + public IgnoranceLogType LogType = IgnoranceLogType.Standard; + [Tooltip("Uses OnGUI to present you with statistics for Server and Client backend instances.")] + public bool DebugDisplay = false; + + [Header("Server Configuration")] + [Tooltip("Should the server bind to all interfaces?")] + public bool serverBindsAll = true; + [Tooltip("This is only used if Server Binds All is unticked.")] + public string serverBindAddress = string.Empty; + [Tooltip("This tells ENet how many Peer slots to create. Helps performance, avoids looping over huge native arrays. Recommended: Max Mirror players, rounded to nearest 10. (Example: 16 -> 20).")] + public int serverMaxPeerCapacity = 50; + [Tooltip("How long ENet waits in native world. The higher this value, the more CPU usage. Lower values may/may not impact performance at high packet load.")] + public int serverMaxNativeWaitTime = 1; + + [Header("Client Configuration")] + [Tooltip("How long ENet waits in native world. The higher this value, the more CPU usage used. This is for the client, unlike the one above. Higher value probably trades CPU for more responsive networking.")] + public int clientMaxNativeWaitTime = 3; + [Tooltip("Interval between asking ENet for client status updates. Set to -1 to disable.")] + public int clientStatusUpdateInterval = -1; + + [Header("Channel Configuration")] + [Tooltip("You must define your channels in the array shown here, otherwise ENet will not know what channel delivery type to use.")] + public IgnoranceChannelTypes[] Channels; + + [Header("Low-level Tweaking")] + [Tooltip("Used internally to keep allocations to a minimum. This is how much memory will be consumed by the packet buffer on startup, and then reused.")] + public int PacketBufferCapacity = 4096; + + [Tooltip("For UDP based protocols, it's best to keep your data under the safe MTU of 1200 bytes. You can increase this, however beware this may open you up to allocation attacks.")] + public int MaxAllowedPacketSize = 33554432; + #endregion + + #region Public Statistics + public IgnoranceClientStats ClientStatistics; + #endregion + +#if MIRROR_26_0_OR_NEWER + public override bool Available() + { + // Ignorance is not available for Unity WebGL, the PS4 (no dev kit to confirm) or Switch (port exists but I have no access to said code). + // Ignorance is available for most other operating systems. +#if (UNITY_WEBGL || UNITY_PS4 || UNITY_SWITCH) + return false; +#else + return true; +#endif + } + + public void Awake() + { + if (LogType != IgnoranceLogType.Nothing) + Debug.Log($"Thanks for using Ignorance {IgnoranceInternals.Version}. Keep up to date, report bugs and support the developer at https://github.com/SoftwareGuy/Ignorance!"); + } + + public override string ToString() + { + return $"Ignorance v{IgnoranceInternals.Version}"; + } + + public override void ClientConnect(string address) + { + ClientState = ConnectionState.Connecting; + cachedConnectionAddress = address; + + // Initialize. + InitializeClientBackend(); + + // Get going. + ignoreDataPackets = false; + + // Start! + Client.Start(); + } + + public override void ClientConnect(Uri uri) + { + if (uri.Scheme != IgnoranceInternals.Scheme) + throw new ArgumentException($"You used an invalid URI: {uri}. Please use {IgnoranceInternals.Scheme}://host:port instead", nameof(uri)); + + if (!uri.IsDefaultPort) + // Set the communication port to the one specified. + port = uri.Port; + + // Pass onwards to the proper handler. + ClientConnect(uri.Host); + } + + public override bool ClientConnected() => ClientState == ConnectionState.Connected; + + public override void ClientDisconnect() + { + if (Client != null) + Client.Stop(); + + // TODO: Figure this one out to see if it's related to a race condition. + // Maybe experiment with a while loop to pause main thread when disconnecting, + // since client might not stop on a dime. + // while(Client.IsAlive) ; + // v1.4.0b1: Probably fixed in IgnoranceClient.cs; need further testing. + + // ignoreDataPackets = true; + ClientState = ConnectionState.Disconnected; + } + +#if !MIRROR_37_0_OR_NEWER + public override void ClientSend(int channelId, ArraySegment segment) +#else + // v1.4.0b6: Mirror rearranged the ClientSend params, so we need to apply a fix for that or + // we end up using the obsoleted version. The obsolete version isn't a fatal error, but + // it's best to stick with the new structures. + public override void ClientSend(ArraySegment segment, int channelId) +#endif + { + if (Client == null) + { + Debug.LogError("Client object is null, this shouldn't really happen but it did..."); + return; + } + + if (channelId < 0 || channelId > Channels.Length) + { + Debug.LogError("Channel ID is out of bounds."); + return; + } + + // Create our struct... + Packet clientOutgoingPacket = default; + int byteCount = segment.Count; + int byteOffset = segment.Offset; + // Set our desired flags... + PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; + + // Warn if over recommended MTU... + bool flagsSet = (desiredFlags & ReliableOrUnreliableFragmented) > 0; + + if (LogType != IgnoranceLogType.Nothing && byteCount > 1200 && !flagsSet) + Debug.LogWarning($"Warning: Client trying to send a Unreliable packet bigger than the recommended ENet 1200 byte MTU ({byteCount} > 1200). ENet will force Reliable Fragmented delivery."); + + // Create the packet. + clientOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, desiredFlags); + // byteCount + + // Enqueue the packet. + IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket + { + Channel = (byte)channelId, + Payload = clientOutgoingPacket + }; + + // Pass the packet onto the thread for dispatch. + Client.Outgoing.Enqueue(dispatchPacket); + } + + public override bool ServerActive() + { + // Very simple check. + return Server != null && Server.IsAlive; + } + +#if !MIRROR_37_0_OR_NEWER + // Workaround for legacy Mirror versions. + public override bool ServerDisconnect(int connectionId) => ServerDisconnectLegacy(connectionId); +#else + public override void ServerDisconnect(int connectionId) + { + if (Server == null) + { + Debug.LogError("Cannot enqueue kick packet; our Server object is null. Something has gone wrong."); + // Return here because otherwise we will get a NRE when trying to enqueue the kick packet. + return; + } + + IgnoranceCommandPacket kickPacket = new IgnoranceCommandPacket + { + Type = IgnoranceCommandType.ServerKickPeer, + PeerId = (uint)connectionId - 1 // ENet's native peer ID will be ConnID - 1 + }; + + // Pass the packet onto the thread for dispatch. + Server.Commands.Enqueue(kickPacket); + } +#endif + + public override string ServerGetClientAddress(int connectionId) + { + if (ConnectionLookupDict.TryGetValue(connectionId, out PeerConnectionData details)) + return $"{details.IP}:{details.Port}"; + + return "(unavailable)"; + } + +#if !MIRROR_37_0_OR_NEWER + public override void ServerSend(int connectionId, int channelId, ArraySegment segment) +#else + // v1.4.0b6: Mirror rearranged the ServerSend params, so we need to apply a fix for that or + // we end up using the obsoleted version. The obsolete version isn't a fatal error, but + // it's best to stick with the new structures. + public override void ServerSend(int connectionId, ArraySegment segment, int channelId) +#endif + { + // Debug.Log($"ServerSend({connectionId}, {channelId}, <{segment.Count} byte segment>)"); + + if (Server == null) + { + Debug.LogError("Cannot enqueue data packet; our Server object is null. Something has gone wrong."); + return; + } + + if (channelId < 0 || channelId > Channels.Length) + { + Debug.LogError("Channel ID is out of bounds."); + return; + } + + // Packet Struct + Packet serverOutgoingPacket = default; + int byteCount = segment.Count; + int byteOffset = segment.Offset; + PacketFlags desiredFlags = (PacketFlags)Channels[channelId]; + + // Warn if over recommended MTU + bool flagsSet = (desiredFlags & ReliableOrUnreliableFragmented) > 0; + + if (LogType != IgnoranceLogType.Nothing && byteCount > 1200 && !flagsSet) + Debug.LogWarning($"Warning: Server trying to send a Unreliable packet bigger than the recommended ENet 1200 byte MTU ({byteCount} > 1200). ENet will force Reliable Fragmented delivery."); + + // Create the packet. + serverOutgoingPacket.Create(segment.Array, byteOffset, byteCount + byteOffset, (PacketFlags)Channels[channelId]); + + // Enqueue the packet. + IgnoranceOutgoingPacket dispatchPacket = new IgnoranceOutgoingPacket + { + Channel = (byte)channelId, + NativePeerId = (uint)connectionId - 1, // ENet's native peer ID will be ConnID - 1 + Payload = serverOutgoingPacket + }; + + Server.Outgoing.Enqueue(dispatchPacket); + + } + + public override void ServerStart() + { + if (LogType != IgnoranceLogType.Nothing) + Debug.Log("Ignorance Server Instance starting up..."); + + InitializeServerBackend(); + + Server.Start(); + } + + public override void ServerStop() + { + if (Server != null) + { + if (LogType != IgnoranceLogType.Nothing) + Debug.Log("Ignorance Server Instance shutting down..."); + + Server.Stop(); + } + + ConnectionLookupDict.Clear(); + } + + public override Uri ServerUri() + { + UriBuilder builder = new UriBuilder + { + Scheme = IgnoranceInternals.Scheme, + Host = serverBindAddress, + Port = port + }; + + return builder.Uri; + } + + public override void Shutdown() + { + // TODO: Nothing needed here? + } + + // Check to ensure channels 0 and 1 mimic LLAPI. Override this at your own risk. + private void OnValidate() + { + if (Channels != null && Channels.Length >= 2) + { + // Check to make sure that Channel 0 and 1 are correct. + if (Channels[0] != IgnoranceChannelTypes.Reliable) + { + Debug.LogWarning("Please do not modify Ignorance Channel 0. The channel will be reset to Reliable delivery. If you need a channel with a different delivery, define and use it instead."); + Channels[0] = IgnoranceChannelTypes.Reliable; + } + if (Channels[1] != IgnoranceChannelTypes.Unreliable) + { + Debug.LogWarning("Please do not modify Ignorance Channel 1. The channel will be reset to Unreliable delivery. If you need a channel with a different delivery, define and use it instead."); + Channels[1] = IgnoranceChannelTypes.Unreliable; + } + } + else + { + Debug.LogWarning("Invalid Channels setting, fixing. If you've just added Ignorance to your NetworkManager GameObject, seeing this message is normal."); + Channels = new IgnoranceChannelTypes[2] + { + + IgnoranceChannelTypes.Reliable, + IgnoranceChannelTypes.Unreliable + }; + } + + // ENet only supports a maximum of 32MB packet size. + if (MaxAllowedPacketSize > 33554432) + MaxAllowedPacketSize = 33554432; + } + + private void InitializeServerBackend() + { + if (Server == null) + { + Debug.LogWarning("IgnoranceServer reference for Server mode was null. This shouldn't happen, but to be safe we'll reinitialize it."); + Server = new IgnoranceServer(); + } + + // Set up the new IgnoranceServer reference. + if (serverBindsAll) + // MacOS is special. It's also a massive thorn in my backside. + Server.BindAddress = IgnoranceInternals.BindAllMacs; + else + // Use the supplied bind address. + Server.BindAddress = serverBindAddress; + + // Sets port, maximum peers, max channels, the server poll time, maximum packet size and verbosity. + Server.BindPort = port; + Server.MaximumPeers = serverMaxPeerCapacity; + Server.MaximumChannels = Channels.Length; + Server.PollTime = serverMaxNativeWaitTime; + Server.MaximumPacketSize = MaxAllowedPacketSize; + Server.Verbosity = (int)LogType; + + // Initializes the packet buffer. + // Allocates once, that's it. + if (InternalPacketBuffer == null) + InternalPacketBuffer = new byte[PacketBufferCapacity]; + } + + private void InitializeClientBackend() + { + if (Client == null) + { + Debug.LogWarning("Ignorance: IgnoranceClient reference for Client mode was null. This shouldn't happen, but to be safe we'll reinitialize it."); + Client = new IgnoranceClient(); + } + + // Sets address, port, channels to expect, verbosity, the server poll time and maximum packet size. + Client.ConnectAddress = cachedConnectionAddress; + Client.ConnectPort = port; + Client.ExpectedChannels = Channels.Length; + Client.PollTime = clientMaxNativeWaitTime; + Client.MaximumPacketSize = MaxAllowedPacketSize; + Client.Verbosity = (int)LogType; + + // Initializes the packet buffer. + // Allocates once, that's it. + if (InternalPacketBuffer == null) + InternalPacketBuffer = new byte[PacketBufferCapacity]; + } + + private void ProcessServerPackets() + { + IgnoranceIncomingPacket incomingPacket; + IgnoranceConnectionEvent connectionEvent; + int adjustedConnectionId; + Packet payload; + + // Incoming connection events. + while (Server.ConnectionEvents.TryDequeue(out connectionEvent)) + { + adjustedConnectionId = (int)connectionEvent.NativePeerId + 1; + + if (LogType == IgnoranceLogType.Verbose) + Debug.Log($"Processing a server connection event from ENet native peer {connectionEvent.NativePeerId}. This peer would be Mirror ConnID {adjustedConnectionId}."); + + // TODO: Investigate ArgumentException: An item with the same key has already been added. Key: + ConnectionLookupDict.Add(adjustedConnectionId, new PeerConnectionData + { + NativePeerId = connectionEvent.NativePeerId, + IP = connectionEvent.IP, + Port = connectionEvent.Port + }); + + OnServerConnected?.Invoke(adjustedConnectionId); + } + + // Handle incoming data packets. + // Console.WriteLine($"Server Incoming Queue is {Server.Incoming.Count}"); + while (Server.Incoming.TryDequeue(out incomingPacket)) + { + adjustedConnectionId = (int)incomingPacket.NativePeerId + 1; + payload = incomingPacket.Payload; + + int length = payload.Length; + ArraySegment dataSegment; + + // Copy to working buffer and dispose of it. + if (length > InternalPacketBuffer.Length) + { + byte[] oneFreshNTastyGcAlloc = new byte[length]; + + payload.CopyTo(oneFreshNTastyGcAlloc); + dataSegment = new ArraySegment(oneFreshNTastyGcAlloc, 0, length); + } + else + { + payload.CopyTo(InternalPacketBuffer); + dataSegment = new ArraySegment(InternalPacketBuffer, 0, length); + } + + payload.Dispose(); + + OnServerDataReceived?.Invoke(adjustedConnectionId, dataSegment, incomingPacket.Channel); + + // Some messages can disable the transport + // If the transport was disabled by any of the messages, we have to break out of the loop and wait until we've been re-enabled. + if (!enabled) + break; + } + + // Disconnection events. + while (Server.DisconnectionEvents.TryDequeue(out IgnoranceConnectionEvent disconnectionEvent)) + { + adjustedConnectionId = (int)disconnectionEvent.NativePeerId + 1; + + if (LogType == IgnoranceLogType.Verbose) + Debug.Log($"ProcessServerPackets fired; handling disconnection event from native peer {disconnectionEvent.NativePeerId}."); + + ConnectionLookupDict.Remove(adjustedConnectionId); + + // Invoke Mirror handler. + OnServerDisconnected?.Invoke(adjustedConnectionId); + } + } + + private void ProcessClientPackets() + { + IgnoranceIncomingPacket incomingPacket; + IgnoranceCommandPacket commandPacket; + IgnoranceClientStats clientStats; + Packet payload; + IgnoranceConnectionEvent connectionEvent; + + // Handle connection events. + while (Client.ConnectionEvents.TryDequeue(out connectionEvent)) + { + if (LogType == IgnoranceLogType.Verbose) + Debug.Log($"ProcessClientConnectionEvents fired: processing a client ConnectionEvents queue item."); + + if (connectionEvent.WasDisconnect) + { + // Disconnected from server. + ClientState = ConnectionState.Disconnected; + + if (LogType != IgnoranceLogType.Nothing) + Debug.Log($"Ignorance Client has been disconnected from server."); + + ignoreDataPackets = true; + OnClientDisconnected?.Invoke(); + } + else + { + // Connected to server. + ClientState = ConnectionState.Connected; + + if (LogType != IgnoranceLogType.Nothing) + Debug.Log($"Ignorance Client successfully connected to server at address {connectionEvent.IP}:{connectionEvent.Port}"); + + ignoreDataPackets = false; + OnClientConnected?.Invoke(); + } + } + + // Now handle the incoming messages. + while (Client.Incoming.TryDequeue(out incomingPacket)) + { + // Temporary fix: if ENet thread is too fast for Mirror, then ignore the packet. + // This is seen sometimes if you stop the client and there's still stuff in the queue. + if (ignoreDataPackets) + { + if (LogType == IgnoranceLogType.Verbose) + Debug.Log("ProcessClientPackets cycle skipped; ignoring data packet"); + break; + } + + + // Otherwise client recieved data, advise Mirror. + // print($"Byte array: {incomingPacket.RentedByteArray.Length}. Packet Length: {incomingPacket.Length}"); + payload = incomingPacket.Payload; + int length = payload.Length; + ArraySegment dataSegment; + + // Copy to working buffer and dispose of it. + if (length > InternalPacketBuffer.Length) + { + // Unity's favourite: A fresh 'n' tasty GC Allocation! + byte[] oneFreshNTastyGcAlloc = new byte[length]; + + payload.CopyTo(oneFreshNTastyGcAlloc); + dataSegment = new ArraySegment(oneFreshNTastyGcAlloc, 0, length); + } + else + { + payload.CopyTo(InternalPacketBuffer); + dataSegment = new ArraySegment(InternalPacketBuffer, 0, length); + } + + payload.Dispose(); + + OnClientDataReceived?.Invoke(dataSegment, incomingPacket.Channel); + + // Some messages can disable the transport + // If the transport was disabled by any of the messages, we have to break out of the loop and wait until we've been re-enabled. + if (!enabled) + break; + } + + // Step 3: Handle other commands. + while (Client.Commands.TryDequeue(out commandPacket)) + { + switch (commandPacket.Type) + { + // ... + default: + break; + } + } + + // Step 4: Handle status updates. + if (Client.StatusUpdates.TryDequeue(out clientStats)) + { + ClientStatistics = clientStats; + } + } + + #region Main Thread Processing and Polling + // Ignorance 1.4.0b5: To use Mirror's polling or not use Mirror's polling, that is up to the developer to decide +#if !IGNORANCE_MIRROR_POLLING + // IMPORTANT: Set Ignorance' execution order before everything else. Yes, that's -32000 !! + // This ensures it has priority over other things. + + // FixedUpdate can be called many times per frame. + // Once we've handled stuff, we set a flag so that we don't poll again for this frame. + + private bool fixedUpdateCompletedWork; + public void FixedUpdate() + { + if (!enabled) return; + if (fixedUpdateCompletedWork) return; + + ProcessAndExecuteAllPackets(); + + // Flip the bool to signal we've done our work. + fixedUpdateCompletedWork = true; + } + + // Normally, Mirror blocks Update() due to poor design decisions... + // But thanks to Vincenzo, we've found a way to bypass that block. + // Update is called once per frame. We don't have to worry about this shit now. + public new void Update() + { + if (!enabled) return; + + // Process what FixedUpdate missed, only if the boolean is not set. + if (!fixedUpdateCompletedWork) + ProcessAndExecuteAllPackets(); + + // Flip back the bool, so it can be reset. + fixedUpdateCompletedWork = false; + } + + // Processes and Executes All Packets. + private void ProcessAndExecuteAllPackets() + { + // Process Server Events... + if (Server.IsAlive) + ProcessServerPackets(); + + // Process Client Events... + if (Client.IsAlive) + { + ProcessClientPackets(); + + if (ClientState == ConnectionState.Connected && clientStatusUpdateInterval > -1) + { + statusUpdateTimer += Time.deltaTime; + + if (statusUpdateTimer >= clientStatusUpdateInterval) + { + Client.Commands.Enqueue(new IgnoranceCommandPacket { Type = IgnoranceCommandType.ClientRequestsStatusUpdate }); + statusUpdateTimer = 0f; + } + } + } + } +#else + // This section will be compiled in instead if you enable IGNORANCE_MIRROR_POLLING. + + public override void ServerEarlyUpdate() { + // This is used by Mirror to consume the incoming server packets. + if (!enabled) return; + + // Process Server Events... + if (Server.IsAlive) + ProcessServerPackets(); + } + + public override void ClientEarlyUpdate() { + // This is used by Mirror to consume the incoming client packets. + if(!enabled) return; + + if(Client.IsAlive) + { + ProcessClientPackets(); + + if (ClientState == ConnectionState.Connected && clientStatusUpdateInterval > -1) + { + statusUpdateTimer += Time.deltaTime; + + if (statusUpdateTimer >= clientStatusUpdateInterval) + { + Client.Commands.Enqueue(new IgnoranceCommandPacket { Type = IgnoranceCommandType.ClientRequestsStatusUpdate }); + statusUpdateTimer = 0f; + } + } + } + + } + + /* + public override void ClientLateUpdate() { + // This is used by Mirror to send out the outgoing client packets. + if (!enabled) return; + } + + public override void ServerLateUpdate() { + // This is used by Mirror to send out the outgoing server packets. + if (!enabled) return; + } + */ +#endif + #endregion + + #region Debug + private void OnGUI() + { + if (DebugDisplay) + GUI.Box(new Rect( + new Vector2(32, Screen.height - 240), new Vector2(200, 160)), + + "-- CLIENT --\n" + + $"State: {ClientState}\n" + + $"Incoming Queue: {Client.Incoming.Count}\n" + + $"Outgoing Queue: {Client.Outgoing.Count}\n\n" + + + "-- SERVER --\n" + + $"Incoming Queue: {Server.Incoming.Count}\n" + + $"Outgoing Queue: {Server.Outgoing.Count}\n" + + $"ConnEvent Queue: {Server.ConnectionEvents.Count}" + ); + } + #endregion + + public override int GetMaxPacketSize(int channelId = 0) => MaxAllowedPacketSize; + + // UDP Recommended Max MTU = 1200. + public override int GetMaxBatchSize(int channelId) { + bool isFragmentedAlready = ((PacketFlags)Channels[channelId] & ReliableOrUnreliableFragmented) > 0; + return isFragmentedAlready ? MaxAllowedPacketSize : 1200; + } + + #region Internals + private bool ignoreDataPackets; + private string cachedConnectionAddress = string.Empty; + private IgnoranceServer Server = new IgnoranceServer(); + private IgnoranceClient Client = new IgnoranceClient(); + private Dictionary ConnectionLookupDict = new Dictionary(); + + private enum ConnectionState { Connecting, Connected, Disconnecting, Disconnected } + private ConnectionState ClientState = ConnectionState.Disconnected; + private byte[] InternalPacketBuffer; + + private const PacketFlags ReliableOrUnreliableFragmented = PacketFlags.Reliable | PacketFlags.UnreliableFragmented; + + private float statusUpdateTimer = 0f; + #endregion + + #region Legacy Overrides +#if !MIRROR_37_0_OR_NEWER + public bool ServerDisconnectLegacy(int connectionId) + { + if (Server == null) + { + Debug.LogError("Cannot enqueue kick packet; our Server object is null. Something has gone wrong."); + // Return here because otherwise we will get a NRE when trying to enqueue the kick packet. + return false; + } + + IgnoranceCommandPacket kickPacket = new IgnoranceCommandPacket + { + Type = IgnoranceCommandType.ServerKickPeer, + PeerId = (uint)connectionId - 1 // ENet's native peer ID will be ConnID - 1 + }; + + // Pass the packet onto the thread for dispatch. + Server.Commands.Enqueue(kickPacket); + return true; + } +#endif + #endregion +#endif + + } +} diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs.meta new file mode 100644 index 0000000..9703c34 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Ignorance.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 872fa23ef6e77334ca452ce16f6cd091 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -32000 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs new file mode 100644 index 0000000..ca677ac --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs @@ -0,0 +1,94 @@ +using System; +using ENet; + +namespace IgnoranceTransport +{ + // Snipped from the transport files, as this will help + // me keep things up to date. + [Serializable] + public enum IgnoranceChannelTypes + { + Reliable = PacketFlags.Reliable, // TCP Emulation. + ReliableUnsequenced = PacketFlags.Reliable | PacketFlags.Unsequenced, // TCP Emulation, but no sequencing. + Unreliable = PacketFlags.Unsequenced, // Pure UDP. + UnreliableFragmented = PacketFlags.UnreliableFragmented, // Pure UDP, but fragmented. + UnreliableSequenced = PacketFlags.None, // Pure UDP, but sequenced. + Unthrottled = PacketFlags.Unthrottled, // Apparently ENet's version of Taco Bell. + } + + public class IgnoranceInternals + { + public const string Version = "1.4.0b6"; + public const string Scheme = "enet"; + public const string BindAllIPv4 = "0.0.0.0"; + public const string BindAllMacs = "::0"; + } + + public enum IgnoranceLogType + { + Nothing, + Standard, + Verbose + } + + // Struct optimized for cache efficiency. (Thanks Vincenzo!) + public struct IgnoranceIncomingPacket + { + public byte Channel; + public uint NativePeerId; + public Packet Payload; + } + + // Struct optimized for cache efficiency. (Thanks Vincenzo!) + public struct IgnoranceOutgoingPacket + { + public byte Channel; + public uint NativePeerId; + public Packet Payload; + } + + // Struct optimized for cache efficiency. (Thanks Vincenzo!) + public struct IgnoranceConnectionEvent + { + public bool WasDisconnect; + public ushort Port; + public uint NativePeerId; + public string IP; + } + + public struct IgnoranceCommandPacket + { + public IgnoranceCommandType Type; + public uint PeerId; + } + + public struct IgnoranceClientStats + { + // Stats only - may not always be used! + public uint RTT; + public ulong BytesReceived; + public ulong BytesSent; + public ulong PacketsReceived; + public ulong PacketsSent; + public ulong PacketsLost; + } + + public enum IgnoranceCommandType + { + // Client + ClientWantsToStop, + ClientRequestsStatusUpdate, + // ENet internal + ResponseToClientStatusRequest, + // Server + ServerKickPeer + } + + // TODO: Optimize struct for Cache performance. + public struct PeerConnectionData + { + public ushort Port; + public uint NativePeerId; + public string IP; + } +} diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs.meta new file mode 100644 index 0000000..444855c --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/IgnoranceDefinitions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3b2d1f7f7d9d3d64297755419f6ab925 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins.meta new file mode 100644 index 0000000..def60ed --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e8bd04b9965420e40ac911fbf4294e1c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android.meta new file mode 100644 index 0000000..f51f451 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c90c88052305a054d87177362f63dea8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a.meta new file mode 100644 index 0000000..738b943 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e4a42b5855436864693138f74335c094 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so new file mode 100644 index 0000000000000000000000000000000000000000..5a48a3bcb96e549104f848d26611ac59ed6f21bb GIT binary patch literal 47024 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ʶ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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so.meta new file mode 100644 index 0000000..63cd799 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/arm64-v8a/libenet.so.meta @@ -0,0 +1,111 @@ +fileFormatVersion: 2 +guid: 4b3abd2268dea254da11190b00d16051 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARM64 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + WebGL: WebGL + second: + enabled: 0 + settings: {} + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a.meta new file mode 100644 index 0000000..bbb65c6 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfbaf4fbcf8987e4585ca666e28f4871 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so new file mode 100644 index 0000000000000000000000000000000000000000..e8be7347c21fe3c59ee1076e224aad64d1011720 GIT binary patch literal 42636 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so.meta new file mode 100644 index 0000000..07ea880 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/armeabi-v7a/libenet.so.meta @@ -0,0 +1,106 @@ +fileFormatVersion: 2 +guid: e3ce4b8600e09d74ead46137ba184d01 +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude WebGL: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 0 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: LinuxUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86.meta new file mode 100644 index 0000000..4491214 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b3486c84aaebff4489e2e11f5bd3030f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so new file mode 100644 index 0000000000000000000000000000000000000000..391f83e8361d805df9b7936823579a58cbac0573 GIT binary patch literal 50764 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so.meta new file mode 100644 index 0000000..c57aeaa --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Android/x86/libenet.so.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: ba78b07719f786c4cae4c52b9528903f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 1 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: x86 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 0 + settings: + AddToEmbeddedBinaries: false + CPU: AnyCPU + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux.meta new file mode 100644 index 0000000..f1aae5d --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8e3ca9b41c9f4064581a6b56ae549a9c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux/libenet.so b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/Linux/libenet.so new file mode 100644 index 0000000000000000000000000000000000000000..c64bfb75bee9db3d5c8c0c23fd880b209259ea50 GIT binary patch literal 60144 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

E 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%0Ab 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a.meta new file mode 100644 index 0000000..7106afb --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 385bb48fb124b5f40a79bdecf421671f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: X64 + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS.meta new file mode 100644 index 0000000..b4c703f --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 957ba76da095cd64aaa658f034ab78e5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib new file mode 100644 index 0000000000000000000000000000000000000000..da377b7dcbbc8cc9f26472a61cd9f0a62eb1c12b GIT binary patch literal 53596 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%0D2W(z&E%pe2PJT03X;? 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib.meta new file mode 100644 index 0000000..92fe418 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/macOS/libenet.dylib.meta @@ -0,0 +1,32 @@ +fileFormatVersion: 2 +guid: 5317859893ad2cf48a6df1d585ebdd2c +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + DefaultValueInitialized: true + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt new file mode 100644 index 0000000..66f084a --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt @@ -0,0 +1,35 @@ +ENET Pre-compiled Binary Library Blobs +========================== +This folder contains pre-compiled binaries for a variety of different platforms. + +A brief summary of these folders are as follows: + +- Windows, Mac, Linux +-- 64bit (x64) + +- Android (Kitkat 4.4 minimum target OS) +-- ARMv7 (armeabi-v7a), ARMv8/AArch64 (arm64-v8a) + +- iOS +-- FAT Library (armv7 + arm64). Targeted for iOS 8 minimum. Unsigned library. + +DEBUG VERSIONS +=============== +Debug versions of the libraries can be obtained at https://github.com/SoftwareGuy/ENet-CSharp/releases. +Otherwise you can also compile the library yourself with Debug enabled. + +DOT POINTS +=========== +1. 32bit Support for Ignorance has been removed. Originally, I did not want to support 32bit operating systems, +however due to some countries in the world still stuck in the 32bit era (Brasil, some Russian areas, etc) I added them as a +goodwill gesture. However, since those who needed the libraries have now vanished, I have stopped building 32bit versions of ENet. + +COMPILE THE CODE YOURSELF +========================= +If you don't trust the above binaries then git clone the ENET-CSharp repository (http://github.com/SoftwareGuy/ENet-CSharp) and read the readme. + +EXCLUSION INSTRUCTIONS +====================== +No need, the meta data will cover that for you. + +Still don't know what to do with these? Drop by the Mirror discord and post in the Ignorance channel. \ No newline at end of file diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt.meta new file mode 100644 index 0000000..968eafe --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/readme.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a28193472bc84d341ab4aee18c471a93 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt new file mode 100644 index 0000000..e14bdc8 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt @@ -0,0 +1 @@ +1.4.0b6 \ No newline at end of file diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt.meta new file mode 100644 index 0000000..bd4c745 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/version.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ad80075449f17c548877161f32a9841a +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/Editor/LRMInspector.cs b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/Editor/LRMInspector.cs index 225c75d..cc0381e 100644 --- a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/Editor/LRMInspector.cs +++ b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/Editor/LRMInspector.cs @@ -23,8 +23,12 @@ namespace LightReflectiveMirror LRMDirectConnectModule directModule; string[] tabs = new string[] { "LRM Settings", "NAT Punch", "Load Balancer", "Other" }; int currentTab = 0; - Type[] supportedTransports = new Type[3] { typeof(KcpTransport), typeof(SimpleWebTransport), typeof(TelepathyTransport) }; +#if !IGNORANCE + Type[] supportedTransports = new Type[3] { typeof(KcpTransport), typeof(SimpleWebTransport), typeof(TelepathyTransport) }; +#else + Type[] supportedTransports = new Type[4] { typeof(KcpTransport), typeof(SimpleWebTransport), typeof(TelepathyTransport), typeof(IgnoranceTransport.Ignorance) }; +#endif public override void OnInspectorGUI() { var lrm = (LightReflectiveMirrorTransport)target; @@ -217,8 +221,6 @@ namespace LightReflectiveMirror case 0: using (var change = new EditorGUI.ChangeCheckScope()) { - - // They are in the LRM Settings tab. if (lrm.useLoadBalancer) { @@ -308,4 +310,4 @@ namespace LightReflectiveMirror } } #endif -} \ No newline at end of file + } \ No newline at end of file diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMDirectConnectModule.cs b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMDirectConnectModule.cs index 35d0a5b..bb8fcca 100644 --- a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMDirectConnectModule.cs +++ b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMDirectConnectModule.cs @@ -65,39 +65,72 @@ public class LRMDirectConnectModule : MonoBehaviour public void SetTransportPort(int port) { +#if !IGNORANCE if (directConnectTransport is kcp2k.KcpTransport kcpTransport) kcpTransport.Port = (ushort)port; else { - throw new Exception("DIRECT CONNECT MODULE ONLY SUPPORTS KCP AT THE MOMENT."); + ThrowIfNotSupported(); } +#else + if (directConnectTransport is kcp2k.KcpTransport kcpTransport) + kcpTransport.Port = (ushort)port; + if (directConnectTransport is IgnoranceTransport.Ignorance ignorance) + ignorance.port = (ushort)port; + else + { + ThrowIfNotSupported(); + } +#endif } public int GetTransportPort() { +#if !IGNORANCE if (directConnectTransport is kcp2k.KcpTransport kcpTransport) return kcpTransport.Port; else { - throw new Exception("DIRECT CONNECT MODULE ONLY SUPPORTS KCP AT THE MOMENT."); + ThrowIfNotSupported(); + return -1; } +#else + if (directConnectTransport is kcp2k.KcpTransport kcpTransport) + return kcpTransport.Port; + if (directConnectTransport is IgnoranceTransport.Ignorance ignorance) + return ignorance.port; + else + { + ThrowIfNotSupported(); + return -1; + } +#endif + } + + private static int ThrowIfNotSupported() + { +#if !IGNORANCE + throw new Exception("DIRECT CONNECT MODULE ONLY SUPPORTS KCP AT THE MOMENT."); +#else + throw new Exception("DIRECT CONNECT MODULE ONLY SUPPORTS KCP AND IGNORANCE"); +#endif } public bool SupportsNATPunch() { +#if !IGNORANCE return directConnectTransport is kcp2k.KcpTransport; +#else + return directConnectTransport is kcp2k.KcpTransport || directConnectTransport is IgnoranceTransport.Ignorance; +#endif } - public bool KickClient(int clientID) + public void KickClient(int clientID) { if (showDebugLogs) Debug.Log("Kicked direct connect client."); -#if MIRROR_37_0_OR_NEWER + directConnectTransport.ServerDisconnect(clientID); - return true; -#else - return directConnectTransport.ServerDisconnect(clientID); -#endif } public void ClientDisconnect() @@ -107,20 +140,12 @@ public class LRMDirectConnectModule : MonoBehaviour public void ServerSend(int clientID, ArraySegment data, int channel) { -#if MIRROR_40_0_OR_NEWER directConnectTransport.ServerSend(clientID, data, channel); -#else - directConnectTransport.ServerSend(clientID, channel, data); -#endif } public void ClientSend(ArraySegment data, int channel) { -#if MIRROR_40_0_OR_NEWER directConnectTransport.ClientSend(data, channel); -#else - directConnectTransport.ClientSend(channel, data); -#endif } #region Transport Callbacks diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportOverrides.cs b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportOverrides.cs index 305701f..a34d7f4 100644 --- a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportOverrides.cs +++ b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportOverrides.cs @@ -86,19 +86,11 @@ namespace LightReflectiveMirror } else { - if (GetLocalIp() == null) - _clientSendBuffer.WriteString(ref pos, "0.0.0.0"); - else - _clientSendBuffer.WriteString(ref pos, GetLocalIp()); + _clientSendBuffer.WriteString(ref pos, GetLocalIp() ?? "0.0.0.0"); } _isClient = true; -#if MIRROR_40_0_OR_NEWER - clientToServerTransport.ClientSend(new System.ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new System.ArraySegment(_clientSendBuffer, 0, pos)); -#endif - + clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); } else { @@ -115,23 +107,15 @@ namespace LightReflectiveMirror { int pos = 0; _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.LeaveRoom); -#if MIRROR_40_0_OR_NEWER + clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } if (_directConnectModule != null) _directConnectModule.ClientDisconnect(); } -#if MIRROR_40_0_OR_NEWER public override void ClientSend(ArraySegment segment, int channelId) -#else - public override void ClientSend(int channelId, ArraySegment segment) - -#endif { if (_directConnected) { @@ -143,35 +127,11 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.SendData); _clientSendBuffer.WriteBytes(ref pos, segment.Array.Take(segment.Count).ToArray()); _clientSendBuffer.WriteInt(ref pos, 0); -#if MIRROR_40_0_OR_NEWER + clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), channelId); -#else - clientToServerTransport.ClientSend(channelId, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } } -#if !MIRROR_37_0_OR_NEWER - - public override bool ServerDisconnect(int connectionId) - { - if (_connectedRelayClients.TryGetBySecond(connectionId, out int relayId)) - { - int pos = 0; - _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.KickPlayer); - _clientSendBuffer.WriteInt(ref pos, relayId); - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); - return true; - } - - if (_connectedDirectClients.TryGetBySecond(connectionId, out int directId)) - return _directConnectModule.KickClient(directId); - - return false; - } - -#else - public override void ServerDisconnect(int connectionId) { if (_connectedRelayClients.TryGetBySecond(connectionId, out int relayId)) @@ -187,13 +147,7 @@ namespace LightReflectiveMirror _directConnectModule.KickClient(directId); } -#endif - -#if MIRROR_40_0_OR_NEWER public override void ServerSend(int connectionId, ArraySegment segment, int channelId) -#else - public override void ServerSend(int connectionId, int channelId, ArraySegment segment) -#endif { if (_directConnectModule != null && _connectedDirectClients.TryGetBySecond(connectionId, out int directId)) { @@ -205,11 +159,8 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.SendData); _clientSendBuffer.WriteBytes(ref pos, segment.Array.Take(segment.Count).ToArray()); _clientSendBuffer.WriteInt(ref pos, _connectedRelayClients.GetBySecond(connectionId)); -#if MIRROR_40_0_OR_NEWER + clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), channelId); -#else - clientToServerTransport.ClientSend(channelId, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } } @@ -242,14 +193,16 @@ namespace LightReflectiveMirror int pos = 0; _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.CreateRoom); + _clientSendBuffer.WriteInt(ref pos, maxServerPlayers); _clientSendBuffer.WriteString(ref pos, serverName); _clientSendBuffer.WriteBool(ref pos, isPublicServer); _clientSendBuffer.WriteString(ref pos, extraServerData); - // If we have direct connect module, and our local IP isnt null, tell server. Only time local IP is null is on cellular networks, such as IOS and Android. - _clientSendBuffer.WriteBool(ref pos, _directConnectModule != null ? GetLocalIp() != null ? true : false : false); - if (_directConnectModule != null && GetLocalIp() != null) + // If we have direct connect module, and our local IP isnt null, tell server. Only time local IP is null is on cellular networks, such as IOS and Android. + _clientSendBuffer.WriteBool(ref pos, _directConnectModule != null ? GetLocalIp() != null : false); + + if (_directConnectModule != null && GetLocalIp() != null && useNATPunch) { _clientSendBuffer.WriteString(ref pos, GetLocalIp()); // Transport port will be NAT port + 1 for the proxy connections. @@ -268,11 +221,8 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteBool(ref pos, false); _clientSendBuffer.WriteInt(ref pos, _directConnectModule == null ? 1 : _directConnectModule.SupportsNATPunch() ? _directConnectModule.GetTransportPort() : 1); } -#if MIRROR_40_0_OR_NEWER + clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } public override void ServerStop() @@ -283,11 +233,7 @@ namespace LightReflectiveMirror int pos = 0; _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.LeaveRoom); -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif if (_directConnectModule != null) _directConnectModule.StopServer(); diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportRequests.cs b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportRequests.cs index 5ddd899..f805f4e 100644 --- a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportRequests.cs +++ b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LRMTransportRequests.cs @@ -115,11 +115,7 @@ namespace LightReflectiveMirror _isClient = true; -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new System.ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new System.ArraySegment(_clientSendBuffer, 0, pos)); -#endif } IEnumerator GetServerList(LRMRegions region) diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LightReflectiveMirrorTransport.cs b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LightReflectiveMirrorTransport.cs index 8b3efc7..5706909 100644 --- a/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LightReflectiveMirrorTransport.cs +++ b/UnityProject/Assets/Mirror/Runtime/Transport/LRM/LRMTransport/LightReflectiveMirrorTransport.cs @@ -127,14 +127,9 @@ namespace LightReflectiveMirror int pos = 0; _clientSendBuffer.WriteByte(ref pos, 200); -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif // If NAT Puncher is initialized, send heartbeat on that as well. - try { if (_NATPuncher != null) @@ -348,11 +343,7 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteBool(ref pos, false); _clientSendBuffer.WriteBool(ref pos, false); -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } } @@ -368,11 +359,8 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteString(ref pos, newServerData); _clientSendBuffer.WriteBool(ref pos, false); _clientSendBuffer.WriteBool(ref pos, false); -#if MIRROR_40_0_OR_NEWER + clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } } @@ -389,11 +377,7 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteBool(ref pos, isPublic); _clientSendBuffer.WriteBool(ref pos, false); -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } } @@ -410,11 +394,7 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteBool(ref pos, true); _clientSendBuffer.WriteInt(ref pos, maxPlayers); -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } } @@ -435,11 +415,7 @@ namespace LightReflectiveMirror _clientSendBuffer.WriteByte(ref pos, (byte)OpCodes.AuthenticationResponse); _clientSendBuffer.WriteString(ref pos, authenticationKey); -#if MIRROR_40_0_OR_NEWER clientToServerTransport.ClientSend(new ArraySegment(_clientSendBuffer, 0, pos), 0); -#else - clientToServerTransport.ClientSend(0, new ArraySegment(_clientSendBuffer, 0, pos)); -#endif } public enum OpCodes diff --git a/UnityProject/ProjectSettings/ProjectSettings.asset b/UnityProject/ProjectSettings/ProjectSettings.asset index c0a9369..86fa990 100644 --- a/UnityProject/ProjectSettings/ProjectSettings.asset +++ b/UnityProject/ProjectSettings/ProjectSettings.asset @@ -513,7 +513,7 @@ PlayerSettings: webGLThreadsSupport: 0 webGLWasmStreaming: 0 scriptingDefineSymbols: - 1: MIRROR;MIRROR_17_0_OR_NEWER;MIRROR_18_0_OR_NEWER;MIRROR_24_0_OR_NEWER;MIRROR_26_0_OR_NEWER;MIRROR_27_0_OR_NEWER;MIRROR_28_0_OR_NEWER;MIRROR_29_0_OR_NEWER;MIRROR_30_0_OR_NEWER;MIRROR_30_5_2_OR_NEWER;MIRROR_32_1_2_OR_NEWER;MIRROR_32_1_4_OR_NEWER;MIRROR_35_0_OR_NEWER;MIRROR_35_1_OR_NEWER;MIRROR_37_0_OR_NEWER;MIRROR_38_0_OR_NEWER;MIRROR_39_0_OR_NEWER;MIRROR_40_0_OR_NEWER + 1: MIRROR;MIRROR_17_0_OR_NEWER;MIRROR_18_0_OR_NEWER;MIRROR_24_0_OR_NEWER;MIRROR_26_0_OR_NEWER;MIRROR_27_0_OR_NEWER;MIRROR_28_0_OR_NEWER;MIRROR_29_0_OR_NEWER;MIRROR_30_0_OR_NEWER;MIRROR_30_5_2_OR_NEWER;MIRROR_32_1_2_OR_NEWER;MIRROR_32_1_4_OR_NEWER;MIRROR_35_0_OR_NEWER;MIRROR_35_1_OR_NEWER;MIRROR_37_0_OR_NEWER;MIRROR_38_0_OR_NEWER;MIRROR_39_0_OR_NEWER;MIRROR_40_0_OR_NEWER;IGNORANCE;IGNORANCE_1;IGNORANCE_1_4 13: MIRROR;MIRROR_17_0_OR_NEWER;MIRROR_18_0_OR_NEWER;MIRROR_24_0_OR_NEWER;MIRROR_26_0_OR_NEWER;MIRROR_27_0_OR_NEWER;MIRROR_28_0_OR_NEWER;MIRROR_29_0_OR_NEWER;MIRROR_30_0_OR_NEWER;MIRROR_30_5_2_OR_NEWER;MIRROR_32_1_2_OR_NEWER;MIRROR_32_1_4_OR_NEWER;MIRROR_35_0_OR_NEWER;MIRROR_35_1_OR_NEWER platformArchitecture: {} scriptingBackend:

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Μyqb~6>QDL)D5~7m!QF` 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-arm64.a.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-arm64.a.meta new file mode 100644 index 0000000..1504880 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-arm64.a.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: 1485de7d76884a64bac00df01454081e +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: ARM64 + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a new file mode 100644 index 0000000000000000000000000000000000000000..d8b77ba428e0ec356f1b6427f21cf758ae40cc83 GIT binary patch literal 145208 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 z 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 literal 0 HcmV?d00001 diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a.meta b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a.meta new file mode 100644 index 0000000..aa56177 --- /dev/null +++ b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-armv7.a.meta @@ -0,0 +1,80 @@ +fileFormatVersion: 2 +guid: fa239cb4c47fc9447816815f80667fea +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + : Any + second: + enabled: 0 + settings: + Exclude Android: 1 + Exclude Editor: 1 + Exclude Linux64: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 + Exclude iOS: 0 + - first: + Android: Android + second: + enabled: 0 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 0 + settings: {} + - first: + Editor: Editor + second: + enabled: 0 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Standalone: Linux64 + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: OSXUniversal + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CPU: ARMv7 + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a b/UnityProject/Assets/Mirror/Runtime/Transport/Ignorance/Plugins/iOS/libenet-release-simulator64.a new file mode 100644 index 0000000000000000000000000000000000000000..e6051c3a94211cce891da52a0cb1d35fc03b4a60 GIT binary patch literal 167208 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