From 813244027644fbc2a0241e049f88905eb1692f68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jurczyk?= Date: Sat, 1 Aug 2020 19:47:53 +0200 Subject: [PATCH 1/3] LiteNetLib update, unity version update --- .../LiteNetLib/ConnectionRequest.cs | 82 +- .../LiteNetLib/INetEventListener.cs | 3 +- .../Dependencies/LiteNetLib/Layers.meta | 8 + .../LiteNetLib/Layers/Crc32cLayer.cs | 36 + .../Crc32cLayer.cs.meta} | 2 +- .../LiteNetLib/Layers/PacketLayerBase.cs | 15 + .../LiteNetLib/Layers/PacketLayerBase.cs.meta | 11 + .../LiteNetLib/Layers/XorEncryptLayer.cs | 59 ++ .../LiteNetLib/Layers/XorEncryptLayer.cs.meta | 11 + .../Dependencies/LiteNetLib/NetConstants.cs | 2 +- .../Dependencies/LiteNetLib/NetManager.cs | 479 +++++++---- .../Dependencies/LiteNetLib/NetPacket.cs | 18 +- .../Dependencies/LiteNetLib/NetPacketPool.cs | 53 +- .../Dependencies/LiteNetLib/NetPeer.cs | 243 ++++-- .../Dependencies/LiteNetLib/NetSocket.cs | 187 +++- .../Dependencies/LiteNetLib/NetUtils.cs | 2 +- .../LiteNetLib/ReliableChannel.cs | 23 +- .../LiteNetLib/SequencedChannel.cs | 24 +- .../Dependencies/LiteNetLib/SimpleChannel.cs | 28 - .../Dependencies/LiteNetLib/Utils/CRC32C.cs | 102 +++ .../LiteNetLib/Utils/CRC32C.cs.meta | 11 + .../LiteNetLib/Utils/NetDataReader.cs | 54 +- .../LiteNetLib/Utils/NetDataWriter.cs | 75 +- .../LiteNetLib/Utils/NetPacketProcessor.cs | 15 +- .../LiteNetLib/Utils/NetSerializer.cs | 800 +++++++++--------- .../LiteNetLib/Utils/NtpPacket.cs | 4 +- .../LiteNetLib/Utils/NtpRequest.cs | 2 +- .../LiteNetLib4MirrorTransport.cs | 2 +- .../Editor/Weaver/CompilationFinishedHook.cs | 2 +- LiteNetLib4Mirror/Packages/manifest.json | 15 +- .../ProjectSettings/EditorSettings.asset | 16 +- .../ProjectSettings/ProjectSettings.asset | 106 ++- .../ProjectSettings/ProjectVersion.txt | 3 +- .../ProjectSettings/XRSettings.asset | 10 + 34 files changed, 1530 insertions(+), 973 deletions(-) create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers.meta create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs rename LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/{SimpleChannel.cs.meta => Layers/Crc32cLayer.cs.meta} (83%) create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs create mode 100644 LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs.meta create mode 100644 LiteNetLib4Mirror/ProjectSettings/XRSettings.asset diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ConnectionRequest.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ConnectionRequest.cs index 8bdbc7d..2ae99e3 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ConnectionRequest.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ConnectionRequest.cs @@ -14,45 +14,49 @@ internal enum ConnectionRequestResult { None, Accept, - Reject - } - - internal interface IConnectionRequestListener - { - void OnConnectionSolved(ConnectionRequest request, byte[] rejectData, int start, int length); + Reject, + RejectForce } public class ConnectionRequest { - private readonly IConnectionRequestListener _listener; + private readonly NetManager _listener; private int _used; - public IPEndPoint RemoteEndPoint { get { return Peer.EndPoint; } } public readonly NetDataReader Data; public ConnectionRequestType Type { get; private set; } internal ConnectionRequestResult Result { get; private set; } - internal readonly long ConnectionId; - internal readonly byte ConnectionNumber; - internal readonly NetPeer Peer; + internal long ConnectionTime; + internal byte ConnectionNumber; + public readonly IPEndPoint RemoteEndPoint; private bool TryActivate() { return Interlocked.CompareExchange(ref _used, 1, 0) == 0; } + internal void UpdateRequest(NetConnectRequestPacket connRequest) + { + if (connRequest.ConnectionTime >= ConnectionTime) + { + ConnectionTime = connRequest.ConnectionTime; + ConnectionNumber = connRequest.ConnectionNumber; + } + } + internal ConnectionRequest( long connectionId, byte connectionNumber, ConnectionRequestType type, NetDataReader netDataReader, - NetPeer peer, - IConnectionRequestListener listener) + IPEndPoint endPoint, + NetManager listener) { - ConnectionId = connectionId; + ConnectionTime = connectionId; ConnectionNumber = connectionNumber; Type = type; - Peer = peer; + RemoteEndPoint = endPoint; Data = netDataReader; _listener = listener; } @@ -64,16 +68,15 @@ public NetPeer AcceptIfKey(string key) try { if (Data.GetString() == key) - { Result = ConnectionRequestResult.Accept; - _listener.OnConnectionSolved(this, null, 0, 0); - return Peer; - } } catch { NetDebug.WriteError("[AC] Invalid incoming data"); } + if (Result == ConnectionRequestResult.Accept) + return _listener.OnConnectionSolved(this, null, 0, 0); + Result = ConnectionRequestResult.Reject; _listener.OnConnectionSolved(this, null, 0, 0); return null; @@ -88,31 +91,56 @@ public NetPeer Accept() if (!TryActivate()) return null; Result = ConnectionRequestResult.Accept; - _listener.OnConnectionSolved(this, null, 0, 0); - return Peer; + return _listener.OnConnectionSolved(this, null, 0, 0); } - - public void Reject(byte[] rejectData, int start, int length) + + public void Reject(byte[] rejectData, int start, int length, bool force) { if (!TryActivate()) return; - Result = ConnectionRequestResult.Reject; + Result = force ? ConnectionRequestResult.RejectForce : ConnectionRequestResult.Reject; _listener.OnConnectionSolved(this, rejectData, start, length); } + public void Reject(byte[] rejectData, int start, int length) + { + Reject(rejectData, start, length, false); + } + + + public void RejectForce(byte[] rejectData, int start, int length) + { + Reject(rejectData, start, length, true); + } + + public void RejectForce() + { + Reject(null, 0, 0, true); + } + + public void RejectForce(byte[] rejectData) + { + Reject(rejectData, 0, rejectData.Length, true); + } + + public void RejectForce(NetDataWriter rejectData) + { + Reject(rejectData.Data, 0, rejectData.Length, true); + } + public void Reject() { - Reject(null, 0, 0); + Reject(null, 0, 0, false); } public void Reject(byte[] rejectData) { - Reject(rejectData, 0, rejectData.Length); + Reject(rejectData, 0, rejectData.Length, false); } public void Reject(NetDataWriter rejectData) { - Reject(rejectData.Data, 0, rejectData.Length); + Reject(rejectData.Data, 0, rejectData.Length, false); } } } diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/INetEventListener.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/INetEventListener.cs index 1ebe5b0..e793127 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/INetEventListener.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/INetEventListener.cs @@ -25,7 +25,8 @@ public enum DisconnectReason DisconnectPeerCalled, ConnectionRejected, InvalidProtocol, - UnknownHost + UnknownHost, + Reconnect } /// diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers.meta b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers.meta new file mode 100644 index 0000000..fe3d455 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: edd8ad3518523b34688804a997e701da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs new file mode 100644 index 0000000..716c4b5 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs @@ -0,0 +1,36 @@ +using LiteNetLib.Utils; +using System; + +namespace LiteNetLib.Layers +{ + public sealed class Crc32cLayer : PacketLayerBase + { + public Crc32cLayer() : base(CRC32C.ChecksumSize) + { + + } + + public override void ProcessInboundPacket(ref byte[] data, ref int length) + { + if (length < NetConstants.HeaderSize + CRC32C.ChecksumSize) + { + NetDebug.WriteError("[NM] DataReceived size: bad!"); + return; + } + + int checksumPoint = length - CRC32C.ChecksumSize; + if (CRC32C.Compute(data, 0, checksumPoint) != BitConverter.ToUInt32(data, checksumPoint)) + { + NetDebug.Write("[NM] DataReceived checksum: bad!"); + return; + } + length -= CRC32C.ChecksumSize; + } + + public override void ProcessOutBoundPacket(ref byte[] data, ref int offset, ref int length) + { + FastBitConverter.GetBytes(data, length, CRC32C.Compute(data, offset, length)); + length += CRC32C.ChecksumSize; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs.meta b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs.meta similarity index 83% rename from LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs.meta rename to LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs.meta index c181c7d..4f9abaa 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs.meta +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/Crc32cLayer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cac7ecba35f9ec441897271b7f6db8e0 +guid: cbf352100f996cd4a989cfa47f660ded MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs new file mode 100644 index 0000000..264a418 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs @@ -0,0 +1,15 @@ +namespace LiteNetLib.Layers +{ + public abstract class PacketLayerBase + { + public readonly int ExtraPacketSizeForLayer; + + protected PacketLayerBase(int extraPacketSizeForLayer) + { + ExtraPacketSizeForLayer = extraPacketSizeForLayer; + } + + public abstract void ProcessInboundPacket(ref byte[] data, ref int length); + public abstract void ProcessOutBoundPacket(ref byte[] data, ref int offset, ref int length); + } +} diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs.meta b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs.meta new file mode 100644 index 0000000..9455e2e --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/PacketLayerBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0a34519fbc710e242bf64f27f1c7d6ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs new file mode 100644 index 0000000..a258694 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs @@ -0,0 +1,59 @@ +using System; +using System.Text; + +namespace LiteNetLib.Layers +{ + public class XorEncryptLayer : PacketLayerBase + { + private byte[] _byteKey; + + public XorEncryptLayer() : base(0) + { + + } + + public XorEncryptLayer(byte[] key) : this() + { + SetKey(key); + } + + public XorEncryptLayer(string key) : this() + { + SetKey(key); + } + + public void SetKey(string key) + { + _byteKey = Encoding.UTF8.GetBytes(key); + } + + public void SetKey(byte[] key) + { + if(_byteKey.Length != key.Length) + _byteKey = new byte[key.Length]; + Buffer.BlockCopy(key, 0, _byteKey, 0, key.Length); + } + + public override void ProcessInboundPacket(ref byte[] data, ref int length) + { + if (_byteKey == null) + return; + for (var i = 0; i < length; i++) + { + var offset = i % _byteKey.Length; + data[i] = (byte)(data[i] ^ _byteKey[offset]); + } + } + + public override void ProcessOutBoundPacket(ref byte[] data, ref int offset, ref int length) + { + if (_byteKey == null) + return; + var cur = offset; + for (var i = 0; i < length; i++, cur++) + { + data[cur] = (byte)(data[cur] ^ _byteKey[i % _byteKey.Length]); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs.meta b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs.meta new file mode 100644 index 0000000..d3f19e9 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Layers/XorEncryptLayer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 041fb6002d777ee409062bf5035189e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetConstants.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetConstants.cs index 81a4db4..c888934 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetConstants.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetConstants.cs @@ -44,7 +44,7 @@ public static class NetConstants public const int HeaderSize = 1; public const int ChanneledHeaderSize = 4; public const int FragmentHeaderSize = 6; - public const int FragmentTotalSize = ChanneledHeaderSize + FragmentHeaderSize; + public const int FragmentedHeaderTotalSize = ChanneledHeaderSize + FragmentHeaderSize; public const ushort MaxSequence = 32768; public const ushort HalfMaxSequence = MaxSequence / 2; diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetManager.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetManager.cs index b2049b9..9ec2409 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetManager.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetManager.cs @@ -1,7 +1,3 @@ -#if DEBUG -#define STATS_ENABLED -#endif - using System; using System.Collections; using System.Collections.Generic; @@ -9,11 +5,12 @@ using System.Net; using System.Net.Sockets; using System.Threading; +using LiteNetLib.Layers; using LiteNetLib.Utils; namespace LiteNetLib { - public class NetPacketReader : NetDataReader + public sealed class NetPacketReader : NetDataReader { private NetPacket _packet; private readonly NetManager _manager; @@ -33,7 +30,7 @@ internal void SetSource(NetPacket packet) SetSource(packet.RawData, packet.GetHeaderSize(), packet.Size); } - public void Recycle() + internal void RecycleInternal() { Clear(); if (_packet != null) @@ -41,6 +38,13 @@ public void Recycle() _packet = null; _manager.RecycleEvent(_evt); } + + public void Recycle() + { + if(_manager.AutoRecycle) + throw new Exception("Recycle called with AutoRecycle enabled"); + RecycleInternal(); + } } internal sealed class NetEvent @@ -78,13 +82,13 @@ public NetEvent(NetManager manager) /// /// Main class for all network operations. Can be used as client and/or server. /// - public class NetManager : INetSocketListener, IConnectionRequestListener, IEnumerable + public class NetManager : INetSocketListener, IEnumerable { private class IPEndPointComparer : IEqualityComparer { public bool Equals(IPEndPoint x, IPEndPoint y) { - return x.Equals(y); + return x.Address.Equals(y.Address) && x.Port == y.Port; } public int GetHashCode(IPEndPoint obj) @@ -152,10 +156,13 @@ private struct IncomingData private readonly IDeliveryEventListener _deliveryEventListener; private readonly Dictionary _peersDict; + private readonly Dictionary _requestsDict; private readonly ReaderWriterLockSlim _peersLock; private volatile NetPeer _headPeer; private volatile int _connectedPeersCount; private readonly List _connectedPeerListCache; + private NetPeer[] _peersArray; + internal readonly PacketLayerBase _extraPacketLayer; private int _lastPeerId; private readonly Queue _peerIds; private byte _channelsCount = 1; @@ -249,6 +256,11 @@ private struct IncomingData /// public readonly NetStatistics Statistics; + /// + /// Toggles the collection of network statistics for the instance and all known peers + /// + public bool EnableStatistics = false; + //modules /// /// NatPunchModule for NAT hole punching operations @@ -258,7 +270,7 @@ private struct IncomingData /// /// Returns true if socket listening and update thread is running /// - public bool IsRunning { get; private set; } + public bool IsRunning { get { return _socket.IsRunning; } } /// /// Local EndPoint (host and port) @@ -291,7 +303,7 @@ public byte ChannelsCount get { return _channelsCount; } set { - if(value < 1 || value > 64) + if (value < 1 || value > 64) throw new ArgumentException("Channels count must be between 1 and 64"); _channelsCount = value; } @@ -304,20 +316,25 @@ public List ConnectedPeerList { get { - _connectedPeerListCache.Clear(); - for(var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) - { - if ((netPeer.ConnectionState & ConnectionState.Connected) != 0) - _connectedPeerListCache.Add(netPeer); - } + GetPeersNonAlloc(_connectedPeerListCache, ConnectionState.Connected); return _connectedPeerListCache; } } + /// + /// Gets peer by peer id + /// + /// id of peer + /// Peer if peer with id exist, otherwise null + public NetPeer GetPeerById(int id) + { + return _peersArray[id]; + } + /// /// Returns connected peers count /// - public int PeersCount { get { return _connectedPeersCount; } } + public int ConnectedPeersCount { get { return _connectedPeersCount; } } private bool TryGetPeer(IPEndPoint endPoint, out NetPeer peer) { @@ -327,19 +344,8 @@ private bool TryGetPeer(IPEndPoint endPoint, out NetPeer peer) return result; } - private NetPeer TryAddPeer(NetPeer peer) + private void AddPeer(NetPeer peer) { - _peersLock.EnterUpgradeableReadLock(); - NetPeer existingPeer; - if (_peersDict.TryGetValue(peer.EndPoint, out existingPeer)) - { - //return back unused peerId - lock (_peerIds) - _peerIds.Enqueue(peer.Id); - - _peersLock.ExitUpgradeableReadLock(); - return existingPeer; - } _peersLock.EnterWriteLock(); if (_headPeer != null) { @@ -348,9 +354,15 @@ private NetPeer TryAddPeer(NetPeer peer) } _headPeer = peer; _peersDict.Add(peer.EndPoint, peer); + if (peer.Id >= _peersArray.Length) + { + int newSize = _peersArray.Length * 2; + while (peer.Id >= newSize) + newSize *= 2; + Array.Resize(ref _peersArray, newSize); + } + _peersArray[peer.Id] = peer; _peersLock.ExitWriteLock(); - _peersLock.ExitUpgradeableReadLock(); - return peer; } private void RemovePeer(NetPeer peer) @@ -373,6 +385,7 @@ private void RemovePeerInternal(NetPeer peer) peer.NextPeer.PrevPeer = peer.PrevPeer; peer.PrevPeer = null; + _peersArray[peer.Id] = null; lock (_peerIds) _peerIds.Enqueue(peer.Id); } @@ -381,7 +394,8 @@ private void RemovePeerInternal(NetPeer peer) /// NetManager constructor /// /// Network events listener (also can implement IDeliveryEventListener) - public NetManager(INetEventListener listener) + /// Extra processing of packages, like CRC checksum or encryption. All connected NetManagers must have same layer. + public NetManager(INetEventListener listener, PacketLayerBase extraPacketLayer = null) { _socket = new NetSocket(this); _netEventListener = listener; @@ -393,8 +407,11 @@ public NetManager(INetEventListener listener) Statistics = new NetStatistics(); _connectedPeerListCache = new List(); _peersDict = new Dictionary(new IPEndPointComparer()); + _requestsDict = new Dictionary(new IPEndPointComparer()); _peersLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); _peerIds = new Queue(); + _peersArray = new NetPeer[32]; + _extraPacketLayer = extraPacketLayer; } internal void ConnectionLatencyUpdated(NetPeer fromPeer, int latency) @@ -422,11 +439,25 @@ internal int SendRaw(NetPacket packet, IPEndPoint remoteEndPoint) internal int SendRaw(byte[] message, int start, int length, IPEndPoint remoteEndPoint) { - if (!IsRunning) + if (!_socket.IsRunning) return 0; SocketError errorCode = 0; - int result = _socket.SendTo(message, start, length, remoteEndPoint, ref errorCode); + int result; + if (_extraPacketLayer != null) + { + var expandedPacket = NetPacketPool.GetPacket(length + _extraPacketLayer.ExtraPacketSizeForLayer); + Buffer.BlockCopy(message, start, expandedPacket.RawData, 0, length); + int newStart = 0; + _extraPacketLayer.ProcessOutBoundPacket(ref expandedPacket.RawData, ref newStart, ref length); + result = _socket.SendTo(expandedPacket.RawData, newStart, length, remoteEndPoint, ref errorCode); + NetPacketPool.Recycle(expandedPacket); + } + else + { + result = _socket.SendTo(message, start, length, remoteEndPoint, ref errorCode); + } + NetPeer fromPeer; switch (errorCode) { @@ -443,17 +474,16 @@ internal int SendRaw(byte[] message, int start, int length, IPEndPoint remoteEnd DisconnectPeerForce(fromPeer, DisconnectReason.NetworkUnreachable, errorCode, null); CreateEvent(NetEvent.EType.Error, remoteEndPoint: remoteEndPoint, errorCode: errorCode); return -1; - case SocketError.ConnectionReset: //connection reset (connection closed) - if (TryGetPeer(remoteEndPoint, out fromPeer)) - DisconnectPeerForce(fromPeer, DisconnectReason.RemoteConnectionClose, errorCode, null); - return -1; } if (result <= 0) return 0; -#if STATS_ENABLED - Statistics.PacketsSent++; - Statistics.BytesSent += (uint)length; -#endif + + if (EnableStatistics) + { + Statistics.PacketsSent++; + Statistics.BytesSent += (uint)length; + } + return result; } @@ -475,10 +505,10 @@ private void DisconnectPeer( int count, NetPacket eventData) { - bool wasConnected = peer.ConnectionState == ConnectionState.Connected; - if (!peer.Shutdown(data, start, count, force)) + var shutdownResult = peer.Shutdown(data, start, count, force); + if (shutdownResult == ShutdownResult.None) return; - if(wasConnected) + if(shutdownResult == ShutdownResult.WasConnected) _connectedPeersCount--; CreateEvent( NetEvent.EType.Disconnect, @@ -500,7 +530,7 @@ private void CreateEvent( NetPacket readerSource = null, object userData = null) { - NetEvent evt = null; + NetEvent evt; bool unsyncEvent = UnsyncedEvents; if (type == NetEvent.EType.Connect) @@ -510,11 +540,8 @@ private void CreateEvent( lock (_netEventsPool) { - if (_netEventsPool.Count > 0) - evt = _netEventsPool.Pop(); + evt = _netEventsPool.Count > 0 ? _netEventsPool.Pop() : new NetEvent(this); } - if(evt == null) - evt = new NetEvent(this); evt.Type = type; evt.DataReader.SetSource(readerSource); evt.Peer = peer; @@ -581,7 +608,7 @@ private void ProcessEvent(NetEvent evt) if (emptyData) RecycleEvent(evt); else if (AutoRecycle) - evt.DataReader.Recycle(); + evt.DataReader.RecycleInternal(); } internal void RecycleEvent(NetEvent evt) @@ -601,7 +628,7 @@ private void UpdateLogic() var stopwatch = new Stopwatch(); stopwatch.Start(); - while (IsRunning) + while (_socket.IsRunning) { #if DEBUG if (SimulateLatency) @@ -623,13 +650,14 @@ private void UpdateLogic() } #endif -#if STATS_ENABLED ulong totalPacketLoss = 0; -#endif + int elapsed = (int)stopwatch.ElapsedMilliseconds; - if (elapsed <= 0) - elapsed = 1; - for(var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + elapsed = elapsed <= 0 ? 1 : elapsed; + stopwatch.Reset(); + stopwatch.Start(); + + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) { if (netPeer.ConnectionState == ConnectionState.Disconnected && netPeer.TimeSinceLastPacket > DisconnectTimeout) { @@ -638,9 +666,11 @@ private void UpdateLogic() else { netPeer.Update(elapsed); -#if STATS_ENABLED - totalPacketLoss += netPeer.Statistics.PacketLoss; -#endif + + if (EnableStatistics) + { + totalPacketLoss += netPeer.Statistics.PacketLoss; + } } } if (peersToRemove.Count > 0) @@ -650,13 +680,14 @@ private void UpdateLogic() RemovePeerInternal(peersToRemove[i]); _peersLock.ExitWriteLock(); peersToRemove.Clear(); - } -#if STATS_ENABLED - Statistics.PacketLoss = totalPacketLoss; -#endif - int sleepTime = UpdateTime - (int)(stopwatch.ElapsedMilliseconds - elapsed); - stopwatch.Reset(); - stopwatch.Start(); + } + + if (EnableStatistics) + { + Statistics.PacketLoss = totalPacketLoss; + } + + int sleepTime = UpdateTime - (int)stopwatch.ElapsedMilliseconds; if (sleepTime > 0) Thread.Sleep(sleepTime); } @@ -711,34 +742,62 @@ void INetSocketListener.OnMessageReceived(byte[] data, int length, SocketError e } } - void IConnectionRequestListener.OnConnectionSolved(ConnectionRequest request, byte[] rejectData, int start, int length) + internal NetPeer OnConnectionSolved(ConnectionRequest request, byte[] rejectData, int start, int length) { - if (request.Result == ConnectionRequestResult.Reject) + NetPeer netPeer = null; + + if (request.Result == ConnectionRequestResult.RejectForce) { - NetDebug.Write(NetLogLevel.Trace, "[NM] Peer connect reject."); - request.Peer.Reject(request.ConnectionId, request.ConnectionNumber, rejectData, start, length); + NetDebug.Write(NetLogLevel.Trace, "[NM] Peer connect reject force."); + if (rejectData != null && length > 0) + { + var shutdownPacket = NetPacketPool.GetWithProperty(PacketProperty.Disconnect, length); + shutdownPacket.ConnectionNumber = request.ConnectionNumber; + FastBitConverter.GetBytes(shutdownPacket.RawData, 1, request.ConnectionTime); + if (shutdownPacket.Size >= NetConstants.PossibleMtu[0]) + NetDebug.WriteError("[Peer] Disconnect additional data size more than MTU!"); + else + Buffer.BlockCopy(rejectData, start, shutdownPacket.RawData, 9, length); + SendRawAndRecycle(shutdownPacket, request.RemoteEndPoint); + } } else { - //Accept - request.Peer.Accept(request.ConnectionId, request.ConnectionNumber); - //TODO: sync - //Add event - CreateEvent(NetEvent.EType.Connect, request.Peer); - - NetDebug.Write(NetLogLevel.Trace, "[NM] Received peer connection Id: {0}, EP: {1}", - request.Peer.ConnectTime, request.Peer.EndPoint); + _peersLock.EnterUpgradeableReadLock(); + if (_peersDict.TryGetValue(request.RemoteEndPoint, out netPeer)) + { + //already have peer + _peersLock.ExitUpgradeableReadLock(); + } + else if (request.Result == ConnectionRequestResult.Reject) + { + netPeer = new NetPeer(this, request.RemoteEndPoint, GetNextPeerId()); + netPeer.Reject(request.ConnectionTime, request.ConnectionNumber, rejectData, start, length); + AddPeer(netPeer); + _peersLock.ExitUpgradeableReadLock(); + NetDebug.Write(NetLogLevel.Trace, "[NM] Peer connect reject."); + } + else //Accept + { + netPeer = new NetPeer(this, request.RemoteEndPoint, GetNextPeerId(), request.ConnectionTime, request.ConnectionNumber); + AddPeer(netPeer); + _peersLock.ExitUpgradeableReadLock(); + CreateEvent(NetEvent.EType.Connect, netPeer); + NetDebug.Write(NetLogLevel.Trace, "[NM] Received peer connection Id: {0}, EP: {1}", + netPeer.ConnectTime, netPeer.EndPoint); + } } + + lock(_requestsDict) + _requestsDict.Remove(request.RemoteEndPoint); + + return netPeer; } private int GetNextPeerId() { lock (_peerIds) - { - if (_peerIds.Count == 0) - return _lastPeerId++; - return _peerIds.Dequeue(); - } + return _peerIds.Count == 0 ? _lastPeerId++ : _peerIds.Dequeue(); } private void ProcessConnectRequest( @@ -747,16 +806,22 @@ private void ProcessConnectRequest( NetConnectRequestPacket connRequest) { byte connectionNumber = connRequest.ConnectionNumber; + ConnectionRequest req; //if we have peer if (netPeer != null) { - NetDebug.Write("ConnectRequest LastId: {0}, NewId: {1}, EP: {2}", netPeer.ConnectTime, connRequest.ConnectionTime, remoteEndPoint); var processResult = netPeer.ProcessConnectRequest(connRequest); + NetDebug.Write("ConnectRequest LastId: {0}, NewId: {1}, EP: {2}, Result: {3}", + netPeer.ConnectTime, + connRequest.ConnectionTime, + remoteEndPoint, + processResult); + switch (processResult) { case ConnectRequestResult.Reconnection: - DisconnectPeerForce(netPeer, DisconnectReason.RemoteConnectionClose, 0, null); + DisconnectPeerForce(netPeer, DisconnectReason.Reconnect, 0, null); RemovePeer(netPeer); //go to new connection break; @@ -765,16 +830,18 @@ private void ProcessConnectRequest( //go to new connection break; case ConnectRequestResult.P2PConnection: - CreateEvent( - NetEvent.EType.ConnectionRequest, - connectionRequest: new ConnectionRequest( + lock (_requestsDict) + { + req = new ConnectionRequest( netPeer.ConnectTime, connectionNumber, ConnectionRequestType.PeerToPeer, connRequest.Data, - netPeer, - this) - ); + remoteEndPoint, + this); + _requestsDict.Add(remoteEndPoint, req); + } + CreateEvent(NetEvent.EType.ConnectionRequest, connectionRequest: req); return; default: //no operations needed @@ -789,29 +856,44 @@ private void ProcessConnectRequest( { NetDebug.Write("ConnectRequest Id: {0}, EP: {1}", connRequest.ConnectionTime, remoteEndPoint); } - //Add new peer and craete ConnectRequest event - NetDebug.Write("[NM] Creating request event: " + connRequest.ConnectionTime); - netPeer = new NetPeer(this, remoteEndPoint, GetNextPeerId()); - if (TryAddPeer(netPeer) == netPeer) + + lock (_requestsDict) { - CreateEvent(NetEvent.EType.ConnectionRequest, connectionRequest: new ConnectionRequest( + if (_requestsDict.TryGetValue(remoteEndPoint, out req)) + { + req.UpdateRequest(connRequest); + return; + } + req = new ConnectionRequest( connRequest.ConnectionTime, connectionNumber, ConnectionRequestType.Incoming, connRequest.Data, - netPeer, - this)); + remoteEndPoint, + this); + _requestsDict.Add(remoteEndPoint, req); } + NetDebug.Write("[NM] Creating request event: " + connRequest.ConnectionTime); + CreateEvent(NetEvent.EType.ConnectionRequest, connectionRequest: req); } private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEndPoint) { -#if STATS_ENABLED - Statistics.PacketsReceived++; - Statistics.BytesReceived += (uint) count; -#endif + if (EnableStatistics) + { + Statistics.PacketsReceived++; + Statistics.BytesReceived += (uint)count; + } + + if (_extraPacketLayer != null) + { + _extraPacketLayer.ProcessInboundPacket(ref reusableBuffer, ref count); + if (count == 0) + return; + } + //Try read packet - NetPacket packet = NetPacketPool.GetPacket(count, false); + NetPacket packet = NetPacketPool.GetPacket(count); if (!packet.FromBytes(reusableBuffer, 0, count)) { NetPacketPool.Recycle(packet); @@ -819,13 +901,33 @@ private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEnd return; } - //get peer - //Check normal packets NetPeer netPeer; - //old packets protection - bool peerFound = TryGetPeer(remoteEndPoint, out netPeer); - //Check unconnected + //special case connect request + if (packet.Property == PacketProperty.ConnectRequest) + { + if (NetConnectRequestPacket.GetProtocolId(packet) != NetConstants.ProtocolId) + { + SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.InvalidProtocol), remoteEndPoint); + return; + } + var connRequest = NetConnectRequestPacket.FromData(packet); + if (connRequest != null) + { + _peersLock.EnterUpgradeableReadLock(); + _peersDict.TryGetValue(remoteEndPoint, out netPeer); + //here new peer can be created + ProcessConnectRequest(remoteEndPoint, netPeer, connRequest); + _peersLock.ExitUpgradeableReadLock(); + } + return; + } + + _peersLock.EnterReadLock(); + bool peerFound = _peersDict.TryGetValue(remoteEndPoint, out netPeer); + _peersLock.ExitReadLock(); + + //Check normal packets switch (packet.Property) { case PacketProperty.PeerNotFound: @@ -840,12 +942,12 @@ private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEnd p.RawData[1] = 0; FastBitConverter.GetBytes(p.RawData, 2, netPeer.ConnectTime); SendRawAndRecycle(p, remoteEndPoint); - NetDebug.Write("PeerNotFound sending connectId: {0}", netPeer.ConnectTime); + NetDebug.Write("PeerNotFound sending connectTime: {0}", netPeer.ConnectTime); } else if (packet.Size == 10 && packet.RawData[1] == 1 && BitConverter.ToInt64(packet.RawData, 2) == netPeer.ConnectTime) { //second reply - NetDebug.Write("PeerNotFound received our connectId: {0}", netPeer.ConnectTime); + NetDebug.Write("PeerNotFound received our connectTime: {0}", netPeer.ConnectTime); DisconnectPeerForce(netPeer, DisconnectReason.RemoteConnectionClose, 0, null); } } @@ -875,7 +977,7 @@ private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEnd NatPunchModule.ProcessMessage(remoteEndPoint, packet); break; case PacketProperty.InvalidProtocol: - if (peerFound && netPeer.ConnectionState == ConnectionState.Outcoming) + if (peerFound && netPeer.ConnectionState == ConnectionState.Outgoing) DisconnectPeerForce(netPeer, DisconnectReason.InvalidProtocol, 0, null); break; case PacketProperty.Disconnect: @@ -899,7 +1001,7 @@ private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEnd NetPacketPool.Recycle(packet); } //Send shutdown - SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.ShutdownOk, 0), remoteEndPoint); + SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.ShutdownOk), remoteEndPoint); break; case PacketProperty.ConnectAccept: @@ -907,31 +1009,35 @@ private void DataReceived(byte[] reusableBuffer, int count, IPEndPoint remoteEnd if (connAccept != null && peerFound && netPeer.ProcessConnectAccept(connAccept)) CreateEvent(NetEvent.EType.Connect, netPeer); break; - case PacketProperty.ConnectRequest: - if (NetConnectRequestPacket.GetProtocolId(packet) != NetConstants.ProtocolId) - { - SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.InvalidProtocol, 0), remoteEndPoint); - break; - } - var connRequest = NetConnectRequestPacket.FromData(packet); - if (connRequest != null) - ProcessConnectRequest(remoteEndPoint, netPeer, connRequest); - break; default: if(peerFound) netPeer.ProcessPacket(packet); else - SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.PeerNotFound, 0), remoteEndPoint); + SendRawAndRecycle(NetPacketPool.GetWithProperty(PacketProperty.PeerNotFound), remoteEndPoint); break; } } - internal void ReceiveFromPeer(NetPacket packet, NetPeer fromPeer) + internal void CreateReceiveEvent(NetPacket packet, DeliveryMethod method, NetPeer fromPeer) { - var deliveryMethod = packet.Property == PacketProperty.Channeled - ? (DeliveryMethod) (packet.ChannelId % 4) - : DeliveryMethod.Unreliable; - CreateEvent(NetEvent.EType.Receive, fromPeer, deliveryMethod: deliveryMethod, readerSource: packet); + NetEvent evt; + lock (_netEventsPool) + { + evt = _netEventsPool.Count > 0 ? _netEventsPool.Pop() : new NetEvent(this); + } + evt.Type = NetEvent.EType.Receive; + evt.DataReader.SetSource(packet); + evt.Peer = fromPeer; + evt.DeliveryMethod = method; + if (UnsyncedEvents) + { + ProcessEvent(evt); + } + else + { + lock (_netEventsQueue) + _netEventsQueue.Enqueue(evt); + } } /// @@ -998,8 +1104,16 @@ public void SendToAll(byte[] data, byte channelNumber, DeliveryMethod options) /// Send options (reliable, unreliable, etc.) public void SendToAll(byte[] data, int start, int length, byte channelNumber, DeliveryMethod options) { - for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) - netPeer.Send(data, start, length, channelNumber, options); + try + { + _peersLock.EnterReadLock(); + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + netPeer.Send(data, start, length, channelNumber, options); + } + finally + { + _peersLock.ExitReadLock(); + } } /// @@ -1073,10 +1187,18 @@ public void SendToAll(byte[] data, byte channelNumber, DeliveryMethod options, N /// Excluded peer public void SendToAll(byte[] data, int start, int length, byte channelNumber, DeliveryMethod options, NetPeer excludePeer) { - for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + try { - if (netPeer != excludePeer) - netPeer.Send(data, start, length, channelNumber, options); + _peersLock.EnterReadLock(); + for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) + { + if (netPeer != excludePeer) + netPeer.Send(data, start, length, channelNumber, options); + } + } + finally + { + _peersLock.ExitReadLock(); } } @@ -1096,11 +1218,8 @@ public bool Start() /// port to listen public bool Start(IPAddress addressIPv4, IPAddress addressIPv6, int port) { - if (IsRunning) - return false; if (!_socket.Bind(addressIPv4, addressIPv6, port, ReuseAddress, IPv6Enabled)) return false; - IsRunning = true; _logicThread = new Thread(UpdateLogic) { Name = "LogicThread", IsBackground = true }; _logicThread.Start(); return true; @@ -1160,11 +1279,9 @@ public bool SendUnconnectedMessage(NetDataWriter writer, IPEndPoint remoteEndPoi /// Operation result public bool SendUnconnectedMessage(byte[] message, int start, int length, IPEndPoint remoteEndPoint) { - if (!IsRunning) - return false; - var packet = NetPacketPool.GetWithData(PacketProperty.UnconnectedMessage, message, start, length); - bool result = SendRawAndRecycle(packet, remoteEndPoint) > 0; - return result; + //No need for CRC here, SendRaw does that + NetPacket packet = NetPacketPool.GetWithData(PacketProperty.UnconnectedMessage, message, start, length); + return SendRawAndRecycle(packet, remoteEndPoint) > 0; } public bool SendBroadcast(NetDataWriter writer, int port) @@ -1179,9 +1296,22 @@ public bool SendBroadcast(byte[] data, int port) public bool SendBroadcast(byte[] data, int start, int length, int port) { - if (!IsRunning) - return false; - var packet = NetPacketPool.GetWithData(PacketProperty.Broadcast, data, start, length); + NetPacket packet; + if (_extraPacketLayer != null) + { + var headerSize = NetPacket.GetHeaderSize(PacketProperty.Broadcast); + packet = NetPacketPool.GetPacket(headerSize + length + _extraPacketLayer.ExtraPacketSizeForLayer); + packet.Property = PacketProperty.Broadcast; + Buffer.BlockCopy(data, start, packet.RawData, headerSize, length); + var checksumComputeStart = 0; + int preCrcLength = length + headerSize; + _extraPacketLayer.ProcessOutBoundPacket(ref packet.RawData, ref checksumComputeStart, ref preCrcLength); + } + else + { + packet = NetPacketPool.GetWithData(PacketProperty.Broadcast, data, start, length); + } + bool result = _socket.SendBroadcast(packet.RawData, 0, packet.Size, port); NetPacketPool.Recycle(packet); return result; @@ -1270,32 +1400,42 @@ public NetPeer Connect(IPEndPoint target, string key) /// /// Server end point (ip and port) /// Additional data for remote peer - /// New NetPeer if new connection, Old NetPeer if already connected + /// New NetPeer if new connection, Old NetPeer if already connected, null peer if there is ConnectionRequest awaiting /// Manager is not running. Call public NetPeer Connect(IPEndPoint target, NetDataWriter connectionData) { - if (!IsRunning) + if (!_socket.IsRunning) throw new InvalidOperationException("Client is not running"); NetPeer peer; byte connectionNumber = 0; - if (TryGetPeer(target, out peer)) + + if (_requestsDict.ContainsKey(target)) + return null; + + _peersLock.EnterUpgradeableReadLock(); + if (_peersDict.TryGetValue(target, out peer)) { switch (peer.ConnectionState) { //just return already connected peer case ConnectionState.Connected: - case ConnectionState.Outcoming: - case ConnectionState.Incoming: + case ConnectionState.Outgoing: + _peersLock.ExitUpgradeableReadLock(); return peer; } //else reconnect connectionNumber = (byte)((peer.ConnectionNum + 1) % NetConstants.MaxConnectionNumber); RemovePeer(peer); } + //Create reliable connection //And send connection request - return TryAddPeer(new NetPeer(this, target, GetNextPeerId(), connectionNumber, connectionData)); + peer = new NetPeer(this, target, GetNextPeerId(), connectionNumber, connectionData); + AddPeer(peer); + _peersLock.ExitUpgradeableReadLock(); + + return peer; } /// @@ -1312,7 +1452,7 @@ public void Stop() /// Send disconnect messages public void Stop(bool sendDisconnectMessages) { - if (!IsRunning) + if (!_socket.IsRunning) return; NetDebug.Write("[NM] Stop"); @@ -1320,19 +1460,19 @@ public void Stop(bool sendDisconnectMessages) for(var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) netPeer.Shutdown(null, 0, 0, !sendDisconnectMessages); - //For working send - IsRunning = false; - //Stop + _socket.Close(false); _logicThread.Join(); _logicThread = null; - _socket.Close(); //clear peers _peersLock.EnterWriteLock(); _headPeer = null; _peersDict.Clear(); + _peersArray = new NetPeer[32]; _peersLock.ExitWriteLock(); + lock(_peerIds) + _peerIds.Clear(); #if DEBUG lock (_pingSimulationList) _pingSimulationList.Clear(); @@ -1350,35 +1490,16 @@ public void Stop(bool sendDisconnectMessages) public int GetPeersCount(ConnectionState peerState) { int count = 0; + _peersLock.EnterReadLock(); for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) { if ((netPeer.ConnectionState & peerState) != 0) count++; } + _peersLock.ExitReadLock(); return count; } - /// - /// Get copy of current connected peers (slow! use GetPeersNonAlloc for best performance) - /// - /// Array with connected peers - [Obsolete("Use GetPeers(ConnectionState peerState)")] - public NetPeer[] GetPeers() - { - return GetPeers(ConnectionState.Connected | ConnectionState.Outcoming); - } - - /// - /// Get copy of current connected peers (slow! use GetPeersNonAlloc for best performance) - /// - /// Array with connected peers - public NetPeer[] GetPeers(ConnectionState peerState) - { - List peersList = new List(); - GetPeersNonAlloc(peersList, peerState); - return peersList.ToArray(); - } - /// /// Get copy of peers (without allocations) /// @@ -1387,11 +1508,13 @@ public NetPeer[] GetPeers(ConnectionState peerState) public void GetPeersNonAlloc(List peers, ConnectionState peerState) { peers.Clear(); + _peersLock.EnterReadLock(); for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) { if ((netPeer.ConnectionState & peerState) != 0) peers.Add(netPeer); } + _peersLock.ExitReadLock(); } /// @@ -1411,6 +1534,7 @@ public void DisconnectAll() public void DisconnectAll(byte[] data, int start, int count) { //Send disconnect packets + _peersLock.EnterReadLock(); for (var netPeer = _headPeer; netPeer != null; netPeer = netPeer.NextPeer) { DisconnectPeer( @@ -1423,6 +1547,7 @@ public void DisconnectAll(byte[] data, int start, int count) count, null); } + _peersLock.ExitReadLock(); } /// diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacket.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacket.cs index 9574f3e..190f4db 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacket.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacket.cs @@ -84,7 +84,7 @@ public ushort FragmentsTotal //Data public byte[] RawData; - public ushort Size; + public int Size; //Delivery public object UserData; @@ -92,7 +92,7 @@ public ushort FragmentsTotal public NetPacket(int size) { RawData = new byte[size]; - Size = (ushort)size; + Size = size; } public NetPacket(PacketProperty property, int size) @@ -100,19 +100,7 @@ public NetPacket(PacketProperty property, int size) size += GetHeaderSize(property); RawData = new byte[size]; Property = property; - Size = (ushort)size; - } - - public void Realloc(int toSize, bool clear) - { - Size = (ushort)toSize; - if (RawData.Length < toSize) - { - RawData = new byte[toSize]; - return; - } - if (clear) //clear not reallocated - Array.Clear(RawData, 0, toSize); + Size = size; } public static int GetHeaderSize(PacketProperty property) diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacketPool.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacketPool.cs index 57a3999..2f78845 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacketPool.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPacketPool.cs @@ -11,16 +11,33 @@ internal sealed class NetPacketPool public NetPacket GetWithData(PacketProperty property, byte[] data, int start, int length) { - var packet = GetWithProperty(property, length); - Buffer.BlockCopy(data, start, packet.RawData, NetPacket.GetHeaderSize(property), length); + int headerSize = NetPacket.GetHeaderSize(property); + NetPacket packet = GetPacket(length + headerSize); + packet.Property = property; + Buffer.BlockCopy(data, start, packet.RawData, headerSize, length); + return packet; + } + + //Get packet with size + public NetPacket GetWithProperty(PacketProperty property, int size) + { + NetPacket packet = GetPacket(size + NetPacket.GetHeaderSize(property)); + packet.Property = property; return packet; } - public NetPacket GetPacket(int size, bool clear) + public NetPacket GetWithProperty(PacketProperty property) + { + NetPacket packet = GetPacket(NetPacket.GetHeaderSize(property)); + packet.Property = property; + return packet; + } + + public NetPacket GetPacket(int size) { - NetPacket packet = null; if (size <= NetConstants.MaxPacketSize) { + NetPacket packet = null; _lock.EnterUpgradeableReadLock(); if (_count > 0) { @@ -31,27 +48,15 @@ public NetPacket GetPacket(int size, bool clear) _lock.ExitWriteLock(); } _lock.ExitUpgradeableReadLock(); + if (packet != null) + { + packet.Size = size; + if (packet.RawData.Length < size) + packet.RawData = new byte[size]; + return packet; + } } - if (packet == null) - { - //allocate new packet - packet = new NetPacket(size); - } - else - { - //reallocate packet data if packet not fits - packet.Realloc(size, clear); - } - return packet; - } - - //Get packet with size - public NetPacket GetWithProperty(PacketProperty property, int size) - { - size += NetPacket.GetHeaderSize(property); - NetPacket packet = GetPacket(size, true); - packet.Property = property; - return packet; + return new NetPacket(size); } public void Recycle(NetPacket packet) diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPeer.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPeer.cs index 2f13ac2..2218630 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPeer.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetPeer.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.Net; +using System.Threading; using LiteNetLib.Utils; namespace LiteNetLib @@ -15,12 +16,11 @@ namespace LiteNetLib [Flags] public enum ConnectionState : byte { - Incoming = 1 << 1, - Outcoming = 1 << 2, - Connected = 1 << 3, - ShutdownRequested = 1 << 4, - Disconnected = 1 << 5, - Any = Incoming | Outcoming | Connected | ShutdownRequested + Outgoing = 1 << 1, + Connected = 1 << 2, + ShutdownRequested = 1 << 3, + Disconnected = 1 << 4, + Any = Outgoing | Connected | ShutdownRequested } internal enum ConnectRequestResult @@ -38,6 +38,13 @@ internal enum DisconnectResult Disconnect } + internal enum ShutdownResult + { + None, + Success, + WasConnected + } + /// /// Network peer. Main purpose is sending messages to specific peer. /// @@ -76,12 +83,12 @@ private set } //Channels - private readonly SimpleChannel _unreliableChannel; + private readonly Queue _unreliableChannel; private readonly BaseChannel[] _channels; private BaseChannel _headChannel; //MTU - private int _mtu = NetConstants.PossibleMtu[0]; + private int _mtu; private int _mtuIdx; private bool _finishMtu; private int _mtuCheckTimer; @@ -119,7 +126,7 @@ private class IncomingFragments private readonly NetPacket _pingPacket; private readonly NetPacket _pongPacket; private readonly NetPacket _connectRequestPacket; - private NetPacket _connectAcceptPacket; + private readonly NetPacket _connectAcceptPacket; /// /// Peer ip address and port @@ -197,20 +204,42 @@ internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id) Statistics = new NetStatistics(); _packetPool = netManager.NetPacketPool; NetManager = netManager; + SetMtu(0); + EndPoint = remoteEndPoint; - _connectionState = ConnectionState.Incoming; + _connectionState = ConnectionState.Connected; _mergeData = new NetPacket(PacketProperty.Merged, NetConstants.MaxPacketSize); _pongPacket = new NetPacket(PacketProperty.Pong, 0); _pingPacket = new NetPacket(PacketProperty.Ping, 0) {Sequence = 1}; - _unreliableChannel = new SimpleChannel(this); - _headChannel = _unreliableChannel; + _unreliableChannel = new Queue(64); + _headChannel = null; _holdedFragments = new Dictionary(); _deliveredFramgnets = new Dictionary(); _channels = new BaseChannel[netManager.ChannelsCount * 4]; } + private void SetMtu(int mtuIdx) + { + int extraLayerSpace = NetManager._extraPacketLayer != null ? NetManager._extraPacketLayer.ExtraPacketSizeForLayer : 0; + _mtu = NetConstants.PossibleMtu[mtuIdx] - extraLayerSpace; + } + + /// + /// Returns packets count in queue for reliable channel + /// + /// number of channel 0-63 + /// type of channel ReliableOrdered or ReliableUnordered + /// packets count in channel queue + public int GetPacketsCountInReliableQueue(byte channelNumber, bool ordered) + { + int idx = channelNumber * 4 + + (byte) (ordered ? DeliveryMethod.ReliableOrdered : DeliveryMethod.ReliableUnordered); + var channel = _channels[idx]; + return channel != null ? ((ReliableChannel)channel).PacketsInQueue : 0; + } + private BaseChannel CreateChannel(byte idx) { BaseChannel newChannel = _channels[idx]; @@ -242,7 +271,7 @@ internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id, byte : this(netManager, remoteEndPoint, id) { _connectTime = DateTime.UtcNow.Ticks; - _connectionState = ConnectionState.Outcoming; + _connectionState = ConnectionState.Outgoing; ConnectionNum = connectNum; //Make initial packet @@ -256,7 +285,8 @@ internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id, byte } //"Accept" incoming constructor - internal void Accept(long connectId, byte connectNum) + internal NetPeer(NetManager netManager, IPEndPoint remoteEndPoint, int id, long connectId, byte connectNum) + : this(netManager, remoteEndPoint, id) { _connectTime = connectId; _connectionState = ConnectionState.Connected; @@ -270,9 +300,17 @@ internal void Accept(long connectId, byte connectNum) NetDebug.Write(NetLogLevel.Trace, "[CC] ConnectId: {0}", _connectTime); } + //Reject + internal void Reject(long connectionId, byte connectionNumber, byte[] data, int start, int length) + { + _connectTime = connectionId; + _connectNum = connectionNumber; + Shutdown(data, start, length, false); + } + internal bool ProcessConnectAccept(NetConnectAcceptPacket packet) { - if (_connectionState != ConnectionState.Outcoming) + if (_connectionState != ConnectionState.Outgoing) return false; //check connection id @@ -285,7 +323,7 @@ internal bool ProcessConnectAccept(NetConnectAcceptPacket packet) ConnectionNum = packet.ConnectionNumber; NetDebug.Write(NetLogLevel.Trace, "[NC] Received connection accept"); - _timeSinceLastPacket = 0; + Interlocked.Exchange(ref _timeSinceLastPacket, 0); _connectionState = ConnectionState.Connected; return true; } @@ -458,20 +496,16 @@ private void SendInternal( DeliveryMethod deliveryMethod, object userData) { - if (_connectionState == ConnectionState.ShutdownRequested || - _connectionState == ConnectionState.Disconnected) - return; - if (channelNumber >= _channels.Length) + if (_connectionState != ConnectionState.Connected || channelNumber >= _channels.Length) return; //Select channel PacketProperty property; - BaseChannel channel; + BaseChannel channel = null; if (deliveryMethod == DeliveryMethod.Unreliable) { property = PacketProperty.Unreliable; - channel = _unreliableChannel; } else { @@ -490,7 +524,7 @@ private void SendInternal( { //if cannot be fragmented if (deliveryMethod != DeliveryMethod.ReliableOrdered && deliveryMethod != DeliveryMethod.ReliableUnordered) - throw new TooBigPacketException("Unreliable packet size exceeded maximum of " + (_mtu - headerSize) + " bytes"); + throw new TooBigPacketException("Unreliable packet size exceeded maximum of " + (mtu - headerSize) + " bytes"); int packetFullSize = mtu - headerSize; int packetDataSize = packetFullSize - NetConstants.FragmentHeaderSize; @@ -507,34 +541,48 @@ private void SendInternal( if (totalPackets > ushort.MaxValue) throw new TooBigPacketException("Data was split in " + totalPackets + " fragments, which exceeds " + ushort.MaxValue); + ushort currentFramentId; lock (_sendLock) { - for(ushort partIdx = 0; partIdx < totalPackets; partIdx++) - { - int sendLength = length > packetDataSize ? packetDataSize : length; + currentFramentId = _fragmentId; + _fragmentId++; + } - NetPacket p = _packetPool.GetWithProperty(property, sendLength + NetConstants.FragmentHeaderSize); - p.UserData = userData; - p.FragmentId = _fragmentId; - p.FragmentPart = partIdx; - p.FragmentsTotal = (ushort)totalPackets; - p.MarkFragmented(); + for(ushort partIdx = 0; partIdx < totalPackets; partIdx++) + { + int sendLength = length > packetDataSize ? packetDataSize : length; - - Buffer.BlockCopy(data, partIdx * packetDataSize, p.RawData, NetConstants.FragmentTotalSize, sendLength); - channel.AddToQueue(p); + NetPacket p = _packetPool.GetPacket(headerSize + sendLength + NetConstants.FragmentHeaderSize); + p.Property = property; + p.UserData = userData; + p.FragmentId = currentFramentId; + p.FragmentPart = partIdx; + p.FragmentsTotal = (ushort)totalPackets; + p.MarkFragmented(); - length -= sendLength; - } - _fragmentId++; + Buffer.BlockCopy(data, partIdx * packetDataSize, p.RawData, NetConstants.FragmentedHeaderTotalSize, sendLength); + channel.AddToQueue(p); + + length -= sendLength; } return; } //Else just send - NetPacket packet = _packetPool.GetWithData(property, data, start, length); + NetPacket packet = _packetPool.GetPacket(headerSize + length); + packet.Property = property; + Buffer.BlockCopy(data, start, packet.RawData, headerSize, length); packet.UserData = userData; - channel.AddToQueue(packet); + + if (channel == null) //unreliable + { + lock(_unreliableChannel) + _unreliableChannel.Enqueue(packet); + } + else + { + channel.AddToQueue(packet); + } } public void Disconnect(byte[] data) @@ -559,7 +607,7 @@ public void Disconnect() internal DisconnectResult ProcessDisconnect(NetPacket packet) { - if ((_connectionState == ConnectionState.Connected || _connectionState == ConnectionState.Outcoming) && + if ((_connectionState == ConnectionState.Connected || _connectionState == ConnectionState.Outgoing) && packet.Size >= 9 && BitConverter.ToInt64(packet.RawData, 1) == _connectTime && packet.ConnectionNumber == _connectNum) @@ -571,14 +619,7 @@ internal DisconnectResult ProcessDisconnect(NetPacket packet) return DisconnectResult.None; } - internal void Reject(long connectionId, byte connectionNumber, byte[] data, int start, int length) - { - _connectTime = connectionId; - _connectNum = connectionNumber; - Shutdown(data, start, length, false); - } - - internal bool Shutdown(byte[] data, int start, int length, bool force) + internal ShutdownResult Shutdown(byte[] data, int start, int length, bool force) { lock (_shutdownLock) { @@ -586,22 +627,25 @@ internal bool Shutdown(byte[] data, int start, int length, bool force) if (_connectionState == ConnectionState.Disconnected || _connectionState == ConnectionState.ShutdownRequested) { - return false; + return ShutdownResult.None; } + var result = _connectionState == ConnectionState.Connected + ? ShutdownResult.WasConnected + : ShutdownResult.Success; + //don't send anything if (force) { _connectionState = ConnectionState.Disconnected; - return true; + return result; } //reset time for reconnect protection - _timeSinceLastPacket = 0; + Interlocked.Exchange(ref _timeSinceLastPacket, 0); //send shutdown packet - _shutdownPacket = new NetPacket(PacketProperty.Disconnect, length); - _shutdownPacket.ConnectionNumber = _connectNum; + _shutdownPacket = new NetPacket(PacketProperty.Disconnect, length) {ConnectionNumber = _connectNum}; FastBitConverter.GetBytes(_shutdownPacket.RawData, 1, _connectTime); if (_shutdownPacket.Size >= _mtu) { @@ -615,7 +659,7 @@ internal bool Shutdown(byte[] data, int start, int length, bool force) _connectionState = ConnectionState.ShutdownRequested; NetDebug.Write("[Peer] Send disconnect"); NetManager.SendRaw(_shutdownPacket, EndPoint); - return true; + return result; } } @@ -627,7 +671,7 @@ private void UpdateRoundTripTime(int roundTripTime) _resendDelay = 25.0 + _avgRtt * 2.1; // 25 ms + double rtt } - internal void AddIncomingPacket(NetPacket p) + internal void AddReliablePacket(DeliveryMethod method, NetPacket p) { if (p.IsFragmented) { @@ -664,42 +708,43 @@ internal void AddIncomingPacket(NetPacket p) incomingFragments.ReceivedCount++; //Increase total size - incomingFragments.TotalSize += p.Size - NetConstants.FragmentTotalSize; + incomingFragments.TotalSize += p.Size - NetConstants.FragmentedHeaderTotalSize; //Check for finish if (incomingFragments.ReceivedCount != fragments.Length) return; - NetPacket resultingPacket = _packetPool.GetWithProperty( p.Property, incomingFragments.TotalSize ); - resultingPacket.ChannelId = incomingFragments.ChannelId; + //unreliable to save header space + NetPacket resultingPacket = _packetPool.GetWithProperty( + PacketProperty.Unreliable, + incomingFragments.TotalSize); - int resultingPacketOffset = resultingPacket.GetHeaderSize(); - int firstFragmentSize = fragments[0].Size - NetConstants.FragmentTotalSize; + int firstFragmentSize = fragments[0].Size - NetConstants.FragmentedHeaderTotalSize; for (int i = 0; i < incomingFragments.ReceivedCount; i++) { + var fragment = fragments[i]; //Create resulting big packet - int fragmentSize = fragments[i].Size - NetConstants.FragmentTotalSize; Buffer.BlockCopy( - fragments[i].RawData, - NetConstants.FragmentTotalSize, + fragment.RawData, + NetConstants.FragmentedHeaderTotalSize, resultingPacket.RawData, - resultingPacketOffset + firstFragmentSize * i, - fragmentSize); + NetConstants.HeaderSize + firstFragmentSize * i, + fragment.Size - NetConstants.FragmentedHeaderTotalSize); //Free memory - _packetPool.Recycle(fragments[i]); - fragments[i] = null; + _packetPool.Recycle(fragment); } + Array.Clear(fragments, 0, incomingFragments.ReceivedCount); //Send to process - NetManager.ReceiveFromPeer(resultingPacket, this); + NetManager.CreateReceiveEvent(resultingPacket, method, this); //Clear memory _holdedFragments.Remove(packetFragId); } else //Just simple packet { - NetManager.ReceiveFromPeer(p, this); + NetManager.CreateReceiveEvent(p, method, this); } } @@ -734,7 +779,7 @@ private void ProcessMtuPacket(NetPacket packet) lock (_mtuMutex) { _mtuIdx++; - _mtu = receivedMtu; + SetMtu(_mtuIdx); } //if maxed - finish. if (_mtuIdx == NetConstants.PossibleMtu.Length - 1) @@ -768,7 +813,8 @@ private void UpdateMtuLogic(int deltaTime) //Send increased packet int newMtu = NetConstants.PossibleMtu[_mtuIdx + 1]; - var p = _packetPool.GetWithProperty(PacketProperty.MtuCheck, newMtu - NetConstants.HeaderSize); + var p = _packetPool.GetPacket(newMtu); + p.Property = PacketProperty.MtuCheck; FastBitConverter.GetBytes(p.RawData, 1, newMtu); //place into start FastBitConverter.GetBytes(p.RawData, p.Size - 4, newMtu);//and end of packet @@ -784,8 +830,7 @@ internal ConnectRequestResult ProcessConnectRequest(NetConnectRequestPacket conn switch (_connectionState) { //P2P case or just ID update - case ConnectionState.Outcoming: - case ConnectionState.Incoming: + case ConnectionState.Outgoing: //change connect id if newer if (connRequest.ConnectionTime >= _connectTime) { @@ -793,9 +838,7 @@ internal ConnectRequestResult ProcessConnectRequest(NetConnectRequestPacket conn _connectTime = connRequest.ConnectionTime; ConnectionNum = connRequest.ConnectionNumber; } - return _connectionState == ConnectionState.Outcoming - ? ConnectRequestResult.P2PConnection - : ConnectRequestResult.None; + return ConnectRequestResult.P2PConnection; case ConnectionState.Connected: //Old connect request @@ -826,7 +869,7 @@ internal ConnectRequestResult ProcessConnectRequest(NetConnectRequestPacket conn internal void ProcessPacket(NetPacket packet) { //not initialized - if (_connectionState == ConnectionState.Incoming) + if (_connectionState == ConnectionState.Outgoing) { _packetPool.Recycle(packet); return; @@ -837,7 +880,7 @@ internal void ProcessPacket(NetPacket packet) _packetPool.Recycle(packet); return; } - _timeSinceLastPacket = 0; + Interlocked.Exchange(ref _timeSinceLastPacket, 0); NetDebug.Write("[RR]PacketProperty: {0}", packet.Property); switch (packet.Property) @@ -848,7 +891,7 @@ internal void ProcessPacket(NetPacket packet) { ushort size = BitConverter.ToUInt16(packet.RawData, pos); pos += 2; - NetPacket mergedPacket = _packetPool.GetPacket(size, false); + NetPacket mergedPacket = _packetPool.GetPacket(size); if (!mergedPacket.FromBytes(packet.RawData, pos, size)) { _packetPool.Recycle(packet); @@ -901,7 +944,7 @@ internal void ProcessPacket(NetPacket packet) //Simple packet without acks case PacketProperty.Unreliable: - AddIncomingPacket(packet); + NetManager.CreateReceiveEvent(packet, DeliveryMethod.Unreliable, this); return; case PacketProperty.MtuCheck: @@ -936,10 +979,13 @@ private void SendMerged() //Send without length information and merging bytesSent = NetManager.SendRaw(_mergeData.RawData, NetConstants.HeaderSize + 2, _mergePos - 2, EndPoint); } -#if STATS_ENABLED - Statistics.PacketsSent++; - Statistics.BytesSent += (ulong)bytesSent; -#endif + + if (NetManager.EnableStatistics) + { + Statistics.PacketsSent++; + Statistics.BytesSent += (ulong)bytesSent; + } + _mergePos = 0; _mergeCount = 0; } @@ -953,10 +999,13 @@ internal void SendUserData(NetPacket packet) { NetDebug.Write(NetLogLevel.Trace, "[P]SendingPacket: " + packet.Property); int bytesSent = NetManager.SendRaw(packet, EndPoint); -#if STATS_ENABLED - Statistics.PacketsSent++; - Statistics.BytesSent += (ulong)bytesSent; -#endif + + if (NetManager.EnableStatistics) + { + Statistics.PacketsSent++; + Statistics.BytesSent += (ulong)bytesSent; + } + return; } if (_mergePos + mergedPacketSize > _mtu) @@ -984,13 +1033,24 @@ public void Flush() currentChannel.SendNextPackets(); currentChannel = currentChannel.Next; } + + lock (_unreliableChannel) + { + while (_unreliableChannel.Count > 0) + { + NetPacket packet = _unreliableChannel.Dequeue(); + SendUserData(packet); + NetManager.NetPacketPool.Recycle(packet); + } + } + SendMerged(); } } internal void Update(int deltaTime) { - _timeSinceLastPacket += deltaTime; + Interlocked.Add(ref _timeSinceLastPacket, deltaTime); switch (_connectionState) { case ConnectionState.Connected: @@ -1021,7 +1081,7 @@ internal void Update(int deltaTime) } return; - case ConnectionState.Outcoming: + case ConnectionState.Outgoing: _connectTimer += deltaTime; if (_connectTimer > NetManager.ReconnectDelay) { @@ -1039,7 +1099,6 @@ internal void Update(int deltaTime) return; case ConnectionState.Disconnected: - case ConnectionState.Incoming: return; } diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetSocket.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetSocket.cs index 77b6aee..5815b1d 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetSocket.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetSocket.cs @@ -1,7 +1,10 @@ -#if UNITY_4 || UNITY_5 || UNITY_5_3_OR_NEWER +#if UNITY_5_3_OR_NEWER #define UNITY +#if UNITY_IOS && !UNITY_EDITOR +using UnityEngine; #endif -#if NETSTANDARD2_0 || NETCOREAPP2_0 +#endif +#if NETSTANDARD || NETCOREAPP using System.Runtime.InteropServices; #endif @@ -12,6 +15,45 @@ namespace LiteNetLib { +#if UNITY_IOS && !UNITY_EDITOR + public class UnitySocketFix : MonoBehaviour + { + internal IPAddress BindAddrIPv4; + internal IPAddress BindAddrIPv6; + internal bool Reuse; + internal bool IPv6; + internal int Port; + internal bool Paused; + internal NetSocket Socket; + + private void Update() + { + if (Socket == null) + Destroy(gameObject); + } + + private void OnApplicationPause(bool pause) + { + if (Socket == null) + return; + if (pause) + { + Socket.Close(true); + Paused = true; + } + else if (Paused) + { + if (!Socket.Bind(BindAddrIPv4, BindAddrIPv6, Port, Reuse, IPv6)) + { + NetDebug.WriteError("[S] Cannot restore connection \"{0}\",\"{1}\" port {2}", BindAddrIPv4, BindAddrIPv6, Port); + Socket.OnErrorRestore(); + } + Paused = false; + } + } + } +#endif + internal interface INetSocketListener { void OnMessageReceived(byte[] data, int length, SocketError errorCode, IPEndPoint remoteEndPoint); @@ -19,18 +61,26 @@ internal interface INetSocketListener internal sealed class NetSocket { - public const int ReceivePollingTime = 1000000; //1 second + public const int ReceivePollingTime = 500000; //0.5 second private Socket _udpSocketv4; private Socket _udpSocketv6; private Thread _threadv4; private Thread _threadv6; - private volatile bool _running; private readonly INetSocketListener _listener; private const int SioUdpConnreset = -1744830452; //SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 private static readonly IPAddress MulticastAddressV6 = IPAddress.Parse("FF02:0:0:0:0:0:0:1"); internal static readonly bool IPv6Support; +#if UNITY_IOS && !UNITY_EDITOR + private UnitySocketFix _unitySocketFix; + public void OnErrorRestore() + { + Close(false); + _listener.OnMessageReceived(null, 0, SocketError.NotConnected, new IPEndPoint(0,0)); + } +#endif public int LocalPort { get; private set; } + public volatile bool IsRunning; public short Ttl { @@ -61,13 +111,23 @@ public NetSocket(INetSocketListener listener) _listener = listener; } + private bool IsActive() + { +#if UNITY_IOS && !UNITY_EDITOR + var unitySocketFix = _unitySocketFix; //save for multithread + if (unitySocketFix != null && unitySocketFix.Paused) + return false; +#endif + return IsRunning; + } + private void ReceiveLogic(object state) { Socket socket = (Socket)state; EndPoint bufferEndPoint = new IPEndPoint(socket.AddressFamily == AddressFamily.InterNetwork ? IPAddress.Any : IPAddress.IPv6Any, 0); byte[] receiveBuffer = new byte[NetConstants.MaxPacketSize]; - while (_running) + while (IsActive()) { int result; @@ -83,6 +143,9 @@ private void ReceiveLogic(object state) { switch (ex.SocketErrorCode) { +#if UNITY_IOS && !UNITY_EDITOR + case SocketError.NotConnected: +#endif case SocketError.Interrupted: case SocketError.NotSocket: return; @@ -90,15 +153,14 @@ private void ReceiveLogic(object state) case SocketError.MessageSize: case SocketError.TimedOut: NetDebug.Write(NetLogLevel.Trace, "[R]Ignored error: {0} - {1}", - (int) ex.SocketErrorCode, ex.ToString()); + (int)ex.SocketErrorCode, ex.ToString()); break; default: - NetDebug.WriteError("[R]Error code: {0} - {1}", (int) ex.SocketErrorCode, + NetDebug.WriteError("[R]Error code: {0} - {1}", (int)ex.SocketErrorCode, ex.ToString()); - _listener.OnMessageReceived(null, 0, ex.SocketErrorCode, (IPEndPoint) bufferEndPoint); + _listener.OnMessageReceived(null, 0, ex.SocketErrorCode, (IPEndPoint)bufferEndPoint); break; } - continue; } catch (ObjectDisposedException) @@ -114,14 +176,34 @@ private void ReceiveLogic(object state) public bool Bind(IPAddress addressIPv4, IPAddress addressIPv6, int port, bool reuseAddress, bool ipv6) { + if (IsActive()) + return false; + _udpSocketv4 = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); if (!BindSocket(_udpSocketv4, new IPEndPoint(addressIPv4, port), reuseAddress)) return false; - LocalPort = ((IPEndPoint) _udpSocketv4.LocalEndPoint).Port; - _running = true; - _threadv4 = new Thread(ReceiveLogic); - _threadv4.Name = "SocketThreadv4(" + LocalPort + ")"; - _threadv4.IsBackground = true; +#if UNITY_IOS && !UNITY_EDITOR + if (_unitySocketFix == null) + { + var unityFixObj = new GameObject("LiteNetLib_UnitySocketFix"); + GameObject.DontDestroyOnLoad(unityFixObj); + _unitySocketFix = unityFixObj.AddComponent(); + _unitySocketFix.Socket = this; + _unitySocketFix.BindAddrIPv4 = addressIPv4; + _unitySocketFix.BindAddrIPv6 = addressIPv6; + _unitySocketFix.Reuse = reuseAddress; + _unitySocketFix.Port = port; + _unitySocketFix.IPv6 = ipv6; + } +#endif + + LocalPort = ((IPEndPoint)_udpSocketv4.LocalEndPoint).Port; + IsRunning = true; + _threadv4 = new Thread(ReceiveLogic) + { + Name = "SocketThreadv4(" + LocalPort + ")", + IsBackground = true + }; _threadv4.Start(_udpSocketv4); //Check IPv6 support @@ -136,19 +218,21 @@ public bool Bind(IPAddress addressIPv4, IPAddress addressIPv6, int port, bool re { #if !UNITY _udpSocketv6.SetSocketOption( - SocketOptionLevel.IPv6, + SocketOptionLevel.IPv6, SocketOptionName.AddMembership, new IPv6MulticastOption(MulticastAddressV6)); #endif } - catch(Exception) + catch (Exception) { // Unity3d throws exception - ignored } - _threadv6 = new Thread(ReceiveLogic); - _threadv6.Name = "SocketThreadv6(" + LocalPort + ")"; - _threadv6.IsBackground = true; + _threadv6 = new Thread(ReceiveLogic) + { + Name = "SocketThreadv6(" + LocalPort + ")", + IsBackground = true + }; _threadv6.Start(_udpSocketv6); } @@ -162,14 +246,19 @@ private bool BindSocket(Socket socket, IPEndPoint ep, bool reuseAddress) socket.SendTimeout = 500; socket.ReceiveBufferSize = NetConstants.SocketBufferSize; socket.SendBufferSize = NetConstants.SocketBufferSize; +#if !UNITY || UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN +#if NETSTANDARD || NETCOREAPP + if(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) +#endif try { - socket.IOControl(SioUdpConnreset, new byte[] {0}, null); + socket.IOControl(SioUdpConnreset, new byte[] { 0 }, null); } catch { //ignored } +#endif try { @@ -184,7 +273,7 @@ private bool BindSocket(Socket socket, IPEndPoint ep, bool reuseAddress) { socket.Ttl = NetConstants.SocketTTL; -#if NETSTANDARD2_0 || NETCOREAPP2_0 +#if NETSTANDARD || NETCOREAPP if(!RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) #endif try { socket.DontFragment = true; } @@ -219,9 +308,16 @@ private bool BindSocket(Socket socket, IPEndPoint ep, bool reuseAddress) socket.SetSocketOption(SocketOptionLevel.IPv6, (SocketOptionName)27, true); socket.Bind(ep); } +#if UNITY_2018_3_OR_NEWER catch (SocketException ex) { + + //because its fixed in 2018_3 NetDebug.WriteError("[B]Bind exception: {0}, errorCode: {1}", ex.ToString(), ex.SocketErrorCode); +#else + catch(SocketException) + { +#endif return false; } return true; @@ -239,6 +335,8 @@ private bool BindSocket(Socket socket, IPEndPoint ep, bool reuseAddress) public bool SendBroadcast(byte[] data, int offset, int size, int port) { + if (!IsActive()) + return false; bool broadcastSuccess = false; bool multicastSuccess = false; try @@ -249,7 +347,7 @@ public bool SendBroadcast(byte[] data, int offset, int size, int port) size, SocketFlags.None, new IPEndPoint(IPAddress.Broadcast, port)) > 0; - + if (_udpSocketv6 != null) { multicastSuccess = _udpSocketv6.SendTo( @@ -270,6 +368,8 @@ public bool SendBroadcast(byte[] data, int offset, int size, int port) public int SendTo(byte[] data, int offset, int size, IPEndPoint remoteEndPoint, ref SocketError errorCode) { + if (!IsActive()) + return 0; try { var socket = _udpSocketv4; @@ -291,7 +391,7 @@ public int SendTo(byte[] data, int offset, int size, IPEndPoint remoteEndPoint, default: NetDebug.WriteError("[S]" + ex); break; - } + } errorCode = ex.SocketErrorCode; return -1; } @@ -302,33 +402,30 @@ public int SendTo(byte[] data, int offset, int size, IPEndPoint remoteEndPoint, } } - public void Close() + public void Close(bool suspend) { - _running = false; - // first close sockets - if (_udpSocketv4 != null) + if (!suspend) { - _udpSocketv4.Close(); - _udpSocketv4 = null; + IsRunning = false; +#if UNITY_IOS && !UNITY_EDITOR + _unitySocketFix.Socket = null; + _unitySocketFix = null; +#endif } + + if (_udpSocketv4 != null) + _udpSocketv4.Close(); if (_udpSocketv6 != null) - { _udpSocketv6.Close(); - _udpSocketv6 = null; - } - // then join threads - if (_threadv4 != null) - { - if (_threadv4 != Thread.CurrentThread) - _threadv4.Join(); - _threadv4 = null; - } - if (_threadv6 != null) - { - if (_threadv6 != Thread.CurrentThread) - _threadv6.Join(); - _threadv6 = null; - } + _udpSocketv4 = null; + _udpSocketv6 = null; + + if (_threadv4 != null && _threadv4 != Thread.CurrentThread) + _threadv4.Join(); + if (_threadv6 != null && _threadv6 != Thread.CurrentThread) + _threadv6.Join(); + _threadv4 = null; + _threadv6 = null; } } } diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetUtils.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetUtils.cs index 39db291..b99cfc3 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetUtils.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/NetUtils.cs @@ -61,7 +61,7 @@ private static IPAddress ResolveAddress(string hostStr, AddressFamily addressFam private static IPAddress[] ResolveAddresses(string hostStr) { -#if NETSTANDARD2_0 || NETCOREAPP2_0 +#if NETSTANDARD || NETCOREAPP var hostTask = Dns.GetHostEntryAsync(hostStr); hostTask.GetAwaiter().GetResult(); var host = hostTask.Result; diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ReliableChannel.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ReliableChannel.cs index 0634e80..77f24ca 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ReliableChannel.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/ReliableChannel.cs @@ -62,6 +62,7 @@ public bool Clear(NetPeer peer) private bool _mustSendAcks; + private readonly DeliveryMethod _deliveryMethod; private readonly bool _ordered; private readonly int _windowSize; private const int BitsInByte = 8; @@ -77,9 +78,15 @@ public ReliableChannel(NetPeer peer, bool ordered, byte id) : base(peer) _pendingPackets[i] = new PendingPacket(); if (_ordered) + { + _deliveryMethod = DeliveryMethod.ReliableOrdered; _receivedPackets = new NetPacket[_windowSize]; + } else + { + _deliveryMethod = DeliveryMethod.ReliableUnordered; _earlyReceived = new bool[_windowSize]; + } _localWindowStart = 0; _localSeqence = 0; @@ -131,9 +138,15 @@ private void ProcessAck(NetPacket packet) int currentBit = pendingIdx % BitsInByte; if ((acksData[currentByte] & (1 << currentBit)) == 0) { -#if STATS_ENABLED || DEBUG - Peer.Statistics.PacketLoss++; +#if DEBUG + Peer.Statistics.PacketLoss++; +#else + if (Peer.NetManager.EnableStatistics) + { + Peer.Statistics.PacketLoss++; + } #endif + //Skip false ack NetDebug.Write("[PA]False ack: {0}", pendingSeq); continue; @@ -268,7 +281,7 @@ public override bool ProcessPacket(NetPacket packet) if (seq == _remoteSequence) { NetDebug.Write("[RR]ReliableInOrder packet succes"); - Peer.AddIncomingPacket(packet); + Peer.AddReliablePacket(_deliveryMethod, packet); _remoteSequence = (_remoteSequence + 1) % NetConstants.MaxSequence; if (_ordered) @@ -278,7 +291,7 @@ public override bool ProcessPacket(NetPacket packet) { //process holded packet _receivedPackets[_remoteSequence % _windowSize] = null; - Peer.AddIncomingPacket(p); + Peer.AddReliablePacket(_deliveryMethod, p); _remoteSequence = (_remoteSequence + 1) % NetConstants.MaxSequence; } } @@ -302,7 +315,7 @@ public override bool ProcessPacket(NetPacket packet) else { _earlyReceived[ackIdx] = true; - Peer.AddIncomingPacket(packet); + Peer.AddReliablePacket(_deliveryMethod, packet); } return true; } diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SequencedChannel.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SequencedChannel.cs index 0cc6793..c5e3897 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SequencedChannel.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SequencedChannel.cs @@ -1,3 +1,5 @@ +using System; + namespace LiteNetLib { internal sealed class SequencedChannel : BaseChannel @@ -9,6 +11,7 @@ internal sealed class SequencedChannel : BaseChannel private readonly NetPacket _ackPacket; private bool _mustSendAck; private readonly byte _id; + private long _lastPacketSendTime; public SequencedChannel(NetPeer peer, bool reliable, byte id) : base(peer) { @@ -22,9 +25,16 @@ public override void SendNextPackets() { if (_reliable && OutgoingQueue.Count == 0) { + long currentTime = DateTime.UtcNow.Ticks; + long packetHoldTime = currentTime - _lastPacketSendTime; + if (packetHoldTime < Peer.ResendDelay * TimeSpan.TicksPerMillisecond) + return; var packet = _lastPacket; - if(packet != null) + if (packet != null) + { + _lastPacketSendTime = currentTime; Peer.SendUserData(packet); + } } else { @@ -39,9 +49,14 @@ public override void SendNextPackets() Peer.SendUserData(packet); if (_reliable && OutgoingQueue.Count == 0) + { + _lastPacketSendTime = DateTime.UtcNow.Ticks; _lastPacket = packet; + } else + { Peer.NetManager.NetPacketPool.Recycle(packet); + } } } } @@ -56,6 +71,8 @@ public override void SendNextPackets() public override bool ProcessPacket(NetPacket packet) { + if (packet.IsFragmented) + return false; if (packet.Property == PacketProperty.Ack) { if (_reliable && _lastPacket != null && packet.Sequence == _lastPacket.Sequence) @@ -68,7 +85,10 @@ public override bool ProcessPacket(NetPacket packet) { Peer.Statistics.PacketLoss += (ulong)(relative - 1); _remoteSequence = packet.Sequence; - Peer.AddIncomingPacket(packet); + Peer.NetManager.CreateReceiveEvent( + packet, + _reliable ? DeliveryMethod.ReliableSequenced : DeliveryMethod.Sequenced, + Peer); packetProcessed = true; } _mustSendAck = true; diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs deleted file mode 100644 index eb9c862..0000000 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/SimpleChannel.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace LiteNetLib -{ - internal sealed class SimpleChannel : BaseChannel - { - public SimpleChannel(NetPeer peer) : base(peer) - { - - } - - public override void SendNextPackets() - { - lock (OutgoingQueue) - { - while (OutgoingQueue.Count > 0) - { - NetPacket packet = OutgoingQueue.Dequeue(); - Peer.SendUserData(packet); - Peer.NetManager.NetPacketPool.Recycle(packet); - } - } - } - - public override bool ProcessPacket(NetPacket packet) - { - return false; - } - } -} diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs new file mode 100644 index 0000000..5674d3e --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs @@ -0,0 +1,102 @@ +#if NETCOREAPP3_0 +using System; +using System.Runtime.Intrinsics.X86; +#endif + +namespace LiteNetLib.Utils +{ + //Implemenatation from Crc32.NET + public static class CRC32C + { +#if NETCOREAPP3_0 + private static readonly bool _x64Available; + private static readonly bool _sseAvailable; +#endif + public const int ChecksumSize = 4; + private const uint Poly = 0x82F63B78u; + private static readonly uint[] Table; + + static CRC32C() + { +#if NETCOREAPP3_0 + _sseAvailable = Sse42.IsSupported; + _x64Available = Sse42.X64.IsSupported; + if(_sseAvailable) + return; +#endif + Table = new uint[16 * 256]; + for (uint i = 0; i < 256; i++) + { + uint res = i; + for (int t = 0; t < 16; t++) + { + for (int k = 0; k < 8; k++) + res = (res & 1) == 1 ? Poly ^ (res >> 1) : (res >> 1); + Table[t * 256 + i] = res; + } + } + } + + /// + /// Compute CRC32C for data + /// + /// input data + /// offset + /// length + /// CRC32C checksum + public static uint Compute(byte[] input, int offset, int length) + { + uint crcLocal = uint.MaxValue; +#if NETCOREAPP3_0 + if(_sseAvailable) + { + if (_x64Available) + { + while (length >= 8) + { + crcLocal = (uint)Sse42.X64.Crc32(crcLocal, BitConverter.ToUInt64(input, offset)); + offset += 8; + length -= 8; + } + } + while (length > 0) + { + crcLocal = Sse42.Crc32(crcLocal, input[offset]); + offset++; + length--; + } + return crcLocal ^ uint.MaxValue; + } +#endif + while (length >= 16) + { + var a = Table[(3 * 256) + input[offset + 12]] + ^ Table[(2 * 256) + input[offset + 13]] + ^ Table[(1 * 256) + input[offset + 14]] + ^ Table[(0 * 256) + input[offset + 15]]; + + var b = Table[(7 * 256) + input[offset + 8]] + ^ Table[(6 * 256) + input[offset + 9]] + ^ Table[(5 * 256) + input[offset + 10]] + ^ Table[(4 * 256) + input[offset + 11]]; + + var c = Table[(11 * 256) + input[offset + 4]] + ^ Table[(10 * 256) + input[offset + 5]] + ^ Table[(9 * 256) + input[offset + 6]] + ^ Table[(8 * 256) + input[offset + 7]]; + + var d = Table[(15 * 256) + ((byte)crcLocal ^ input[offset])] + ^ Table[(14 * 256) + ((byte)(crcLocal >> 8) ^ input[offset + 1])] + ^ Table[(13 * 256) + ((byte)(crcLocal >> 16) ^ input[offset + 2])] + ^ Table[(12 * 256) + ((crcLocal >> 24) ^ input[offset + 3])]; + + crcLocal = d ^ c ^ b ^ a; + offset += 16; + length -= 16; + } + while (--length >= 0) + crcLocal = Table[(byte)(crcLocal ^ input[offset++])] ^ crcLocal >> 8; + return crcLocal ^ uint.MaxValue; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs.meta b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs.meta new file mode 100644 index 0000000..3c0022d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/CRC32C.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e017b5288ddedcd4d853a2cdb0d4a086 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataReader.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataReader.cs index f31e6f8..2570358 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataReader.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataReader.cs @@ -135,10 +135,8 @@ public bool[] GetBoolArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new bool[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetBool(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size); + _position += size; return arr; } @@ -147,10 +145,8 @@ public ushort[] GetUShortArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new ushort[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetUShort(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 2); + _position += size * 2; return arr; } @@ -159,10 +155,8 @@ public short[] GetShortArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new short[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetShort(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 2); + _position += size * 2; return arr; } @@ -171,10 +165,8 @@ public long[] GetLongArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new long[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetLong(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 8); + _position += size * 8; return arr; } @@ -183,10 +175,8 @@ public ulong[] GetULongArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new ulong[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetULong(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 8); + _position += size * 8; return arr; } @@ -195,10 +185,8 @@ public int[] GetIntArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new int[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetInt(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 4); + _position += size * 4; return arr; } @@ -207,10 +195,8 @@ public uint[] GetUIntArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new uint[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetUInt(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 4); + _position += size * 4; return arr; } @@ -219,10 +205,8 @@ public float[] GetFloatArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new float[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetFloat(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 4); + _position += size * 4; return arr; } @@ -231,10 +215,8 @@ public double[] GetDoubleArray() ushort size = BitConverter.ToUInt16(_data, _position); _position += 2; var arr = new double[size]; - for (int i = 0; i < size; i++) - { - arr[i] = GetDouble(); - } + Buffer.BlockCopy(_data, _position, arr, 0, size * 8); + _position += size * 8; return arr; } diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataWriter.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataWriter.cs index 27268cb..4f4f855 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataWriter.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetDataWriter.cs @@ -253,94 +253,61 @@ public void Put(bool value) _position++; } - public void PutArray(float[] value) + private void PutArray(Array arr, int sz) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; + ushort length = arr == null ? (ushort) 0 : (ushort)arr.Length; + sz *= length; if (_autoResize) - ResizeIfNeed(_position + len * 4 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + ResizeIfNeed(_position + sz + 2); + FastBitConverter.GetBytes(_data, _position, length); + if (arr != null) + Buffer.BlockCopy(arr, 0, _data, _position + 2, sz); + _position += sz + 2; + } + + public void PutArray(float[] value) + { + PutArray(value, 4); } public void PutArray(double[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 8 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 8); } public void PutArray(long[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 8 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 8); } public void PutArray(ulong[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 8 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 8); } public void PutArray(int[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 4 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 4); } public void PutArray(uint[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 4 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 4); } public void PutArray(ushort[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 2 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 2); } public void PutArray(short[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len * 2 + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 2); } public void PutArray(bool[] value) { - ushort len = value == null ? (ushort)0 : (ushort)value.Length; - if (_autoResize) - ResizeIfNeed(_position + len + 2); - Put(len); - for (int i = 0; i < len; i++) - Put(value[i]); + PutArray(value, 1); } public void PutArray(string[] value) diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetPacketProcessor.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetPacketProcessor.cs index f5a7844..b8304a5 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetPacketProcessor.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetPacketProcessor.cs @@ -64,10 +64,9 @@ protected virtual void WriteHash(NetDataWriter writer) /// Register nested property type /// /// INetSerializable structure - /// True - if register successful, false - if type already registered - public bool RegisterNestedType() where T : struct, INetSerializable + public void RegisterNestedType() where T : struct, INetSerializable { - return _netSerializer.RegisterNestedType(); + _netSerializer.RegisterNestedType(); } /// @@ -75,20 +74,18 @@ public bool RegisterNestedType() where T : struct, INetSerializable /// /// /// - /// True - if register successful, false - if type already registered - public bool RegisterNestedType(Action writeDelegate, Func readDelegate) + public void RegisterNestedType(Action writeDelegate, Func readDelegate) { - return _netSerializer.RegisterNestedType(writeDelegate, readDelegate); + _netSerializer.RegisterNestedType(writeDelegate, readDelegate); } /// /// Register nested property type /// /// INetSerializable class - /// True - if register successful, false - if type already registered - public bool RegisterNestedType(Func constructor) where T : class, INetSerializable + public void RegisterNestedType(Func constructor) where T : class, INetSerializable { - return _netSerializer.RegisterNestedType(constructor); + _netSerializer.RegisterNestedType(constructor); } /// diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetSerializer.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetSerializer.cs index 3a61fc6..42e401a 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetSerializer.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NetSerializer.cs @@ -7,247 +7,439 @@ namespace LiteNetLib.Utils { public class InvalidTypeException : ArgumentException { - public InvalidTypeException() + public InvalidTypeException(string message) : base(message) { } + } + + public class ParseException : Exception + { + public ParseException(string message) : base(message) { } + } + + public class NetSerializer + { + private abstract class FastCall + { + public bool IsArray; + public virtual void Init(MethodInfo getMethod, MethodInfo setMethod, bool isArray) { IsArray = isArray; } + public abstract void Read(T inf, NetDataReader r); + public abstract void Write(T inf, NetDataWriter w); + public virtual void ReadArray(T inf, NetDataReader r) { throw new InvalidTypeException("Unsupported type: " + typeof(T) + "[]"); } + public virtual void WriteArray(T inf, NetDataWriter w) { throw new InvalidTypeException("Unsupported type: " + typeof(T) + "[]"); } + } + + private abstract class FastCallSpecific : FastCall + { + protected Func Getter; + protected Action Setter; + protected Func GetterArr; + protected Action SetterArr; + + protected TProperty[] ReadArrayHelper(TClass inf, NetDataReader r) + { + ushort count = r.GetUShort(); + var arr = GetterArr(inf); + return arr == null || arr.Length != count ? new TProperty[count] : arr; + } + + protected TProperty[] WriteArrayHelper(TClass inf, NetDataWriter w) + { + var arr = GetterArr(inf); + w.Put((ushort)arr.Length); + return arr; + } + + public override void Init(MethodInfo getMethod, MethodInfo setMethod, bool isArray) + { + base.Init(getMethod, setMethod, isArray); + if (IsArray) + { + GetterArr = (Func)Delegate.CreateDelegate(typeof(Func), getMethod); + SetterArr = (Action)Delegate.CreateDelegate(typeof(Action), setMethod); + } + else + { + Getter = (Func)Delegate.CreateDelegate(typeof(Func), getMethod); + Setter = (Action)Delegate.CreateDelegate(typeof(Action), setMethod); + } + } + } + + private abstract class FastCallSpecificAuto : FastCallSpecific + { + protected abstract void ElementRead(NetDataReader r, out TProperty prop); + protected abstract void ElementWrite(NetDataWriter w, ref TProperty prop); + + public override void Read(TClass inf, NetDataReader r) + { + TProperty elem; + ElementRead(r, out elem); + Setter(inf, elem); + } + + public override void Write(TClass inf, NetDataWriter w) + { + var elem = Getter(inf); + ElementWrite(w, ref elem); + } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + for (int i = 0; i < arr.Length; i++) + ElementRead(r, out arr[i]); + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + for (int i = 0; i < arr.Length; i++) + ElementWrite(w, ref arr[i]); + } + } + + private sealed class FastCallStatic : FastCallSpecific + { + private readonly Action _writer; + private readonly Func _reader; + + public FastCallStatic(Action write, Func read) + { + _writer = write; + _reader = read; + } + + public override void Read(TClass inf, NetDataReader r) { Setter(inf, _reader(r)); } + public override void Write(TClass inf, NetDataWriter w) { _writer(w, Getter(inf)); } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i] = _reader(r); + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + int len = arr.Length; + for (int i = 0; i < len; i++) + _writer(w, arr[i]); + } + } + + private sealed class FastCallStruct : FastCallSpecific where TProperty : struct, INetSerializable + { + private TProperty _p; + + public override void Read(TClass inf, NetDataReader r) + { + _p.Deserialize(r); + Setter(inf, _p); + } + + public override void Write(TClass inf, NetDataWriter w) + { + _p = Getter(inf); + _p.Serialize(w); + } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i].Deserialize(r); + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i].Serialize(w); + } + } + + private sealed class FastCallClass : FastCallSpecific where TProperty : class, INetSerializable + { + private readonly Func _constructor; + public FastCallClass(Func constructor) { _constructor = constructor; } + + public override void Read(TClass inf, NetDataReader r) + { + var p = _constructor(); + p.Deserialize(r); + Setter(inf, p); + } + + public override void Write(TClass inf, NetDataWriter w) + { + var p = Getter(inf); + if(p != null) + p.Serialize(w); + } + + public override void ReadArray(TClass inf, NetDataReader r) + { + var arr = ReadArrayHelper(inf, r); + int len = arr.Length; + for (int i = 0; i < len; i++) + { + arr[i] = _constructor(); + arr[i].Deserialize(r); + } + SetterArr(inf, arr); + } + + public override void WriteArray(TClass inf, NetDataWriter w) + { + var arr = WriteArrayHelper(inf, w); + int len = arr.Length; + for (int i = 0; i < len; i++) + arr[i].Serialize(w); + } + } + + private class IntSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetInt()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetIntArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } } - public InvalidTypeException(string message) : base(message) + private class UIntSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetUInt()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetUIntArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } } - public InvalidTypeException(string message, Exception innerException) : base(message, innerException) + private class ShortSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetShort()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetShortArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } } - public InvalidTypeException(string message, string paramName) : base(message, paramName) + private class UShortSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetUShort()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetUShortArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } } - public InvalidTypeException(string message, string paramName, Exception innerException) : base(message, paramName, innerException) + private class LongSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetLong()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetLongArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } } - } - public class ParseException : Exception - { - public ParseException() + private class ULongSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetULong()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetULongArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } } - public ParseException(string message) : base(message) + private class ByteSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetByte()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetBytesWithLength()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutBytesWithLength(GetterArr(inf)); } } - public ParseException(string message, Exception innerException) : base(message, innerException) + private class SByteSerializer : FastCallSpecific { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetSByte()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetSBytesWithLength()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutSBytesWithLength(GetterArr(inf)); } } - } - - public sealed class NetSerializer - { - private sealed class NestedType + + private class FloatSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetFloat()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetFloatArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class DoubleSerializer : FastCallSpecific { - public readonly NestedTypeWriter WriteDelegate; - public readonly NestedTypeReader ReadDelegate; - public readonly NestedTypeWriter ArrayWriter; - public readonly NestedTypeReader ArrayReader; + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetDouble()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetDoubleArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class BoolSerializer : FastCallSpecific + { + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetBool()); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf)); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetBoolArray()); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf)); } + } + + private class CharSerializer : FastCallSpecificAuto + { + protected override void ElementWrite(NetDataWriter w, ref char prop) { w.Put(prop); } + protected override void ElementRead(NetDataReader r, out char prop) { prop = r.GetChar(); } + } + + private class IPEndPointSerializer : FastCallSpecificAuto + { + protected override void ElementWrite(NetDataWriter w, ref IPEndPoint prop) { w.Put(prop); } + protected override void ElementRead(NetDataReader r, out IPEndPoint prop) { prop = r.GetNetEndPoint(); } + } + + private class StringSerializer : FastCallSpecific + { + private readonly int _maxLength; + public StringSerializer(int maxLength) { _maxLength = maxLength > 0 ? maxLength : short.MaxValue; } + public override void Read(T inf, NetDataReader r) { Setter(inf, r.GetString(_maxLength)); } + public override void Write(T inf, NetDataWriter w) { w.Put(Getter(inf), _maxLength); } + public override void ReadArray(T inf, NetDataReader r) { SetterArr(inf, r.GetStringArray(_maxLength)); } + public override void WriteArray(T inf, NetDataWriter w) { w.PutArray(GetterArr(inf), _maxLength); } + } - public NestedType(NestedTypeWriter writeDelegate, NestedTypeReader readDelegate, NestedTypeWriter arrayWriter, NestedTypeReader arrayReader) + private class EnumByteSerializer : FastCall + { + protected readonly PropertyInfo Property; + protected readonly Type PropertyType; + public EnumByteSerializer(PropertyInfo property, Type propertyType) { - WriteDelegate = writeDelegate; - ReadDelegate = readDelegate; - ArrayWriter = arrayWriter; - ArrayReader = arrayReader; + Property = property; + PropertyType = propertyType; } + public override void Read(T inf, NetDataReader r) { Property.SetValue(inf, Enum.ToObject(PropertyType, r.GetByte()), null); } + public override void Write(T inf, NetDataWriter w) { w.Put((byte)Property.GetValue(inf, null)); } } - private delegate void NestedTypeWriter(NetDataWriter writer, object customObj); - private delegate object NestedTypeReader(NetDataReader reader); + private class EnumIntSerializer : EnumByteSerializer + { + public EnumIntSerializer(PropertyInfo property, Type propertyType) : base(property, propertyType) { } + public override void Read(T inf, NetDataReader r) { Property.SetValue(inf, Enum.ToObject(PropertyType, r.GetInt()), null); } + public override void Write(T inf, NetDataWriter w) { w.Put((int)Property.GetValue(inf, null)); } + } private sealed class ClassInfo { public static ClassInfo Instance; - private readonly Action[] _writeDelegate; - private readonly Action[] _readDelegate; + private readonly FastCall[] _serializers; private readonly int _membersCount; - public ClassInfo(List> readDelegates, List> writeDelegates) + public ClassInfo(List> serializers) { - _membersCount = readDelegates.Count; - _writeDelegate = writeDelegates.ToArray(); - _readDelegate = readDelegates.ToArray(); + _membersCount = serializers.Count; + _serializers = serializers.ToArray(); } public void Write(T obj, NetDataWriter writer) { for (int i = 0; i < _membersCount; i++) - _writeDelegate[i](obj, writer); + { + var s = _serializers[i]; + if (s.IsArray) + s.WriteArray(obj, writer); + else + s.Write(obj, writer); + } } public void Read(T obj, NetDataReader reader) { for (int i = 0; i < _membersCount; i++) - _readDelegate[i](obj, reader); + { + var s = _serializers[i]; + if (s.IsArray) + s.ReadArray(obj, reader); + else + s.Read(obj, reader); + } } } - private static readonly HashSet BasicTypes = new HashSet - { - typeof(int), - typeof(uint), - typeof(byte), - typeof(sbyte), - typeof(short), - typeof(ushort), - typeof(long), - typeof(ulong), - typeof(string), - typeof(float), - typeof(double), - typeof(bool), - typeof(char), - typeof(IPEndPoint) - }; - - private readonly NetDataWriter _writer; - private readonly int _maxStringLength; - private readonly Dictionary _registeredNestedTypes; + private abstract class CustomType + { + public abstract FastCall Get(); + } - public NetSerializer() : this(0) + private sealed class CustomTypeStruct : CustomType where TProperty : struct, INetSerializable { - + public override FastCall Get() { return new FastCallStruct(); } } - public NetSerializer(int maxStringLength) + private sealed class CustomTypeClass : CustomType where TProperty : class, INetSerializable { - _maxStringLength = maxStringLength; - _registeredNestedTypes = new Dictionary(); - _writer = new NetDataWriter(); + private readonly Func _constructor; + public CustomTypeClass(Func constructor) { _constructor = constructor; } + public override FastCall Get() { return new FastCallClass(_constructor); } } - private bool RegisterNestedTypeInternal(Func constructor) where T : INetSerializable + private sealed class CustomTypeStatic : CustomType { - var t = typeof(T); - if (_registeredNestedTypes.ContainsKey(t)) - return false; - NestedType nestedType; - NestedTypeWriter nestedTypeWriter = (writer, obj) => ((T) obj).Serialize(writer); - NestedTypeWriter nestedTypeArrayWriter = (writer, arr) => - { - var typedArr = (T[]) arr; - writer.Put((ushort) typedArr.Length); - for (int i = 0; i < typedArr.Length; i++) - typedArr[i].Serialize(writer); - }; - - //struct - if (constructor == null) + private readonly Action _writer; + private readonly Func _reader; + public CustomTypeStatic(Action writer, Func reader) { - nestedType = new NestedType( - nestedTypeWriter, - reader => - { - var instance = default(T); - instance.Deserialize(reader); - return instance; - }, - nestedTypeArrayWriter, - reader => - { - var typedArr = new T[reader.GetUShort()]; - for (int i = 0; i < typedArr.Length; i++) - typedArr[i].Deserialize(reader); - return typedArr; - }); + _writer = writer; + _reader = reader; } - else //class - { - nestedType = new NestedType( - nestedTypeWriter, - reader => - { - var instance = constructor(); - instance.Deserialize(reader); - return instance; - }, - nestedTypeArrayWriter, - reader => - { - var typedArr = new T[reader.GetUShort()]; - for (int i = 0; i < typedArr.Length; i++) - { - typedArr[i] = constructor(); - typedArr[i].Deserialize(reader); - } - return typedArr; - }); - } - _registeredNestedTypes.Add(t, nestedType); - return true; + public override FastCall Get() { return new FastCallStatic(_writer, _reader); } } /// - /// Register nested property type + /// Register custom property type /// /// INetSerializable structure - /// True - if register successful, false - if type already registered - public bool RegisterNestedType() where T : struct, INetSerializable + public void RegisterNestedType() where T : struct, INetSerializable { - return RegisterNestedTypeInternal(null); + _registeredTypes.Add(typeof(T), new CustomTypeStruct()); } /// - /// Register nested property type + /// Register custom property type /// /// INetSerializable class - /// True - if register successful, false - if type already registered - public bool RegisterNestedType(Func constructor) where T : class, INetSerializable + public void RegisterNestedType(Func constructor) where T : class, INetSerializable { - return RegisterNestedTypeInternal(constructor); + _registeredTypes.Add(typeof(T), new CustomTypeClass(constructor)); } /// - /// Register nested property type + /// Register custom property type /// - /// - /// - /// True - if register successful, false - if type already registered - public bool RegisterNestedType(Action writeDelegate, Func readDelegate) + /// Any packet + /// custom type writer + /// custom type reader + public void RegisterNestedType(Action writer, Func reader) { - var t = typeof(T); - if (BasicTypes.Contains(t) || _registeredNestedTypes.ContainsKey(t)) - return false; - - var rwDelegates = new NestedType( - (writer, obj) => writeDelegate(writer, (T)obj), - reader => readDelegate(reader), - (writer, arr) => - { - var typedArr = (T[])arr; - writer.Put((ushort)typedArr.Length); - for (int i = 0; i < typedArr.Length; i++) - writeDelegate(writer, typedArr[i]); - }, - reader => - { - var typedArr = new T[reader.GetUShort()]; - for (int i = 0; i < typedArr.Length; i++) - typedArr[i] = readDelegate(reader); - return typedArr; - }); - - _registeredNestedTypes.Add(t, rwDelegates); - return true; + _registeredTypes.Add(typeof(T), new CustomTypeStatic(writer, reader)); } - private static Func ExtractGetDelegate(MethodInfo info) + private NetDataWriter _writer; + private readonly int _maxStringLength; + private readonly Dictionary _registeredTypes = new Dictionary(); + + public NetSerializer() : this(0) { - return (Func)Delegate.CreateDelegate(typeof(Func), info); } - private static Action ExtractSetDelegate(MethodInfo info) + public NetSerializer(int maxStringLength) { - return (Action)Delegate.CreateDelegate(typeof(Action), info); + _maxStringLength = maxStringLength; } private ClassInfo RegisterInternal() @@ -261,271 +453,75 @@ private ClassInfo RegisterInternal() BindingFlags.Public | BindingFlags.GetProperty | BindingFlags.SetProperty); - var writeDelegates = new List>(); - var readDelegates = new List>(); + var serializers = new List>(); for (int i = 0; i < props.Length; i++) { var property = props[i]; var propertyType = property.PropertyType; - bool isEnum = propertyType.IsEnum; + var elementType = propertyType.IsArray ? propertyType.GetElementType() : propertyType; var getMethod = property.GetGetMethod(); var setMethod = property.GetSetMethod(); if (getMethod == null || setMethod == null) continue; - - if (isEnum) + + FastCall serialzer = null; + if (propertyType.IsEnum) { var underlyingType = Enum.GetUnderlyingType(propertyType); if (underlyingType == typeof(byte)) - { - readDelegates.Add((inf, r) => - { - property.SetValue(inf, Enum.ToObject(propertyType, r.GetByte()), null); - }); - writeDelegates.Add((inf, w) => - { - w.Put((byte)property.GetValue(inf, null)); - }); - } + serialzer = new EnumByteSerializer(property, propertyType); else if (underlyingType == typeof(int)) - { - readDelegates.Add((inf, r) => - { - property.SetValue(inf, Enum.ToObject(propertyType, r.GetInt()), null); - }); - writeDelegates.Add((inf, w) => - { - w.Put((int)property.GetValue(inf, null)); - }); - } + serialzer = new EnumIntSerializer(property, propertyType); else - { throw new InvalidTypeException("Not supported enum underlying type: " + underlyingType.Name); - } - } - else if (propertyType == typeof(string)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - if (_maxStringLength <= 0) - { - readDelegates.Add((inf, r) => setDelegate(inf, r.GetString())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else - { - readDelegates.Add((inf, r) => setDelegate(inf, r.GetString(_maxStringLength))); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf), _maxStringLength)); - } } - else if (propertyType == typeof(bool)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetBool())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(byte)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetByte())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(sbyte)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetSByte())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(short)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetShort())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(ushort)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetUShort())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(int)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetInt())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(uint)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetUInt())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(long)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetLong())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(ulong)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetULong())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(float)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetFloat())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(double)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetDouble())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(char)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetChar())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - else if (propertyType == typeof(IPEndPoint)) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetNetEndPoint())); - writeDelegates.Add((inf, w) => w.Put(getDelegate(inf))); - } - // Array types - else if (propertyType == typeof(string[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - if (_maxStringLength <= 0) - { - readDelegates.Add((inf, r) => setDelegate( inf, r.GetStringArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate( inf))); - } - else - { - readDelegates.Add((inf, r) => setDelegate(inf, r.GetStringArray(_maxStringLength))); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf), _maxStringLength)); - } - } - else if (propertyType == typeof(bool[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetBoolArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(byte[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetBytesWithLength())); - writeDelegates.Add((inf, w) => w.PutBytesWithLength(getDelegate(inf))); - } - else if (propertyType == typeof(short[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetShortArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(ushort[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetUShortArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(int[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetIntArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(uint[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetUIntArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(long[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetLongArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(ulong[])) - { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetULongArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); - } - else if (propertyType == typeof(float[])) + else if (elementType == typeof(string)) + serialzer = new StringSerializer(_maxStringLength); + else if (elementType == typeof(bool)) + serialzer = new BoolSerializer(); + else if (elementType == typeof(byte)) + serialzer = new ByteSerializer(); + else if (elementType == typeof(sbyte)) + serialzer = new SByteSerializer(); + else if (elementType == typeof(short)) + serialzer = new ShortSerializer(); + else if (elementType == typeof(ushort)) + serialzer = new UShortSerializer(); + else if (elementType == typeof(int)) + serialzer = new IntSerializer(); + else if (elementType == typeof(uint)) + serialzer = new UIntSerializer(); + else if (elementType == typeof(long)) + serialzer = new LongSerializer(); + else if (elementType == typeof(ulong)) + serialzer = new ULongSerializer(); + else if (elementType == typeof(float)) + serialzer = new FloatSerializer(); + else if (elementType == typeof(double)) + serialzer = new DoubleSerializer(); + else if (elementType == typeof(char)) + serialzer = new CharSerializer(); + else if (elementType == typeof(IPEndPoint)) + serialzer = new IPEndPointSerializer(); + else { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetFloatArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); + CustomType customType; + _registeredTypes.TryGetValue(elementType, out customType); + if (customType != null) + serialzer = customType.Get(); } - else if (propertyType == typeof(double[])) + + if (serialzer != null) { - var setDelegate = ExtractSetDelegate(setMethod); - var getDelegate = ExtractGetDelegate(getMethod); - readDelegates.Add((inf, r) => setDelegate(inf, r.GetDoubleArray())); - writeDelegates.Add((inf, w) => w.PutArray(getDelegate(inf))); + serialzer.Init(getMethod, setMethod, propertyType.IsArray); + serializers.Add(serialzer); } else { - NestedType registeredNestedType; - bool array = false; - - if (propertyType.IsArray) - { - array = true; - propertyType = propertyType.GetElementType(); - } - - if (_registeredNestedTypes.TryGetValue(propertyType, out registeredNestedType)) - { - if (array) //Array type serialize/deserialize - { - readDelegates.Add((inf, r) => property.SetValue(inf, registeredNestedType.ArrayReader(r), null)); - writeDelegates.Add((inf, w) => registeredNestedType.ArrayWriter(w, property.GetValue(inf, null))); - } - else //Simple - { - readDelegates.Add((inf, r) => property.SetValue(inf, registeredNestedType.ReadDelegate(r), null)); - writeDelegates.Add((inf, w) => registeredNestedType.WriteDelegate(w, property.GetValue(inf, null))); - } - } - else - { - throw new InvalidTypeException("Unknown property type: " + propertyType.FullName); - } + throw new InvalidTypeException("Unknown property type: " + propertyType.FullName); } } - ClassInfo.Instance = new ClassInfo(readDelegates, writeDelegates); + ClassInfo.Instance = new ClassInfo(serializers); return ClassInfo.Instance; } @@ -595,6 +591,8 @@ public void Register() /// byte array with serialized data public byte[] Serialize(T obj) where T : class, new() { + if (_writer == null) + _writer = new NetDataWriter(); _writer.Reset(); Serialize(_writer, obj); return _writer.CopyData(); diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpPacket.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpPacket.cs index 52afdd5..3227094 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpPacket.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpPacket.cs @@ -293,9 +293,7 @@ internal NtpPacket(byte[] bytes) /// public static NtpPacket FromServerResponse(byte[] bytes, DateTime destinationTimestamp) { - var packet = new NtpPacket(bytes); - packet.DestinationTimestamp = destinationTimestamp; - return packet; + return new NtpPacket(bytes) { DestinationTimestamp = destinationTimestamp }; } internal void ValidateRequest() diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpRequest.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpRequest.cs index 59cef85..78be782 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpRequest.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/Dependencies/LiteNetLib/Utils/NtpRequest.cs @@ -107,7 +107,7 @@ public void Send() /// public void Close() { - _socket.Close(); + _socket.Close(false); } /// diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs index 393b131..d23fe30 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs @@ -124,7 +124,7 @@ protected internal virtual void GetConnectData(NetDataWriter writer) protected internal virtual void ProcessConnectionRequest(ConnectionRequest request) { - if (LiteNetLib4MirrorCore.Host.PeersCount >= maxConnections) + if (LiteNetLib4MirrorCore.Host.ConnectedPeersCount >= maxConnections) { request.Reject(); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs index b80db07..934dcd7 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs @@ -67,7 +67,7 @@ static void WeaveExisingAssemblies() } } - UnityEditorInternal.InternalEditorUtility.RequestScriptReload(); + EditorUtility.RequestScriptReload(); } static string FindMirrorRuntime() diff --git a/LiteNetLib4Mirror/Packages/manifest.json b/LiteNetLib4Mirror/Packages/manifest.json index 8392bea..9f6ec26 100644 --- a/LiteNetLib4Mirror/Packages/manifest.json +++ b/LiteNetLib4Mirror/Packages/manifest.json @@ -1,11 +1,10 @@ { "dependencies": { - "com.unity.ads": "2.0.8", - "com.unity.analytics": "3.2.2", - "com.unity.collab-proxy": "1.2.15", - "com.unity.package-manager-ui": "2.0.7", - "com.unity.purchasing": "2.0.3", - "com.unity.textmeshpro": "1.3.0", + "com.unity.collab-proxy": "1.2.16", + "com.unity.ide.rider": "2.0.5", + "com.unity.ide.vscode": "1.2.1", + "com.unity.test-framework": "1.1.16", + "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.animation": "1.0.0", "com.unity.modules.assetbundle": "1.0.0", @@ -33,8 +32,6 @@ "com.unity.modules.unitywebrequestwww": "1.0.0", "com.unity.modules.vehicles": "1.0.0", "com.unity.modules.video": "1.0.0", - "com.unity.modules.vr": "1.0.0", - "com.unity.modules.wind": "1.0.0", - "com.unity.modules.xr": "1.0.0" + "com.unity.modules.wind": "1.0.0" } } diff --git a/LiteNetLib4Mirror/ProjectSettings/EditorSettings.asset b/LiteNetLib4Mirror/ProjectSettings/EditorSettings.asset index f48de93..96457b0 100644 --- a/LiteNetLib4Mirror/ProjectSettings/EditorSettings.asset +++ b/LiteNetLib4Mirror/ProjectSettings/EditorSettings.asset @@ -3,7 +3,7 @@ --- !u!159 &1 EditorSettings: m_ObjectHideFlags: 0 - serializedVersion: 7 + serializedVersion: 9 m_ExternalVersionControlSupport: Visible Meta Files m_SerializationMode: 2 m_LineEndingsForNewScripts: 2 @@ -16,8 +16,20 @@ EditorSettings: m_EtcTextureFastCompressor: 1 m_EtcTextureNormalCompressor: 2 m_EtcTextureBestCompressor: 4 - m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef + m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;asmref m_ProjectGenerationRootNamespace: m_CollabEditorSettings: inProgressEnabled: 1 + m_EnableTextureStreamingInEditMode: 1 m_EnableTextureStreamingInPlayMode: 1 + m_AsyncShaderCompilation: 1 + m_EnterPlayModeOptionsEnabled: 0 + m_EnterPlayModeOptions: 3 + m_ShowLightmapResolutionOverlay: 1 + m_UseLegacyProbeSampleCount: 1 + m_AssetPipelineMode: 1 + m_CacheServerMode: 0 + m_CacheServerEndpoint: + m_CacheServerNamespacePrefix: default + m_CacheServerEnableDownload: 1 + m_CacheServerEnableUpload: 1 diff --git a/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset b/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset index b08c449..4ea22e9 100644 --- a/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset +++ b/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 15 + serializedVersion: 20 productGUID: e40f573883656f94082e2312b8afea36 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -52,8 +52,7 @@ PlayerSettings: m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 - iosAppInBackgroundBehavior: 0 - displayResolutionDialog: 1 + iosUseCustomAppBackgroundBehavior: 0 iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 allowedAutorotateToPortraitUpsideDown: 1 @@ -65,6 +64,7 @@ PlayerSettings: disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 0 + androidUseSwappy: 0 androidBlitType: 0 defaultIsNativeResolution: 1 macRetinaSupport: 1 @@ -79,11 +79,11 @@ PlayerSettings: usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 + useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 0 - graphicsJobs: 0 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 @@ -91,7 +91,6 @@ PlayerSettings: xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 - graphicsJobMode: 0 fullscreenMode: 1 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 @@ -104,6 +103,7 @@ PlayerSettings: xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 16384 @@ -111,6 +111,9 @@ PlayerSettings: switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 + vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 m_SupportedAspectRatios: 4:3: 1 @@ -125,7 +128,6 @@ PlayerSettings: m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 0 xboxOneEnable7thCore: 0 - isWsaHolographicRemotingEnabled: 0 vrSettings: cardboard: depthFormat: 0 @@ -140,13 +142,23 @@ PlayerSettings: hololens: depthFormat: 1 depthBufferSharingEnabled: 0 + lumin: + depthFormat: 0 + frameTiming: 2 + enableGLCache: 0 + glCacheMaxBlobSize: 524288 + glCacheMaxFileSize: 8388608 oculus: sharedDepthBuffer: 0 dashSupport: 0 + lowOverheadMode: 0 + protectedContext: 0 + v2Signing: 1 enable360StereoCapture: 0 - protectGraphicsMemory: 0 + isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 useHDRDisplay: 0 + D3DHDRBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 @@ -156,7 +168,7 @@ PlayerSettings: Standalone: com.Company.ProductName buildNumber: {} AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 16 + AndroidMinSdkVersion: 19 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: @@ -171,28 +183,16 @@ PlayerSettings: StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 9.0 + iOSTargetOSVersionString: 10.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: 9.0 + tvOSTargetOSVersionString: 10.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 - iPhoneSplashScreen: {fileID: 0} - iPhoneHighResSplashScreen: {fileID: 0} - iPhoneTallHighResSplashScreen: {fileID: 0} - iPhone47inSplashScreen: {fileID: 0} - iPhone55inPortraitSplashScreen: {fileID: 0} - iPhone55inLandscapeSplashScreen: {fileID: 0} - iPhone58inPortraitSplashScreen: {fileID: 0} - iPhone58inLandscapeSplashScreen: {fileID: 0} - iPadPortraitSplashScreen: {fileID: 0} - iPadHighResPortraitSplashScreen: {fileID: 0} - iPadLandscapeSplashScreen: {fileID: 0} - iPadHighResLandscapeSplashScreen: {fileID: 0} appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] @@ -244,7 +244,7 @@ PlayerSettings: AndroidTargetArchitectures: 5 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} - AndroidKeystoreName: + AndroidKeystoreName: '{inproject}: ' AndroidKeyaliasName: AndroidBuildApkPerCpuArchitecture: 0 AndroidTVCompatibility: 1 @@ -252,20 +252,54 @@ PlayerSettings: AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 - resolutionDialogBanner: {fileID: 0} + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] m_BuildTargetPlatformIcons: [] m_BuildTargetBatching: [] + m_BuildTargetGraphicsJobs: + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 0 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 0 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 0 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 0 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: + - m_BuildTarget: PS4Player + m_GraphicsJobMode: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: [] m_BuildTargetVRSettings: [] - m_BuildTargetEnableVuforiaSettings: [] openGLRequireES31: 0 openGLRequireES31AEP: 0 + openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 @@ -381,6 +415,7 @@ PlayerSettings: switchRatingsInt_9: 0 switchRatingsInt_10: 0 switchRatingsInt_11: 0 + switchRatingsInt_12: 0 switchLocalCommunicationIds_0: switchLocalCommunicationIds_1: switchLocalCommunicationIds_2: @@ -449,6 +484,7 @@ PlayerSettings: ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 @@ -461,6 +497,7 @@ PlayerSettings: ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 @@ -479,9 +516,11 @@ PlayerSettings: ps4contentSearchFeaturesUsed: 0 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 256 webGLExceptionSupport: 1 @@ -496,8 +535,9 @@ PlayerSettings: webGLCompressionFormat: 1 webGLLinkerTarget: 1 webGLThreadsSupport: 0 + webGLWasmStreaming: 0 scriptingDefineSymbols: - 1: LITENETLIB4MIRROR;MIRROR;MIRROR_1726_OR_NEWER;MIRROR_3_0_OR_NEWER;MIRROR_WRITERSEND + 1: LITENETLIB4MIRROR;MIRROR;MIRROR_1726_OR_NEWER;MIRROR_3_0_OR_NEWER;MIRROR_WRITERSEND;MIRROR_3_12_OR_NEWER;MIRROR_4_0_OR_NEWER platformArchitecture: {} scriptingBackend: Standalone: 0 @@ -507,6 +547,8 @@ PlayerSettings: allowUnsafeCode: 0 additionalIl2CppArgs: scriptingRuntimeVersion: 1 + gcIncremental: 0 + gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: Standalone: 6 m_RenderingPath: 1 @@ -538,7 +580,6 @@ PlayerSettings: metroFTAName: metroFTAFileTypes: [] metroProtocolName: - metroCompilationOverrides: 1 XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: @@ -563,8 +604,8 @@ PlayerSettings: XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 - xboxOneScriptCompiler: 0 XboxOneOverrideIdentityName: + XboxOneOverrideIdentityPublisher: vrEditorSettings: daydream: daydreamIconForeground: {fileID: 0} @@ -577,18 +618,11 @@ PlayerSettings: m_PortalFolderPath: luminCert: m_CertPath: - m_PrivateKeyPath: + m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: - facebookSdkVersion: 7.9.4 - facebookAppId: - facebookCookies: 1 - facebookLogging: 1 - facebookStatus: 1 - facebookXfbml: 0 - facebookFrictionlessRequests: 1 apiCompatibilityLevel: 3 cloudProjectId: framebufferDepthMemorylessMode: 0 diff --git a/LiteNetLib4Mirror/ProjectSettings/ProjectVersion.txt b/LiteNetLib4Mirror/ProjectSettings/ProjectVersion.txt index 6dfd6c1..5a8320a 100644 --- a/LiteNetLib4Mirror/ProjectSettings/ProjectVersion.txt +++ b/LiteNetLib4Mirror/ProjectSettings/ProjectVersion.txt @@ -1 +1,2 @@ -m_EditorVersion: 2018.3.14f1 +m_EditorVersion: 2019.3.15f1 +m_EditorVersionWithRevision: 2019.3.15f1 (59ff3e03856d) diff --git a/LiteNetLib4Mirror/ProjectSettings/XRSettings.asset b/LiteNetLib4Mirror/ProjectSettings/XRSettings.asset new file mode 100644 index 0000000..482590c --- /dev/null +++ b/LiteNetLib4Mirror/ProjectSettings/XRSettings.asset @@ -0,0 +1,10 @@ +{ + "m_SettingKeys": [ + "VR Device Disabled", + "VR Device User Alert" + ], + "m_SettingValues": [ + "False", + "False" + ] +} \ No newline at end of file From e3ccc21428c3ce7d7c75b37a029d7b97b8844098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jurczyk?= Date: Sat, 1 Aug 2020 20:09:39 +0200 Subject: [PATCH 2/3] Mirror update --- .../LiteNetLib4MirrorNetworkManager.cs | 9 +- .../LiteNetLib4MirrorTransport.cs | 10 + .../Authenticators/BasicAuthenticator.cs | 28 +- .../Authenticators/BasicAuthenticator.cs.meta | 2 +- .../Authenticators/TimeoutAuthenticator.cs | 64 + .../TimeoutAuthenticator.cs.meta | 11 + .../Mirror/{Examples.meta => Cloud.meta} | 2 +- .../MirrorLib/Mirror/Cloud/ApiConnector.cs | 61 + .../ApiConnector.cs.meta} | 2 +- .../AdditiveScenes.meta => Cloud/Core.meta} | 2 +- .../MirrorLib/Mirror/Cloud/Core/BaseApi.cs | 25 + .../Core/BaseApi.cs.meta} | 2 +- .../MirrorLib/Mirror/Cloud/Core/Events.cs | 12 + .../Core/Events.cs.meta} | 2 +- .../MirrorLib/Mirror/Cloud/Core/Extensions.cs | 12 + .../Core/Extensions.cs.meta} | 2 +- .../Mirror/Cloud/Core/ICoroutineRunner.cs | 12 + .../Cloud/Core/ICoroutineRunner.cs.meta | 11 + .../Mirror/Cloud/Core/IRequestCreator.cs | 42 + .../Mirror/Cloud/Core/IRequestCreator.cs.meta | 11 + .../Mirror/Cloud/Core/IUnityEqualCheck.cs | 26 + .../Cloud/Core/IUnityEqualCheck.cs.meta | 11 + .../Mirror/Cloud/Core/JsonStructs.cs | 24 + .../Mirror/Cloud/Core/JsonStructs.cs.meta | 11 + .../MirrorLib/Mirror/Cloud/Core/Logger.cs | 72 + .../Mirror/Cloud/Core/Logger.cs.meta | 11 + .../Mirror/Cloud/Core/RequestCreator.cs | 144 + .../Mirror/Cloud/Core/RequestCreator.cs.meta | 11 + .../{Examples => Cloud}/ListServer.meta | 2 +- .../Mirror/Cloud/ListServer/ListServer.cs | 66 + .../ListServer/ListServer.cs.meta | 2 +- .../Cloud/ListServer/ListServerBaseApi.cs | 9 + .../ListServer/ListServerBaseApi.cs.meta | 11 + .../Cloud/ListServer/ListServerClientApi.cs | 70 + .../ListServer/ListServerClientApi.cs.meta | 11 + .../Mirror/Cloud/ListServer/ListServerJson.cs | 207 + .../Cloud/ListServer/ListServerJson.cs.meta | 11 + .../Cloud/ListServer/ListServerServerApi.cs | 219 ++ .../ListServer/ListServerServerApi.cs.meta | 11 + .../Mirror.Cloud.asmdef} | 5 +- .../Mirror.Cloud.asmdef.meta} | 2 +- .../Assets/MirrorLib/Mirror/Cloud/README.md | 86 + .../AdditiveScenes => Cloud}/README.md.meta | 2 +- .../Assets/MirrorLib/Mirror/Cloud/version.txt | 1 + .../README.md.meta => Cloud/version.txt.meta} | 2 +- ...nControllers.meta => CompilerSymbols.meta} | 2 +- .../Mirror.CompilerSymbols.asmdef} | 11 +- .../Mirror.CompilerSymbols.asmdef.meta} | 2 +- .../CompilerSymbols/PreprocessorDefine.cs | 45 + .../PreprocessorDefine.cs.meta | 0 .../Discovery.meta} | 2 +- .../Components/Discovery/NetworkDiscovery.cs | 114 + .../Discovery/NetworkDiscovery.cs.meta | 11 + .../Discovery/NetworkDiscoveryBase.cs | 363 ++ .../Discovery/NetworkDiscoveryBase.cs.meta | 11 + .../Discovery/NetworkDiscoveryHUD.cs | 95 + .../Discovery/NetworkDiscoveryHUD.cs.meta | 11 + .../Components/Discovery/ServerRequest.cs | 4 + .../Discovery/ServerRequest.cs.meta | 11 + .../Components/Discovery/ServerResponse.cs | 18 + .../Discovery/ServerResponse.cs.meta | 11 + .../Mirror/Components/Experimental.meta | 8 + .../Experimental/NetworkRigidbody.cs | 363 ++ .../Experimental/NetworkRigidbody.cs.meta | 11 + .../Experimental/NetworkTransform.cs | 12 + .../Experimental/NetworkTransform.cs.meta | 11 + .../Experimental/NetworkTransformBase.cs | 430 +++ .../Experimental/NetworkTransformBase.cs.meta | 11 + .../Experimental/NetworkTransformChild.cs | 18 + .../NetworkTransformChild.cs.meta | 11 + .../Mirror/Components/NetworkAnimator.cs | 260 +- .../Mirror/Components/NetworkAnimator.cs.meta | 2 +- .../Mirror/Components/NetworkLobbyManager.cs | 4 - .../Components/NetworkLobbyManager.cs.meta | 2 +- .../Mirror/Components/NetworkLobbyPlayer.cs | 1 - .../Components/NetworkLobbyPlayer.cs.meta | 2 +- .../Mirror/Components/NetworkMatchChecker.cs | 132 + .../Components/NetworkMatchChecker.cs.meta | 11 + .../Mirror/Components/NetworkPingDisplay.cs | 41 + .../Components/NetworkPingDisplay.cs.meta | 11 + .../Components/NetworkProximityChecker.cs | 153 +- .../NetworkProximityChecker.cs.meta | 2 +- .../Mirror/Components/NetworkRoomManager.cs | 286 +- .../Components/NetworkRoomManager.cs.meta | 2 +- .../Mirror/Components/NetworkRoomPlayer.cs | 131 +- .../Components/NetworkRoomPlayer.cs.meta | 2 +- .../Mirror/Components/NetworkSceneChecker.cs | 115 + .../Components/NetworkSceneChecker.cs.meta | 11 + .../Components/NetworkTransform.cs.meta | 2 +- .../Mirror/Components/NetworkTransformBase.cs | 216 +- .../Components/NetworkTransformBase.cs.meta | 2 +- .../Components/NetworkTransformChild.cs | 2 + .../Components/NetworkTransformChild.cs.meta | 2 +- .../Editor/EnterPlayModeSettingsCheck.cs | 74 + .../Editor/EnterPlayModeSettingsCheck.cs.meta | 11 + .../Mirror/Editor/InspectorHelper.cs | 76 + .../Mirror/Editor/InspectorHelper.cs.meta | 11 + .../MirrorLib/Mirror/Editor/LogLevelWindow.cs | 1 + .../Mirror/Editor/LogLevelWindow.cs.meta | 11 + .../MirrorLib/Mirror/Editor/Logging.meta | 8 + .../Mirror/Editor/Logging/LogLevelWindow.cs | 70 + .../Editor/Logging/LogLevelWindow.cs.meta | 11 + .../Mirror/Editor/Logging/LogLevelsGUI.cs | 61 + .../Editor/Logging/LogLevelsGUI.cs.meta | 11 + .../Editor/Logging/LogSettingsEditor.cs | 24 + .../Editor/Logging/LogSettingsEditor.cs.meta | 11 + .../Logging/NetworkLogSettingsEditor.cs | 31 + .../Logging/NetworkLogSettingsEditor.cs.meta | 11 + .../Mirror/Editor/Mirror.Editor.asmdef | 3 +- .../Mirror/Editor/NetworkAnimatorEditor.cs | 5 - .../Editor/NetworkBehaviourInspector.cs | 233 +- .../Mirror/Editor/NetworkIdentityEditor.cs | 106 - .../Editor/NetworkInformationPreview.cs | 231 +- .../Mirror/Editor/NetworkManagerEditor.cs | 3 +- .../Mirror/Editor/NetworkScenePostProcess.cs | 60 +- .../Mirror/Editor/PreprocessorDefine.cs | 25 - .../MirrorLib/Mirror/Editor/SceneDrawer.cs | 45 +- .../Mirror/Editor/ScriptableObjectUtility.cs | 54 + .../Editor/ScriptableObjectUtility.cs.meta | 11 + .../Mirror/Editor/SyncVarAttributeDrawer.cs | 28 + .../Editor/SyncVarAttributeDrawer.cs.meta | 11 + .../Mirror/Editor/Weaver/AssemblyInfo.cs | 3 + .../Mirror/Editor/Weaver/AssemblyInfo.cs.meta | 11 + .../Editor/Weaver/CompilationFinishedHook.cs | 79 +- .../Mirror/Editor/Weaver/Extensions.cs | 187 +- .../MirrorLib/Mirror/Editor/Weaver/Helpers.cs | 103 +- .../Weaver/Processors/CommandProcessor.cs | 139 +- .../Processors/GenericArgumentResolver.cs | 110 + .../GenericArgumentResolver.cs.meta | 11 + .../Processors/MessageClassProcessor.cs | 165 +- .../Weaver/Processors/MethodProcessor.cs | 125 + .../Weaver/Processors/MethodProcessor.cs.meta | 11 + .../Processors/MonoBehaviourProcessor.cs | 29 +- .../Processors/NetworkBehaviourProcessor.cs | 834 ++-- .../Processors/PropertySiteProcessor.cs | 193 +- .../Processors/ReaderWriterProcessor.cs | 7 +- .../Editor/Weaver/Processors/RpcProcessor.cs | 103 +- .../ServerClientAttributeProcessor.cs | 132 + .../ServerClientAttributeProcessor.cs.meta | 11 + .../Processors/SyncDictionaryProcessor.cs | 27 +- .../Weaver/Processors/SyncEventProcessor.cs | 126 +- .../Weaver/Processors/SyncListInitializer.cs | 5 - .../Weaver/Processors/SyncListProcessor.cs | 19 +- .../Processors/SyncListStructProcessor.cs | 5 - .../Processors/SyncObjectInitializer.cs | 42 +- .../Weaver/Processors/SyncObjectProcessor.cs | 90 +- .../Weaver/Processors/SyncVarProcessor.cs | 403 +- .../Weaver/Processors/TargetRpcProcessor.cs | 108 +- .../MirrorLib/Mirror/Editor/Weaver/Program.cs | 10 +- .../MirrorLib/Mirror/Editor/Weaver/Readers.cs | 140 +- .../Mirror/Editor/Weaver/Resolvers.cs | 80 +- .../MirrorLib/Mirror/Editor/Weaver/Weaver.cs | 231 +- .../MirrorLib/Mirror/Editor/Weaver/Writers.cs | 151 +- .../AnimationControllers/Tank.controller | 156 - .../AnimationControllers/Tank.controller.meta | 8 - .../AdditiveScenes/Materials/Capsule.mat | 77 - .../AdditiveScenes/Materials/Capsule.mat.meta | 8 - .../AdditiveScenes/Materials/Cube.mat | 77 - .../AdditiveScenes/Materials/Cube.mat.meta | 8 - .../AdditiveScenes/Materials/Cylinder.mat | 77 - .../Materials/Cylinder.mat.meta | 8 - .../AdditiveScenes/Materials/Player.mat | 77 - .../AdditiveScenes/Materials/Player.mat.meta | 8 - .../AdditiveScenes/Materials/Quad.mat | 77 - .../AdditiveScenes/Materials/Quad.mat.meta | 8 - .../AdditiveScenes/Materials/Shelter.mat | 77 - .../AdditiveScenes/Materials/Shelter.mat.meta | 8 - .../AdditiveScenes/Materials/Sphere.mat | 77 - .../AdditiveScenes/Materials/Sphere.mat.meta | 8 - .../AdditiveScenes/Materials/Zone.mat | 78 - .../AdditiveScenes/Materials/Zone.mat.meta | 8 - .../Examples/AdditiveScenes/Prefabs.meta | 8 - .../AdditiveScenes/Prefabs/Capsule.prefab | 133 - .../Prefabs/Capsule.prefab.meta | 7 - .../AdditiveScenes/Prefabs/Cube.prefab | 132 - .../AdditiveScenes/Prefabs/Cube.prefab.meta | 7 - .../AdditiveScenes/Prefabs/Cylinder.prefab | 133 - .../AdditiveScenes/Prefabs/Player.prefab | 235 -- .../AdditiveScenes/Prefabs/Player.prefab.meta | 7 - .../AdditiveScenes/Prefabs/Sphere.prefab | 132 - .../AdditiveScenes/Prefabs/Sphere.prefab.meta | 7 - .../AdditiveScenes/Prefabs/Tank.prefab | 599 --- .../AdditiveScenes/Prefabs/Tank.prefab.meta | 7 - .../Mirror/Examples/AdditiveScenes/README.md | 24 - .../Examples/AdditiveScenes/Scenes.meta | 8 - .../AdditiveScenes/Scenes/MainScene.unity | 2093 ---------- .../Scenes/MainScene.unity.meta | 7 - .../AdditiveScenes/Scenes/SubScene.unity | 798 ---- .../AdditiveScenes/Scenes/SubScene.unity.meta | 7 - .../Examples/AdditiveScenes/Scripts.meta | 8 - .../Scripts/AdditiveNetworkManager.cs | 55 - .../Scripts/AdditiveNetworkManager.cs.meta | 11 - .../Scripts/PlayerController.cs | 120 - .../Scripts/PlayerController.cs.meta | 11 - .../Scripts/ShootingTankBehaviour.cs | 59 - .../Scripts/ShootingTankBehaviour.cs.meta | 11 - .../AdditiveScenes/Scripts/ZoneHandler.cs | 34 - .../Scripts/ZoneHandler.cs.meta | 11 - .../MirrorLib/Mirror/Examples/Basic.meta | 8 - .../Mirror/Examples/Basic/Prefabs.meta | 8 - .../Examples/Basic/Prefabs/Player.prefab | 266 -- .../Examples/Basic/Prefabs/Player.prefab.meta | 7 - .../MirrorLib/Mirror/Examples/Basic/README.md | 16 - .../Mirror/Examples/Basic/Scenes.meta | 8 - .../Examples/Basic/Scenes/Example.unity | 618 --- .../Examples/Basic/Scenes/Example.unity.meta | 7 - .../Mirror/Examples/Basic/Scripts.meta | 8 - .../Mirror/Examples/Basic/Scripts/Player.cs | 80 - .../Examples/Basic/Scripts/Player.cs.meta | 11 - .../Mirror/Examples/ListServer/ListServer.cs | 338 -- .../Mirror/Examples/ListServer/Scenes.meta | 8 - .../Examples/ListServer/Scenes/NavMesh.asset | Bin 5444 -> 0 bytes .../ListServer/Scenes/NavMesh.asset.meta | 8 - .../Examples/ListServer/Scenes/Scene.unity | 3389 ----------------- .../ListServer/Scenes/Scene.unity.meta | 8 - .../Mirror/Examples/ListServer/UI.meta | 8 - .../ListServer/UI/ServerStatusSlot.prefab | 635 --- .../UI/ServerStatusSlot.prefab.meta | 7 - .../ListServer/UI/UIServerStatusSlot.cs | 13 - .../ListServer/UI/UIServerStatusSlot.cs.meta | 11 - .../MirrorLib/Mirror/Examples/Pong.meta | 8 - .../Examples/Pong/PhysicsMaterials.meta | 8 - .../BallMaterial.physicsMaterial2D | 10 - .../BallMaterial.physicsMaterial2D.meta | 8 - .../Mirror/Examples/Pong/Prefabs.meta | 8 - .../Mirror/Examples/Pong/Prefabs/Ball.prefab | 180 - .../Examples/Pong/Prefabs/Ball.prefab.meta | 8 - .../Examples/Pong/Prefabs/Racket.prefab | 180 - .../Examples/Pong/Prefabs/Racket.prefab.meta | 8 - .../Mirror/Examples/Pong/Scenes.meta | 8 - .../Mirror/Examples/Pong/Scenes/Scene.unity | 942 ----- .../Examples/Pong/Scenes/Scene.unity.meta | 8 - .../Mirror/Examples/Pong/Scripts.meta | 8 - .../Mirror/Examples/Pong/Scripts/Ball.cs | 60 - .../Mirror/Examples/Pong/Scripts/Ball.cs.meta | 12 - .../Pong/Scripts/NetworkManagerPong.cs | 37 - .../Pong/Scripts/NetworkManagerPong.cs.meta | 11 - .../Mirror/Examples/Pong/Scripts/Player.cs | 19 - .../Examples/Pong/Scripts/Player.cs.meta | 12 - .../Mirror/Examples/Pong/Sprites.meta | 8 - .../Mirror/Examples/Pong/Sprites/Ball.png | Bin 2791 -> 0 bytes .../Examples/Pong/Sprites/Ball.png.meta | 88 - .../Examples/Pong/Sprites/DottedLine.png | Bin 2799 -> 0 bytes .../Examples/Pong/Sprites/DottedLine.png.meta | 88 - .../Mirror/Examples/Pong/Sprites/Racket.png | Bin 2800 -> 0 bytes .../Examples/Pong/Sprites/Racket.png.meta | 88 - .../Mirror/Examples/Pong/WallHorizontal.png | Bin 2796 -> 0 bytes .../Examples/Pong/WallHorizontal.png.meta | 88 - .../Mirror/Examples/Pong/WallVertical.png | Bin 2800 -> 0 bytes .../Examples/Pong/WallVertical.png.meta | 88 - .../MirrorLib/Mirror/Examples/Room.meta | 8 - .../Mirror/Examples/Room/Materials.meta | 8 - .../Examples/Room/Materials/PlayArea.mat | 76 - .../Examples/Room/Materials/PlayArea.mat.meta | 8 - .../Mirror/Examples/Room/Materials/Player.mat | 76 - .../Examples/Room/Materials/Player.mat.meta | 8 - .../Mirror/Examples/Room/Materials/Prize.mat | 76 - .../Examples/Room/Materials/Prize.mat.meta | 8 - .../Examples/Room/Materials/Textures.meta | 8 - .../Room/Materials/Textures/Wall01.tga | Bin 1048620 -> 0 bytes .../Room/Materials/Textures/Wall01.tga.meta | 88 - .../Room/Materials/Textures/Wall01_n.tga | Bin 1048620 -> 0 bytes .../Room/Materials/Textures/Wall01_n.tga.meta | 88 - .../Mirror/Examples/Room/Prefabs.meta | 8 - .../Examples/Room/Prefabs/GamePlayer.prefab | 238 -- .../Room/Prefabs/GamePlayer.prefab.meta | 8 - .../Mirror/Examples/Room/Prefabs/Prize.prefab | 128 - .../Examples/Room/Prefabs/Prize.prefab.meta | 8 - .../Examples/Room/Prefabs/RoomPlayer.prefab | 67 - .../Room/Prefabs/RoomPlayer.prefab.meta | 8 - .../MirrorLib/Mirror/Examples/Room/README.md | 30 - .../Mirror/Examples/Room/README.md.meta | 7 - .../Mirror/Examples/Room/Scenes.meta | 8 - .../Examples/Room/Scenes/OfflineScene.unity | 210 - .../Room/Scenes/OfflineScene.unity.meta | 7 - .../Examples/Room/Scenes/OnlineScene.unity | 860 ----- .../Room/Scenes/OnlineScene.unity.meta | 7 - .../Examples/Room/Scenes/RoomScene.unity | 321 -- .../Examples/Room/Scenes/RoomScene.unity.meta | 7 - .../Mirror/Examples/Room/Scripts.meta | 8 - .../Room/Scripts/NetworkRoomManagerExt.cs | 58 - .../Scripts/NetworkRoomManagerExt.cs.meta | 11 - .../Room/Scripts/NetworkRoomPlayerExt.cs | 26 - .../Room/Scripts/NetworkRoomPlayerExt.cs.meta | 11 - .../Examples/Room/Scripts/OfflineGUI.cs | 30 - .../Examples/Room/Scripts/OfflineGUI.cs.meta | 11 - .../Examples/Room/Scripts/PlayerController.cs | 158 - .../Room/Scripts/PlayerController.cs.meta | 11 - .../Mirror/Examples/Room/Scripts/Reward.cs | 55 - .../Examples/Room/Scripts/Reward.cs.meta | 11 - .../Mirror/Examples/Room/Scripts/Spawner.cs | 37 - .../Examples/Room/Scripts/Spawner.cs.meta | 11 - .../MirrorLib/Mirror/Examples/Tanks.meta | 8 - .../Mirror/Examples/Tanks/Models.meta | 8 - .../Models/(Public Domain) Recon_Tank.meta | 8 - .../(Public Domain) Recon_Tank/BaseColor.png | Bin 939498 -> 0 bytes .../BaseColor.png.meta | 88 - .../Controller.controller | 272 -- .../Controller.controller.meta | 8 - .../(Public Domain) Recon_Tank/Emissive.png | Bin 80294 -> 0 bytes .../Emissive.png.meta | 88 - .../(Public Domain) Recon_Tank/Metallic.png | Bin 62860 -> 0 bytes .../Metallic.png.meta | 88 - .../(Public Domain) Recon_Tank/Normal.png | Bin 666342 -> 0 bytes .../Normal.png.meta | 88 - .../Recon_Tank - License.txt | 7 - .../Recon_Tank - License.txt.meta | 7 - .../TankMaterial.mat | 82 - .../TankMaterial.mat.meta | 8 - .../(Public Domain) Recon_Tank/reconTank.fbx | Bin 224204 -> 0 bytes .../reconTank.fbx.meta | 239 -- .../Mirror/Examples/Tanks/Prefabs.meta | 8 - .../Examples/Tanks/Prefabs/Projectile.prefab | 247 -- .../Tanks/Prefabs/Projectile.prefab.meta | 7 - .../Mirror/Examples/Tanks/Prefabs/Tank.prefab | 314 -- .../Examples/Tanks/Prefabs/Tank.prefab.meta | 8 - .../Mirror/Examples/Tanks/Scenes.meta | 8 - .../Mirror/Examples/Tanks/Scenes/Scene.meta | 8 - .../Mirror/Examples/Tanks/Scenes/Scene.unity | 655 ---- .../Examples/Tanks/Scenes/Scene.unity.meta | 7 - .../Examples/Tanks/Scenes/Scene/NavMesh.asset | Bin 5444 -> 0 bytes .../Tanks/Scenes/Scene/NavMesh.asset.meta | 8 - .../Mirror/Examples/Tanks/Scripts.meta | 8 - .../Examples/Tanks/Scripts/Projectile.cs | 38 - .../Examples/Tanks/Scripts/Projectile.cs.meta | 11 - .../Mirror/Examples/Tanks/Scripts/Tank.cs | 58 - .../Examples/Tanks/Scripts/Tank.cs.meta | 11 - .../Mirror/Examples/Tanks/Textures.meta | 8 - ...lic Domain) Dirt Hand Painted Texture.meta | 8 - .../Dirt Hand Painted Texture - License.txt | 5 - ...rt Hand Painted Texture - License.txt.meta | 7 - .../Dirt.mat | 82 - .../Dirt.mat.meta | 8 - .../dirt.png | Bin 105829 -> 0 bytes .../dirt.png.meta | 88 - .../Tanks/Textures/ProjectileMaterial.mat | 77 - .../Textures/ProjectileMaterial.mat.meta | 8 - .../Assets/MirrorLib/Mirror/License.txt | 3 - .../Mirror/Plugins/Mono.Cecil/License.txt | 23 + .../{ => Plugins/Mono.Cecil}/License.txt.meta | 2 +- .../Mono.Cecil/Mono.CecilX.Mdb.dll.meta | 64 +- .../Mono.Cecil/Mono.CecilX.Pdb.dll.meta | 64 +- .../Mono.Cecil/Mono.CecilX.Rocks.dll.meta | 64 +- .../Plugins/Mono.Cecil/Mono.CecilX.dll.meta | 66 +- .../Assets/MirrorLib/Mirror/Readme.txt | 2 +- .../MirrorLib/Mirror/Runtime/AssemblyInfo.cs | 9 +- .../MirrorLib/Mirror/Runtime/ClientScene.cs | 828 ++-- .../Mirror/Runtime/CustomAttributes.cs | 31 +- .../Mirror/Runtime/FloatBytePacker.cs | 62 +- .../MirrorLib/Mirror/Runtime/LocalClient.cs | 5 - .../Mirror/Runtime/LocalClient.cs.meta | 11 - .../Mirror/Runtime/LocalConnections.cs | 128 +- .../MirrorLib/Mirror/Runtime/LogFactory.cs | 1 + .../Mirror/Runtime/LogFactory.cs.meta | 11 + .../MirrorLib/Mirror/Runtime/Logging.meta | 8 + .../Runtime/Logging/ConsoleColorLogHandler.cs | 44 + .../Logging/ConsoleColorLogHandler.cs.meta | 11 + .../Logging/EditorLogSettingsLoader.cs | 50 + .../Logging/EditorLogSettingsLoader.cs.meta | 11 + .../Mirror/Runtime/Logging/LogFactory.cs | 100 + .../Mirror/Runtime/Logging/LogFactory.cs.meta | 11 + .../Mirror/Runtime/Logging/LogSettings.cs | 67 + .../Runtime/Logging/LogSettings.cs.meta | 11 + .../Runtime/Logging/NetworkHeadlessLogger.cs | 23 + .../Logging/NetworkHeadlessLogger.cs.meta | 11 + .../Runtime/Logging/NetworkLogSettings.cs | 46 + .../Logging/NetworkLogSettings.cs.meta | 11 + .../MirrorLib/Mirror/Runtime/MessagePacker.cs | 89 +- .../MirrorLib/Mirror/Runtime/Messages.cs | 281 +- .../MirrorLib/Mirror/Runtime/Mirror.asmdef | 11 +- .../Mirror/Runtime/NetworkAuthenticator.cs | 6 +- .../Mirror/Runtime/NetworkBehaviour.cs | 415 +- .../MirrorLib/Mirror/Runtime/NetworkClient.cs | 299 +- .../Mirror/Runtime/NetworkConnection.cs | 308 +- .../Runtime/NetworkConnectionToClient.cs | 65 + .../Runtime/NetworkConnectionToClient.cs.meta | 11 + .../Runtime/NetworkConnectionToServer.cs | 36 + .../Runtime/NetworkConnectionToServer.cs.meta | 11 + .../Mirror/Runtime/NetworkDiagnostics.cs | 4 +- .../Mirror/Runtime/NetworkIdentity.cs | 968 +++-- .../Mirror/Runtime/NetworkIdentity.cs.meta | 2 +- .../Mirror/Runtime/NetworkManager.cs | 814 ++-- .../Mirror/Runtime/NetworkManager.cs.meta | 2 +- .../Mirror/Runtime/NetworkManagerHUD.cs | 134 +- .../Mirror/Runtime/NetworkManagerHUD.cs.meta | 2 +- .../Mirror/Runtime/NetworkMessage.cs | 26 +- .../MirrorLib/Mirror/Runtime/NetworkReader.cs | 96 +- .../Mirror/Runtime/NetworkReaderPool.cs | 135 +- .../Mirror/Runtime/NetworkReaderPool.cs.meta | 2 +- .../MirrorLib/Mirror/Runtime/NetworkServer.cs | 1056 +++-- .../Runtime/NetworkStartPosition.cs.meta | 2 +- .../MirrorLib/Mirror/Runtime/NetworkTime.cs | 7 +- .../Mirror/Runtime/NetworkVisibility.cs | 42 + .../Mirror/Runtime/NetworkVisibility.cs.meta | 11 + .../MirrorLib/Mirror/Runtime/NetworkWriter.cs | 352 +- .../Mirror/Runtime/NetworkWriterPool.cs | 95 +- .../Mirror/Runtime/RemoteCallHelper.cs | 200 + .../Mirror/Runtime/RemoteCallHelper.cs.meta | 11 + .../Mirror/Runtime/SyncDictionary.cs | 75 +- .../MirrorLib/Mirror/Runtime/SyncList.cs | 191 +- .../MirrorLib/Mirror/Runtime/SyncObject.cs | 5 + .../MirrorLib/Mirror/Runtime/SyncSet.cs | 21 +- .../Runtime/Transport/FallbackTransport.cs | 190 + .../Transport/FallbackTransport.cs.meta | 11 + .../Runtime/Transport/LLAPITransport.cs | 59 +- .../Runtime/Transport/LLAPITransport.cs.meta | 2 +- .../Runtime/Transport/MultiplexTransport.cs | 118 +- .../Transport/MultiplexTransport.cs.meta | 2 +- .../Runtime/Transport/Telepathy/Client.cs | 32 +- .../Runtime/Transport/Telepathy/Common.cs | 21 +- .../Runtime/Transport/Telepathy/EventType.cs | 2 +- .../Runtime/Transport/Telepathy/Logger.cs | 2 +- .../Runtime/Transport/Telepathy/Message.cs | 2 +- .../Telepathy/NetworkStreamExtensions.cs | 88 +- .../Runtime/Transport/Telepathy/SafeQueue.cs | 12 +- .../Runtime/Transport/Telepathy/Server.cs | 18 +- .../Runtime/Transport/Telepathy/Telepathy.dll | Bin 4096 -> 0 bytes .../Transport/Telepathy/Telepathy.dll.meta | 30 - .../Transport/Telepathy/ThreadExtensions.cs | 26 + .../Telepathy/ThreadExtensions.cs.meta | 11 + .../Runtime/Transport/Telepathy/Utils.cs | 2 +- .../Runtime/Transport/TelepathyTransport.cs | 76 +- .../Transport/TelepathyTransport.cs.meta | 2 +- .../Mirror/Runtime/Transport/Transport.cs | 83 +- .../Runtime/Transport/Websocket/Client.cs | 28 +- .../Runtime/Transport/Websocket/ClientJs.cs | 43 +- .../Websocket/Ninja.WebSockets/BufferPool.cs | 5 +- .../InvalidHttpResponseCodeException.cs | 2 - .../SecWebSocketKeyMissingException.cs | 2 - .../ServerListenerSocketException.cs | 4 - .../WebSocketBufferOverflowException.cs | 2 - .../WebSocketHandshakeFailedException.cs | 3 - .../WebSocketVersionNotSupportedException.cs | 3 - .../Websocket/Ninja.WebSockets/HttpHelper.cs | 6 +- .../Websocket/Ninja.WebSockets/IBufferPool.cs | 3 - .../Internal/BinaryReaderWriter.cs | 11 +- .../Ninja.WebSockets/Internal/Events.cs | 78 +- .../Internal/WebSocketFrameCommon.cs | 3 +- .../Internal/WebSocketFrameReader.cs | 14 +- .../Internal/WebSocketFrameWriter.cs | 4 +- .../Internal/WebSocketImplementation.cs | 50 +- .../Ninja.WebSockets/Ninja.WebSockets.asmdef | 3 + .../Ninja.WebSockets.asmdef.meta} | 4 +- .../Ninja.WebSockets/PongEventArgs.cs | 2 - .../WebSocketClientOptions.cs | 3 +- .../Websocket/Plugins/WebSocket.jslib | 6 +- .../Runtime/Transport/Websocket/Server.cs | 30 +- .../Transport/Websocket/WebsocketTransport.cs | 88 +- .../Websocket/WebsocketTransport.cs.meta | 2 +- .../MirrorLib/Mirror/Runtime/UNetwork.cs | 43 +- .../Assets/MirrorLib/Mirror/Tests.meta | 8 - .../Mirror/Tests/ArraySegmentWriterTest.cs | 146 - .../Tests/ArraySegmentWriterTest.cs.meta | 11 - .../MirrorLib/Mirror/Tests/ArrayWriterTest.cs | 111 - .../Mirror/Tests/ArrayWriterTest.cs.meta | 11 - .../MirrorLib/Mirror/Tests/CustomRWTest.cs | 60 - .../Mirror/Tests/CustomRWTest.cs.meta | 11 - .../Tests/ExponentialMovingAverageTest.cs | 42 - .../ExponentialMovingAverageTest.cs.meta | 11 - .../Mirror/Tests/FloatBytePackerTest.cs | 25 - .../Mirror/Tests/FloatBytePackerTest.cs.meta | 11 - .../Mirror/Tests/MessageBaseTests.cs | 51 - .../Mirror/Tests/MessageBaseTests.cs.meta | 11 - .../Mirror/Tests/MessagePackerTest.cs | 24 - .../Mirror/Tests/MessagePackerTest.cs.meta | 11 - .../Mirror/Tests/NetworkWriterTest.cs | 1136 ------ .../Mirror/Tests/NetworkWriterTest.cs.meta | 11 - .../Mirror/Tests/SyncDictionaryTest.cs | 233 -- .../Mirror/Tests/SyncDictionaryTest.cs.meta | 11 - .../MirrorLib/Mirror/Tests/SyncListTest.cs | 293 -- .../Mirror/Tests/SyncListTest.cs.meta | 11 - .../MirrorLib/Mirror/Tests/SyncSetTest.cs | 274 -- .../Mirror/Tests/SyncSetTest.cs.meta | 11 - .../MirrorLib/Mirror/Tests/SyncVarTest.cs | 163 - .../Mirror/Tests/SyncVarTest.cs.meta | 11 - .../MirrorLib/Mirror/Tests/WeaverAssembler.cs | 190 - .../Mirror/Tests/WeaverAssembler.cs.meta | 11 - .../MirrorLib/Mirror/Tests/WeaverTest.cs | 810 ---- .../MirrorLib/Mirror/Tests/WeaverTest.cs.meta | 11 - LiteNetLib4Mirror/Packages/manifest.json | 9 +- .../ProjectSettings/EditorBuildSettings.asset | 6 +- .../ProjectSettings/ProjectSettings.asset | 2 +- 482 files changed, 12207 insertions(+), 28030 deletions(-) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs.meta rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples.meta => Cloud.meta} (77%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Editor/Weaver/Processors/SyncListInitializer.cs.meta => Cloud/ApiConnector.cs.meta} (83%) rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/AdditiveScenes.meta => Cloud/Core.meta} (77%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Editor/NetworkAnimatorEditor.cs.meta => Cloud/Core/BaseApi.cs.meta} (83%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Editor/Weaver/Processors/SyncListStructProcessor.cs.meta => Cloud/Core/Events.cs.meta} (83%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Editor/NetworkIdentityEditor.cs.meta => Cloud/Core/Extensions.cs.meta} (83%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs.meta rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples => Cloud}/ListServer.meta (77%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples => Cloud}/ListServer/ListServer.cs.meta (83%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs.meta rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/Mirror.Examples.asmdef => Cloud/Mirror.Cloud.asmdef} (78%) rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/Mirror.Examples.asmdef.meta => Cloud/Mirror.Cloud.asmdef.meta} (76%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/AdditiveScenes => Cloud}/README.md.meta (75%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/Basic/README.md.meta => Cloud/version.txt.meta} (75%) rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/AdditiveScenes/AnimationControllers.meta => CompilerSymbols.meta} (77%) rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Tests/Mirror.Tests.asmdef => CompilerSymbols/Mirror.CompilerSymbols.asmdef} (58%) rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Tests/Mirror.Tests.asmdef.meta => CompilerSymbols/Mirror.CompilerSymbols.asmdef.meta} (76%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/PreprocessorDefine.cs rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Editor => CompilerSymbols}/PreprocessorDefine.cs.meta (100%) rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/AdditiveScenes/Materials.meta => Components/Discovery.meta} (77%) create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/PreprocessorDefine.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes/NavMesh.asset delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes/NavMesh.asset.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes/Scene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes/Scene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/ServerStatusSlot.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/ServerStatusSlot.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/Ball.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/Ball.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/DottedLine.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/DottedLine.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/Racket.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/Racket.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/WallHorizontal.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/WallHorizontal.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/WallVertical.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/WallVertical.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/PlayArea.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/PlayArea.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Player.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Player.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Prize.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Prize.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Textures.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Textures/Wall01.tga delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Textures/Wall01.tga.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Textures/Wall01_n.tga delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Materials/Textures/Wall01_n.tga.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs/GamePlayer.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs/GamePlayer.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs/Prize.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs/Prize.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs/RoomPlayer.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Prefabs/RoomPlayer.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/README.md delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/README.md.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Metallic.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Metallic.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Normal.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Normal.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene/NavMesh.asset delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene/NavMesh.asset.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scripts.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scripts/Projectile.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scripts/Projectile.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scripts/Tank.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scripts/Tank.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/Dirt Hand Painted Texture - License.txt delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/Dirt Hand Painted Texture - License.txt.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/Dirt.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/Dirt.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/dirt.png delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/dirt.png.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{ => Plugins/Mono.Cecil}/License.txt.meta (75%) delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Telepathy.dll delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Telepathy.dll.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/ThreadExtensions.cs create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/ThreadExtensions.cs.meta create mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef rename LiteNetLib4Mirror/Assets/MirrorLib/Mirror/{Examples/AdditiveScenes/Prefabs/Cylinder.prefab.meta => Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef.meta} (59%) delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs.meta delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs delete mode 100644 LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs.meta diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorNetworkManager.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorNetworkManager.cs index 08607ce..fb4a007 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorNetworkManager.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorNetworkManager.cs @@ -16,7 +16,6 @@ public override void Awake() GetComponent().InitializeTransport(); base.Awake(); singleton = this; - NetworkManager.singleton = this; } /// @@ -87,7 +86,7 @@ public void StartHost(string serverIPv4BindAddress, string serverIPv6BindAddress #if DISABLE_IPV6 public bool StartServer(string serverIPv4BindAddress, ushort port, ushort maxPlayers) #else - public bool StartServer(string serverIPv4BindAddress, string serverIPv6BindAddress, ushort port, ushort maxPlayers) + public void StartServer(string serverIPv4BindAddress, string serverIPv6BindAddress, ushort port, ushort maxPlayers) #endif { networkAddress = serverIPv4BindAddress; @@ -99,7 +98,7 @@ public bool StartServer(string serverIPv4BindAddress, string serverIPv6BindAddre #endif LiteNetLib4MirrorTransport.Singleton.port = port; LiteNetLib4MirrorTransport.Singleton.maxConnections = maxPlayers; - return StartServer(); + StartServer(); } /// @@ -126,7 +125,7 @@ public void StartHost(ushort port, ushort maxPlayers) /// /// Port /// Connection limit - public bool StartServer(ushort port, ushort maxPlayers) + public void StartServer(ushort port, ushort maxPlayers) { networkAddress = "127.0.0.1"; maxConnections = maxPlayers; @@ -136,7 +135,7 @@ public bool StartServer(ushort port, ushort maxPlayers) #endif LiteNetLib4MirrorTransport.Singleton.port = port; LiteNetLib4MirrorTransport.Singleton.maxConnections = maxPlayers; - return StartServer(); + StartServer(); } public void DisconnectConnection(NetworkConnection conn, string message = null) diff --git a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs index d23fe30..7703a33 100644 --- a/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs +++ b/LiteNetLib4Mirror/Assets/Mirror/Runtime/Transport/LiteNetLib4Mirror/LiteNetLib4MirrorTransport.cs @@ -212,6 +212,16 @@ public override void ClientDisconnect() } } + public override Uri ServerUri() + { + UriBuilder builder = new UriBuilder + { + Host = ipv6Enabled ? serverIPv6BindAddress : serverIPv4BindAddress, + Port = port + }; + return builder.Uri; + } + public override bool ServerActive() { return LiteNetLib4MirrorServer.IsActive(); diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs index 454cbff..1f0a4ca 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs @@ -1,11 +1,13 @@ -using UnityEngine; using System.Collections; +using UnityEngine; namespace Mirror.Authenticators { [AddComponentMenu("Network/Authenticators/BasicAuthenticator")] public class BasicAuthenticator : NetworkAuthenticator { + static readonly ILogger logger = LogFactory.GetLogger(typeof(BasicAuthenticator)); + [Header("Custom Properties")] // set these in the inspector @@ -51,12 +53,12 @@ public override void OnClientAuthenticate(NetworkConnection conn) authPassword = password }; - NetworkClient.Send(authRequestMessage); + conn.Send(authRequestMessage); } public void OnAuthRequestMessage(NetworkConnection conn, AuthRequestMessage msg) { - Debug.LogFormat("Authentication Request: {0} {1}", msg.authUsername, msg.authPassword); + if (logger.LogEnabled()) logger.LogFormat(LogType.Log, "Authentication Request: {0} {1}", msg.authUsername, msg.authPassword); // check the credentials by calling your web server, database table, playfab api, or any method appropriate. if (msg.authUsername == username && msg.authPassword == password) @@ -68,10 +70,10 @@ public void OnAuthRequestMessage(NetworkConnection conn, AuthRequestMessage msg) message = "Success" }; - NetworkServer.SendToClient(conn.connectionId, authResponseMessage); + conn.Send(authResponseMessage); // Invoke the event to complete a successful authentication - base.OnServerAuthenticated.Invoke(conn); + OnServerAuthenticated.Invoke(conn); } else { @@ -82,28 +84,34 @@ public void OnAuthRequestMessage(NetworkConnection conn, AuthRequestMessage msg) message = "Invalid Credentials" }; - NetworkServer.SendToClient(conn.connectionId, authResponseMessage); + conn.Send(authResponseMessage); // must set NetworkConnection isAuthenticated = false conn.isAuthenticated = false; // disconnect the client after 1 second so that response message gets delivered - Invoke(nameof(conn.Disconnect), 1); + StartCoroutine(DelayedDisconnect(conn, 1)); } } + public IEnumerator DelayedDisconnect(NetworkConnection conn, float waitTime) + { + yield return new WaitForSeconds(waitTime); + conn.Disconnect(); + } + public void OnAuthResponseMessage(NetworkConnection conn, AuthResponseMessage msg) { if (msg.code == 100) { - Debug.LogFormat("Authentication Response: {0}", msg.message); + if (logger.LogEnabled()) logger.LogFormat(LogType.Log, "Authentication Response: {0}", msg.message); // Invoke the event to complete a successful authentication - base.OnClientAuthenticated.Invoke(conn); + OnClientAuthenticated.Invoke(conn); } else { - Debug.LogErrorFormat("Authentication Response: {0}", msg.message); + logger.LogFormat(LogType.Error, "Authentication Response: {0}", msg.message); // Set this on the client for local reference conn.isAuthenticated = false; diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs.meta index 5984986..4765013 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/BasicAuthenticator.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs new file mode 100644 index 0000000..4fa580b --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs @@ -0,0 +1,64 @@ +using System.Collections; +using UnityEngine; + +namespace Mirror.Authenticators +{ + /// + /// An authenticator that disconnects connections if they don't + /// authenticate within a specified time limit. + /// + [AddComponentMenu("Network/Authenticators/TimeoutAuthenticator")] + public class TimeoutAuthenticator : NetworkAuthenticator + { + static readonly ILogger logger = LogFactory.GetLogger(typeof(TimeoutAuthenticator)); + + public NetworkAuthenticator authenticator; + + [Range(0, 600), Tooltip("Timeout to auto-disconnect in seconds. Set to 0 for no timeout.")] + public float timeout = 60; + + public void Awake() + { + authenticator.OnClientAuthenticated.AddListener(connection => OnClientAuthenticated.Invoke(connection)); + authenticator.OnServerAuthenticated.AddListener(connection => OnServerAuthenticated.Invoke(connection)); + } + + public override void OnStartClient() + { + authenticator.OnStartClient(); + } + + public override void OnStartServer() + { + authenticator.OnStartServer(); + } + + public override void OnClientAuthenticate(NetworkConnection conn) + { + authenticator.OnClientAuthenticate(conn); + if (timeout > 0) + StartCoroutine(BeginAuthentication(conn)); + } + + public override void OnServerAuthenticate(NetworkConnection conn) + { + authenticator.OnServerAuthenticate(conn); + if (timeout > 0) + StartCoroutine(BeginAuthentication(conn)); + } + + IEnumerator BeginAuthentication(NetworkConnection conn) + { + if (logger.LogEnabled()) logger.Log($"Authentication countdown started {conn} {timeout}"); + + yield return new WaitForSecondsRealtime(timeout); + + if (!conn.isAuthenticated) + { + if (logger.LogEnabled()) logger.Log($"Authentication Timeout {conn}"); + + conn.Disconnect(); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs.meta new file mode 100644 index 0000000..b19ddec --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Authenticators/TimeoutAuthenticator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 24d8269a07b8e4edfa374753a91c946e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud.meta similarity index 77% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud.meta index b594a81..3f4322b 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a08b1f591326642d1b140fc818c9c6b1 +guid: 6c37be755e166194288aeeedef468dea folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs new file mode 100644 index 0000000..fb6713f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs @@ -0,0 +1,61 @@ +using Mirror.Cloud.ListServerService; +using UnityEngine; + +namespace Mirror.Cloud +{ + /// + /// Used to requests and responses from the mirror api + /// + public interface IApiConnector + { + ListServer ListServer { get; } + } + + /// + /// Used to requests and responses from the mirror api + /// + [DisallowMultipleComponent] + [AddComponentMenu("Network/CloudServices/ApiConnector")] + [HelpURL("https://mirror-networking.com/docs/CloudServices/ApiConnector.html")] + public class ApiConnector : MonoBehaviour, IApiConnector, ICoroutineRunner + { + #region Inspector + [Header("Settings")] + + [Tooltip("Base URL of api, including https")] + [SerializeField] string ApiAddress = ""; + + [Tooltip("Api key required to access api")] + [SerializeField] string ApiKey = ""; + + [Header("Events")] + + [Tooltip("Triggered when server list updates")] + [SerializeField] ServerListEvent _onServerListUpdated = new ServerListEvent(); + #endregion + + IRequestCreator requestCreator; + + public ListServer ListServer { get; private set; } + + void Awake() + { + requestCreator = new RequestCreator(ApiAddress, ApiKey, this); + + InitListServer(); + } + + void InitListServer() + { + IListServerServerApi serverApi = new ListServerServerApi(this, requestCreator); + IListServerClientApi clientApi = new ListServerClientApi(this, requestCreator, _onServerListUpdated); + ListServer = new ListServer(serverApi, clientApi); + } + + public void OnDestroy() + { + ListServer.ServerApi.Shutdown(); + ListServer.ClientApi.Shutdown(); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs.meta similarity index 83% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs.meta index d3f5278..9279c0c 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ApiConnector.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 97068e5d8cc14490b85933feb119d827 +guid: 8bdb99a29e179d14cb0acc43f175d9ad MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core.meta similarity index 77% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core.meta index bf61013..8c00059 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b84b2a39b3027c747b21ad714a439214 +guid: 3f34c32971e65984c93a15376ec11c65 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs new file mode 100644 index 0000000..720f598 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs @@ -0,0 +1,25 @@ +using System; + +namespace Mirror.Cloud +{ + public interface IBaseApi + { + /// + /// Cleans up any data created by the instance + /// For Example: removing server from list + /// + void Shutdown(); + } + + public abstract class BaseApi + { + protected readonly ICoroutineRunner runner; + protected readonly IRequestCreator requestCreator; + + protected BaseApi(ICoroutineRunner runner, IRequestCreator requestCreator) + { + this.runner = runner ?? throw new ArgumentNullException(nameof(runner)); + this.requestCreator = requestCreator ?? throw new ArgumentNullException(nameof(requestCreator)); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs.meta similarity index 83% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs.meta index 1b537bc..f66b84e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/BaseApi.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9589e903d4e98490fb1157762a307fd7 +guid: 70f563b7a7210ae43bbcde5cb7721a94 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs new file mode 100644 index 0000000..ffee4d3 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs @@ -0,0 +1,12 @@ +using System; +using Mirror.Cloud.ListServerService; +using UnityEngine.Events; + +namespace Mirror.Cloud +{ + [Serializable] + public class ServerListEvent : UnityEvent { } + + [Serializable] + public class MatchFoundEvent : UnityEvent { } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs.meta similarity index 83% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs.meta index 8f234cd..150d85b 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Events.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 28fb192f6a9bc1247b90aa4710f6d34f +guid: c7c472a3ea1bc4348bd5a0b05bf7cc3b MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs new file mode 100644 index 0000000..fa7dfa7 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs @@ -0,0 +1,12 @@ +using UnityEngine.Networking; + +namespace Mirror.Cloud +{ + public static class Extensions + { + public static bool IsOk(this UnityWebRequest webRequest) + { + return 200 <= webRequest.responseCode && webRequest.responseCode <= 299; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs.meta similarity index 83% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs.meta index cb4a5cf..6bf6291 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Extensions.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1b6e3680cc14b4769bff378e5dbc3544 +guid: 97501e783fc67a4459b15d10e6c63563 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs new file mode 100644 index 0000000..7fe3bbf --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs @@ -0,0 +1,12 @@ +using System.Collections; +using UnityEngine; + +namespace Mirror.Cloud +{ + public interface ICoroutineRunner : IUnityEqualCheck + { + Coroutine StartCoroutine(IEnumerator routine); + void StopCoroutine(IEnumerator routine); + void StopCoroutine(Coroutine routine); + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs.meta new file mode 100644 index 0000000..f1149a9 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/ICoroutineRunner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43472c60a7c72e54eafe559290dd0fc6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs new file mode 100644 index 0000000..2709707 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs @@ -0,0 +1,42 @@ +using System.Collections; +using UnityEngine.Networking; + +namespace Mirror.Cloud +{ + public delegate void RequestSuccess(string responseBody); + + public delegate void RequestFail(string responseBody); + + /// + /// Objects that can be sent to the Api must have this interface + /// + public interface ICanBeJson { } + + /// + /// Methods to create and send UnityWebRequest + /// + public interface IRequestCreator + { + UnityWebRequest Delete(string page); + UnityWebRequest Get(string page); + UnityWebRequest Patch(string page, T json) where T : struct, ICanBeJson; + UnityWebRequest Post(string page, T json) where T : struct, ICanBeJson; + + /// + /// Sends Request to api and invokes callback when finished + /// Starts Coroutine of SendRequestEnumerator + /// + /// + /// + /// + void SendRequest(UnityWebRequest request, RequestSuccess onSuccess = null, RequestFail onFail = null); + /// + /// Sends Request to api and invokes callback when finished + /// + /// + /// + /// + /// + IEnumerator SendRequestEnumerator(UnityWebRequest request, RequestSuccess onSuccess = null, RequestFail onFail = null); + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs.meta new file mode 100644 index 0000000..966c503 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IRequestCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b80b95532a9d6e8418aa676a261e4f69 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs new file mode 100644 index 0000000..be5e057 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs @@ -0,0 +1,26 @@ +using UnityEngine; + +namespace Mirror.Cloud +{ + /// + /// Adds Extension to check if unity object is null. + /// Use these methods to stop MissingReferenceException + /// + public interface IUnityEqualCheck + { + + } + + public static class UnityEqualCheckExtension + { + public static bool IsNull(this IUnityEqualCheck obj) + { + return (obj as Object) == null; + } + + public static bool IsNotNull(this IUnityEqualCheck obj) + { + return (obj as Object) != null; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs.meta new file mode 100644 index 0000000..7cb2a59 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/IUnityEqualCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 05185b973ba389a4588fc8a99c75a4f6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs new file mode 100644 index 0000000..7827abc --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs @@ -0,0 +1,24 @@ +using System; + +namespace Mirror.Cloud +{ + [Serializable] + public struct CreatedIdJson : ICanBeJson + { + public string id; + } + + [Serializable] + public struct ErrorJson : ICanBeJson + { + public string code; + public string message; + + public int HtmlCode => int.Parse(code); + } + + [Serializable] + public struct EmptyJson : ICanBeJson + { + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs.meta new file mode 100644 index 0000000..2c04009 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/JsonStructs.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0688c0fdae5376e4ea74d5c3904eed17 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs new file mode 100644 index 0000000..89daca9 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs @@ -0,0 +1,72 @@ +using System; +using UnityEngine; +using UnityEngine.Networking; + +namespace Mirror.Cloud +{ + public static class Logger + { + public static bool VerboseLogging = false; + static readonly ILogger logger = LogFactory.GetLogger("MirrorCloudServices"); + + public static void LogRequest(string page, string method, bool hasJson, string json) + { + if (hasJson) + { + logger.LogFormat(LogType.Log, "Request: {0} {1} {2}", method, page, json); + } + else + { + logger.LogFormat(LogType.Log, "Request: {0} {1}", method, page); + } + } + + public static void LogResponse(UnityWebRequest statusRequest) + { + long code = statusRequest.responseCode; + LogType logType = statusRequest.IsOk() + ? LogType.Log + : LogType.Error; + + string format = "Response: {0} {1} {2} {3}"; + if (logger.IsLogTypeAllowed(logType)) + { + // we split path like this to make sure api key doesn't leak + Uri uri = new Uri(statusRequest.url); + string path = string.Join("", uri.Segments); + string msg = string.Format(format, statusRequest.method, code, path, statusRequest.downloadHandler.text); + logger.Log(logType, msg); + } + + if (!string.IsNullOrEmpty(statusRequest.error)) + { + string msg = string.Format("WEB REQUEST ERROR: {0}", statusRequest.error); + logger.Log(LogType.Error, msg); + } + } + + internal static void Log(string msg) + { + if (logger.LogEnabled()) + logger.Log(msg); + } + + internal static void LogWarning(string msg) + { + if (logger.WarnEnabled()) + logger.LogWarning(msg); + } + + internal static void LogError(string msg) + { + if (logger.ErrorEnabled()) + logger.LogError(msg); + } + + internal static void Verbose(string msg) + { + if (VerboseLogging && logger.LogEnabled()) + logger.Log(msg); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs.meta new file mode 100644 index 0000000..5984ce3 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/Logger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 457ba2df6cb6e1542996c17c715ee81b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs new file mode 100644 index 0000000..7195c0e --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs @@ -0,0 +1,144 @@ +using System; +using System.Collections; +using System.Text; +using UnityEngine; +using UnityEngine.Networking; + +namespace Mirror.Cloud +{ + /// + /// Methods to create and send UnityWebRequest + /// + public class RequestCreator : IRequestCreator + { + const string GET = "GET"; + const string POST = "POST"; + const string PATCH = "PATCH"; + const string DELETE = "DELETE"; + + public readonly string baseAddress; + public readonly string apiKey; + readonly ICoroutineRunner runner; + + public RequestCreator(string baseAddress, string apiKey, ICoroutineRunner coroutineRunner) + { + if (string.IsNullOrEmpty(baseAddress)) + { + throw new ArgumentNullException(nameof(baseAddress)); + } + + if (string.IsNullOrEmpty(apiKey)) + { + throw new ArgumentNullException(nameof(apiKey)); + } + + this.baseAddress = baseAddress; + this.apiKey = apiKey; + + runner = coroutineRunner ?? throw new ArgumentNullException(nameof(coroutineRunner)); + } + + + Uri CreateUri(string page) + { + return new Uri(string.Format("{0}/{1}?key={2}", baseAddress, page, apiKey)); + } + + UnityWebRequest CreateWebRequest(string page, string method, string json = null) + { + bool hasJson = !string.IsNullOrEmpty(json); + Logger.LogRequest(page, method, hasJson, json); + + UnityWebRequest request = new UnityWebRequest(CreateUri(page)); + request.method = method; + if (hasJson) + { + request.SetRequestHeader("Content-Type", "application/json"); + } + + request.downloadHandler = new DownloadHandlerBuffer(); + + byte[] bodyRaw = hasJson + ? Encoding.UTF8.GetBytes(json) + : null; + + request.uploadHandler = new UploadHandlerRaw(bodyRaw); + + return request; + } + + + + /// + /// Create Get Request to page + /// + /// + /// + public UnityWebRequest Get(string page) + { + return CreateWebRequest(page, GET); + } + + /// + /// Creates Post Request to page with Json body + /// + /// + /// + /// + /// + public UnityWebRequest Post(string page, T json) where T : struct, ICanBeJson + { + string jsonString = JsonUtility.ToJson(json); + return CreateWebRequest(page, POST, jsonString); + } + + /// + /// Creates Patch Request to page with Json body + /// + /// + /// + /// + /// + public UnityWebRequest Patch(string page, T json) where T : struct, ICanBeJson + { + string jsonString = JsonUtility.ToJson(json); + return CreateWebRequest(page, PATCH, jsonString); + } + + /// + /// Create Delete Request to page + /// + /// + /// + public UnityWebRequest Delete(string page) + { + return CreateWebRequest(page, DELETE); + } + + + public void SendRequest(UnityWebRequest request, RequestSuccess onSuccess = null, RequestFail onFail = null) + { + runner.StartCoroutine(SendRequestEnumerator(request, onSuccess, onFail)); + } + + public IEnumerator SendRequestEnumerator(UnityWebRequest request, RequestSuccess onSuccess = null, RequestFail onFail = null) + { + using (UnityWebRequest webRequest = request) + { + yield return webRequest.SendWebRequest(); + Logger.LogResponse(webRequest); + + string text = webRequest.downloadHandler.text; + Logger.Verbose(text); + if (webRequest.IsOk()) + { + onSuccess?.Invoke(text); + } + else + { + onFail?.Invoke(text); + } + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs.meta new file mode 100644 index 0000000..eb139af --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Core/RequestCreator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cfaa626443cc7c94eae138a2e3a04d7c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer.meta similarity index 77% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer.meta index af33e59..bc85c3d 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e192f90e0acbb41f88dfe3dba300a5c9 +guid: c4c4be148a492b143a881cd08bf7e320 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs new file mode 100644 index 0000000..8b4af80 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs @@ -0,0 +1,66 @@ +using System; +using UnityEngine.Events; + +namespace Mirror.Cloud.ListServerService +{ + public sealed class ListServer + { + public readonly IListServerServerApi ServerApi; + public readonly IListServerClientApi ClientApi; + + public ListServer(IListServerServerApi serverApi, IListServerClientApi clientApi) + { + ServerApi = serverApi ?? throw new ArgumentNullException(nameof(serverApi)); + ClientApi = clientApi ?? throw new ArgumentNullException(nameof(clientApi)); + } + } + + public interface IListServerServerApi : IBaseApi + { + /// + /// Has a server been added to the list with this connection + /// + bool ServerInList { get; } + /// + /// Add a server to the list + /// + /// + void AddServer(ServerJson server); + /// + /// Update the current server + /// + /// + void UpdateServer(int newPlayerCount); + /// + /// Update the current server + /// + /// + void UpdateServer(ServerJson server); + /// + /// Removes the current server + /// + void RemoveServer(); + } + + public interface IListServerClientApi : IBaseApi + { + /// + /// Called when the server list is updated + /// + event UnityAction onServerListUpdated; + + /// + /// Get the server list once + /// + void GetServerList(); + /// + /// Start getting the server list every interval + /// + /// + void StartGetServerListRepeat(int interval); + /// + /// Stop getting the server list + /// + void StopGetServerListRepeat(); + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs.meta similarity index 83% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs.meta index 35af6c4..519876d 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 69f796b44735c414783d66f47b150c5f +guid: 6f0311899162c5b49a3c11fa9bd9c133 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs new file mode 100644 index 0000000..05d2e2e --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs @@ -0,0 +1,9 @@ +namespace Mirror.Cloud.ListServerService +{ + public abstract class ListServerBaseApi : BaseApi + { + protected ListServerBaseApi(ICoroutineRunner runner, IRequestCreator requestCreator) : base(runner, requestCreator) + { + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs.meta new file mode 100644 index 0000000..a9d32ea --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerBaseApi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b6838f9df45594d48873518cbb75b329 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs new file mode 100644 index 0000000..22867c1 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs @@ -0,0 +1,70 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.Networking; + +namespace Mirror.Cloud.ListServerService +{ + public sealed class ListServerClientApi : ListServerBaseApi, IListServerClientApi + { + readonly ServerListEvent _onServerListUpdated; + + Coroutine getServerListRepeatCoroutine; + + public event UnityAction onServerListUpdated + { + add => _onServerListUpdated.AddListener(value); + remove => _onServerListUpdated.RemoveListener(value); + } + + public ListServerClientApi(ICoroutineRunner runner, IRequestCreator requestCreator, ServerListEvent onServerListUpdated) : base(runner, requestCreator) + { + _onServerListUpdated = onServerListUpdated; + } + + public void Shutdown() + { + StopGetServerListRepeat(); + } + + public void GetServerList() + { + runner.StartCoroutine(getServerList()); + } + + public void StartGetServerListRepeat(int interval) + { + getServerListRepeatCoroutine = runner.StartCoroutine(GetServerListRepeat(interval)); + } + + public void StopGetServerListRepeat() + { + // if runner is null it has been destroyed and will alraedy be null + if (runner.IsNotNull() && getServerListRepeatCoroutine != null) + { + runner.StopCoroutine(getServerListRepeatCoroutine); + } + } + + IEnumerator GetServerListRepeat(int interval) + { + while (true) + { + yield return getServerList(); + + yield return new WaitForSeconds(interval); + } + } + IEnumerator getServerList() + { + UnityWebRequest request = requestCreator.Get("servers"); + yield return requestCreator.SendRequestEnumerator(request, onSuccess); + + void onSuccess(string responseBody) + { + ServerCollectionJson serverlist = JsonUtility.FromJson(responseBody); + _onServerListUpdated?.Invoke(serverlist); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs.meta new file mode 100644 index 0000000..306bf7c --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerClientApi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d49649fb32cb96b46b10f013b38a4b50 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs new file mode 100644 index 0000000..2591331 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs @@ -0,0 +1,207 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +namespace Mirror.Cloud.ListServerService +{ + [Serializable] + public struct ServerCollectionJson : ICanBeJson + { + public ServerJson[] servers; + } + + [Serializable] + public struct ServerJson : ICanBeJson + { + public string protocol; + public int port; + public int playerCount; + public int maxPlayerCount; + + /// + /// optional + /// + public string displayName; + + /// + /// Uri string of the ip and port of the server. + /// The ip is calculated by the request to the API + /// This is returns from the api, any incoming address fields will be ignored + /// + public string address; + + /// + /// Can be used to set custom uri + /// optional + /// + public string customAddress; + + /// + /// Array of custom data, use SetCustomData to set values + /// optional + /// + public KeyValue[] customData; + + /// + /// Uri from address field + /// + /// + public Uri GetServerUri() => new Uri(address); + + /// + /// Uri from customAddress field + /// + /// + public Uri GetCustomUri() => new Uri(customAddress); + + /// + /// Updates the customData array + /// + /// + public void SetCustomData(Dictionary data) + { + if (data == null) + { + customData = null; + } + else + { + customData = data.ToKeyValueArray(); + CustomDataHelper.ValidateCustomData(customData); + } + } + + public bool Validate() + { + CustomDataHelper.ValidateCustomData(customData); + + if (string.IsNullOrEmpty(protocol)) + { + Logger.LogError("ServerJson should not have empty protocol"); + return false; + } + + if (port == 0) + { + Logger.LogError("ServerJson should not have port equal 0"); + return false; + } + + if (maxPlayerCount == 0) + { + Logger.LogError("ServerJson should not have maxPlayerCount equal 0"); + return false; + } + + return true; + } + } + + [Serializable] + public struct PartialServerJson : ICanBeJson + { + /// + /// optional + /// + public int playerCount; + + /// + /// optional + /// + public int maxPlayerCount; + + /// + /// optional + /// + public string displayName; + + /// + /// Array of custom data, use SetCustomData to set values + /// optional + /// + public KeyValue[] customData; + + + public void SetCustomData(Dictionary data) + { + if (data == null) + { + customData = null; + } + else + { + customData = data.ToKeyValueArray(); + CustomDataHelper.ValidateCustomData(customData); + } + } + + public void Validate() + { + CustomDataHelper.ValidateCustomData(customData); + } + } + + public static class CustomDataHelper + { + const int MaxCustomData = 16; + + public static Dictionary ToDictionary(this KeyValue[] keyValues) + { + return keyValues.ToDictionary(x => x.key, x => x.value); + } + public static KeyValue[] ToKeyValueArray(this Dictionary dictionary) + { + return dictionary.Select(kvp => new KeyValue(kvp.Key, kvp.Value)).ToArray(); + } + + public static void ValidateCustomData(KeyValue[] customData) + { + if (customData == null) + { + return; + } + + if (customData.Length > MaxCustomData) + { + Logger.LogError($"There can only be {MaxCustomData} custom data but there was {customData.Length} values given"); + Array.Resize(ref customData, MaxCustomData); + } + + foreach (KeyValue item in customData) + { + item.Validate(); + } + } + } + + [Serializable] + public struct KeyValue + { + const int MaxKeySize = 32; + const int MaxValueSize = 256; + + public string key; + public string value; + + public KeyValue(string key, string value) + { + this.key = key; + this.value = value; + } + + public void Validate() + { + if (key.Length > MaxKeySize) + { + Logger.LogError($"Custom Data must have key with length less than {MaxKeySize}"); + key = key.Substring(0, MaxKeySize); + } + + if (value.Length > MaxValueSize) + { + Logger.LogError($"Custom Data must have value with length less than {MaxValueSize}"); + value = value.Substring(0, MaxValueSize); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs.meta new file mode 100644 index 0000000..7e206f1 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerJson.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a963606335eae0f47abe7ecb5fd028ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs new file mode 100644 index 0000000..661a8b8 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs @@ -0,0 +1,219 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.Networking; + +namespace Mirror.Cloud.ListServerService +{ + public sealed class ListServerServerApi : ListServerBaseApi, IListServerServerApi + { + const int PingInterval = 20; + const int MaxPingFails = 15; + + ServerJson currentServer; + string serverId; + + Coroutine _pingCoroutine; + /// + /// If the server has already been added + /// + bool added; + /// + /// if a request is currently sending + /// + bool sending; + /// + /// If an update request was recently sent + /// + bool skipNextPing; + /// + /// How many failed pings in a row + /// + int pingFails = 0; + + public bool ServerInList => added; + + public ListServerServerApi(ICoroutineRunner runner, IRequestCreator requestCreator) : base(runner, requestCreator) + { + } + + public void Shutdown() + { + stopPingCoroutine(); + if (added) + { + removeServerWithoutCoroutine(); + } + added = false; + } + + public void AddServer(ServerJson server) + { + if (added) { Logger.LogWarning("AddServer called when server was already adding or added"); return; } + bool valid = server.Validate(); + if (!valid) { return; } + + runner.StartCoroutine(addServer(server)); + } + + public void UpdateServer(int newPlayerCount) + { + if (!added) { Logger.LogWarning("UpdateServer called when before server was added"); return; } + + currentServer.playerCount = newPlayerCount; + UpdateServer(currentServer); + } + + public void UpdateServer(ServerJson server) + { + // TODO, use PartialServerJson as Arg Instead + if (!added) { Logger.LogWarning("UpdateServer called when before server was added"); return; } + + PartialServerJson partialServer = new PartialServerJson + { + displayName = server.displayName, + playerCount = server.playerCount, + maxPlayerCount = server.maxPlayerCount, + customData = server.customData, + }; + partialServer.Validate(); + + runner.StartCoroutine(updateServer(partialServer)); + } + + public void RemoveServer() + { + if (!added) { return; } + + if (string.IsNullOrEmpty(serverId)) + { + Debug.LogWarning("Can not remove server because serverId was empty"); + return; + } + + stopPingCoroutine(); + runner.StartCoroutine(removeServer()); + } + + void stopPingCoroutine() + { + if (_pingCoroutine != null) + { + runner.StopCoroutine(_pingCoroutine); + _pingCoroutine = null; + } + } + + IEnumerator addServer(ServerJson server) + { + added = true; + sending = true; + currentServer = server; + + UnityWebRequest request = requestCreator.Post("servers", currentServer); + yield return requestCreator.SendRequestEnumerator(request, onSuccess, onFail); + sending = false; + + void onSuccess(string responseBody) + { + CreatedIdJson created = JsonUtility.FromJson(responseBody); + serverId = created.id; + + // Start ping to keep server alive + _pingCoroutine = runner.StartCoroutine(ping()); + } + void onFail(string responseBody) + { + added = false; + } + } + + IEnumerator updateServer(PartialServerJson server) + { + // wait to not be sending + while (sending) + { + yield return new WaitForSeconds(1); + } + + // We need to check added incase Update is called soon after Add, and add failed + if (!added) { Logger.LogWarning("UpdateServer called when before server was added"); yield break; } + + sending = true; + UnityWebRequest request = requestCreator.Patch("servers/" + serverId, server); + yield return requestCreator.SendRequestEnumerator(request, onSuccess); + sending = false; + + void onSuccess(string responseBody) + { + skipNextPing = true; + + if (_pingCoroutine == null) + { + _pingCoroutine = runner.StartCoroutine(ping()); + } + } + } + + /// + /// Keeps server alive in database + /// + /// + IEnumerator ping() + { + while (pingFails <= MaxPingFails) + { + yield return new WaitForSeconds(PingInterval); + if (skipNextPing) + { + skipNextPing = false; + continue; + } + + sending = true; + UnityWebRequest request = requestCreator.Patch("servers/" + serverId, new EmptyJson()); + yield return requestCreator.SendRequestEnumerator(request, onSuccess, onFail); + sending = false; + } + + Logger.LogWarning("Max ping fails reached, stoping to ping server"); + _pingCoroutine = null; + + + void onSuccess(string responseBody) + { + pingFails = 0; + } + void onFail(string responseBody) + { + pingFails++; + } + } + + IEnumerator removeServer() + { + sending = true; + UnityWebRequest request = requestCreator.Delete("servers/" + serverId); + yield return requestCreator.SendRequestEnumerator(request); + sending = false; + + added = false; + } + + void removeServerWithoutCoroutine() + { + if (string.IsNullOrEmpty(serverId)) + { + Debug.LogWarning("Can not remove server becuase serverId was empty"); + return; + } + + UnityWebRequest request = requestCreator.Delete("servers/" + serverId); + UnityWebRequestAsyncOperation operation = request.SendWebRequest(); + + operation.completed += (op) => + { + Logger.LogResponse(request); + }; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs.meta new file mode 100644 index 0000000..82e23fd --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/ListServer/ListServerServerApi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 675f0d0fd4e82b04290c4d30c8d78ede +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Mirror.Examples.asmdef b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Mirror.Cloud.asmdef similarity index 78% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Mirror.Examples.asmdef rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Mirror.Cloud.asmdef index c4f942e..dbea971 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Mirror.Examples.asmdef +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Mirror.Cloud.asmdef @@ -1,8 +1,7 @@ { - "name": "Mirror.Examples", + "name": "Mirror.Cloud", "references": [ - "Mirror", - "Mirror.Components" + "Mirror" ], "optionalUnityReferences": [], "includePlatforms": [], diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Mirror.Examples.asmdef.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Mirror.Cloud.asmdef.meta similarity index 76% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Mirror.Examples.asmdef.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Mirror.Cloud.asmdef.meta index 2b545b5..bd17c2b 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Mirror.Examples.asmdef.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/Mirror.Cloud.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fecf25954bb196642ab50657689761d6 +guid: c21ba7b8c3183cb47b7fe3b3799d49c4 AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md new file mode 100644 index 0000000..5e476a2 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md @@ -0,0 +1,86 @@ +# Mirror Cloud Services + +## Mirror List Server + +Example has API key that can be used for as a demo. + +To get an API key to use within your game you can subscribe on the [Mirror Networking Website](https://mirror-networking.com/list-server/) + +### Key features + +- The Cloud Service works via https so is secure and can be used from any platform. +- It runs on Google Cloud so there is no worry about server down time. +- It scales really well. Default quota is 1000 API requests per minute. If you have high demands, contact us and we can increase that limit. + +## List Server Examples + +An example for this can be found in Mirror/Examples/Cloud/ + +*Note: you can not connect to your own public ip address, you will need at least people to test this* + +## How to use + +Add `ApiConnector` component to an object in your game, It is probably best to put this on the same object as your NetworkManager. Once it has been added set the `ApiAddress` and `ApiKey` fields. + +To use `ApiConnector` either directly reference it in an inspector field or get it when your script awakes +```cs +ApiConnector connector; + +void Awake() +{ + connector = FindObjectOfType(); +} +``` + + +The Api calls are grouped into objects. `connector.ListServer.ServerApi` has the Server api calls like `AddServer`. `connector.ListServer.ClientApi` has the Client Api calls like `GetServerList`. + +### Server Api Example + +Example of how to add server +```cs +void AddServer(int playerCount) +{ + Transport transport = Transport.activeTransport; + + Uri uri = transport.ServerUri(); + int port = uri.Port; + string protocol = uri.Scheme; + + connector.ListServer.ServerApi.AddServer(new ServerJson + { + displayName = "Fun game!!!", + protocol = protocol, + port = port, + maxPlayerCount = NetworkManager.singleton.maxConnections, + playerCount = playerCount + }); +} +``` + +### Client Api Example +Example of how to list servers + +```cs +ApiConnector connector; + +void Awake() +{ + connector = FindObjectOfType(); + // add listener to event that will update UI when Server list is refreshed + connector.ListServer.ClientApi.onServerListUpdated += onServerListUpdated; + + // add listen to button so that player can refresh server list + refreshButton.onClick.AddListener(RefreshButtonHandler); +} + +public void RefreshButtonHandler() +{ + connector.ListServer.ClientApi.GetServerList(); +} + +void onServerListUpdated() +{ + // Update UI here +} +``` diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md.meta similarity index 75% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md.meta index 470c34f..d669f54 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/README.md.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0a023e0d7315ac74094703ab69348733 +guid: 04945d14ccbed964597a1ee00805c059 TextScriptImporter: externalObjects: {} userData: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt new file mode 100644 index 0000000..7b0bc8d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt @@ -0,0 +1 @@ +MirrorCloudServices v0.1.0 \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt.meta similarity index 75% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt.meta index d4e1715..1e13fd5 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Cloud/version.txt.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 67177defd4d334a549e535f10506cc66 +guid: bf81e376b88e68e48a47531b8bfeb0f4 TextScriptImporter: externalObjects: {} userData: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols.meta similarity index 77% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols.meta index c9cd79f..09c87c4 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4969918300bfa9a4a8c733975df74016 +guid: 3261925ead5d21d44bb91a8a3f9fb18e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/Mirror.Tests.asmdef b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/Mirror.CompilerSymbols.asmdef similarity index 58% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/Mirror.Tests.asmdef rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/Mirror.CompilerSymbols.asmdef index 1463222..af25622 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/Mirror.Tests.asmdef +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/Mirror.CompilerSymbols.asmdef @@ -1,12 +1,7 @@ { - "name": "Mirror.Tests", - "references": [ - "Mirror", - "Mirror.Weaver" - ], - "optionalUnityReferences": [ - "TestAssemblies" - ], + "name": "Mirror.CompilerSymbols", + "references": [], + "optionalUnityReferences": [], "includePlatforms": [ "Editor" ], diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/Mirror.Tests.asmdef.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/Mirror.CompilerSymbols.asmdef.meta similarity index 76% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/Mirror.Tests.asmdef.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/Mirror.CompilerSymbols.asmdef.meta index 4f23023..8b23823 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/Mirror.Tests.asmdef.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/Mirror.CompilerSymbols.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8b489029f75e64a7bbf6918bf1a49e39 +guid: 325984b52e4128546bc7558552f8b1d2 AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/PreprocessorDefine.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/PreprocessorDefine.cs new file mode 100644 index 0000000..0c578ce --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/PreprocessorDefine.cs @@ -0,0 +1,45 @@ +using System.Collections.Generic; +using UnityEditor; + +namespace Mirror +{ + static class PreprocessorDefine + { + /// + /// Add define symbols as soon as Unity gets done compiling. + /// + [InitializeOnLoadMethod] + public static void AddDefineSymbols() + { + string currentDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup); + HashSet defines = new HashSet(currentDefines.Split(';')) + { + "MIRROR", + "MIRROR_1726_OR_NEWER", + "MIRROR_3_0_OR_NEWER", + "MIRROR_3_12_OR_NEWER", + "MIRROR_4_0_OR_NEWER", + "MIRROR_5_0_OR_NEWER", + "MIRROR_6_0_OR_NEWER", + "MIRROR_7_0_OR_NEWER", + "MIRROR_8_0_OR_NEWER", + "MIRROR_9_0_OR_NEWER", + "MIRROR_10_0_OR_NEWER", + "MIRROR_11_0_OR_NEWER", + "MIRROR_12_0_OR_NEWER", + "MIRROR_13_0_OR_NEWER", + "MIRROR_14_0_OR_NEWER", + "MIRROR_15_0_OR_NEWER", + "MIRROR_16_0_OR_NEWER" + }; + + // only touch PlayerSettings if we actually modified it. + // otherwise it shows up as changed in git each time. + string newDefines = string.Join(";", defines); + if (newDefines != currentDefines) + { + PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newDefines); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/PreprocessorDefine.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/PreprocessorDefine.cs.meta similarity index 100% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/PreprocessorDefine.cs.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/CompilerSymbols/PreprocessorDefine.cs.meta diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery.meta similarity index 77% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery.meta index d6629fb..d5bb0cb 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7ef7a74859259a546b73ed820e449ae8 +guid: b5dcf9618f5e14a4eb60bff5480284a6 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs new file mode 100644 index 0000000..dd64a34 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs @@ -0,0 +1,114 @@ +using System; +using System.Net; +using UnityEngine; +using UnityEngine.Events; + +namespace Mirror.Discovery +{ + [Serializable] + public class ServerFoundUnityEvent : UnityEvent { }; + + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkDiscovery")] + public class NetworkDiscovery : NetworkDiscoveryBase + { + #region Server + + public long ServerId { get; private set; } + + [Tooltip("Transport to be advertised during discovery")] + public Transport transport; + + [Tooltip("Invoked when a server is found")] + public ServerFoundUnityEvent OnServerFound; + + public override void Start() + { + ServerId = RandomLong(); + + // active transport gets initialized in awake + // so make sure we set it here in Start() (after awakes) + // Or just let the user assign it in the inspector + if (transport == null) + transport = Transport.activeTransport; + + base.Start(); + } + + /// + /// Process the request from a client + /// + /// + /// Override if you wish to provide more information to the clients + /// such as the name of the host player + /// + /// Request comming from client + /// Address of the client that sent the request + /// The message to be sent back to the client or null + protected override ServerResponse ProcessRequest(ServerRequest request, IPEndPoint endpoint) + { + // In this case we don't do anything with the request + // but other discovery implementations might want to use the data + // in there, This way the client can ask for + // specific game mode or something + + try + { + // this is an example reply message, return your own + // to include whatever is relevant for your game + return new ServerResponse + { + serverId = ServerId, + uri = transport.ServerUri() + }; + } + catch (NotImplementedException) + { + Debug.LogError($"Transport {transport} does not support network discovery"); + throw; + } + } + + #endregion + + #region Client + + /// + /// Create a message that will be broadcasted on the network to discover servers + /// + /// + /// Override if you wish to include additional data in the discovery message + /// such as desired game mode, language, difficulty, etc... + /// An instance of ServerRequest with data to be broadcasted + protected override ServerRequest GetRequest() => new ServerRequest(); + + /// + /// Process the answer from a server + /// + /// + /// A client receives a reply from a server, this method processes the + /// reply and raises an event + /// + /// Response that came from the server + /// Address of the server that replied + protected override void ProcessResponse(ServerResponse response, IPEndPoint endpoint) + { + // we received a message from the remote endpoint + response.EndPoint = endpoint; + + // although we got a supposedly valid url, we may not be able to resolve + // the provided host + // However we know the real ip address of the server because we just + // received a packet from it, so use that as host. + UriBuilder realUri = new UriBuilder(response.uri) + { + Host = response.EndPoint.Address.ToString() + }; + response.uri = realUri.Uri; + + OnServerFound.Invoke(response); + } + + #endregion + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs.meta new file mode 100644 index 0000000..c691a61 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscovery.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c761308e733c51245b2e8bb4201f46dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs new file mode 100644 index 0000000..daf4137 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs @@ -0,0 +1,363 @@ +using System; +using System.Net; +using System.Net.Sockets; +using System.Threading.Tasks; +using UnityEngine; + +// Based on https://github.com/EnlightenedOne/MirrorNetworkDiscovery +// forked from https://github.com/in0finite/MirrorNetworkDiscovery +// Both are MIT Licensed + +namespace Mirror.Discovery +{ + /// + /// Base implementation for Network Discovery. Extend this component + /// to provide custom discovery with game specific data + /// NetworkDiscovery for a sample implementation + /// + [DisallowMultipleComponent] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkDiscovery.html")] + public abstract class NetworkDiscoveryBase : MonoBehaviour + where Request : IMessageBase, new() + where Response : IMessageBase, new() + { + public static bool SupportedOnThisPlatform { get { return Application.platform != RuntimePlatform.WebGLPlayer; } } + + // each game should have a random unique handshake, this way you can tell if this is the same game or not + [HideInInspector] + public long secretHandshake; + + [SerializeField] + [Tooltip("The UDP port the server will listen for multi-cast messages")] + protected int serverBroadcastListenPort = 47777; + + [SerializeField] + [Tooltip("Time in seconds between multi-cast messages")] + [Range(1, 60)] + float ActiveDiscoveryInterval = 3; + + protected UdpClient serverUdpClient; + protected UdpClient clientUdpClient; + +#if UNITY_EDITOR + void OnValidate() + { + if (secretHandshake == 0) + { + secretHandshake = RandomLong(); + UnityEditor.Undo.RecordObject(this, "Set secret handshake"); + } + } +#endif + + public static long RandomLong() + { + int value1 = UnityEngine.Random.Range(int.MinValue, int.MaxValue); + int value2 = UnityEngine.Random.Range(int.MinValue, int.MaxValue); + return value1 + ((long)value2 << 32); + } + + /// + /// virtual so that inheriting classes' Start() can call base.Start() too + /// + public virtual void Start() + { + // headless mode? then start advertising + if (NetworkManager.isHeadless) + { + AdvertiseServer(); + } + } + + // Ensure the ports are cleared no matter when Game/Unity UI exits + void OnApplicationQuit() + { + Shutdown(); + } + + void Shutdown() + { + if (serverUdpClient != null) + { + try + { + serverUdpClient.Close(); + } + catch (Exception) + { + // it is just close, swallow the error + } + + serverUdpClient = null; + } + + if (clientUdpClient != null) + { + try + { + clientUdpClient.Close(); + } + catch (Exception) + { + // it is just close, swallow the error + } + + clientUdpClient = null; + } + + CancelInvoke(); + } + + #region Server + + /// + /// Advertise this server in the local network + /// + public void AdvertiseServer() + { + if (!SupportedOnThisPlatform) + throw new PlatformNotSupportedException("Network discovery not supported in this platform"); + + StopDiscovery(); + + // Setup port -- may throw exception + serverUdpClient = new UdpClient(serverBroadcastListenPort) + { + EnableBroadcast = true, + MulticastLoopback = false + }; + + // listen for client pings + _ = ServerListenAsync(); + } + + public async Task ServerListenAsync() + { + while (true) + { + try + { + await ReceiveRequestAsync(serverUdpClient); + } + catch (ObjectDisposedException) + { + // socket has been closed + break; + } + catch (Exception) + { + } + } + } + + async Task ReceiveRequestAsync(UdpClient udpClient) + { + // only proceed if there is available data in network buffer, or otherwise Receive() will block + // average time for UdpClient.Available : 10 us + + UdpReceiveResult udpReceiveResult = await udpClient.ReceiveAsync(); + + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(udpReceiveResult.Buffer)) + { + long handshake = networkReader.ReadInt64(); + if (handshake != secretHandshake) + { + // message is not for us + throw new ProtocolViolationException("Invalid handshake"); + } + + Request request = new Request(); + request.Deserialize(networkReader); + + ProcessClientRequest(request, udpReceiveResult.RemoteEndPoint); + } + } + + /// + /// Reply to the client to inform it of this server + /// + /// + /// Override if you wish to ignore server requests based on + /// custom criteria such as language, full server game mode or difficulty + /// + /// Request comming from client + /// Address of the client that sent the request + protected virtual void ProcessClientRequest(Request request, IPEndPoint endpoint) + { + Response info = ProcessRequest(request, endpoint); + + if (info == null) + return; + + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + try + { + writer.WriteInt64(secretHandshake); + + info.Serialize(writer); + + ArraySegment data = writer.ToArraySegment(); + // signature matches + // send response + serverUdpClient.Send(data.Array, data.Count, endpoint); + } + catch (Exception ex) + { + Debug.LogException(ex, this); + } + } + } + + /// + /// Process the request from a client + /// + /// + /// Override if you wish to provide more information to the clients + /// such as the name of the host player + /// + /// Request comming from client + /// Address of the client that sent the request + /// The message to be sent back to the client or null + protected abstract Response ProcessRequest(Request request, IPEndPoint endpoint); + + #endregion + + #region Client + + /// + /// Start Active Discovery + /// + public void StartDiscovery() + { + if (!SupportedOnThisPlatform) + throw new PlatformNotSupportedException("Network discovery not supported in this platform"); + + StopDiscovery(); + + try + { + // Setup port + clientUdpClient = new UdpClient(0) + { + EnableBroadcast = true, + MulticastLoopback = false + }; + } + catch (Exception) + { + // Free the port if we took it + Shutdown(); + throw; + } + + _ = ClientListenAsync(); + + InvokeRepeating(nameof(BroadcastDiscoveryRequest), 0, ActiveDiscoveryInterval); + } + + /// + /// Stop Active Discovery + /// + public void StopDiscovery() + { + Shutdown(); + } + + /// + /// Awaits for server response + /// + /// ClientListenAsync Task + public async Task ClientListenAsync() + { + while (true) + { + try + { + await ReceiveGameBroadcastAsync(clientUdpClient); + } + catch (ObjectDisposedException) + { + // socket was closed, no problem + return; + } + catch (Exception ex) + { + Debug.LogException(ex); + } + } + } + + /// + /// Sends discovery request from client + /// + public void BroadcastDiscoveryRequest() + { + if (clientUdpClient == null) + return; + + IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, serverBroadcastListenPort); + + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + writer.WriteInt64(secretHandshake); + + try + { + Request request = GetRequest(); + + request.Serialize(writer); + + ArraySegment data = writer.ToArraySegment(); + + clientUdpClient.SendAsync(data.Array, data.Count, endPoint); + } + catch (Exception) + { + // It is ok if we can't broadcast to one of the addresses + } + } + } + + /// + /// Create a message that will be broadcasted on the network to discover servers + /// + /// + /// Override if you wish to include additional data in the discovery message + /// such as desired game mode, language, difficulty, etc... + /// An instance of ServerRequest with data to be broadcasted + protected virtual Request GetRequest() => new Request(); + + async Task ReceiveGameBroadcastAsync(UdpClient udpClient) + { + // only proceed if there is available data in network buffer, or otherwise Receive() will block + // average time for UdpClient.Available : 10 us + + UdpReceiveResult udpReceiveResult = await udpClient.ReceiveAsync(); + + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(udpReceiveResult.Buffer)) + { + if (networkReader.ReadInt64() != secretHandshake) + return; + + Response response = new Response(); + response.Deserialize(networkReader); + + ProcessResponse(response, udpReceiveResult.RemoteEndPoint); + } + } + + /// + /// Process the answer from a server + /// + /// + /// A client receives a reply from a server, this method processes the + /// reply and raises an event + /// + /// Response that came from the server + /// Address of the server that replied + protected abstract void ProcessResponse(Response response, IPEndPoint endpoint); + + #endregion + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs.meta new file mode 100644 index 0000000..7dfbaf6 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b9971d60ce61f4e39b07cd9e7e0c68fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs new file mode 100644 index 0000000..cfb53d6 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror.Discovery +{ + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkDiscoveryHUD")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkDiscovery.html")] + [RequireComponent(typeof(NetworkDiscovery))] + public class NetworkDiscoveryHUD : MonoBehaviour + { + readonly Dictionary discoveredServers = new Dictionary(); + Vector2 scrollViewPos = Vector2.zero; + + public NetworkDiscovery networkDiscovery; + +#if UNITY_EDITOR + void OnValidate() + { + if (networkDiscovery == null) + { + networkDiscovery = GetComponent(); + UnityEditor.Events.UnityEventTools.AddPersistentListener(networkDiscovery.OnServerFound, OnDiscoveredServer); + UnityEditor.Undo.RecordObjects(new Object[] { this, networkDiscovery }, "Set NetworkDiscovery"); + } + } +#endif + + void OnGUI() + { + if (NetworkManager.singleton == null) + return; + + if (NetworkServer.active || NetworkClient.active) + return; + + if (!NetworkClient.isConnected && !NetworkServer.active && !NetworkClient.active) + DrawGUI(); + } + + void DrawGUI() + { + GUILayout.BeginHorizontal(); + + if (GUILayout.Button("Find Servers")) + { + discoveredServers.Clear(); + networkDiscovery.StartDiscovery(); + } + + // LAN Host + if (GUILayout.Button("Start Host")) + { + discoveredServers.Clear(); + NetworkManager.singleton.StartHost(); + networkDiscovery.AdvertiseServer(); + } + + // Dedicated server + if (GUILayout.Button("Start Server")) + { + discoveredServers.Clear(); + NetworkManager.singleton.StartServer(); + + networkDiscovery.AdvertiseServer(); + } + + GUILayout.EndHorizontal(); + + // show list of found server + + GUILayout.Label($"Discovered Servers [{discoveredServers.Count}]:"); + + // servers + scrollViewPos = GUILayout.BeginScrollView(scrollViewPos); + + foreach (ServerResponse info in discoveredServers.Values) + if (GUILayout.Button(info.EndPoint.Address.ToString())) + Connect(info); + + GUILayout.EndScrollView(); + } + + void Connect(ServerResponse info) + { + NetworkManager.singleton.StartClient(info.uri); + } + + public void OnDiscoveredServer(ServerResponse info) + { + // Note that you can check the versioning to decide if you can connect to the server or not using this method + discoveredServers[info.serverId] = info; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs.meta new file mode 100644 index 0000000..f93b275 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/NetworkDiscoveryHUD.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 88c37d3deca7a834d80cfd8d3cfcc510 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs new file mode 100644 index 0000000..3ac59cf --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs @@ -0,0 +1,4 @@ +namespace Mirror.Discovery +{ + public class ServerRequest : MessageBase { } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs.meta new file mode 100644 index 0000000..84f3232 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerRequest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea7254bf7b9454da4adad881d94cd141 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs new file mode 100644 index 0000000..34173e5 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs @@ -0,0 +1,18 @@ +using System; +using System.Net; + +namespace Mirror.Discovery +{ + public class ServerResponse : MessageBase + { + // The server that sent this + // this is a property so that it is not serialized, but the + // client fills this up after we receive it + public IPEndPoint EndPoint { get; set; } + + public Uri uri; + + // Prevent duplicate server appearance when a connection can be made via LAN on multiple NICs + public long serverId; + } +} \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs.meta new file mode 100644 index 0000000..44f23ba --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Discovery/ServerResponse.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 36f97227fdf2d7a4e902db5bfc43039c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental.meta new file mode 100644 index 0000000..57cce38 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bfbf2a1f2b300c5489dcab219ef2846e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs new file mode 100644 index 0000000..fe85158 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs @@ -0,0 +1,363 @@ +using UnityEngine; + +namespace Mirror.Experimental +{ + [AddComponentMenu("Network/Experimental/NetworkRigidbody")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkRigidbody.html")] + public class NetworkRigidbody : NetworkBehaviour + { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkRigidbody)); + + [Header("Settings")] + [SerializeField] internal Rigidbody target = null; + + [Tooltip("Set to true if moves come from owner client, set to false if moves always come from server")] + [SerializeField] bool clientAuthority = false; + + [Header("Velocity")] + + [Tooltip("Syncs Velocity every SyncInterval")] + [SerializeField] bool syncVelocity = true; + + [Tooltip("Set velocity to 0 each frame (only works if syncVelocity is false")] + [SerializeField] bool clearVelocity = false; + + [Tooltip("Only Syncs Value if distance between previous and current is great than sensitivity")] + [SerializeField] float velocitySensitivity = 0.1f; + + + [Header("Angular Velocity")] + + [Tooltip("Syncs AngularVelocity every SyncInterval")] + [SerializeField] bool syncAngularVelocity = true; + + [Tooltip("Set angularVelocity to 0 each frame (only works if syncAngularVelocity is false")] + [SerializeField] bool clearAngularVelocity = false; + + [Tooltip("Only Syncs Value if distance between previous and current is great than sensitivity")] + [SerializeField] float angularVelocitySensitivity = 0.1f; + + /// + /// Values sent on client with authoirty after they are sent to the server + /// + readonly ClientSyncState previousValue = new ClientSyncState(); + + void OnValidate() + { + if (target == null) + { + target = GetComponent(); + } + } + + + #region Sync vars + [SyncVar(hook = nameof(OnVelocityChanged))] + Vector3 velocity; + + [SyncVar(hook = nameof(OnAngularVelocityChanged))] + Vector3 angularVelocity; + + [SyncVar(hook = nameof(OnIsKinematicChanged))] + bool isKinematic; + + [SyncVar(hook = nameof(OnUseGravityChanged))] + bool useGravity; + + [SyncVar(hook = nameof(OnuDragChanged))] + float drag; + + [SyncVar(hook = nameof(OnAngularDragChanged))] + float angularDrag; + + /// + /// Ignore value if is host or client with Authority + /// + /// + bool IgnoreSync => isServer || ClientWithAuthority; + + bool ClientWithAuthority => clientAuthority && hasAuthority; + + void OnVelocityChanged(Vector3 _, Vector3 newValue) + { + if (IgnoreSync) + return; + + target.velocity = newValue; + } + + + void OnAngularVelocityChanged(Vector3 _, Vector3 newValue) + { + if (IgnoreSync) + return; + + target.angularVelocity = newValue; + } + + void OnIsKinematicChanged(bool _, bool newValue) + { + if (IgnoreSync) + return; + + target.isKinematic = newValue; + } + + void OnUseGravityChanged(bool _, bool newValue) + { + if (IgnoreSync) + return; + + target.useGravity = newValue; + } + + void OnuDragChanged(float _, float newValue) + { + if (IgnoreSync) + return; + + target.drag = newValue; + } + + void OnAngularDragChanged(float _, float newValue) + { + if (IgnoreSync) + return; + + target.angularDrag = newValue; + } + #endregion + + + internal void Update() + { + if (isServer) + { + SyncToClients(); + } + else if (ClientWithAuthority) + { + SendToServer(); + } + } + + internal void FixedUpdate() + { + if (clearAngularVelocity && !syncAngularVelocity) + { + target.angularVelocity = Vector3.zero; + } + + if (clearVelocity && !syncVelocity) + { + target.velocity = Vector3.zero; + } + } + + /// + /// Updates sync var values on server so that they sync to the client + /// + [Server] + void SyncToClients() + { + // only update if they have changed more than Sensitivity + + Vector3 currentVelocity = syncVelocity ? target.velocity : default; + Vector3 currentAngularVelocity = syncAngularVelocity ? target.angularVelocity : default; + + bool velocityChanged = syncVelocity && ((previousValue.velocity - currentVelocity).sqrMagnitude > velocitySensitivity * velocitySensitivity); + bool angularVelocityChanged = syncAngularVelocity && ((previousValue.angularVelocity - currentAngularVelocity).sqrMagnitude > angularVelocitySensitivity * angularVelocitySensitivity); + + if (velocityChanged) + { + velocity = currentVelocity; + previousValue.velocity = currentVelocity; + } + + if (angularVelocityChanged) + { + angularVelocity = currentAngularVelocity; + previousValue.angularVelocity = currentAngularVelocity; + } + + // other rigidbody settings + isKinematic = target.isKinematic; + useGravity = target.useGravity; + drag = target.drag; + angularDrag = target.angularDrag; + } + + /// + /// Uses Command to send values to server + /// + [Client] + void SendToServer() + { + if (!hasAuthority) + { + logger.LogWarning("SendToServer called without authority"); + return; + } + + SendVelocity(); + SendRigidBodySettings(); + } + + [Client] + void SendVelocity() + { + float now = Time.time; + if (now < previousValue.nextSyncTime) + return; + + Vector3 currentVelocity = syncVelocity ? target.velocity : default; + Vector3 currentAngularVelocity = syncAngularVelocity ? target.angularVelocity : default; + + bool velocityChanged = syncVelocity && ((previousValue.velocity - currentVelocity).sqrMagnitude > velocitySensitivity * velocitySensitivity); + bool angularVelocityChanged = syncAngularVelocity && ((previousValue.angularVelocity - currentAngularVelocity).sqrMagnitude > angularVelocitySensitivity * angularVelocitySensitivity); + + // if angularVelocity has changed it is likely that velocity has also changed so just sync both values + // however if only velocity has changed just send velocity + if (angularVelocityChanged) + { + CmdSendVelocityAndAngular(currentVelocity, currentAngularVelocity); + previousValue.velocity = currentVelocity; + previousValue.angularVelocity = currentAngularVelocity; + } + else if (velocityChanged) + { + CmdSendVelocity(currentVelocity); + previousValue.velocity = currentVelocity; + } + + + // only update syncTime if either has changed + if (angularVelocityChanged || velocityChanged) + { + previousValue.nextSyncTime = now + syncInterval; + } + } + + [Client] + void SendRigidBodySettings() + { + // These shouldn't change often so it is ok to send in their own Command + if (previousValue.isKinematic != target.isKinematic) + { + CmdSendIsKinematic(target.isKinematic); + previousValue.isKinematic = target.isKinematic; + } + if (previousValue.useGravity != target.useGravity) + { + CmdSendUseGravity(target.useGravity); + previousValue.useGravity = target.useGravity; + } + if (previousValue.drag != target.drag) + { + CmdSendDrag(target.drag); + previousValue.drag = target.drag; + } + if (previousValue.angularDrag != target.angularDrag) + { + CmdSendAngularDrag(target.angularDrag); + previousValue.angularDrag = target.angularDrag; + } + } + + /// + /// Called when only Velocity has changed on the client + /// + [Command] + void CmdSendVelocity(Vector3 velocity) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + this.velocity = velocity; + target.velocity = velocity; + } + + /// + /// Called when angularVelocity has changed on the client + /// + [Command] + void CmdSendVelocityAndAngular(Vector3 velocity, Vector3 angularVelocity) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + if (syncVelocity) + { + this.velocity = velocity; + + target.velocity = velocity; + + } + this.angularVelocity = angularVelocity; + target.angularVelocity = angularVelocity; + } + + [Command] + void CmdSendIsKinematic(bool isKinematic) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + this.isKinematic = isKinematic; + target.isKinematic = isKinematic; + } + + [Command] + void CmdSendUseGravity(bool useGravity) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + this.useGravity = useGravity; + target.useGravity = useGravity; + } + + [Command] + void CmdSendDrag(float drag) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + this.drag = drag; + target.drag = drag; + } + + [Command] + void CmdSendAngularDrag(float angularDrag) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + this.angularDrag = angularDrag; + target.angularDrag = angularDrag; + } + + /// + /// holds previously synced values + /// + public class ClientSyncState + { + /// + /// Next sync time that velocity will be synced, based on syncInterval. + /// + public float nextSyncTime; + public Vector3 velocity; + public Vector3 angularVelocity; + public bool isKinematic; + public bool useGravity; + public float drag; + public float angularDrag; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs.meta new file mode 100644 index 0000000..1610f0a --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkRigidbody.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 83392ae5c1b731446909f252fd494ae4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs new file mode 100644 index 0000000..288a5e6 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs @@ -0,0 +1,12 @@ +using UnityEngine; + +namespace Mirror.Experimental +{ + [DisallowMultipleComponent] + [AddComponentMenu("Network/Experimental/NetworkTransformExperimental")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkTransform.html")] + public class NetworkTransform : NetworkTransformBase + { + protected override Transform targetTransform => transform; + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs.meta new file mode 100644 index 0000000..2bc16dd --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransform.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 741bbe11f5357b44593b15c0d11b16bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs new file mode 100644 index 0000000..bd33d08 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs @@ -0,0 +1,430 @@ +// vis2k: +// base class for NetworkTransform and NetworkTransformChild. +// New method is simple and stupid. No more 1500 lines of code. +// +// Server sends current data. +// Client saves it and interpolates last and latest data points. +// Update handles transform movement / rotation +// FixedUpdate handles rigidbody movement / rotation +// +// Notes: +// * Built-in Teleport detection in case of lags / teleport / obstacles +// * Quaternion > EulerAngles because gimbal lock and Quaternion.Slerp +// * Syncs XYZ. Works 3D and 2D. Saving 4 bytes isn't worth 1000 lines of code. +// * Initial delay might happen if server sends packet immediately after moving +// just 1cm, hence we move 1cm and then wait 100ms for next packet +// * Only way for smooth movement is to use a fixed movement speed during +// interpolation. interpolation over time is never that good. +// +using System; +using UnityEngine; + +namespace Mirror.Experimental +{ + public abstract class NetworkTransformBase : NetworkBehaviour + { + // target transform to sync. can be on a child. + protected abstract Transform targetTransform { get; } + + [Header("Authority")] + + [Tooltip("Set to true if moves come from owner client, set to false if moves always come from server")] + [SyncVar] + public bool clientAuthority; + + [Tooltip("Set to true if updates from server should be ignored by owner")] + [SyncVar] + public bool excludeOwnerUpdate = true; + + [Header("Synchronization")] + + [Tooltip("Set to true if position should be synchronized")] + [SyncVar] + public bool syncPosition = true; + + [Tooltip("Set to true if rotation should be synchronized")] + [SyncVar] + public bool syncRotation = true; + + [Tooltip("Set to true if scale should be synchronized")] + [SyncVar] + public bool syncScale = true; + + [Header("Interpolation")] + + [Tooltip("Set to true if position should be interpolated")] + [SyncVar] + public bool interpolatePosition = true; + + [Tooltip("Set to true if rotation should be interpolated")] + [SyncVar] + public bool interpolateRotation = true; + + [Tooltip("Set to true if scale should be interpolated")] + [SyncVar] + public bool interpolateScale = true; + + // Sensitivity is added for VR where human players tend to have micro movements so this can quiet down + // the network traffic. Additionally, rigidbody drift should send less traffic, e.g very slow sliding / rolling. + [Header("Sensitivity")] + + [Tooltip("Changes to the transform must exceed these values to be transmitted on the network.")] + [SyncVar] + public float localPositionSensitivity = .01f; + + [Tooltip("If rotation exceeds this angle, it will be transmitted on the network")] + [SyncVar] + public float localRotationSensitivity = .01f; + + [Tooltip("Changes to the transform must exceed these values to be transmitted on the network.")] + [SyncVar] + public float localScaleSensitivity = .01f; + + [Header("Diagnostics")] + + // server + public Vector3 lastPosition; + public Quaternion lastRotation; + public Vector3 lastScale; + + // client + // use local position/rotation for VR support + [Serializable] + public struct DataPoint + { + public float timeStamp; + public Vector3 localPosition; + public Quaternion localRotation; + public Vector3 localScale; + public float movementSpeed; + + public bool isValid => timeStamp != 0; + } + + // Is this a client with authority over this transform? + // This component could be on the player object or any object that has been assigned authority to this client. + bool IsOwnerWithClientAuthority => hasAuthority && clientAuthority; + + // interpolation start and goal + public DataPoint start = new DataPoint(); + public DataPoint goal = new DataPoint(); + + void FixedUpdate() + { + // if server then always sync to others. + // let the clients know that this has moved + if (isServer && HasEitherMovedRotatedScaled()) + { + RpcMove(targetTransform.localPosition, targetTransform.localRotation, targetTransform.localScale); + } + + if (isClient) + { + // send to server if we have local authority (and aren't the server) + // -> only if connectionToServer has been initialized yet too + if (IsOwnerWithClientAuthority) + { + if (!isServer && HasEitherMovedRotatedScaled()) + { + // serialize + // local position/rotation for VR support + // send to server + CmdClientToServerSync(targetTransform.localPosition, targetTransform.localRotation, targetTransform.localScale); + } + } + else if (goal.isValid) + { + // teleport or interpolate + if (NeedsTeleport()) + { + // local position/rotation for VR support + ApplyPositionRotationScale(goal.localPosition, goal.localRotation, goal.localScale); + + // reset data points so we don't keep interpolating + start = new DataPoint(); + goal = new DataPoint(); + } + else + { + // local position/rotation for VR support + ApplyPositionRotationScale(InterpolatePosition(start, goal, targetTransform.localPosition), + InterpolateRotation(start, goal, targetTransform.localRotation), + InterpolateScale(start, goal, targetTransform.localScale)); + } + + } + } + } + + // moved or rotated or scaled since last time we checked it? + bool HasEitherMovedRotatedScaled() + { + // Save last for next frame to compare only if change was detected, otherwise + // slow moving objects might never sync because of C#'s float comparison tolerance. + // See also: https://github.com/vis2k/Mirror/pull/428) + bool changed = HasMoved || HasRotated || HasScaled; + if (changed) + { + // local position/rotation for VR support + if (syncPosition) lastPosition = targetTransform.localPosition; + if (syncRotation) lastRotation = targetTransform.localRotation; + if (syncScale) lastScale = targetTransform.localScale; + } + return changed; + } + + // local position/rotation for VR support + // SqrMagnitude is faster than Distance per Unity docs + // https://docs.unity3d.com/ScriptReference/Vector3-sqrMagnitude.html + + bool HasMoved => syncPosition && Vector3.SqrMagnitude(lastPosition - targetTransform.localPosition) > localPositionSensitivity * localPositionSensitivity; + bool HasRotated => syncRotation && Quaternion.Angle(lastRotation, targetTransform.localRotation) > localRotationSensitivity; + bool HasScaled => syncScale && Vector3.SqrMagnitude(lastScale - targetTransform.localScale) > localScaleSensitivity * localScaleSensitivity; + + // teleport / lag / stuck detection + // - checking distance is not enough since there could be just a tiny fence between us and the goal + // - checking time always works, this way we just teleport if we still didn't reach the goal after too much time has elapsed + bool NeedsTeleport() + { + // calculate time between the two data points + float startTime = start.isValid ? start.timeStamp : Time.time - Time.fixedDeltaTime; + float goalTime = goal.isValid ? goal.timeStamp : Time.time; + float difference = goalTime - startTime; + float timeSinceGoalReceived = Time.time - goalTime; + return timeSinceGoalReceived > difference * 5; + } + + // local authority client sends sync message to server for broadcasting + [Command] + void CmdClientToServerSync(Vector3 position, Quaternion rotation, Vector3 scale) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + // deserialize payload + SetGoal(position, rotation, scale); + + // server-only mode does no interpolation to save computations, but let's set the position directly + if (isServer && !isClient) + ApplyPositionRotationScale(goal.localPosition, goal.localRotation, goal.localScale); + + RpcMove(position, rotation, scale); + } + + [ClientRpc] + void RpcMove(Vector3 position, Quaternion rotation, Vector3 scale) + { + if (hasAuthority && excludeOwnerUpdate) return; + + if (!isServer) + SetGoal(position, rotation, scale); + } + + // serialization is needed by OnSerialize and by manual sending from authority + void SetGoal(Vector3 position, Quaternion rotation, Vector3 scale) + { + // put it into a data point immediately + DataPoint temp = new DataPoint + { + // deserialize position + localPosition = position, + localRotation = rotation, + localScale = scale, + timeStamp = Time.time + }; + + // movement speed: based on how far it moved since last time has to be calculated before 'start' is overwritten + temp.movementSpeed = EstimateMovementSpeed(goal, temp, targetTransform, Time.fixedDeltaTime); + + // reassign start wisely + // first ever data point? then make something up for previous one so that we can start interpolation without waiting for next. + if (start.timeStamp == 0) + { + start = new DataPoint + { + timeStamp = Time.time - Time.fixedDeltaTime, + // local position/rotation for VR support + localPosition = targetTransform.localPosition, + localRotation = targetTransform.localRotation, + localScale = targetTransform.localScale, + movementSpeed = temp.movementSpeed + }; + } + // second or nth data point? then update previous + // but: we start at where ever we are right now, so that it's perfectly smooth and we don't jump anywhere + // + // example if we are at 'x': + // + // A--x->B + // + // and then receive a new point C: + // + // A--x--B + // | + // | + // C + // + // then we don't want to just jump to B and start interpolation: + // + // x + // | + // | + // C + // + // we stay at 'x' and interpolate from there to C: + // + // x..B + // \ . + // \. + // C + // + else + { + float oldDistance = Vector3.Distance(start.localPosition, goal.localPosition); + float newDistance = Vector3.Distance(goal.localPosition, temp.localPosition); + + start = goal; + + // local position/rotation for VR support + // teleport / lag / obstacle detection: only continue at current position if we aren't too far away + // XC < AB + BC (see comments above) + if (Vector3.Distance(targetTransform.localPosition, start.localPosition) < oldDistance + newDistance) + { + start.localPosition = targetTransform.localPosition; + start.localRotation = targetTransform.localRotation; + start.localScale = targetTransform.localScale; + } + } + + // set new destination in any case. new data is best data. + goal = temp; + } + + // try to estimate movement speed for a data point based on how far it moved since the previous one + // - if this is the first time ever then we use our best guess: + // - delta based on transform.localPosition + // - elapsed based on send interval hoping that it roughly matches + static float EstimateMovementSpeed(DataPoint from, DataPoint to, Transform transform, float sendInterval) + { + Vector3 delta = to.localPosition - (from.localPosition != transform.localPosition ? from.localPosition : transform.localPosition); + float elapsed = from.isValid ? to.timeStamp - from.timeStamp : sendInterval; + + // avoid NaN + return elapsed > 0 ? delta.magnitude / elapsed : 0; + } + + // set position carefully depending on the target component + void ApplyPositionRotationScale(Vector3 position, Quaternion rotation, Vector3 scale) + { + // local position/rotation for VR support + if (syncPosition) targetTransform.localPosition = position; + if (syncRotation) targetTransform.localRotation = rotation; + if (syncScale) targetTransform.localScale = scale; + } + + // where are we in the timeline between start and goal? [0,1] + Vector3 InterpolatePosition(DataPoint start, DataPoint goal, Vector3 currentPosition) + { + if (!interpolatePosition) + return currentPosition; + + if (start.movementSpeed != 0) + { + // Option 1: simply interpolate based on time, but stutter will happen, it's not that smooth. + // This is especially noticeable if the camera automatically follows the player + // - Tell SonarCloud this isn't really commented code but actual comments and to stfu about it + // - float t = CurrentInterpolationFactor(); + // - return Vector3.Lerp(start.position, goal.position, t); + + // Option 2: always += speed + // speed is 0 if we just started after idle, so always use max for best results + float speed = Mathf.Max(start.movementSpeed, goal.movementSpeed); + return Vector3.MoveTowards(currentPosition, goal.localPosition, speed * Time.deltaTime); + } + + return currentPosition; + } + + Quaternion InterpolateRotation(DataPoint start, DataPoint goal, Quaternion defaultRotation) + { + if (!interpolateRotation) + return defaultRotation; + + if (start.localRotation != goal.localRotation) + { + float t = CurrentInterpolationFactor(start, goal); + return Quaternion.Slerp(start.localRotation, goal.localRotation, t); + } + + return defaultRotation; + } + + Vector3 InterpolateScale(DataPoint start, DataPoint goal, Vector3 currentScale) + { + if (!interpolateScale) + return currentScale; + + if (start.localScale != goal.localScale) + { + float t = CurrentInterpolationFactor(start, goal); + return Vector3.Lerp(start.localScale, goal.localScale, t); + } + + return currentScale; + } + + static float CurrentInterpolationFactor(DataPoint start, DataPoint goal) + { + if (start.isValid) + { + float difference = goal.timeStamp - start.timeStamp; + + // the moment we get 'goal', 'start' is supposed to start, so elapsed time is based on: + float elapsed = Time.time - goal.timeStamp; + + // avoid NaN + return difference > 0 ? elapsed / difference : 1; + } + return 1; + } + + #region Debug Gizmos + + // draw the data points for easier debugging + void OnDrawGizmos() + { + // draw start and goal points and a line between them + if (start.localPosition != goal.localPosition) + { + DrawDataPointGizmo(start, Color.yellow); + DrawDataPointGizmo(goal, Color.green); + DrawLineBetweenDataPoints(start, goal, Color.cyan); + } + } + + static void DrawDataPointGizmo(DataPoint data, Color color) + { + // use a little offset because transform.localPosition might be in the ground in many cases + Vector3 offset = Vector3.up * 0.01f; + + // draw position + Gizmos.color = color; + Gizmos.DrawSphere(data.localPosition + offset, 0.5f); + + // draw forward and up like unity move tool + Gizmos.color = Color.blue; + Gizmos.DrawRay(data.localPosition + offset, data.localRotation * Vector3.forward); + Gizmos.color = Color.green; + Gizmos.DrawRay(data.localPosition + offset, data.localRotation * Vector3.up); + } + + static void DrawLineBetweenDataPoints(DataPoint data1, DataPoint data2, Color color) + { + Gizmos.color = color; + Gizmos.DrawLine(data1.localPosition, data2.localPosition); + } + + #endregion + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs.meta new file mode 100644 index 0000000..d737bed --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ea7c690c4fbf8c4439726f4c62eda6d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs new file mode 100644 index 0000000..4494bd1 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs @@ -0,0 +1,18 @@ +using UnityEngine; + +namespace Mirror.Experimental +{ + /// + /// A component to synchronize the position of child transforms of networked objects. + /// There must be a NetworkTransform on the root object of the hierarchy. There can be multiple NetworkTransformChild components on an object. This does not use physics for synchronization, it simply synchronizes the localPosition and localRotation of the child transform and lerps towards the recieved values. + /// + [AddComponentMenu("Network/Experimental/NetworkTransformChildExperimentalExperimental")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkTransformChild.html")] + public class NetworkTransformChild : NetworkTransformBase + { + [Header("Target")] + public Transform target; + + protected override Transform targetTransform => target; + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs.meta new file mode 100644 index 0000000..30f0d89 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/Experimental/NetworkTransformChild.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f65214da13a861f4a8ae309d3daea1c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs index f3b472b..912f8d6 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs @@ -1,4 +1,4 @@ -using System; +using System.Linq; using UnityEngine; using UnityEngine.Serialization; @@ -9,20 +9,27 @@ namespace Mirror /// /// /// The animation of game objects can be networked by this component. There are two models of authority for networked movement: - /// If the object has authority on the client, then it should animated locally on the owning client. The animation state information will be sent from the owning client to the server, then broadcast to all of the other clients. This is common for player objects. + /// If the object has authority on the client, then it should be animated locally on the owning client. The animation state information will be sent from the owning client to the server, then broadcast to all of the other clients. This is common for player objects. /// If the object has authority on the server, then it should be animated on the server and state information will be sent to all clients. This is common for objects not related to a specific client, such as an enemy unit. - /// The NetworkAnimator synchronizes the animation parameters that are checked in the inspector view. It does not automatically sychronize triggers. The function SetTrigger can by used by an object with authority to fire an animation trigger on other clients. + /// The NetworkAnimator synchronizes all animation parameters of the selected Animator. It does not automatically sychronize triggers. The function SetTrigger can by used by an object with authority to fire an animation trigger on other clients. /// - [DisallowMultipleComponent] [AddComponentMenu("Network/NetworkAnimator")] [RequireComponent(typeof(NetworkIdentity))] [HelpURL("https://mirror-networking.com/docs/Components/NetworkAnimator.html")] public class NetworkAnimator : NetworkBehaviour { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkAnimator)); + + [Header("Authority")] + [Tooltip("Set to true if animations come from owner client, set to false if animations always come from server")] + public bool clientAuthority; + /// /// The animator component to synchronize. /// [FormerlySerializedAs("m_Animator")] + [Header("Animator")] + [Tooltip("Animator that will have parameters synchronized")] public Animator animator; // Note: not an object[] array because otherwise initialization is real annoying @@ -31,30 +38,30 @@ public class NetworkAnimator : NetworkBehaviour bool[] lastBoolParameters; AnimatorControllerParameter[] parameters; - int[] animationHash; // multiple layers + // multiple layers + int[] animationHash; int[] transitionHash; - float sendTimer; + float nextSendTime; - bool sendMessagesAllowed + bool SendMessagesAllowed { get { if (isServer) { - if (!localPlayerAuthority) + if (!clientAuthority) return true; - // This is a special case where we have localPlayerAuthority set - // on a NetworkIdentity but we have not assigned the client who has + // This is a special case where we have client authority but we have not assigned the client who has // authority over it, no animator data will be sent over the network by the server. // - // So we check here for a clientAuthorityOwner and if it is null we will + // So we check here for a connectionToClient and if it is null we will // let the server send animation data until we receive an owner. - if (netIdentity != null && netIdentity.clientAuthorityOwner == null) + if (netIdentity != null && netIdentity.connectionToClient == null) return true; } - return hasAuthority; + return (hasAuthority && clientAuthority); } } @@ -62,7 +69,9 @@ void Awake() { // store the animator parameters in a variable - the "Animator.parameters" getter allocates // a new parameter array every time it is accessed so we should avoid doing it in a loop - parameters = animator.parameters; + parameters = animator.parameters + .Where(par => !animator.IsParameterControlledByCurve(par.nameHash)) + .ToArray(); lastIntParameters = new int[parameters.Length]; lastFloatParameters = new float[parameters.Length]; lastBoolParameters = new bool[parameters.Length]; @@ -73,7 +82,10 @@ void Awake() void FixedUpdate() { - if (!sendMessagesAllowed) + if (!SendMessagesAllowed) + return; + + if (!animator.enabled) return; CheckSendRate(); @@ -87,11 +99,11 @@ void FixedUpdate() continue; } - NetworkWriter writer = NetworkWriterPool.GetWriter(); - WriteParameters(writer); - - SendAnimationMessage(stateHash, normalizedTime, i, writer.ToArraySegment()); - NetworkWriterPool.Recycle(writer); + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + WriteParameters(writer); + SendAnimationMessage(stateHash, normalizedTime, i, writer.ToArray()); + } } } @@ -132,20 +144,20 @@ bool CheckAnimStateChanged(out int stateHash, out float normalizedTime, int laye void CheckSendRate() { - if (sendMessagesAllowed && syncInterval != 0 && sendTimer < Time.time) + float now = Time.time; + if (SendMessagesAllowed && syncInterval >= 0 && now > nextSendTime) { - sendTimer = Time.time + syncInterval; + nextSendTime = now + syncInterval; - NetworkWriter writer = NetworkWriterPool.GetWriter(); - if (WriteParameters(writer)) + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) { - SendAnimationParametersMessage(writer.ToArraySegment()); + if (WriteParameters(writer)) + SendAnimationParametersMessage(writer.ToArray()); } - NetworkWriterPool.Recycle(writer); } } - void SendAnimationMessage(int stateHash, float normalizedTime, int layerId, ArraySegment parameters) + void SendAnimationMessage(int stateHash, float normalizedTime, int layerId, byte[] parameters) { if (isServer) { @@ -157,7 +169,7 @@ void SendAnimationMessage(int stateHash, float normalizedTime, int layerId, Arra } } - void SendAnimationParametersMessage(ArraySegment parameters) + void SendAnimationParametersMessage(byte[] parameters) { if (isServer) { @@ -171,13 +183,13 @@ void SendAnimationParametersMessage(ArraySegment parameters) void HandleAnimMsg(int stateHash, float normalizedTime, int layerId, NetworkReader reader) { - if (hasAuthority) + if (hasAuthority && clientAuthority) return; // usually transitions will be triggered by parameters, if not, play anims directly. // NOTE: this plays "animations", not transitions, so any transitions will be skipped. // NOTE: there is no API to play a transition(?) - if (stateHash != 0) + if (stateHash != 0 && animator.enabled) { animator.Play(stateHash, layerId, normalizedTime); } @@ -187,7 +199,7 @@ void HandleAnimMsg(int stateHash, float normalizedTime, int layerId, NetworkRead void HandleAnimParamsMsg(NetworkReader reader) { - if (hasAuthority) + if (hasAuthority && clientAuthority) return; ReadParameters(reader); @@ -195,7 +207,14 @@ void HandleAnimParamsMsg(NetworkReader reader) void HandleAnimTriggerMsg(int hash) { - animator.SetTrigger(hash); + if (animator.enabled) + animator.SetTrigger(hash); + } + + void HandleAnimResetTriggerMsg(int hash) + { + if (animator.enabled) + animator.ResetTrigger(hash); } ulong NextDirtyBits() @@ -210,27 +229,22 @@ ulong NextDirtyBits() int newIntValue = animator.GetInteger(par.nameHash); changed = newIntValue != lastIntParameters[i]; if (changed) - { lastIntParameters[i] = newIntValue; - } } else if (par.type == AnimatorControllerParameterType.Float) { float newFloatValue = animator.GetFloat(par.nameHash); changed = Mathf.Abs(newFloatValue - lastFloatParameters[i]) > 0.001f; + // only set lastValue if it was changed, otherwise value could slowly drift within the 0.001f limit each frame if (changed) - { lastFloatParameters[i] = newFloatValue; - } } else if (par.type == AnimatorControllerParameterType.Bool) { bool newBoolValue = animator.GetBool(par.nameHash); changed = newBoolValue != lastBoolParameters[i]; if (changed) - { lastBoolParameters[i] = newBoolValue; - } } if (changed) { @@ -271,6 +285,9 @@ bool WriteParameters(NetworkWriter writer, bool forceAll = false) void ReadParameters(NetworkReader reader) { + bool animatorEnabled = animator.enabled; + // need to read values from NetworkReader even if animator is disabled + ulong dirtyBits = reader.ReadPackedUInt64(); for (int i = 0; i < parameters.Length; i++) { @@ -281,17 +298,20 @@ void ReadParameters(NetworkReader reader) if (par.type == AnimatorControllerParameterType.Int) { int newIntValue = reader.ReadPackedInt32(); - animator.SetInteger(par.nameHash, newIntValue); + if (animatorEnabled) + animator.SetInteger(par.nameHash, newIntValue); } else if (par.type == AnimatorControllerParameterType.Float) { float newFloatValue = reader.ReadSingle(); - animator.SetFloat(par.nameHash, newFloatValue); + if (animatorEnabled) + animator.SetFloat(par.nameHash, newFloatValue); } else if (par.type == AnimatorControllerParameterType.Bool) { bool newBoolValue = reader.ReadBoolean(); - animator.SetBool(par.nameHash, newBoolValue); + if (animatorEnabled) + animator.SetBool(par.nameHash, newBoolValue); } } } @@ -300,11 +320,11 @@ void ReadParameters(NetworkReader reader) /// Custom Serialization /// /// - /// + /// /// - public override bool OnSerialize(NetworkWriter writer, bool forceAll) + public override bool OnSerialize(NetworkWriter writer, bool initialState) { - if (forceAll) + if (initialState) { for (int i = 0; i < animator.layerCount; i++) { @@ -321,7 +341,7 @@ public override bool OnSerialize(NetworkWriter writer, bool forceAll) writer.WriteSingle(st.normalizedTime); } } - WriteParameters(writer, forceAll); + WriteParameters(writer, initialState); return true; } return false; @@ -363,76 +383,176 @@ public void SetTrigger(string triggerName) /// Hash id of trigger (from the Animator). public void SetTrigger(int hash) { - if (hasAuthority && localPlayerAuthority) + if (clientAuthority) { - if (ClientScene.readyConnection != null) + if (!isClient) { + logger.LogWarning("Tried to set animation in the server for a client-controlled animator"); + return; + } + + if (!hasAuthority) + { + logger.LogWarning("Only the client with authority can set animations"); + return; + } + + if (ClientScene.readyConnection != null) CmdOnAnimationTriggerServerMessage(hash); + } + else + { + if (!isServer) + { + logger.LogWarning("Tried to set animation in the client for a server-controlled animator"); + return; } - return; + + HandleAnimTriggerMsg(hash); + RpcOnAnimationTriggerClientMessage(hash); } + } - if (isServer && !localPlayerAuthority) + /// + /// Causes an animation trigger to be reset for a networked object. + /// If local authority is set, and this is called from the client, then the trigger will be reset on the server and all clients. If not, then this is called on the server, and the trigger will be reset on all clients. + /// + /// Name of trigger. + public void ResetTrigger(string triggerName) + { + ResetTrigger(Animator.StringToHash(triggerName)); + } + + /// + /// Causes an animation trigger to be reset for a networked object. + /// + /// Hash id of trigger (from the Animator). + public void ResetTrigger(int hash) + { + if (clientAuthority) { - RpcOnAnimationTriggerClientMessage(hash); + if (!isClient) + { + logger.LogWarning("Tried to reset animation in the server for a client-controlled animator"); + return; + } + + if (!hasAuthority) + { + logger.LogWarning("Only the client with authority can reset animations"); + return; + } + + if (ClientScene.readyConnection != null) + CmdOnAnimationResetTriggerServerMessage(hash); + } + else + { + if (!isServer) + { + logger.LogWarning("Tried to reset animation in the client for a server-controlled animator"); + return; + } + + HandleAnimResetTriggerMsg(hash); + RpcOnAnimationResetTriggerClientMessage(hash); } } #region server message handlers + [Command] - void CmdOnAnimationServerMessage(int stateHash, float normalizedTime, int layerId, ArraySegment parameters) + void CmdOnAnimationServerMessage(int stateHash, float normalizedTime, int layerId, byte[] parameters) { - if (LogFilter.Debug) Debug.Log("OnAnimationMessage for netId=" + netId); + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + if (logger.LogEnabled()) logger.Log("OnAnimationMessage for netId=" + netId); // handle and broadcast - NetworkReader reader = NetworkReaderPool.GetReader(parameters); - HandleAnimMsg(stateHash, normalizedTime, layerId, reader); - NetworkReaderPool.Recycle(reader); - RpcOnAnimationClientMessage(stateHash, normalizedTime, layerId, parameters); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(parameters)) + { + HandleAnimMsg(stateHash, normalizedTime, layerId, networkReader); + RpcOnAnimationClientMessage(stateHash, normalizedTime, layerId, parameters); + } } [Command] - void CmdOnAnimationParametersServerMessage(ArraySegment parameters) + void CmdOnAnimationParametersServerMessage(byte[] parameters) { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + // handle and broadcast - NetworkReader reader = NetworkReaderPool.GetReader(parameters); - HandleAnimParamsMsg(reader); - NetworkReaderPool.Recycle(reader); - RpcOnAnimationParametersClientMessage(parameters); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(parameters)) + { + HandleAnimParamsMsg(networkReader); + RpcOnAnimationParametersClientMessage(parameters); + } } [Command] void CmdOnAnimationTriggerServerMessage(int hash) { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + // handle and broadcast HandleAnimTriggerMsg(hash); RpcOnAnimationTriggerClientMessage(hash); } + + [Command] + void CmdOnAnimationResetTriggerServerMessage(int hash) + { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + + // handle and broadcast + HandleAnimResetTriggerMsg(hash); + RpcOnAnimationResetTriggerClientMessage(hash); + } + #endregion #region client message handlers + [ClientRpc] - void RpcOnAnimationClientMessage(int stateHash, float normalizedTime, int layerId, ArraySegment parameters) + void RpcOnAnimationClientMessage(int stateHash, float normalizedTime, int layerId, byte[] parameters) { - NetworkReader reader = NetworkReaderPool.GetReader(parameters); - HandleAnimMsg(stateHash, normalizedTime, layerId, reader); - NetworkReaderPool.Recycle(reader); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(parameters)) + HandleAnimMsg(stateHash, normalizedTime, layerId, networkReader); } [ClientRpc] - void RpcOnAnimationParametersClientMessage(ArraySegment parameters) + void RpcOnAnimationParametersClientMessage(byte[] parameters) { - NetworkReader reader = NetworkReaderPool.GetReader(parameters); - HandleAnimParamsMsg(reader); - NetworkReaderPool.Recycle(reader); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(parameters)) + HandleAnimParamsMsg(networkReader); } - // server sends this to one client [ClientRpc] void RpcOnAnimationTriggerClientMessage(int hash) { + // host handles this before it is sent + if (isServer) return; + HandleAnimTriggerMsg(hash); } + + [ClientRpc] + void RpcOnAnimationResetTriggerClientMessage(int hash) + { + // host handles this before it is sent + if (isServer) return; + + HandleAnimResetTriggerMsg(hash); + } + #endregion } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs.meta index 5fb8576..211ce78 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkAnimator.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs index 3c581d3..5301e39 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs @@ -1,9 +1,5 @@ using System; -using System.Collections.Generic; -using System.Linq; using UnityEngine; -using UnityEngine.SceneManagement; -using UnityEngine.Serialization; namespace Mirror { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs.meta index 317d79f..a32c8c7 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyManager.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs index 2dfef69..2e65465 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs @@ -1,6 +1,5 @@ using System; using UnityEngine; -using UnityEngine.SceneManagement; namespace Mirror { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs.meta index 12a19d3..7a21eec 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkLobbyPlayer.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs new file mode 100644 index 0000000..c3e949c --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror +{ + /// + /// Component that controls visibility of networked objects based on match id. + /// Any object with this component on it will only be visible to other objects in the same match. + /// This would be used to isolate players to their respective matches within a single game server instance. + /// + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkMatchChecker")] + [RequireComponent(typeof(NetworkIdentity))] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkMatchChecker.html")] + public class NetworkMatchChecker : NetworkVisibility + { + static readonly Dictionary> matchPlayers = new Dictionary>(); + + Guid currentMatch = Guid.Empty; + + [Header("Diagnostics")] + [SyncVar] + public string currentMatchDebug; + + /// + /// Set this to the same value on all networked objects that belong to a given match + /// + public Guid matchId + { + get { return currentMatch; } + set + { + if (currentMatch == value) return; + + // cache previous match so observers in that match can be rebuilt + Guid previousMatch = currentMatch; + + // Set this to the new match this object just entered ... + currentMatch = value; + // ... and copy the string for the inspector because Unity can't show Guid directly + currentMatchDebug = currentMatch.ToString(); + + if (previousMatch != Guid.Empty) + { + // Remove this object from the hashset of the match it just left + matchPlayers[previousMatch].Remove(netIdentity); + + // RebuildObservers of all NetworkIdentity's in the match this object just left + RebuildMatchObservers(previousMatch); + } + + if (currentMatch != Guid.Empty) + { + // Make sure this new match is in the dictionary + if (!matchPlayers.ContainsKey(currentMatch)) + matchPlayers.Add(currentMatch, new HashSet()); + + // Add this object to the hashset of the new match + matchPlayers[currentMatch].Add(netIdentity); + + // RebuildObservers of all NetworkIdentity's in the match this object just entered + RebuildMatchObservers(currentMatch); + } + else + { + // Not in any match now...RebuildObservers will clear and add self + netIdentity.RebuildObservers(false); + } + } + } + + public override void OnStartServer() + { + if (currentMatch == Guid.Empty) return; + + if (!matchPlayers.ContainsKey(currentMatch)) + matchPlayers.Add(currentMatch, new HashSet()); + + matchPlayers[currentMatch].Add(netIdentity); + + // No need to rebuild anything here. + // identity.RebuildObservers is called right after this from NetworkServer.SpawnObject + } + + void RebuildMatchObservers(Guid specificMatch) + { + foreach (NetworkIdentity networkIdentity in matchPlayers[specificMatch]) + if (networkIdentity != null) + networkIdentity.RebuildObservers(false); + } + + #region Observers + + /// + /// Callback used by the visibility system to determine if an observer (player) can see this object. + /// If this function returns true, the network connection will be added as an observer. + /// + /// Network connection of a player. + /// True if the player can see this object. + public override bool OnCheckObserver(NetworkConnection conn) + { + // Not Visible if not in a match + if (matchId == Guid.Empty) + return false; + + NetworkMatchChecker networkMatchChecker = conn.identity.GetComponent(); + + if (networkMatchChecker == null) + return false; + + return networkMatchChecker.matchId == matchId; + } + + /// + /// Callback used by the visibility system to (re)construct the set of observers that can see this object. + /// Implementations of this callback should add network connections of players that can see this object to the observers set. + /// + /// The new set of observers for this object. + /// True if the set of observers is being built for the first time. + public override void OnRebuildObservers(HashSet observers, bool initialize) + { + if (currentMatch == Guid.Empty) return; + + foreach (NetworkIdentity networkIdentity in matchPlayers[currentMatch]) + if (networkIdentity != null && networkIdentity.connectionToClient != null) + observers.Add(networkIdentity.connectionToClient); + } + + #endregion + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs.meta new file mode 100644 index 0000000..7c7d6cf --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkMatchChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1020a74962faada4b807ac5dc053a4cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs new file mode 100644 index 0000000..46863bf --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs @@ -0,0 +1,41 @@ +using UnityEngine; + +namespace Mirror +{ + /// + /// Component that will display the clients ping in milliseconds + /// + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkPingDisplay")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkPingDisplay.html")] + public class NetworkPingDisplay : MonoBehaviour + { + [SerializeField] bool showPing = true; + [SerializeField] Vector2 position = new Vector2(200, 0); + [SerializeField] int fontSize = 24; + [SerializeField] Color textColor = new Color32(255, 255, 255, 80); + + GUIStyle style; + + void Awake() + { + style = new GUIStyle(); + style.alignment = TextAnchor.UpperLeft; + style.fontSize = fontSize; + style.normal.textColor = textColor; + } + + void OnGUI() + { + if (!showPing) { return; } + + string text = string.Format("{0}ms", (int)(NetworkTime.rtt * 1000)); + + int width = Screen.width; + int height = Screen.height; + Rect rect = new Rect(position.x, position.y, width - 200, height * 2 / 100); + + GUI.Label(rect, text, style); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs.meta new file mode 100644 index 0000000..221a745 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkPingDisplay.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bc654f29862fc2643b948f772ebb9e68 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs index 88456ea..719ae07 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs @@ -10,17 +10,8 @@ namespace Mirror [AddComponentMenu("Network/NetworkProximityChecker")] [RequireComponent(typeof(NetworkIdentity))] [HelpURL("https://mirror-networking.com/docs/Components/NetworkProximityChecker.html")] - public class NetworkProximityChecker : NetworkBehaviour + public class NetworkProximityChecker : NetworkVisibility { - /// - /// Enumeration of methods to use to check proximity. - /// - public enum CheckMethod - { - Physics3D, - Physics2D - } - /// /// The maximim range that objects will be visible at. /// @@ -33,14 +24,6 @@ public enum CheckMethod [Tooltip("How often (in seconds) that this object should update the list of observers that can see it.")] public float visUpdateInterval = 1; - /// - /// Which method to use for checking proximity of players. - /// Physics3D uses 3D physics to determine proximity. - /// Physics2D uses 2D physics to determine proximity. - /// - [Tooltip("Which method to use for checking proximity of players.\n\nPhysics3D uses 3D physics to determine proximity.\nPhysics2D uses 2D physics to determine proximity.")] - public CheckMethod checkMethod = CheckMethod.Physics3D; - /// /// Flag to force this object to be hidden for players. /// If this object is a player object, it will not be hidden for that player. @@ -48,123 +31,67 @@ public enum CheckMethod [Tooltip("Enable to force this object to be hidden from players.")] public bool forceHidden; - // Layers are used anyway, might as well expose them to the user. - /// - /// Select only the Player's layer to avoid unnecessary SphereCasts against the Terrain, etc. - /// ~0 means 'Everything'. - /// - [Tooltip("Select only the Player's layer to avoid unnecessary SphereCasts against the Terrain, etc.")] - public LayerMask castLayers = ~0; - - float lastUpdateTime; - // OverlapSphereNonAlloc array to avoid allocations. - // -> static so we don't create one per component - // -> this is worth it because proximity checking happens for just about - // every entity on the server! - // -> should be big enough to work in just about all cases - static Collider[] hitsBuffer3D = new Collider[10000]; - static Collider2D[] hitsBuffer2D = new Collider2D[10000]; - - void Update() + public override void OnStartServer() { - if (!NetworkServer.active) - return; + InvokeRepeating(nameof(RebuildObservers), 0, visUpdateInterval); + } + public override void OnStopServer() + { + CancelInvoke(nameof(RebuildObservers)); + } - if (Time.time - lastUpdateTime > visUpdateInterval) - { - netIdentity.RebuildObservers(false); - lastUpdateTime = Time.time; - } + void RebuildObservers() + { + netIdentity.RebuildObservers(false); } /// - /// Called when a new player enters + /// Callback used by the visibility system to determine if an observer (player) can see this object. + /// If this function returns true, the network connection will be added as an observer. /// - /// - /// - public override bool OnCheckObserver(NetworkConnection newObserver) + /// Network connection of a player. + /// True if the player can see this object. + public override bool OnCheckObserver(NetworkConnection conn) { if (forceHidden) return false; - return Vector3.Distance(newObserver.identity.transform.position, transform.position) < visRange; + return Vector3.Distance(conn.identity.transform.position, transform.position) < visRange; } /// - /// Called when a new player enters, and when scene changes occur + /// Callback used by the visibility system to (re)construct the set of observers that can see this object. + /// Implementations of this callback should add network connections of players that can see this object to the observers set. /// - /// List of players to be updated. Modify this set with all the players that can see this object - /// True if this is the first time the method is called for this object - /// True if this component calculated the list of observers - public override bool OnRebuildObservers(HashSet observers, bool initial) + /// The new set of observers for this object. + /// True if the set of observers is being built for the first time. + public override void OnRebuildObservers(HashSet observers, bool initialize) { // if force hidden then return without adding any observers. if (forceHidden) - // always return true when overwriting OnRebuildObservers so that - // Mirror knows not to use the built in rebuild method. - return true; + return; - // find players within range - switch (checkMethod) + // 'transform.' calls GetComponent, only do it once + Vector3 position = transform.position; + + // brute force distance check + // -> only player connections can be observers, so it's enough if we + // go through all connections instead of all spawned identities. + // -> compared to UNET's sphere cast checking, this one is orders of + // magnitude faster. if we have 10k monsters and run a sphere + // cast 10k times, we will see a noticeable lag even with physics + // layers. but checking to every connection is fast. + foreach (NetworkConnectionToClient conn in NetworkServer.connections.Values) { - case CheckMethod.Physics3D: - { - // cast without allocating GC for maximum performance - int hitCount = Physics.OverlapSphereNonAlloc(transform.position, visRange, hitsBuffer3D, castLayers); - if (hitCount == hitsBuffer3D.Length) Debug.LogWarning("NetworkProximityChecker's OverlapSphere test for " + name + " has filled the whole buffer(" + hitsBuffer3D.Length + "). Some results might have been omitted. Consider increasing buffer size."); - - for (int i = 0; i < hitCount; i++) - { - Collider hit = hitsBuffer3D[i]; - // collider might be on pelvis, often the NetworkIdentity is in a parent - // (looks in the object itself and then parents) - NetworkIdentity identity = hit.GetComponentInParent(); - // (if an object has a connectionToClient, it is a player) - if (identity != null && identity.connectionToClient != null) - { - observers.Add(identity.connectionToClient); - } - } - break; - } - - case CheckMethod.Physics2D: + if (conn != null && conn.identity != null) + { + // check distance + if (Vector3.Distance(conn.identity.transform.position, position) < visRange) { - // cast without allocating GC for maximum performance - int hitCount = Physics2D.OverlapCircleNonAlloc(transform.position, visRange, hitsBuffer2D, castLayers); - if (hitCount == hitsBuffer2D.Length) Debug.LogWarning("NetworkProximityChecker's OverlapCircle test for " + name + " has filled the whole buffer(" + hitsBuffer2D.Length + "). Some results might have been omitted. Consider increasing buffer size."); - - for (int i = 0; i < hitCount; i++) - { - Collider2D hit = hitsBuffer2D[i]; - // collider might be on pelvis, often the NetworkIdentity is in a parent - // (looks in the object itself and then parents) - NetworkIdentity identity = hit.GetComponentInParent(); - // (if an object has a connectionToClient, it is a player) - if (identity != null && identity.connectionToClient != null) - { - observers.Add(identity.connectionToClient); - } - } - break; + observers.Add(conn); } - } - - // always return true when overwriting OnRebuildObservers so that - // Mirror knows not to use the built in rebuild method. - return true; - } - - /// - /// Called when hiding and showing objects on the host - /// - /// - public override void OnSetLocalVisibility(bool visible) - { - foreach (Renderer rend in GetComponentsInChildren()) - { - rend.enabled = visible; + } } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs.meta index 79e50e8..c5aa112 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkProximityChecker.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs index 69627a7..7f29f98 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs @@ -1,4 +1,6 @@ +using System; using System.Collections.Generic; +using System.ComponentModel; using System.Linq; using UnityEngine; using UnityEngine.SceneManagement; @@ -18,6 +20,8 @@ namespace Mirror [HelpURL("https://mirror-networking.com/docs/Components/NetworkRoomManager.html")] public class NetworkRoomManager : NetworkManager { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkRoomManager)); + public struct PendingPlayer { public NetworkConnection conn; @@ -28,15 +32,18 @@ public struct PendingPlayer [FormerlySerializedAs("m_ShowRoomGUI")] [SerializeField] + [Tooltip("This flag controls whether the default UI is shown for the room")] internal bool showRoomGUI = true; [FormerlySerializedAs("m_MinPlayers")] [SerializeField] - int minPlayers = 1; + [Tooltip("Minimum number of players to auto-start the game")] + protected int minPlayers = 1; [FormerlySerializedAs("m_RoomPlayerPrefab")] [SerializeField] - NetworkRoomPlayer roomPlayerPrefab; + [Tooltip("Prefab to use for the Room Player")] + protected NetworkRoomPlayer roomPlayerPrefab; /// /// The scene to use for the room. This is similar to the offlineScene of the NetworkManager. @@ -56,16 +63,45 @@ public struct PendingPlayer [FormerlySerializedAs("m_PendingPlayers")] public List pendingPlayers = new List(); + [Header("Diagnostics")] + + /// + /// True when all players have submitted a Ready message + /// + [Tooltip("Diagnostic flag indicating all players are ready to play")] + [FormerlySerializedAs("allPlayersReady")] + [SerializeField] bool _allPlayersReady; + /// /// These slots track players that enter the room. /// The slotId on players is global to the game - across all players. /// + [Tooltip("List of Room Player objects")] public List roomSlots = new List(); - /// - /// True when all players have submitted a Ready message - /// - public bool allPlayersReady; + public bool allPlayersReady + { + get => _allPlayersReady; + set + { + bool wasReady = _allPlayersReady; + bool nowReady = value; + + if (wasReady != nowReady) + { + _allPlayersReady = value; + + if (nowReady) + { + OnRoomServerPlayersReady(); + } + else + { + OnRoomServerPlayersNotReady(); + } + } + } + } public override void OnValidate() { @@ -84,7 +120,7 @@ public override void OnValidate() if (identity == null) { roomPlayerPrefab = null; - Debug.LogError("RoomPlayer prefab must have a NetworkIdentity component."); + logger.LogError("RoomPlayer prefab must have a NetworkIdentity component."); } } @@ -113,12 +149,13 @@ internal void ReadyStatusChanged() } /// - /// + /// Called on the server when a client is ready. + /// The default implementation of this function calls NetworkServer.SetClientReady() to continue the network setup process. /// - /// Connection of the client + /// Connection from client. public override void OnServerReady(NetworkConnection conn) { - if (LogFilter.Debug) Debug.Log("NetworkRoomManager OnServerReady"); + logger.Log("NetworkRoomManager OnServerReady"); base.OnServerReady(conn); if (conn != null && conn.identity != null) @@ -133,9 +170,9 @@ public override void OnServerReady(NetworkConnection conn) void SceneLoadedForPlayer(NetworkConnection conn, GameObject roomPlayer) { - if (LogFilter.Debug) Debug.LogFormat("NetworkRoom SceneLoadedForPlayer scene: {0} {1}", SceneManager.GetActiveScene().name, conn); + if (logger.LogEnabled()) logger.LogFormat(LogType.Log, "NetworkRoom SceneLoadedForPlayer scene: {0} {1}", SceneManager.GetActiveScene().path, conn); - if (SceneManager.GetActiveScene().name == RoomScene) + if (IsSceneActive(RoomScene)) { // cant be ready in room, add to ready list PendingPlayer pending; @@ -145,7 +182,7 @@ void SceneLoadedForPlayer(NetworkConnection conn, GameObject roomPlayer) return; } - GameObject gamePlayer = OnRoomServerCreateGamePlayer(conn); + GameObject gamePlayer = OnRoomServerCreateGamePlayer(conn, roomPlayer); if (gamePlayer == null) { // get start position from base class @@ -153,33 +190,35 @@ void SceneLoadedForPlayer(NetworkConnection conn, GameObject roomPlayer) gamePlayer = startPos != null ? Instantiate(playerPrefab, startPos.position, startPos.rotation) : Instantiate(playerPrefab, Vector3.zero, Quaternion.identity); - gamePlayer.name = playerPrefab.name; } - if (!OnRoomServerSceneLoadedForPlayer(roomPlayer, gamePlayer)) + if (!OnRoomServerSceneLoadedForPlayer(conn, roomPlayer, gamePlayer)) return; // replace room player with game player - NetworkServer.ReplacePlayerForConnection(conn, gamePlayer); + NetworkServer.ReplacePlayerForConnection(conn, gamePlayer, true); } /// /// CheckReadyToBegin checks all of the players in the room to see if their readyToBegin flag is set. - /// If all of the players are ready, then the server switches from the RoomScene to the PlayScene - essentially starting the game. This is called automatically in response to NetworkRoomPlayer.SendReadyToBeginMessage(). + /// If all of the players are ready, then the server switches from the RoomScene to the PlayScene, essentially starting the game. This is called automatically in response to NetworkRoomPlayer.CmdChangeReadyState. /// public void CheckReadyToBegin() { - if (SceneManager.GetActiveScene().name != RoomScene) return; + if (!IsSceneActive(RoomScene)) + return; - if (minPlayers > 0 && NetworkServer.connections.Count(conn => conn.Value != null && conn.Value.identity.gameObject.GetComponent().readyToBegin) < minPlayers) + int numberOfReadyPlayers = NetworkServer.connections.Count(conn => conn.Value != null && conn.Value.identity.gameObject.GetComponent().readyToBegin); + bool enoughReadyPlayers = minPlayers <= 0 || numberOfReadyPlayers >= minPlayers; + if (enoughReadyPlayers) + { + pendingPlayers.Clear(); + allPlayersReady = true; + } + else { allPlayersReady = false; - return; } - - pendingPlayers.Clear(); - allPlayersReady = true; - OnRoomServerPlayersReady(); } void CallOnClientEnterRoom() @@ -205,9 +244,10 @@ void CallOnClientExitRoom() #region server handlers /// - /// + /// Called on the server when a new client connects. + /// Unity calls this on the Server when a Client connects to the Server. Use an override to tell the NetworkManager what to do when a client connects to the server. /// - /// Connection of the client + /// Connection from client. public override void OnServerConnect(NetworkConnection conn) { if (numPlayers >= maxConnections) @@ -217,7 +257,7 @@ public override void OnServerConnect(NetworkConnection conn) } // cannot join game in progress - if (SceneManager.GetActiveScene().name != RoomScene) + if (!IsSceneActive(RoomScene)) { conn.Disconnect(); return; @@ -228,17 +268,25 @@ public override void OnServerConnect(NetworkConnection conn) } /// - /// + /// Called on the server when a client disconnects. + /// This is called on the Server when a Client disconnects from the Server. Use an override to decide what should happen when a disconnection is detected. /// - /// Connection of the client + /// Connection from client. public override void OnServerDisconnect(NetworkConnection conn) { if (conn.identity != null) { - NetworkRoomPlayer player = conn.identity.GetComponent(); + NetworkRoomPlayer roomPlayer = conn.identity.GetComponent(); - if (player != null) - roomSlots.Remove(player); + if (roomPlayer != null) + roomSlots.Remove(roomPlayer); + + foreach (NetworkIdentity clientOwnedObject in conn.clientOwnedObjects) + { + roomPlayer = clientOwnedObject.GetComponent(); + if (roomPlayer != null) + roomSlots.Remove(roomPlayer); + } } allPlayersReady = false; @@ -249,42 +297,40 @@ public override void OnServerDisconnect(NetworkConnection conn) player.GetComponent().readyToBegin = false; } - if (SceneManager.GetActiveScene().name == RoomScene) + if (IsSceneActive(RoomScene)) RecalculateRoomPlayerIndices(); - base.OnServerDisconnect(conn); OnRoomServerDisconnect(conn); + base.OnServerDisconnect(conn); } /// - /// + /// Called on the server when a client adds a new player with ClientScene.AddPlayer. + /// The default implementation for this function creates a new player object from the playerPrefab. /// - /// Connection of the client - /// + /// Connection from client. public override void OnServerAddPlayer(NetworkConnection conn) { - if (SceneManager.GetActiveScene().name != RoomScene) return; - - if (roomSlots.Count == maxConnections) return; - - allPlayersReady = false; - - if (LogFilter.Debug) Debug.LogFormat("NetworkRoomManager.OnServerAddPlayer playerPrefab:{0}", roomPlayerPrefab.name); - - GameObject newRoomGameObject = OnRoomServerCreateRoomPlayer(conn); - if (newRoomGameObject == null) - newRoomGameObject = (GameObject)Instantiate(roomPlayerPrefab.gameObject, Vector3.zero, Quaternion.identity); + if (IsSceneActive(RoomScene)) + { + if (roomSlots.Count == maxConnections) + return; - NetworkRoomPlayer newRoomPlayer = newRoomGameObject.GetComponent(); + allPlayersReady = false; - roomSlots.Add(newRoomPlayer); + if (logger.LogEnabled()) logger.LogFormat(LogType.Log, "NetworkRoomManager.OnServerAddPlayer playerPrefab:{0}", roomPlayerPrefab.name); - RecalculateRoomPlayerIndices(); + GameObject newRoomGameObject = OnRoomServerCreateRoomPlayer(conn); + if (newRoomGameObject == null) + newRoomGameObject = Instantiate(roomPlayerPrefab.gameObject, Vector3.zero, Quaternion.identity); - NetworkServer.AddPlayerForConnection(conn, newRoomGameObject); + NetworkServer.AddPlayerForConnection(conn, newRoomGameObject); + } + else + OnRoomServerAddPlayer(conn); } - void RecalculateRoomPlayerIndices() + public void RecalculateRoomPlayerIndices() { if (roomSlots.Count > 0) { @@ -296,23 +342,22 @@ void RecalculateRoomPlayerIndices() } /// - /// + /// This causes the server to switch scenes and sets the networkSceneName. + /// Clients that connect to this server will automatically switch to this scene. This is called autmatically if onlineScene or offlineScene are set, but it can be called from user code to switch scenes again while the game is in progress. This automatically sets clients to be not-ready. The clients must call NetworkClient.Ready() again to participate in the new scene. /// - /// - public override void ServerChangeScene(string sceneName) + /// + public override void ServerChangeScene(string newSceneName) { - if (sceneName == RoomScene) + if (newSceneName == RoomScene) { foreach (NetworkRoomPlayer roomPlayer in roomSlots) { - if (roomPlayer == null) continue; + if (roomPlayer == null) + continue; // find the game-player object for this connection, and destroy it NetworkIdentity identity = roomPlayer.GetComponent(); - NetworkIdentity playerController = identity.connectionToClient.identity; - NetworkServer.Destroy(playerController.gameObject); - if (NetworkServer.active) { // re-add the room object @@ -320,15 +365,17 @@ public override void ServerChangeScene(string sceneName) NetworkServer.ReplacePlayerForConnection(identity.connectionToClient, roomPlayer.gameObject); } } + + allPlayersReady = false; } - base.ServerChangeScene(sceneName); + base.ServerChangeScene(newSceneName); } /// - /// + /// Called on the server when a scene is completed loaded, when the scene load was initiated by the server with ServerChangeScene(). /// - /// + /// The name of the new scene. public override void OnServerSceneChanged(string sceneName) { if (sceneName != RoomScene) @@ -344,19 +391,20 @@ public override void OnServerSceneChanged(string sceneName) } /// - /// + /// This is invoked when a server is started - including when a host is started. + /// StartServer has multiple signatures, but they all cause this hook to be called. /// public override void OnStartServer() { if (string.IsNullOrEmpty(RoomScene)) { - Debug.LogError("NetworkRoomManager RoomScene is empty. Set the RoomScene in the inspector for the NetworkRoomMangaer"); + logger.LogError("NetworkRoomManager RoomScene is empty. Set the RoomScene in the inspector for the NetworkRoomMangaer"); return; } if (string.IsNullOrEmpty(GameplayScene)) { - Debug.LogError("NetworkRoomManager PlayScene is empty. Set the PlayScene in the inspector for the NetworkRoomMangaer"); + logger.LogError("NetworkRoomManager PlayScene is empty. Set the PlayScene in the inspector for the NetworkRoomMangaer"); return; } @@ -364,7 +412,8 @@ public override void OnStartServer() } /// - /// + /// This is invoked when a host is started. + /// StartHost has multiple signatures, but they all cause this hook to be called. /// public override void OnStartHost() { @@ -372,16 +421,16 @@ public override void OnStartHost() } /// - /// + /// This is called when a server is stopped - including when a host is stopped. /// public override void OnStopServer() { roomSlots.Clear(); - base.OnStopServer(); + OnRoomStopServer(); } /// - /// + /// This is called when a host is stopped. /// public override void OnStopHost() { @@ -393,27 +442,26 @@ public override void OnStopHost() #region client handlers /// - /// + /// This is invoked when the client is started. /// public override void OnStartClient() { if (roomPlayerPrefab == null || roomPlayerPrefab.gameObject == null) - Debug.LogError("NetworkRoomManager no RoomPlayer prefab is registered. Please add a RoomPlayer prefab."); + logger.LogError("NetworkRoomManager no RoomPlayer prefab is registered. Please add a RoomPlayer prefab."); else ClientScene.RegisterPrefab(roomPlayerPrefab.gameObject); if (playerPrefab == null) - Debug.LogError("NetworkRoomManager no GamePlayer prefab is registered. Please add a GamePlayer prefab."); - else - ClientScene.RegisterPrefab(playerPrefab); + logger.LogError("NetworkRoomManager no GamePlayer prefab is registered. Please add a GamePlayer prefab."); OnRoomStartClient(); } /// - /// + /// Called on the client when connected to a server. + /// The default implementation of this function sets the client as ready and adds a player. Override the function to dictate what happens when the client connects. /// - /// Connection of the client + /// Connection to the server. public override void OnClientConnect(NetworkConnection conn) { OnRoomClientConnect(conn); @@ -422,9 +470,10 @@ public override void OnClientConnect(NetworkConnection conn) } /// - /// + /// Called on clients when disconnected from a server. + /// This is called on the client when it disconnects from the server. Override this function to decide what happens when the client disconnects. /// - /// Connection of the client + /// Connection to the server. public override void OnClientDisconnect(NetworkConnection conn) { OnRoomClientDisconnect(conn); @@ -432,28 +481,23 @@ public override void OnClientDisconnect(NetworkConnection conn) } /// - /// + /// This is called when a client is stopped. /// public override void OnStopClient() { OnRoomStopClient(); CallOnClientExitRoom(); - - if (!string.IsNullOrEmpty(offlineScene)) - { - // Move the RoomManager from the virtual DontDestroyOnLoad scene to the Game scene. - // This let's it be destroyed when client changes to the Offline scene. - SceneManager.MoveGameObjectToScene(gameObject, SceneManager.GetActiveScene()); - } + roomSlots.Clear(); } /// - /// + /// Called on clients when a scene has completed loaded, when the scene load was initiated by the server. + /// Scene changes can cause player objects to be destroyed. The default implementation of OnClientSceneChanged in the NetworkManager is to add a player object for the connection if no player object exists. /// /// Connection of the client public override void OnClientSceneChanged(NetworkConnection conn) { - if (SceneManager.GetActiveScene().name == RoomScene) + if (IsSceneActive(RoomScene)) { if (NetworkClient.isConnected) CallOnClientEnterRoom(); @@ -484,6 +528,11 @@ public virtual void OnRoomStopHost() { } /// public virtual void OnRoomStartServer() { } + /// + /// This is called on the server when the server is started - including when a host is stopped. + /// + public virtual void OnRoomStopServer() { } + /// /// This is called on the server when a new client connects to the server. /// @@ -513,26 +562,61 @@ public virtual GameObject OnRoomServerCreateRoomPlayer(NetworkConnection conn) return null; } + // Deprecated 12/17/2019 + /// + /// Obsolete: Use OnRoomServerCreateGamePlayer(NetworkConnection, GameObject) instead. + /// + /// The connection the player object is for. + /// A new GamePlayer object. + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use OnRoomServerCreateGamePlayer(NetworkConnection conn, GameObject roomPlayer) instead", true)] + public virtual GameObject OnRoomServerCreateGamePlayer(NetworkConnection conn) + { + return null; + } + /// /// This allows customization of the creation of the GamePlayer object on the server. /// By default the gamePlayerPrefab is used to create the game-player, but this function allows that behaviour to be customized. The object returned from the function will be used to replace the room-player on the connection. /// /// The connection the player object is for. + /// The room player object for this connection. /// A new GamePlayer object. - public virtual GameObject OnRoomServerCreateGamePlayer(NetworkConnection conn) + public virtual GameObject OnRoomServerCreateGamePlayer(NetworkConnection conn, GameObject roomPlayer) { return null; } + /// + /// This allows customization of the creation of the GamePlayer object on the server. + /// This is only called for subsequent GamePlay scenes after the first one. + /// See OnRoomServerCreateGamePlayer(NetworkConnection, GameObject) to customize the player object for the initial GamePlay scene. + /// + /// The connection the player object is for. + public virtual void OnRoomServerAddPlayer(NetworkConnection conn) + { + base.OnServerAddPlayer(conn); + } + + // Deprecated 02/22/2020 + /// + /// Obsolete: Use OnRoomServerSceneLoadedForPlayer(NetworkConnection, GameObject, GameObject) instead. + /// + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use OnRoomServerSceneLoadedForPlayer(NetworkConnection conn, GameObject roomPlayer, GameObject gamePlayer) instead")] + public virtual bool OnRoomServerSceneLoadedForPlayer(GameObject roomPlayer, GameObject gamePlayer) + { + return true; + } + // for users to apply settings from their room player object to their in-game player object /// /// This is called on the server when it is told that a client has finished switching from the room scene to a game player scene. /// When switching from the room, the room-player is replaced with a game-player object. This callback function gives an opportunity to apply state from the room-player to the game-player object. /// + /// The connection of the player /// The room player object. /// The game player object. /// False to not allow this player to replace the room player. - public virtual bool OnRoomServerSceneLoadedForPlayer(GameObject roomPlayer, GameObject gamePlayer) + public virtual bool OnRoomServerSceneLoadedForPlayer(NetworkConnection conn, GameObject roomPlayer, GameObject gamePlayer) { return true; } @@ -547,6 +631,12 @@ public virtual void OnRoomServerPlayersReady() ServerChangeScene(GameplayScene); } + /// + /// This is called on the server when CheckReadyToBegin finds that players are not ready + /// May be called multiple times while not ready players are joining + /// + public virtual void OnRoomServerPlayersNotReady() { } + #endregion #region room client virtuals @@ -608,10 +698,16 @@ public virtual void OnGUI() if (!showRoomGUI) return; - if (SceneManager.GetActiveScene().name != RoomScene) - return; + if (NetworkServer.active && IsSceneActive(GameplayScene)) + { + GUILayout.BeginArea(new Rect(Screen.width - 150f, 10f, 140f, 30f)); + if (GUILayout.Button("Return to Room")) + ServerChangeScene(RoomScene); + GUILayout.EndArea(); + } - GUI.Box(new Rect(10f, 180f, 520f, 150f), "PLAYERS"); + if (IsSceneActive(RoomScene)) + GUI.Box(new Rect(10f, 180f, 520f, 150f), "PLAYERS"); } #endregion diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs.meta index 35b6436..76e7d42 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomManager.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs index e0dfe4f..5f97060 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs @@ -1,5 +1,6 @@ +using System; +using System.ComponentModel; using UnityEngine; -using UnityEngine.SceneManagement; namespace Mirror { @@ -12,23 +13,31 @@ namespace Mirror [HelpURL("https://mirror-networking.com/docs/Components/NetworkRoomPlayer.html")] public class NetworkRoomPlayer : NetworkBehaviour { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkRoomPlayer)); + /// /// This flag controls whether the default UI is shown for the room player. /// As this UI is rendered using the old GUI system, it is only recommended for testing purposes. /// + [Tooltip("This flag controls whether the default UI is shown for the room player")] public bool showRoomGUI = true; + [Header("Diagnostics")] + /// - /// This is a flag that control whether this player is ready for the game to begin. - /// When all players are ready to begin, the game will start. This should not be set directly, the SendReadyToBeginMessage function should be called on the client to set it on the server. + /// Diagnostic flag indicating whether this player is ready for the game to begin. + /// Invoke CmdChangeReadyState method on the client to set this flag. + /// When all players are ready to begin, the game will start. This should not be set directly, CmdChangeReadyState should be called on the client to set it on the server. /// + [Tooltip("Diagnostic flag indicating whether this player is ready for the game to begin")] [SyncVar(hook = nameof(ReadyStateChanged))] public bool readyToBegin; /// - /// Current index of the player, e.g. Player1, Player2, etc. + /// Diagnostic index of the player, e.g. Player1, Player2, etc. /// - [SyncVar] + [Tooltip("Diagnostic index of the player, e.g. Player1, Player2, etc.")] + [SyncVar(hook = nameof(IndexChanged))] public int index; #region Unity Callbacks @@ -41,15 +50,28 @@ public void Start() if (NetworkManager.singleton is NetworkRoomManager room) { // NetworkRoomPlayer object must be set to DontDestroyOnLoad along with NetworkRoomManager - // in server and all clients, otherwise it will be respawned in the game scene which would + // in server and all clients, otherwise it will be respawned in the game scene which would // have undesireable effects. if (room.dontDestroyOnLoad) DontDestroyOnLoad(gameObject); - OnClientEnterRoom(); + room.roomSlots.Add(this); + room.RecalculateRoomPlayerIndices(); + + if (NetworkClient.active) + OnClientEnterRoom(); } else - Debug.LogError("RoomPlayer could not find a NetworkRoomManager. The RoomPlayer requires a NetworkRoomManager object to function. Make sure that there is one in the scene."); + logger.LogError("RoomPlayer could not find a NetworkRoomManager. The RoomPlayer requires a NetworkRoomManager object to function. Make sure that there is one in the scene."); + } + + public virtual void OnDisable() + { + if (NetworkClient.active && NetworkManager.singleton is NetworkRoomManager room) + { + room.roomSlots.Remove(this); + room.RecalculateRoomPlayerIndices(); + } } #endregion @@ -71,9 +93,23 @@ public void CmdChangeReadyState(bool readyState) #region SyncVar Hooks - void ReadyStateChanged(bool newReadyState) + /// + /// This is a hook that is invoked on clients when the index changes. + /// + /// The old index value + /// The new index value + public virtual void IndexChanged(int oldIndex, int newIndex) { } + + /// + /// This is a hook that is invoked on clients when a RoomPlayer switches between ready or not ready. + /// This function is called when the a client player calls CmdChangeReadyState. + /// + /// New Ready State + public virtual void ReadyStateChanged(bool _, bool newReadyState) { +#pragma warning disable CS0618 // Type or member is obsolete OnClientReady(newReadyState); +#pragma warning restore CS0618 // Type or member is obsolete } #endregion @@ -81,21 +117,21 @@ void ReadyStateChanged(bool newReadyState) #region Room Client Virtuals /// - /// This is a hook that is invoked on all player objects when entering the room. + /// This is a hook that is invoked on clients for all room player objects when entering the room. /// Note: isLocalPlayer is not guaranteed to be set until OnStartLocalPlayer is called. /// public virtual void OnClientEnterRoom() { } /// - /// This is a hook that is invoked on all player objects when exiting the room. + /// This is a hook that is invoked on clients for all room player objects when exiting the room. /// public virtual void OnClientExitRoom() { } + // Deprecated 05/18/2020 /// - /// This is a hook that is invoked on clients when a RoomPlayer switches between ready or not ready. - /// This function is called when the a client player calls SendReadyToBeginMessage() or SendNotReadyToBeginMessage(). + /// Obsolete: Override ReadyStateChanged(bool, bool) instead. /// - /// Whether the player is ready or not. + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Override ReadyStateChanged(bool, bool) instead")] public virtual void OnClientReady(bool readyState) { } #endregion @@ -116,45 +152,54 @@ public virtual void OnGUI() if (!room.showRoomGUI) return; - if (SceneManager.GetActiveScene().name != room.RoomScene) + if (!NetworkManager.IsSceneActive(room.RoomScene)) return; - GUILayout.BeginArea(new Rect(20f + (index * 100), 200f, 90f, 130f)); + DrawPlayerReadyState(); + DrawPlayerReadyButton(); + } + } - GUILayout.Label($"Player [{index + 1}]"); + void DrawPlayerReadyState() + { + GUILayout.BeginArea(new Rect(20f + (index * 100), 200f, 90f, 130f)); + + GUILayout.Label($"Player [{index + 1}]"); + + if (readyToBegin) + GUILayout.Label("Ready"); + else + GUILayout.Label("Not Ready"); + + if (((isServer && index > 0) || isServerOnly) && GUILayout.Button("REMOVE")) + { + // This button only shows on the Host for all players other than the Host + // Host and Players can't remove themselves (stop the client instead) + // Host can kick a Player this way. + GetComponent().connectionToClient.Disconnect(); + } + + GUILayout.EndArea(); + } + + void DrawPlayerReadyButton() + { + if (NetworkClient.active && isLocalPlayer) + { + GUILayout.BeginArea(new Rect(20f, 300f, 120f, 20f)); if (readyToBegin) - GUILayout.Label("Ready"); + { + if (GUILayout.Button("Cancel")) + CmdChangeReadyState(false); + } else - GUILayout.Label("Not Ready"); - - if (((isServer && index > 0) || isServerOnly) && GUILayout.Button("REMOVE")) { - // This button only shows on the Host for all players other than the Host - // Host and Players can't remove themselves (stop the client instead) - // Host can kick a Player this way. - GetComponent().connectionToClient.Disconnect(); + if (GUILayout.Button("Ready")) + CmdChangeReadyState(true); } GUILayout.EndArea(); - - if (NetworkClient.active && isLocalPlayer) - { - GUILayout.BeginArea(new Rect(20f, 300f, 120f, 20f)); - - if (readyToBegin) - { - if (GUILayout.Button("Cancel")) - CmdChangeReadyState(false); - } - else - { - if (GUILayout.Button("Ready")) - CmdChangeReadyState(true); - } - - GUILayout.EndArea(); - } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs.meta index 3062e0e..0299bea 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkRoomPlayer.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs new file mode 100644 index 0000000..4e50315 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs @@ -0,0 +1,115 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; + +namespace Mirror +{ + /// + /// Component that controls visibility of networked objects between scenes. + /// Any object with this component on it will only be visible to other objects in the same scene + /// This would be used when the server has multiple additive subscenes loaded to isolate players to their respective subscenes + /// + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkSceneChecker")] + [RequireComponent(typeof(NetworkIdentity))] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkSceneChecker.html")] + public class NetworkSceneChecker : NetworkVisibility + { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkSceneChecker)); + + /// + /// Flag to force this object to be hidden from all observers. + /// If this object is a player object, it will not be hidden for that client. + /// + [Tooltip("Enable to force this object to be hidden from all observers.")] + public bool forceHidden; + + // Use Scene instead of string scene.name because when additively loading multiples of a subscene the name won't be unique + static readonly Dictionary> sceneCheckerObjects = new Dictionary>(); + + Scene currentScene; + + [ServerCallback] + void Awake() + { + currentScene = gameObject.scene; + if (logger.LogEnabled()) logger.Log($"NetworkSceneChecker.Awake currentScene: {currentScene}"); + } + + public override void OnStartServer() + { + if (!sceneCheckerObjects.ContainsKey(currentScene)) + sceneCheckerObjects.Add(currentScene, new HashSet()); + + sceneCheckerObjects[currentScene].Add(netIdentity); + } + + [ServerCallback] + void Update() + { + if (currentScene == gameObject.scene) + return; + + // This object is in a new scene so observers in the prior scene + // and the new scene need to rebuild their respective observers lists. + + // Remove this object from the hashset of the scene it just left + sceneCheckerObjects[currentScene].Remove(netIdentity); + + // RebuildObservers of all NetworkIdentity's in the scene this object just left + RebuildSceneObservers(); + + // Set this to the new scene this object just entered + currentScene = gameObject.scene; + + // Make sure this new scene is in the dictionary + if (!sceneCheckerObjects.ContainsKey(currentScene)) + sceneCheckerObjects.Add(currentScene, new HashSet()); + + // Add this object to the hashset of the new scene + sceneCheckerObjects[currentScene].Add(netIdentity); + + // RebuildObservers of all NetworkIdentity's in the scene this object just entered + RebuildSceneObservers(); + } + + void RebuildSceneObservers() + { + foreach (NetworkIdentity networkIdentity in sceneCheckerObjects[currentScene]) + if (networkIdentity != null) + networkIdentity.RebuildObservers(false); + } + + /// + /// Callback used by the visibility system to determine if an observer (player) can see this object. + /// If this function returns true, the network connection will be added as an observer. + /// + /// Network connection of a player. + /// True if the player can see this object. + public override bool OnCheckObserver(NetworkConnection conn) + { + if (forceHidden) + return false; + + return conn.identity.gameObject.scene == gameObject.scene; + } + + /// + /// Callback used by the visibility system to (re)construct the set of observers that can see this object. + /// Implementations of this callback should add network connections of players that can see this object to the observers set. + /// + /// The new set of observers for this object. + /// True if the set of observers is being built for the first time. + public override void OnRebuildObservers(HashSet observers, bool initialize) + { + // If forceHidden then return without adding any observers. + if (forceHidden) + return; + + // Add everything in the hashset for this object's current scene + foreach (NetworkIdentity networkIdentity in sceneCheckerObjects[currentScene]) + if (networkIdentity != null && networkIdentity.connectionToClient != null) + observers.Add(networkIdentity.connectionToClient); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs.meta new file mode 100644 index 0000000..b451655 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkSceneChecker.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b7fdb599e1359924bad6255660370252 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransform.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransform.cs.meta index d1af9ec..a569990 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransform.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransform.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs index 463bee3..380a268 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs @@ -16,23 +16,33 @@ // * Only way for smooth movement is to use a fixed movement speed during // interpolation. interpolation over time is never that good. // - -using System; +using System.ComponentModel; using UnityEngine; namespace Mirror { public abstract class NetworkTransformBase : NetworkBehaviour { - // rotation compression. not public so that other scripts can't modify - // it at runtime. alternatively we could send 1 extra byte for the mode - // each time so clients know how to decompress, but the whole point was - // to save bandwidth in the first place. - // -> can still be modified in the Inspector while the game is running, - // but would cause errors immediately and be pretty obvious. - [Tooltip("Compresses 16 Byte Quaternion into None=12, Much=3, Lots=2 Bytes")] - [SerializeField] Compression compressRotation = Compression.Much; - public enum Compression { None, Much, Lots, NoRotation }; // easily understandable and funny + [Header("Authority")] + [Tooltip("Set to true if moves come from owner client, set to false if moves always come from server")] + public bool clientAuthority; + + // Is this a client with authority over this transform? + // This component could be on the player object or any object that has been assigned authority to this client. + bool IsClientWithAuthority => hasAuthority && clientAuthority; + + // Sensitivity is added for VR where human players tend to have micro movements so this can quiet down + // the network traffic. Additionally, rigidbody drift should send less traffic, e.g very slow sliding / rolling. + [Header("Sensitivity")] + [Tooltip("Changes to the transform must exceed these values to be transmitted on the network.")] + public float localPositionSensitivity = .01f; + [Tooltip("If rotation exceeds this angle, it will be transmitted on the network")] + public float localRotationSensitivity = .01f; + [Tooltip("Changes to the transform must exceed these values to be transmitted on the network.")] + public float localScaleSensitivity = .01f; + + // target transform to sync. can be on a child. + protected abstract Transform targetComponent { get; } // server Vector3 lastPosition; @@ -56,49 +66,24 @@ public class DataPoint // local authority send time float lastClientSendTime; - // target transform to sync. can be on a child. - protected abstract Transform targetComponent { get; } - // serialization is needed by OnSerialize and by manual sending from authority - static void SerializeIntoWriter(NetworkWriter writer, Vector3 position, Quaternion rotation, Compression compressRotation, Vector3 scale) + // public only for tests + [EditorBrowsable(EditorBrowsableState.Never)] + public static void SerializeIntoWriter(NetworkWriter writer, Vector3 position, Quaternion rotation, Vector3 scale) { - // serialize position + // serialize position, rotation, scale + // note: we do NOT compress rotation. + // we are CPU constrained, not bandwidth constrained. + // the code needs to WORK for the next 5-10 years of development. writer.WriteVector3(position); - - // serialize rotation - // writing quaternion = 16 byte - // writing euler angles = 12 byte - // -> quaternion->euler->quaternion always works. - // -> gimbal lock only occurs when adding. - Vector3 euler = rotation.eulerAngles; - switch (compressRotation) - { - case Compression.None: - // write 3 floats = 12 byte - writer.WriteSingle(euler.x); - writer.WriteSingle(euler.y); - writer.WriteSingle(euler.z); - break; - case Compression.Much: - // write 3 byte. scaling [0,360] to [0,255] - writer.WriteByte(FloatBytePacker.ScaleFloatToByte(euler.x, 0, 360, byte.MinValue, byte.MaxValue)); - writer.WriteByte(FloatBytePacker.ScaleFloatToByte(euler.y, 0, 360, byte.MinValue, byte.MaxValue)); - writer.WriteByte(FloatBytePacker.ScaleFloatToByte(euler.z, 0, 360, byte.MinValue, byte.MaxValue)); - break; - case Compression.Lots: - // write 2 byte, 5 bits for each float - writer.WriteUInt16(FloatBytePacker.PackThreeFloatsIntoUShort(euler.x, euler.y, euler.z, 0, 360)); - break; - } - - // serialize scale + writer.WriteQuaternion(rotation); writer.WriteVector3(scale); } public override bool OnSerialize(NetworkWriter writer, bool initialState) { // use local position/rotation/scale for VR support - SerializeIntoWriter(writer, targetComponent.transform.localPosition, targetComponent.transform.localRotation, compressRotation, targetComponent.transform.localScale); + SerializeIntoWriter(writer, targetComponent.transform.localPosition, targetComponent.transform.localRotation, targetComponent.transform.localScale); return true; } @@ -107,72 +92,47 @@ public override bool OnSerialize(NetworkWriter writer, bool initialState) // => if this is the first time ever then we use our best guess: // -> delta based on transform.localPosition // -> elapsed based on send interval hoping that it roughly matches - static float EstimateMovementSpeed(DataPoint from, Vector3 toPosition, float toTimestap, Transform transform, float sendInterval) + static float EstimateMovementSpeed(DataPoint from, DataPoint to, Transform transform, float sendInterval) { - Vector3 delta = toPosition - (from != null ? from.localPosition : transform.localPosition); - float elapsed = from != null ? toTimestap - from.timeStamp : sendInterval; - return elapsed > 0 ? delta.magnitude / elapsed : 0; // avoid NaN + Vector3 delta = to.localPosition - (from != null ? from.localPosition : transform.localPosition); + float elapsed = from != null ? to.timeStamp - from.timeStamp : sendInterval; + // avoid NaN + return elapsed > 0 ? delta.magnitude / elapsed : 0; } // serialization is needed by OnSerialize and by manual sending from authority void DeserializeFromReader(NetworkReader reader) { // put it into a data point immediately - Vector3 localPosition = reader.ReadVector3(); - - // deserialize rotation - Quaternion localRotation = default; - switch (compressRotation) + DataPoint temp = new DataPoint { - case Compression.None: - { - // read 3 floats = 16 byte - float x = reader.ReadSingle(); - float y = reader.ReadSingle(); - float z = reader.ReadSingle(); - localRotation = Quaternion.Euler(x, y, z); - break; - } - case Compression.Much: - { - // read 3 byte. scaling [0,255] to [0,360] - float x = FloatBytePacker.ScaleByteToFloat(reader.ReadByte(), byte.MinValue, byte.MaxValue, 0, 360); - float y = FloatBytePacker.ScaleByteToFloat(reader.ReadByte(), byte.MinValue, byte.MaxValue, 0, 360); - float z = FloatBytePacker.ScaleByteToFloat(reader.ReadByte(), byte.MinValue, byte.MaxValue, 0, 360); - localRotation = Quaternion.Euler(x, y, z); - break; - } - case Compression.Lots: - { - // read 2 byte, 5 bits per float - Vector3 xyz = FloatBytePacker.UnpackUShortIntoThreeFloats(reader.ReadUInt16(), 0, 360); - localRotation = Quaternion.Euler(xyz.x, xyz.y, xyz.z); - break; - } - } + // deserialize position + localPosition = reader.ReadVector3() + }; - Vector3 localScale = reader.ReadVector3(); + // deserialize rotation & scale + temp.localRotation = reader.ReadQuaternion(); + temp.localScale = reader.ReadVector3(); - float timeStamp = Time.time; + temp.timeStamp = Time.time; // movement speed: based on how far it moved since last time // has to be calculated before 'start' is overwritten - float movementSpeed = EstimateMovementSpeed(goal, localPosition, timeStamp, targetComponent.transform, syncInterval); + temp.movementSpeed = EstimateMovementSpeed(goal, temp, targetComponent.transform, syncInterval); // reassign start wisely // -> first ever data point? then make something up for previous one // so that we can start interpolation without waiting for next. if (start == null) { - Transform pos = targetComponent.transform; start = new DataPoint { timeStamp = Time.time - syncInterval, // local position/rotation for VR support - localPosition = pos.localPosition, - localRotation = pos.localRotation, - localScale = pos.localScale, - movementSpeed = movementSpeed + localPosition = targetComponent.transform.localPosition, + localRotation = targetComponent.transform.localRotation, + localScale = targetComponent.transform.localScale, + movementSpeed = temp.movementSpeed }; } // -> second or nth data point? then update previous, but: @@ -207,38 +167,24 @@ void DeserializeFromReader(NetworkReader reader) else { float oldDistance = Vector3.Distance(start.localPosition, goal.localPosition); - float newDistance = Vector3.Distance(goal.localPosition, localPosition); + float newDistance = Vector3.Distance(goal.localPosition, temp.localPosition); - start.localPosition = goal.localPosition; - start.localRotation = goal.localRotation; - start.localScale = goal.localScale; - start.movementSpeed = goal.movementSpeed; - start.timeStamp = goal.timeStamp; + start = goal; // teleport / lag / obstacle detection: only continue at current // position if we aren't too far away // - // // local position/rotation for VR support - Transform pos = targetComponent.transform; - if (Vector3.Distance(pos.localPosition, start.localPosition) < oldDistance + newDistance) + // local position/rotation for VR support + if (Vector3.Distance(targetComponent.transform.localPosition, start.localPosition) < oldDistance + newDistance) { - start.localPosition = pos.localPosition; - start.localRotation = pos.localRotation; - start.localScale = pos.localScale; + start.localPosition = targetComponent.transform.localPosition; + start.localRotation = targetComponent.transform.localRotation; + start.localScale = targetComponent.transform.localScale; } } // set new destination in any case. new data is best data. - if (goal == null) - { - goal = new DataPoint(); - } - - goal.localPosition = localPosition; - goal.localRotation = localRotation; - goal.localScale = localScale; - goal.movementSpeed = movementSpeed; - goal.timeStamp = timeStamp; + goal = temp; } public override void OnDeserialize(NetworkReader reader, bool initialState) @@ -249,12 +195,15 @@ public override void OnDeserialize(NetworkReader reader, bool initialState) // local authority client sends sync message to server for broadcasting [Command] - void CmdClientToServerSync(ArraySegment payload) + void CmdClientToServerSync(byte[] payload) { + // Ignore messages from client if not in client authority mode + if (!clientAuthority) + return; + // deserialize payload - NetworkReader reader = NetworkReaderPool.GetReader(payload); - DeserializeFromReader(reader); - NetworkReaderPool.Recycle(reader); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(payload)) + DeserializeFromReader(networkReader); // server-only mode does no interpolation to save computations, // but let's set the position directly @@ -275,7 +224,8 @@ static float CurrentInterpolationFactor(DataPoint start, DataPoint goal) // the moment we get 'goal', 'start' is supposed to // start, so elapsed time is based on: float elapsed = Time.time - goal.timeStamp; - return difference > 0 ? elapsed / difference : 0; // avoid NaN + // avoid NaN + return difference > 0 ? elapsed / difference : 0; } return 0; } @@ -339,9 +289,9 @@ bool HasEitherMovedRotatedScaled() { // moved or rotated or scaled? // local position/rotation/scale for VR support - bool moved = lastPosition != targetComponent.transform.localPosition; - bool rotated = lastRotation != targetComponent.transform.localRotation; - bool scaled = lastScale != targetComponent.transform.localScale; + bool moved = Vector3.Distance(lastPosition, targetComponent.transform.localPosition) > localPositionSensitivity; + bool scaled = Vector3.Distance(lastScale, targetComponent.transform.localScale) > localScaleSensitivity; + bool rotated = Quaternion.Angle(lastRotation, targetComponent.transform.localRotation) > localRotationSensitivity; // save last for next frame to compare // (only if change was detected. otherwise slow moving objects might @@ -363,10 +313,7 @@ void ApplyPositionRotationScale(Vector3 position, Quaternion rotation, Vector3 s { // local position/rotation for VR support targetComponent.transform.localPosition = position; - if (Compression.NoRotation != compressRotation) - { - targetComponent.transform.localRotation = rotation; - } + targetComponent.transform.localRotation = rotation; targetComponent.transform.localScale = scale; } @@ -385,7 +332,7 @@ void Update() { // send to server if we have local authority (and aren't the server) // -> only if connectionToServer has been initialized yet too - if (!isServer && hasAuthority) + if (!isServer && IsClientWithAuthority) { // check only each 'syncInterval' if (Time.time - lastClientSendTime >= syncInterval) @@ -394,12 +341,13 @@ void Update() { // serialize // local position/rotation for VR support - NetworkWriter writer = NetworkWriterPool.GetWriter(); - SerializeIntoWriter(writer, targetComponent.transform.localPosition, targetComponent.transform.localRotation, compressRotation, targetComponent.transform.localScale); + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + SerializeIntoWriter(writer, targetComponent.transform.localPosition, targetComponent.transform.localRotation, targetComponent.transform.localScale); - // send to server - CmdClientToServerSync(writer.ToArraySegment()); - NetworkWriterPool.Recycle(writer); + // send to server + CmdClientToServerSync(writer.ToArray()); + } } lastClientSendTime = Time.time; } @@ -408,7 +356,7 @@ void Update() // apply interpolation on client for all players // unless this client has authority over the object. could be // himself or another object that he was assigned authority over - if (!hasAuthority) + if (!IsClientWithAuthority) { // received one yet? (initialized?) if (goal != null) @@ -418,6 +366,10 @@ void Update() { // local position/rotation for VR support ApplyPositionRotationScale(goal.localPosition, goal.localRotation, goal.localScale); + + // reset data points so we don't keep interpolating + start = null; + goal = null; } else { @@ -442,10 +394,12 @@ static void DrawDataPointGizmo(DataPoint data, Color color) Gizmos.DrawSphere(data.localPosition + offset, 0.5f); // draw forward and up - Gizmos.color = Color.blue; // like unity move tool + // like unity move tool + Gizmos.color = Color.blue; Gizmos.DrawRay(data.localPosition + offset, data.localRotation * Vector3.forward); - Gizmos.color = Color.green; // like unity move tool + // like unity move tool + Gizmos.color = Color.green; Gizmos.DrawRay(data.localPosition + offset, data.localRotation * Vector3.up); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs.meta index 2c3c3e1..ab649d9 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformBase.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs index 84e8b05..84a0d31 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs @@ -10,7 +10,9 @@ namespace Mirror [HelpURL("https://mirror-networking.com/docs/Components/NetworkTransformChild.html")] public class NetworkTransformChild : NetworkTransformBase { + [Header("Target")] public Transform target; + protected override Transform targetComponent => target; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs.meta index 9c068f2..ae36756 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Components/NetworkTransformChild.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs new file mode 100644 index 0000000..30b1acd --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs @@ -0,0 +1,74 @@ +// Unity 2019.3 has an experimental 'disable domain reload on play' +// feature. keeping any global state between sessions will break +// Mirror and most of our user's projects. don't allow it for now. +// https://blogs.unity3d.com/2019/11/05/enter-play-mode-faster-in-unity-2019-3/ +using UnityEditor; +using UnityEngine; + +namespace Mirror +{ + public class EnterPlayModeSettingsCheck : MonoBehaviour + { + [InitializeOnLoadMethod] + static void OnInitializeOnLoad() + { +#if UNITY_2019_3_OR_NEWER + // We can't support experimental "Enter Play Mode Options" mode + // Check immediately on load, and before entering play mode, and warn the user + CheckPlayModeOptions(); +#endif + + // Hook this event to see if we have a good weave every time + // user attempts to enter play mode or tries to do a build + EditorApplication.playModeStateChanged += OnPlayModeStateChanged; + } + + static void OnPlayModeStateChanged(PlayModeStateChange state) + { + // Per Unity docs, this fires "when exiting edit mode before the Editor is in play mode". + // This doesn't fire when closing the editor. + if (state == PlayModeStateChange.ExitingEditMode) + { + CheckSuccessfulWeave(); + +#if UNITY_2019_3_OR_NEWER + // We can't support experimental "Enter Play Mode Options" mode + // Check and prevent entering play mode if enabled + CheckPlayModeOptions(); +#endif + } + } + + static void CheckSuccessfulWeave() + { + // Check if last weave result was successful + if (!SessionState.GetBool("MIRROR_WEAVE_SUCCESS", false)) + { + // Last weave result was a failure...try to weave again + // Faults will show in the console that may have been cleared by "Clear on Play" + SessionState.SetBool("MIRROR_WEAVE_SUCCESS", true); + Weaver.CompilationFinishedHook.WeaveExistingAssemblies(); + + // Did that clear things up for us? + if (!SessionState.GetBool("MIRROR_WEAVE_SUCCESS", false)) + { + // Nope, still failed, and console has the issues logged + Debug.LogError("Can't enter play mode until weaver issues are resolved."); + EditorApplication.isPlaying = false; + } + } + } + +#if UNITY_2019_3_OR_NEWER + static void CheckPlayModeOptions() + { + // enabling the checkbox is enough. it controls all the other settings. + if (EditorSettings.enterPlayModeOptionsEnabled) + { + Debug.LogError("Enter Play Mode Options are not supported by Mirror. Please disable 'ProjectSettings -> Editor -> Enter Play Mode Settings (Experimental)'."); + EditorApplication.isPlaying = false; + } + } +#endif + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs.meta new file mode 100644 index 0000000..79a200d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/EnterPlayModeSettingsCheck.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b15a0d2ca0909400eb53dd6fe894cddd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs new file mode 100644 index 0000000..40d2f1e --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections.Generic; +using System.Reflection; +using UnityEngine; + +namespace Mirror +{ + public static class InspectorHelper + { + /// + /// Gets all public and private fields for a type + /// + /// + /// Stops at this base type (exclusive) + /// + public static IEnumerable GetAllFields(Type type, Type deepestBaseType) + { + const BindingFlags publicFields = BindingFlags.Public | BindingFlags.Instance; + const BindingFlags privateFields = BindingFlags.NonPublic | BindingFlags.Instance; + + // get public fields (includes fields from base type) + FieldInfo[] allPublicFields = type.GetFields(publicFields); + foreach (FieldInfo field in allPublicFields) + { + yield return field; + } + + // get private fields in current type, then move to base type + while (type != null) + { + FieldInfo[] allPrivateFields = type.GetFields(privateFields); + foreach (FieldInfo field in allPrivateFields) + { + yield return field; + } + + type = type.BaseType; + + // stop early + if (type == deepestBaseType) + { + break; + } + } + } + + public static bool IsSyncVar(this FieldInfo field) + { + object[] fieldMarkers = field.GetCustomAttributes(typeof(SyncVarAttribute), true); + return fieldMarkers.Length > 0; + } + public static bool IsSerializeField(this FieldInfo field) + { + object[] fieldMarkers = field.GetCustomAttributes(typeof(SerializeField), true); + return fieldMarkers.Length > 0; + } + public static bool IsVisibleField(this FieldInfo field) + { + return field.IsPublic || IsSerializeField(field); + } + + public static bool IsSyncObject(this FieldInfo field) + { + return typeof(SyncObject).IsAssignableFrom(field.FieldType); + } + public static bool HasShowInInspector(this FieldInfo field) + { + object[] fieldMarkers = field.GetCustomAttributes(typeof(ShowInInspectorAttribute), true); + return fieldMarkers.Length > 0; + } + public static bool IsVisibleSyncObject(this FieldInfo field) + { + return field.IsPublic || HasShowInInspector(field); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs.meta new file mode 100644 index 0000000..852ff71 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/InspectorHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 047c894c2a5ccc1438b7e59302f62744 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs new file mode 100644 index 0000000..82e5275 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs @@ -0,0 +1 @@ +// File moved to Mirror/Editor/Logging/LogLevelWindow.cs \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs.meta new file mode 100644 index 0000000..b8cbaeb --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/LogLevelWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f28def2148ed5194abe70af012a4e3e0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging.meta new file mode 100644 index 0000000..257467f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4d97731cd74ac8b4b8aad808548ef9cd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs new file mode 100644 index 0000000..1d80f52 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs @@ -0,0 +1,70 @@ +using Mirror.Logging; +using UnityEditor; +using UnityEngine; + +namespace Mirror.EditorScripts.Logging +{ + public class LogLevelWindow : EditorWindow + { + [Header("Log Settings Asset")] + [SerializeField] LogSettings settings = null; + + SerializedObject serializedObject; + SerializedProperty settingsProp; + Vector2 dictionaryScrollPosition; + + void OnEnable() + { + serializedObject = new SerializedObject(this); + settingsProp = serializedObject.FindProperty(nameof(settings)); + + LogSettings existingSettings = EditorLogSettingsLoader.FindLogSettings(); + if (existingSettings != null) + { + settingsProp.objectReferenceValue = existingSettings; + serializedObject.ApplyModifiedProperties(); + } + } + + void OnGUI() + { + using (EditorGUILayout.ScrollViewScope scrollScope = new EditorGUILayout.ScrollViewScope(dictionaryScrollPosition, GUIStyle.none, GUI.skin.verticalScrollbar)) + { + dictionaryScrollPosition = scrollScope.scrollPosition; + + using (new EditorGUILayout.VerticalScope()) + { + using (new EditorGUILayout.VerticalScope()) + { + serializedObject.Update(); + EditorGUILayout.PropertyField(settingsProp); + serializedObject.ApplyModifiedProperties(); + + if (settings == null) + { + LogSettings newSettings = LogLevelsGUI.DrawCreateNewButton(); + if (newSettings != null) + { + settingsProp.objectReferenceValue = newSettings; + serializedObject.ApplyModifiedProperties(); + } + } + else + { + LogLevelsGUI.DrawLogFactoryDictionary(settings); + } + } + } + } + } + + [MenuItem("Window/Analysis/Mirror Log Levels", priority = 20002)] + public static void ShowWindow() + { + LogLevelWindow window = GetWindow(); + window.minSize = new Vector2(200, 100); + window.titleContent = new GUIContent("Mirror Log Levels"); + window.Show(); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs.meta new file mode 100644 index 0000000..832876f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c3dbf48190d77d243b87962a82c3b164 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs new file mode 100644 index 0000000..2aaa855 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs @@ -0,0 +1,61 @@ +using System.Collections.Generic; +using Mirror.Logging; +using UnityEditor; +using UnityEngine; + +namespace Mirror.EditorScripts.Logging +{ + public static class LogLevelsGUI + { + public static LogSettings DrawCreateNewButton() + { + if (GUILayout.Button("Create New")) + { + return ScriptableObjectUtility.CreateAsset(nameof(LogSettings)); + } + + return null; + } + + public static void DrawLogFactoryDictionary(LogSettings settings) + { + using (EditorGUI.ChangeCheckScope scope = new EditorGUI.ChangeCheckScope()) + { + if (LogFactory.loggers.Count == 0) + { + EditorGUILayout.LabelField("No Keys found in LogFactory.loggers\nPlay the game for default log values to be added to LogFactory", EditorStyles.wordWrappedLabel); + } + else + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Logging Components", EditorStyles.boldLabel); + + foreach (KeyValuePair item in LogFactory.loggers) + { + DrawLoggerField(item); + } + + if (scope.changed) + { + settings.SaveFromDictionary(LogFactory.loggers); + } + } + } + } + + static void DrawLoggerField(KeyValuePair item) + { + ILogger logger = item.Value; + string name = item.Key; + + const float fieldWidth = 100f; + const float inspectorMargin = 25f; + + using (new EditorGUILayout.HorizontalScope()) + { + EditorGUILayout.LabelField(new GUIContent(ObjectNames.NicifyVariableName(name)), GUILayout.MaxWidth(EditorGUIUtility.currentViewWidth - fieldWidth - inspectorMargin)); + logger.filterLogType = (LogType)EditorGUILayout.EnumPopup(logger.filterLogType, GUILayout.Width(fieldWidth)); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs.meta new file mode 100644 index 0000000..3214b08 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogLevelsGUI.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9d6ce9d62a2d2ec4d8cef8a0d22b8dd2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs new file mode 100644 index 0000000..2579ae4 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs @@ -0,0 +1,24 @@ +using Mirror.Logging; +using UnityEditor; +using UnityEngine; + +namespace Mirror.EditorScripts.Logging +{ + [CustomEditor(typeof(LogSettings))] + public class LogSettingsEditor : Editor + { + public override void OnInspectorGUI() + { + CurrentScriptField(); + + LogLevelsGUI.DrawLogFactoryDictionary(target as LogSettings); + } + + public void CurrentScriptField() + { + GUI.enabled = false; + EditorGUILayout.PropertyField(serializedObject.FindProperty("m_Script")); + GUI.enabled = true; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs.meta new file mode 100644 index 0000000..2c1fac4 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/LogSettingsEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f4ecb3d81ce9ff44b91f311ee46d4ea +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs new file mode 100644 index 0000000..56e172f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs @@ -0,0 +1,31 @@ +using Mirror.Logging; +using UnityEditor; + +namespace Mirror.EditorScripts.Logging +{ + [CustomEditor(typeof(NetworkLogSettings))] + public class NetworkLogSettingsEditor : Editor + { + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + NetworkLogSettings target = this.target as NetworkLogSettings; + + if (target.settings == null) + { + LogSettings newSettings = LogLevelsGUI.DrawCreateNewButton(); + if (newSettings != null) + { + SerializedProperty settingsProp = serializedObject.FindProperty("settings"); + settingsProp.objectReferenceValue = newSettings; + serializedObject.ApplyModifiedProperties(); + } + } + else + { + LogLevelsGUI.DrawLogFactoryDictionary(target.settings); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs.meta new file mode 100644 index 0000000..b4c277d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Logging/NetworkLogSettingsEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 37fb96d5bbf965d47acfc5c8589a1b71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Mirror.Editor.asmdef b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Mirror.Editor.asmdef index d18558b..3ed7e2f 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Mirror.Editor.asmdef +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Mirror.Editor.asmdef @@ -1,7 +1,8 @@ { "name": "Mirror.Editor", "references": [ - "Mirror" + "Mirror", + "Mirror.Weaver" ], "optionalUnityReferences": [], "includePlatforms": [ diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs deleted file mode 100644 index 20db50b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkAnimatorEditor.cs +++ /dev/null @@ -1,5 +0,0 @@ -// This file was removed in Mirror 3.4.9 -// The purpose of this file is to get the old file overwritten -// when users update from the asset store to prevent a flood of errors -// from having the old file still in the project as a straggler. -// This file will be dropped from the Asset Store package in May 2019 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkBehaviourInspector.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkBehaviourInspector.cs index 1672875..45740a0 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkBehaviourInspector.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkBehaviourInspector.cs @@ -1,7 +1,6 @@ using System; using System.Collections; using System.Collections.Generic; -using System.Linq; using System.Reflection; using UnityEditor; using UnityEngine; @@ -12,18 +11,25 @@ namespace Mirror [CanEditMultipleObjects] public class NetworkBehaviourInspector : Editor { - bool initialized; + /// + /// List of all visible syncVars in target class + /// protected List syncVarNames = new List(); bool syncsAnything; - bool[] showSyncLists; - - readonly GUIContent syncVarIndicatorContent = new GUIContent("SyncVar", "This variable has been marked with the [SyncVar] attribute."); - - internal virtual bool HideScriptField => false; + SyncListDrawer syncListDrawer; // does this type sync anything? otherwise we don't need to show syncInterval bool SyncsAnything(Type scriptClass) { + // check for all SyncVar fields, they don't have to be visible + foreach (FieldInfo field in InspectorHelper.GetAllFields(scriptClass, typeof(NetworkBehaviour))) + { + if (field.IsSyncVar()) + { + return true; + } + } + // has OnSerialize that is not in NetworkBehaviour? // then it either has a syncvar or custom OnSerialize. either way // this means we have something to sync. @@ -36,163 +42,144 @@ bool SyncsAnything(Type scriptClass) // SyncObjects are serialized in NetworkBehaviour.OnSerialize, which // is always there even if we don't use SyncObjects. so we need to // search for SyncObjects manually. - // (look for 'Mirror.Sync'. not '.SyncObject' because we'd have to - // check base type for that again) - // => scan both public and non-public fields! SyncVars can be private - BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance; - foreach (FieldInfo field in scriptClass.GetFields(flags)) - { - if (field.FieldType.BaseType != null && - field.FieldType.BaseType.FullName != null && - field.FieldType.BaseType.FullName.Contains("Mirror.Sync")) - { - return true; - } - } + // Any SyncObject should be added to syncObjects when unity creates an + // object so we can cheeck length of list so see if sync objects exists + FieldInfo syncObjectsField = scriptClass.GetField("syncObjects", BindingFlags.NonPublic | BindingFlags.Instance); + List syncObjects = (List)syncObjectsField.GetValue(serializedObject.targetObject); - return false; + return syncObjects.Count > 0; } - void Init(MonoScript script) + void OnEnable() { - initialized = true; - Type scriptClass = script.GetClass(); + if (target == null) { Debug.LogWarning("NetworkBehaviourInspector had no target object"); return; } + + // If target's base class is changed from NetworkBehaviour to MonoBehaviour + // then Unity temporarily keep using this Inspector causing things to break + if (!(target is NetworkBehaviour)) { return; } - // find public SyncVars to show (user doesn't want protected ones to be shown in inspector) - foreach (FieldInfo field in scriptClass.GetFields(BindingFlags.Public | BindingFlags.Instance)) + Type scriptClass = target.GetType(); + + syncVarNames = new List(); + foreach (FieldInfo field in InspectorHelper.GetAllFields(scriptClass, typeof(NetworkBehaviour))) { - Attribute[] fieldMarkers = (Attribute[])field.GetCustomAttributes(typeof(SyncVarAttribute), true); - if (fieldMarkers.Length > 0) + if (field.IsSyncVar() && field.IsVisibleField()) { syncVarNames.Add(field.Name); } } - int numSyncLists = scriptClass.GetFields().Count( - field => field.FieldType.BaseType != null && - field.FieldType.BaseType.Name.Contains("SyncList")); - if (numSyncLists > 0) - { - showSyncLists = new bool[numSyncLists]; - } + syncListDrawer = new SyncListDrawer(serializedObject.targetObject); syncsAnything = SyncsAnything(scriptClass); } public override void OnInspectorGUI() { - if (!initialized) - { - serializedObject.Update(); - SerializedProperty scriptProperty = serializedObject.FindProperty("m_Script"); - if (scriptProperty == null) - return; + DrawDefaultInspector(); + DrawDefaultSyncLists(); + DrawDefaultSyncSettings(); + } - MonoScript targetScript = scriptProperty.objectReferenceValue as MonoScript; - Init(targetScript); - } + /// + /// Draws Sync Objects that are IEnumerable + /// + protected void DrawDefaultSyncLists() + { + // Need this check incase OnEnable returns early + if (syncListDrawer == null) { return; } - EditorGUI.BeginChangeCheck(); - serializedObject.Update(); + syncListDrawer.Draw(); + } - // Loop through properties and create one field (including children) for each top level property. - SerializedProperty property = serializedObject.GetIterator(); - bool expanded = true; - while (property.NextVisible(expanded)) + /// + /// Draws SyncSettings if the NetworkBehaviour has anything to sync + /// + protected void DrawDefaultSyncSettings() + { + // does it sync anything? then show extra properties + // (no need to show it if the class only has Cmds/Rpcs and no sync) + if (!syncsAnything) { - bool isSyncVar = syncVarNames.Contains(property.name); - if (property.propertyType == SerializedPropertyType.ObjectReference) - { - if (property.name == "m_Script") - { - if (HideScriptField) - { - continue; - } + return; + } - EditorGUI.BeginDisabledGroup(true); - } + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Sync Settings", EditorStyles.boldLabel); - EditorGUILayout.PropertyField(property, true); + EditorGUILayout.PropertyField(serializedObject.FindProperty("syncMode")); + EditorGUILayout.PropertyField(serializedObject.FindProperty("syncInterval")); - if (isSyncVar) - { - GUILayout.Label(syncVarIndicatorContent, EditorStyles.miniLabel, GUILayout.Width(EditorStyles.miniLabel.CalcSize(syncVarIndicatorContent).x)); - } + // apply + serializedObject.ApplyModifiedProperties(); + } + } + public class SyncListDrawer + { + readonly UnityEngine.Object targetObject; + readonly List syncListFields; - if (property.name == "m_Script") - { - EditorGUI.EndDisabledGroup(); - } - } - else + public SyncListDrawer(UnityEngine.Object targetObject) + { + this.targetObject = targetObject; + syncListFields = new List(); + foreach (FieldInfo field in InspectorHelper.GetAllFields(targetObject.GetType(), typeof(NetworkBehaviour))) + { + if (field.IsSyncObject() && field.IsVisibleSyncObject()) { - EditorGUILayout.BeginHorizontal(); + syncListFields.Add(new SyncListField(field)); + } + } + } - EditorGUILayout.PropertyField(property, true); + public void Draw() + { + if (syncListFields.Count == 0) { return; } - if (isSyncVar) - { - GUILayout.Label(syncVarIndicatorContent, EditorStyles.miniLabel, GUILayout.Width(EditorStyles.miniLabel.CalcSize(syncVarIndicatorContent).x)); - } + EditorGUILayout.Space(); + EditorGUILayout.LabelField("Sync Lists", EditorStyles.boldLabel); - EditorGUILayout.EndHorizontal(); - } - expanded = false; + for (int i = 0; i < syncListFields.Count; i++) + { + DrawSyncList(syncListFields[i]); } - serializedObject.ApplyModifiedProperties(); - EditorGUI.EndChangeCheck(); + } - // find SyncLists.. they are not properties. - int syncListIndex = 0; - foreach (FieldInfo field in serializedObject.targetObject.GetType().GetFields()) + void DrawSyncList(SyncListField syncListField) + { + syncListField.visible = EditorGUILayout.Foldout(syncListField.visible, syncListField.label); + if (syncListField.visible) { - if (field.FieldType.BaseType != null && field.FieldType.BaseType.Name.Contains("SyncList")) + using (new EditorGUI.IndentLevelScope()) { - showSyncLists[syncListIndex] = EditorGUILayout.Foldout(showSyncLists[syncListIndex], "SyncList " + field.Name + " [" + field.FieldType.Name + "]"); - if (showSyncLists[syncListIndex]) + object fieldValue = syncListField.field.GetValue(targetObject); + if (fieldValue is IEnumerable synclist) { - EditorGUI.indentLevel += 1; - if (field.GetValue(serializedObject.targetObject) is IEnumerable synclist) + int index = 0; + foreach (object item in synclist) { - int index = 0; - IEnumerator enu = synclist.GetEnumerator(); - while (enu.MoveNext()) - { - if (enu.Current != null) - { - EditorGUILayout.LabelField("Item:" + index, enu.Current.ToString()); - } - index += 1; - } + string itemValue = item != null ? item.ToString() : "NULL"; + string itemLabel = "Element " + index; + EditorGUILayout.LabelField(itemLabel, itemValue); + + index++; } - EditorGUI.indentLevel -= 1; } - syncListIndex += 1; } } + } - // does it sync anything? then show extra properties - // (no need to show it if the class only has Cmds/Rpcs and no sync) - if (syncsAnything) + class SyncListField + { + public bool visible; + public readonly FieldInfo field; + public readonly string label; + + public SyncListField(FieldInfo field) { - NetworkBehaviour networkBehaviour = target as NetworkBehaviour; - if (networkBehaviour != null) - { - // syncMode - serializedObject.FindProperty("syncMode").enumValueIndex = (int)(SyncMode) - EditorGUILayout.EnumPopup("Network Sync Mode", networkBehaviour.syncMode); - - // syncInterval - // [0,2] should be enough. anything >2s is too laggy anyway. - serializedObject.FindProperty("syncInterval").floatValue = EditorGUILayout.Slider( - new GUIContent("Network Sync Interval", - "Time in seconds until next change is synchronized to the client. '0' means send immediately if changed. '0.5' means only send changes every 500ms.\n(This is for state synchronization like SyncVars, SyncLists, OnSerialize. Not for Cmds, Rpcs, etc.)"), - networkBehaviour.syncInterval, 0, 2); - - // apply - serializedObject.ApplyModifiedProperties(); - } + this.field = field; + visible = false; + label = field.Name + " [" + field.FieldType.Name + "]"; } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs deleted file mode 100644 index 4b2d12d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkIdentityEditor.cs +++ /dev/null @@ -1,106 +0,0 @@ -using System.Collections.Generic; -using UnityEditor; -using UnityEngine; - -namespace Mirror -{ - [CustomEditor(typeof(NetworkIdentity), true)] - [CanEditMultipleObjects] - public class NetworkIdentityEditor : Editor - { - SerializedProperty serverOnlyProperty; - SerializedProperty localPlayerAuthorityProperty; - - readonly GUIContent serverOnlyLabel = new GUIContent("Server Only", "True if the object should only exist on the server."); - readonly GUIContent localPlayerAuthorityLabel = new GUIContent("Local Player Authority", "True if this object will be controlled by a player on a client."); - readonly GUIContent spawnLabel = new GUIContent("Spawn Object", "This causes an unspawned server object to be spawned on clients"); - - NetworkIdentity networkIdentity; - bool initialized; - bool showObservers; - - void Init() - { - if (initialized) - { - return; - } - initialized = true; - networkIdentity = target as NetworkIdentity; - - serverOnlyProperty = serializedObject.FindProperty("serverOnly"); - localPlayerAuthorityProperty = serializedObject.FindProperty("localPlayerAuthority"); - } - - public override void OnInspectorGUI() - { - if (serverOnlyProperty == null) - { - initialized = false; - } - - Init(); - - serializedObject.Update(); - - if (serverOnlyProperty.boolValue) - { - EditorGUILayout.PropertyField(serverOnlyProperty, serverOnlyLabel); - EditorGUILayout.LabelField("Local Player Authority cannot be set for server-only objects"); - } - else if (localPlayerAuthorityProperty.boolValue) - { - EditorGUILayout.LabelField("Server Only cannot be set for Local Player Authority objects"); - EditorGUILayout.PropertyField(localPlayerAuthorityProperty, localPlayerAuthorityLabel); - } - else - { - EditorGUILayout.PropertyField(serverOnlyProperty, serverOnlyLabel); - EditorGUILayout.PropertyField(localPlayerAuthorityProperty, localPlayerAuthorityLabel); - } - - serializedObject.ApplyModifiedProperties(); - - if (!Application.isPlaying) - { - return; - } - - // Runtime actions below here - - EditorGUILayout.Separator(); - - if (networkIdentity.observers != null && networkIdentity.observers.Count > 0) - { - showObservers = EditorGUILayout.Foldout(showObservers, "Observers"); - if (showObservers) - { - EditorGUI.indentLevel += 1; - foreach (KeyValuePair kvp in networkIdentity.observers) - { - if (kvp.Value.identity != null) - EditorGUILayout.ObjectField("Connection " + kvp.Value.connectionId, kvp.Value.identity.gameObject, typeof(GameObject), false); - else - EditorGUILayout.TextField("Connection " + kvp.Value.connectionId); - } - EditorGUI.indentLevel -= 1; - } - } - - if (PrefabUtility.IsPartOfPrefabAsset(networkIdentity.gameObject)) - return; - - if (networkIdentity.gameObject.activeSelf && networkIdentity.netId == 0 && NetworkServer.active) - { - EditorGUILayout.BeginHorizontal(); - EditorGUILayout.LabelField(spawnLabel); - if (GUILayout.Toggle(false, "Spawn", EditorStyles.miniButtonLeft)) - { - NetworkServer.Spawn(networkIdentity.gameObject); - EditorUtility.SetDirty(target); // preview window STILL doens't update immediately.. - } - EditorGUILayout.EndHorizontal(); - } - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkInformationPreview.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkInformationPreview.cs index 9699f6d..0c30298 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkInformationPreview.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkInformationPreview.cs @@ -1,20 +1,19 @@ using System.Collections.Generic; using UnityEditor; using UnityEngine; -using UnityObject = UnityEngine.Object; namespace Mirror { [CustomPreview(typeof(GameObject))] class NetworkInformationPreview : ObjectPreview { - class NetworkIdentityInfo + struct NetworkIdentityInfo { public GUIContent name; public GUIContent value; } - class NetworkBehaviourInfo + struct NetworkBehaviourInfo { // This is here just so we can check if it's enabled/disabled public NetworkBehaviour behaviour; @@ -31,14 +30,14 @@ public Styles() { Color fontColor = new Color(0.7f, 0.7f, 0.7f); labelStyle.padding.right += 20; - labelStyle.normal.textColor = fontColor; - labelStyle.active.textColor = fontColor; - labelStyle.focused.textColor = fontColor; - labelStyle.hover.textColor = fontColor; - labelStyle.onNormal.textColor = fontColor; - labelStyle.onActive.textColor = fontColor; + labelStyle.normal.textColor = fontColor; + labelStyle.active.textColor = fontColor; + labelStyle.focused.textColor = fontColor; + labelStyle.hover.textColor = fontColor; + labelStyle.onNormal.textColor = fontColor; + labelStyle.onActive.textColor = fontColor; labelStyle.onFocused.textColor = fontColor; - labelStyle.onHover.textColor = fontColor; + labelStyle.onHover.textColor = fontColor; componentName.normal.textColor = fontColor; componentName.active.textColor = fontColor; @@ -60,18 +59,9 @@ public Styles() } } - List info; - List behavioursInfo; - NetworkIdentity identity; GUIContent title; Styles styles = new Styles(); - public override void Initialize(UnityObject[] targets) - { - base.Initialize(targets); - GetNetworkInformation(target as GameObject); - } - public override GUIContent GetPreviewTitle() { if (title == null) @@ -83,7 +73,8 @@ public override GUIContent GetPreviewTitle() public override bool HasPreviewGUI() { - return info != null && info.Count > 0; + // need to check if target is null to stop MissingReferenceException + return target != null && target is GameObject gameObject && gameObject.GetComponent() != null; } public override void OnPreviewGUI(Rect r, GUIStyle background) @@ -91,29 +82,53 @@ public override void OnPreviewGUI(Rect r, GUIStyle background) if (Event.current.type != EventType.Repaint) return; - if (info == null || info.Count == 0) + if (target == null) + return; + + GameObject targetGameObject = target as GameObject; + + if (targetGameObject == null) + return; + + NetworkIdentity identity = targetGameObject.GetComponent(); + + if (identity == null) return; if (styles == null) styles = new Styles(); - // Get required label size for the names of the information values we're going to show - // There are two columns, one with label for the name of the info and the next for the value - Vector2 maxNameLabelSize = new Vector2(140, 16); - Vector2 maxValueLabelSize = GetMaxNameLabelSize(); - //Apply padding + // padding RectOffset previewPadding = new RectOffset(-5, -5, -5, -5); Rect paddedr = previewPadding.Add(r); //Centering float initialX = paddedr.x + 10; - float initialY = paddedr.y + 10; + float Y = paddedr.y + 10; + + Y = DrawNetworkIdentityInfo(identity, initialX, Y); + + Y = DrawNetworkBehaviors(identity, initialX, Y); + + Y = DrawObservers(identity, initialX, Y); - Rect labelRect = new Rect(initialX, initialY, maxNameLabelSize.x, maxNameLabelSize.y); - Rect idLabelRect = new Rect(maxNameLabelSize.x, initialY, maxValueLabelSize.x, maxValueLabelSize.y); + _ = DrawOwner(identity, initialX, Y); - foreach (NetworkIdentityInfo info in info) + } + + float DrawNetworkIdentityInfo(NetworkIdentity identity, float initialX, float Y) + { + IEnumerable infos = GetNetworkIdentityInfo(identity); + // Get required label size for the names of the information values we're going to show + // There are two columns, one with label for the name of the info and the next for the value + Vector2 maxNameLabelSize = new Vector2(140, 16); + Vector2 maxValueLabelSize = GetMaxNameLabelSize(infos); + + Rect labelRect = new Rect(initialX, Y, maxNameLabelSize.x, maxNameLabelSize.y); + Rect idLabelRect = new Rect(maxNameLabelSize.x, Y, maxValueLabelSize.x, maxValueLabelSize.y); + + foreach (NetworkIdentityInfo info in infos) { GUI.Label(labelRect, info.name, styles.labelStyle); GUI.Label(idLabelRect, info.value, styles.componentName); @@ -122,59 +137,76 @@ public override void OnPreviewGUI(Rect r, GUIStyle background) idLabelRect.y += idLabelRect.height; } + return labelRect.y; + } + + float DrawNetworkBehaviors(NetworkIdentity identity, float initialX, float Y) + { + IEnumerable behavioursInfo = GetNetworkBehaviorInfo(identity); + // Show behaviours list in a different way than the name/value pairs above - float lastY = labelRect.y; - if (behavioursInfo != null && behavioursInfo.Count > 0) - { - Vector2 maxBehaviourLabelSize = GetMaxBehaviourLabelSize(); - Rect behaviourRect = new Rect(initialX, labelRect.y + 10, maxBehaviourLabelSize.x, maxBehaviourLabelSize.y); + Vector2 maxBehaviourLabelSize = GetMaxBehaviourLabelSize(behavioursInfo); + Rect behaviourRect = new Rect(initialX, Y + 10, maxBehaviourLabelSize.x, maxBehaviourLabelSize.y); - GUI.Label(behaviourRect, new GUIContent("Network Behaviours"), styles.labelStyle); - behaviourRect.x += 20; // indent names - behaviourRect.y += behaviourRect.height; + GUI.Label(behaviourRect, new GUIContent("Network Behaviours"), styles.labelStyle); + // indent names + behaviourRect.x += 20; + behaviourRect.y += behaviourRect.height; - foreach (NetworkBehaviourInfo info in behavioursInfo) + foreach (NetworkBehaviourInfo info in behavioursInfo) + { + if (info.behaviour == null) { - if (info.behaviour == null) - { - // could be the case in the editor after existing play mode. - continue; - } - - GUI.Label(behaviourRect, info.name, info.behaviour.enabled ? styles.componentName : styles.disabledName); - behaviourRect.y += behaviourRect.height; - lastY = behaviourRect.y; + // could be the case in the editor after existing play mode. + continue; } - if (identity.observers != null && identity.observers.Count > 0) - { - Rect observerRect = new Rect(initialX, lastY + 10, 200, 20); + GUI.Label(behaviourRect, info.name, info.behaviour.enabled ? styles.componentName : styles.disabledName); + behaviourRect.y += behaviourRect.height; + Y = behaviourRect.y; + } - GUI.Label(observerRect, new GUIContent("Network observers"), styles.labelStyle); - observerRect.x += 20; // indent names - observerRect.y += observerRect.height; + return Y; + } - foreach (KeyValuePair kvp in identity.observers) - { - GUI.Label(observerRect, kvp.Value.address + ":" + kvp.Value.connectionId, styles.componentName); - observerRect.y += observerRect.height; - lastY = observerRect.y; - } - } + float DrawObservers(NetworkIdentity identity, float initialX, float Y) + { + if (identity.observers != null && identity.observers.Count > 0) + { + Rect observerRect = new Rect(initialX, Y + 10, 200, 20); - if (identity.clientAuthorityOwner != null) + GUI.Label(observerRect, new GUIContent("Network observers"), styles.labelStyle); + // indent names + observerRect.x += 20; + observerRect.y += observerRect.height; + + foreach (KeyValuePair kvp in identity.observers) { - Rect ownerRect = new Rect(initialX, lastY + 10, 400, 20); - GUI.Label(ownerRect, new GUIContent("Client Authority: " + identity.clientAuthorityOwner), styles.labelStyle); + GUI.Label(observerRect, kvp.Value.address + ":" + kvp.Value, styles.componentName); + observerRect.y += observerRect.height; + Y = observerRect.y; } } + + return Y; + } + + float DrawOwner(NetworkIdentity identity, float initialX, float Y) + { + if (identity.connectionToClient != null) + { + Rect ownerRect = new Rect(initialX, Y + 10, 400, 20); + GUI.Label(ownerRect, new GUIContent("Client Authority: " + identity.connectionToClient), styles.labelStyle); + Y += ownerRect.height; + } + return Y; } // Get the maximum size used by the value of information items - Vector2 GetMaxNameLabelSize() + Vector2 GetMaxNameLabelSize(IEnumerable infos) { Vector2 maxLabelSize = Vector2.zero; - foreach (NetworkIdentityInfo info in info) + foreach (NetworkIdentityInfo info in infos) { Vector2 labelSize = styles.labelStyle.CalcSize(info.value); if (maxLabelSize.x < labelSize.x) @@ -189,7 +221,7 @@ Vector2 GetMaxNameLabelSize() return maxLabelSize; } - Vector2 GetMaxBehaviourLabelSize() + Vector2 GetMaxBehaviourLabelSize(IEnumerable behavioursInfo) { Vector2 maxLabelSize = Vector2.zero; foreach (NetworkBehaviourInfo behaviour in behavioursInfo) @@ -207,47 +239,42 @@ Vector2 GetMaxBehaviourLabelSize() return maxLabelSize; } - void GetNetworkInformation(GameObject gameObject) + IEnumerable GetNetworkIdentityInfo(NetworkIdentity identity) { - identity = gameObject.GetComponent(); - if (identity != null) + List infos = new List { - info = new List - { - GetAssetId(), - GetString("Scene ID", identity.sceneId.ToString("X")) - }; - - if (!Application.isPlaying) - { - return; - } + GetAssetId(identity), + GetString("Scene ID", identity.sceneId.ToString("X")) + }; - info.Add(GetString("Network ID", identity.netId.ToString())); + if (Application.isPlaying) + { + infos.Add(GetString("Network ID", identity.netId.ToString())); + infos.Add(GetBoolean("Is Client", identity.isClient)); + infos.Add(GetBoolean("Is Server", identity.isServer)); + infos.Add(GetBoolean("Has Authority", identity.hasAuthority)); + infos.Add(GetBoolean("Is Local Player", identity.isLocalPlayer)); + } + return infos; + } - info.Add(GetBoolean("Is Client", identity.isClient)); - info.Add(GetBoolean("Is Server", identity.isServer)); - info.Add(GetBoolean("Has Authority", identity.hasAuthority)); - info.Add(GetBoolean("Is Local Player", identity.isLocalPlayer)); + IEnumerable GetNetworkBehaviorInfo(NetworkIdentity identity) + { + List behaviourInfos = new List(); - NetworkBehaviour[] behaviours = gameObject.GetComponents(); - if (behaviours.Length > 0) + NetworkBehaviour[] behaviours = identity.GetComponents(); + foreach (NetworkBehaviour behaviour in behaviours) + { + behaviourInfos.Add(new NetworkBehaviourInfo { - behavioursInfo = new List(); - foreach (NetworkBehaviour behaviour in behaviours) - { - NetworkBehaviourInfo info = new NetworkBehaviourInfo - { - name = new GUIContent(behaviour.GetType().FullName), - behaviour = behaviour - }; - behavioursInfo.Add(info); - } - } + name = new GUIContent(behaviour.GetType().FullName), + behaviour = behaviour + }); } + return behaviourInfos; } - NetworkIdentityInfo GetAssetId() + NetworkIdentityInfo GetAssetId(NetworkIdentity identity) { string assetId = identity.assetId.ToString(); if (string.IsNullOrEmpty(assetId)) @@ -259,22 +286,20 @@ NetworkIdentityInfo GetAssetId() static NetworkIdentityInfo GetString(string name, string value) { - NetworkIdentityInfo info = new NetworkIdentityInfo + return new NetworkIdentityInfo { name = new GUIContent(name), value = new GUIContent(value) }; - return info; } static NetworkIdentityInfo GetBoolean(string name, bool value) { - NetworkIdentityInfo info = new NetworkIdentityInfo + return new NetworkIdentityInfo { name = new GUIContent(name), value = new GUIContent((value ? "Yes" : "No")) }; - return info; } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkManagerEditor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkManagerEditor.cs index 0552cfa..315db46 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkManagerEditor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkManagerEditor.cs @@ -31,7 +31,8 @@ protected void Init() onRemoveCallback = RemoveButton, onChangedCallback = Changed, onAddCallback = AddButton, - elementHeight = 16 // this uses a 16x16 icon. other sizes make it stretch. + // this uses a 16x16 icon. other sizes make it stretch. + elementHeight = 16 }; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkScenePostProcess.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkScenePostProcess.cs index 866a50b..cb66328 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkScenePostProcess.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/NetworkScenePostProcess.cs @@ -50,35 +50,7 @@ public static void OnPostProcessScene() // (and only do SetActive if this was actually a scene object) if (identity.sceneId != 0) { - // set scene hash - identity.SetSceneIdSceneHashPartInternal(); - - // disable it - // note: NetworkIdentity.OnDisable adds itself to the - // spawnableObjects dictionary (only if sceneId != 0) - identity.gameObject.SetActive(false); - - // safety check for prefabs with more than one NetworkIdentity - #if UNITY_2018_2_OR_NEWER - GameObject prefabGO = PrefabUtility.GetCorrespondingObjectFromSource(identity.gameObject) as GameObject; - #else - GameObject prefabGO = PrefabUtility.GetPrefabParent(identity.gameObject) as GameObject; - #endif - if (prefabGO) - { - #if UNITY_2018_3_OR_NEWER - GameObject prefabRootGO = prefabGO.transform.root.gameObject; - #else - GameObject prefabRootGO = PrefabUtility.FindPrefabRoot(prefabGO); - #endif - if (prefabRootGO) - { - if (prefabRootGO.GetComponentsInChildren().Length > 1) - { - Debug.LogWarningFormat("Prefab '{0}' has several NetworkIdentity components attached to itself or its children, this is not supported.", prefabRootGO.name); - } - } - } + PrepareSceneObject(identity); } // throwing an exception would only show it for one object // because this function would return afterwards. @@ -86,5 +58,35 @@ public static void OnPostProcessScene() } } } + + static void PrepareSceneObject(NetworkIdentity identity) + { + // set scene hash + identity.SetSceneIdSceneHashPartInternal(); + + // disable it + // note: NetworkIdentity.OnDisable adds itself to the + // spawnableObjects dictionary (only if sceneId != 0) + identity.gameObject.SetActive(false); + + // safety check for prefabs with more than one NetworkIdentity +#if UNITY_2018_2_OR_NEWER + GameObject prefabGO = PrefabUtility.GetCorrespondingObjectFromSource(identity.gameObject); +#else + GameObject prefabGO = PrefabUtility.GetPrefabParent(identity.gameObject); +#endif + if (prefabGO) + { +#if UNITY_2018_3_OR_NEWER + GameObject prefabRootGO = prefabGO.transform.root.gameObject; +#else + GameObject prefabRootGO = PrefabUtility.FindPrefabRoot(prefabGO); +#endif + if (prefabRootGO != null && prefabRootGO.GetComponentsInChildren().Length > 1) + { + Debug.LogWarningFormat("Prefab '{0}' has several NetworkIdentity components attached to itself or its children, this is not supported.", prefabRootGO.name); + } + } + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/PreprocessorDefine.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/PreprocessorDefine.cs deleted file mode 100644 index 9e23e33..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/PreprocessorDefine.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections.Generic; -using UnityEditor; - -namespace Mirror -{ - static class PreprocessorDefine - { - /// - /// Add define symbols as soon as Unity gets done compiling. - /// - [InitializeOnLoadMethod] - static void AddDefineSymbols() - { - HashSet defines = new HashSet(PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup).Split(';')) - { - "MIRROR", - "MIRROR_1726_OR_NEWER", - "MIRROR_3_0_OR_NEWER", - "MIRROR_3_12_OR_NEWER", - "MIRROR_4_0_OR_NEWER" - }; - PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, string.Join(";", defines)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SceneDrawer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SceneDrawer.cs index b6c04f4..a234c3f 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SceneDrawer.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SceneDrawer.cs @@ -3,53 +3,44 @@ namespace Mirror { - [CustomPropertyDrawer(typeof(SceneAttribute))] public class SceneDrawer : PropertyDrawer { - public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { - if (property.propertyType == SerializedPropertyType.String) { - SceneAsset sceneObject = GetSceneObject(property.stringValue); - SceneAsset scene = (SceneAsset)EditorGUI.ObjectField(position, label, sceneObject, typeof(SceneAsset), true); - if (scene == null) + SceneAsset sceneObject = AssetDatabase.LoadAssetAtPath(property.stringValue); + + if (sceneObject == null && !string.IsNullOrEmpty(property.stringValue)) { - property.stringValue = ""; + // try to load it from the build settings for legacy compatibility + sceneObject = GetBuildSettingsSceneObject(property.stringValue); } - else if (scene.name != property.stringValue) + if (sceneObject == null && !string.IsNullOrEmpty(property.stringValue)) { - SceneAsset sceneObj = GetSceneObject(scene.name); - if (sceneObj == null) - { - Debug.LogWarning("The scene " + scene.name + " cannot be used. To use this scene add it to the build settings for the project"); - } - else - { - property.stringValue = scene.name; - } + Debug.LogError($"Could not find scene {property.stringValue} in {property.propertyPath}, assign the proper scenes in your NetworkManager"); } + SceneAsset scene = (SceneAsset)EditorGUI.ObjectField(position, label, sceneObject, typeof(SceneAsset), true); + + property.stringValue = AssetDatabase.GetAssetPath(scene); } else - EditorGUI.LabelField(position, label.text, "Use [Scene] with strings."); - } - protected SceneAsset GetSceneObject(string sceneObjectName) - { - if (string.IsNullOrEmpty(sceneObjectName)) { - return null; + EditorGUI.LabelField(position, label.text, "Use [Scene] with strings."); } + } - foreach (EditorBuildSettingsScene editorScene in EditorBuildSettings.scenes) + protected SceneAsset GetBuildSettingsSceneObject(string sceneName) + { + foreach (EditorBuildSettingsScene buildScene in EditorBuildSettings.scenes) { - if (editorScene.path.IndexOf(sceneObjectName) != -1) + SceneAsset sceneAsset = AssetDatabase.LoadAssetAtPath(buildScene.path); + if (sceneAsset.name == sceneName) { - return AssetDatabase.LoadAssetAtPath(editorScene.path, typeof(SceneAsset)) as SceneAsset; + return sceneAsset; } } - Debug.LogWarning("Scene [" + sceneObjectName + "] cannot be used. Add this scene to the 'Scenes in the Build' in build settings."); return null; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs new file mode 100644 index 0000000..e6a36bd --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs @@ -0,0 +1,54 @@ +using UnityEditor; +using UnityEngine; + +namespace Mirror.EditorScripts +{ + public static class ScriptableObjectUtility + { + /// + // This makes it easy to create, name and place unique new ScriptableObject asset files. + /// + public static T CreateAsset(string defaultName) where T : ScriptableObject + { + string path = SavePanel(defaultName); + // user click cancel + if (string.IsNullOrEmpty(path)) { return null; } + + T asset = ScriptableObject.CreateInstance(); + + SaveAsset(path, asset); + + return asset; + } + + static string SavePanel(string name) + { + string path = EditorUtility.SaveFilePanel( + "Save ScriptableObject", + "Assets/Mirror/", + name + ".asset", + "asset"); + + // user click cancel, return early + if (string.IsNullOrEmpty(path)) { return path; } + + // Unity only wants path from Assets + if (path.StartsWith(Application.dataPath)) + { + path = "Assets" + path.Substring(Application.dataPath.Length); + } + + return path; + } + + static void SaveAsset(string path, ScriptableObject asset) + { + string assetPathAndName = AssetDatabase.GenerateUniqueAssetPath(path); + + AssetDatabase.CreateAsset(asset, assetPathAndName); + + AssetDatabase.SaveAssets(); + AssetDatabase.Refresh(); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs.meta new file mode 100644 index 0000000..a1a0af3 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/ScriptableObjectUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4d54a29ddd5b52b4eaa07ed39c0e3e83 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs new file mode 100644 index 0000000..f7b018a --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs @@ -0,0 +1,28 @@ +using UnityEditor; +using UnityEngine; + +namespace Mirror +{ + [CustomPropertyDrawer(typeof(SyncVarAttribute))] + public class SyncVarAttributeDrawer : PropertyDrawer + { + static readonly GUIContent syncVarIndicatorContent = new GUIContent("SyncVar", "This variable has been marked with the [SyncVar] attribute."); + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + Vector2 syncVarIndicatorRect = EditorStyles.miniLabel.CalcSize(syncVarIndicatorContent); + float valueWidth = position.width - syncVarIndicatorRect.x; + + Rect valueRect = new Rect(position.x, position.y, valueWidth, position.height); + Rect labelRect = new Rect(position.x + valueWidth, position.y, syncVarIndicatorRect.x, position.height); + + EditorGUI.PropertyField(valueRect, property, true); + GUI.Label(labelRect, syncVarIndicatorContent, EditorStyles.miniLabel); + } + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + return EditorGUI.GetPropertyHeight(property); + } + } +} //namespace diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs.meta new file mode 100644 index 0000000..6311f1d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/SyncVarAttributeDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 27821afc81c4d064d8348fbeb00c0ce8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs new file mode 100644 index 0000000..08b43f5 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs @@ -0,0 +1,3 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Mirror.Tests")] diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs.meta new file mode 100644 index 0000000..d356af8 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 929924d95663264478d4238d4910d22e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs index 934dcd7..d15653b 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/CompilationFinishedHook.cs @@ -14,20 +14,21 @@ public static class CompilationFinishedHook const string MirrorRuntimeAssemblyName = "Mirror"; const string MirrorWeaverAssemblyName = "Mirror.Weaver"; - public static Action OnWeaverMessage; // delegate for subscription to Weaver debug messages - public static Action OnWeaverWarning; // delegate for subscription to Weaver warning messages - public static Action OnWeaverError; // delete for subscription to Weaver error messages - - public static bool WeaverEnabled { get; set; } // controls whether we weave any assemblies when CompilationPipeline delegates are invoked - public static bool UnityLogEnabled = true; // controls weather Weaver errors are reported direct to the Unity console (tests enable this) - public static bool WeaveFailed { get; private set; } // holds the result status of our latest Weave operation - - // debug message handler that also calls OnMessageMethod delegate - static void HandleMessage(string msg) - { - if (UnityLogEnabled) Debug.Log(msg); - if (OnWeaverMessage != null) OnWeaverMessage.Invoke(msg); - } + // delegate for subscription to Weaver debug messages + public static Action OnWeaverMessage; + // delegate for subscription to Weaver warning messages + public static Action OnWeaverWarning; + // delete for subscription to Weaver error messages + public static Action OnWeaverError; + + // controls whether we weave any assemblies when CompilationPipeline delegates are invoked + public static bool WeaverEnabled { get; set; } + // controls weather Weaver errors are reported direct to the Unity console (tests enable this) + public static bool UnityLogEnabled = true; + + // holds the result status of our latest Weave operation + // NOTE: WeaveFailed is critical to unit tests, but isn't used for anything else. + public static bool WeaveFailed { get; private set; } // warning message handler that also calls OnWarningMethod delegate static void HandleWarning(string msg) @@ -44,20 +45,23 @@ static void HandleError(string msg) } [InitializeOnLoadMethod] - static void OnInitializeOnLoad() + public static void OnInitializeOnLoad() { CompilationPipeline.assemblyCompilationFinished += OnCompilationFinished; // We only need to run this once per session // after that, all assemblies will be weaved by the event - if (!SessionState.GetBool("MIRROR_WEAVED", false) ) + if (!SessionState.GetBool("MIRROR_WEAVED", false)) { + // reset session flag SessionState.SetBool("MIRROR_WEAVED", true); - WeaveExisingAssemblies(); + SessionState.SetBool("MIRROR_WEAVE_SUCCESS", true); + + WeaveExistingAssemblies(); } } - static void WeaveExisingAssemblies() + public static void WeaveExistingAssemblies() { foreach (UnityAssembly assembly in CompilationPipeline.GetAssemblies()) { @@ -67,7 +71,11 @@ static void WeaveExisingAssemblies() } } +#if UNITY_2019_3_OR_NEWER EditorUtility.RequestScriptReload(); +#else + UnityEditorInternal.InternalEditorUtility.RequestScriptReload(); +#endif } static string FindMirrorRuntime() @@ -133,12 +141,33 @@ static void OnCompilationFinished(string assemblyPath, CompilerMessage[] message return; } + HashSet dependencyPaths = GetDependecyPaths(assemblyPath); + + // passing null in the outputDirectory param will do an in-place update of the assembly + if (Program.Process(unityEngineCoreModuleDLL, mirrorRuntimeDll, null, new[] { assemblyPath }, dependencyPaths.ToArray(), HandleWarning, HandleError)) + { + // NOTE: WeaveFailed is critical for unit tests but isn't used elsewhere + WeaveFailed = false; + } + else + { + // Set false...will be checked in \Editor\EnterPlayModeSettingsCheck.CheckSuccessfulWeave() + SessionState.SetBool("MIRROR_WEAVE_SUCCESS", false); + + WeaveFailed = true; + if (UnityLogEnabled) Debug.LogError("Weaving failed for: " + assemblyPath); + } + } + + static HashSet GetDependecyPaths(string assemblyPath) + { // build directory list for later asm/symbol resolving using CompilationPipeline refs HashSet dependencyPaths = new HashSet(); dependencyPaths.Add(Path.GetDirectoryName(assemblyPath)); foreach (UnityAssembly unityAsm in CompilationPipeline.GetAssemblies()) { - if (unityAsm.outputPath != assemblyPath) continue; + if (unityAsm.outputPath != assemblyPath) + continue; foreach (string unityAsmRef in unityAsm.compiledAssemblyReferences) { @@ -146,17 +175,7 @@ static void OnCompilationFinished(string assemblyPath, CompilerMessage[] message } } - // passing null in the outputDirectory param will do an in-place update of the assembly - if (Program.Process(unityEngineCoreModuleDLL, mirrorRuntimeDll, null, new[] { assemblyPath }, dependencyPaths.ToArray(), HandleWarning, HandleError)) - { - WeaveFailed = false; - //Debug.Log("Weaving succeeded for: " + assemblyPath); - } - else - { - WeaveFailed = true; - if (UnityLogEnabled) Debug.LogError("Weaving failed for: " + assemblyPath); - } + return dependencyPaths; } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Extensions.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Extensions.cs index f2fad51..0d211bc 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Extensions.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Extensions.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using Mono.CecilX; namespace Mirror.Weaver @@ -6,6 +7,11 @@ namespace Mirror.Weaver public static class Extensions { public static bool IsDerivedFrom(this TypeDefinition td, TypeReference baseClass) + { + return IsDerivedFrom(td, baseClass.FullName); + } + + public static bool IsDerivedFrom(this TypeDefinition td, string baseClassFullName) { if (!td.IsClass) return false; @@ -23,7 +29,7 @@ public static bool IsDerivedFrom(this TypeDefinition td, TypeReference baseClass parentName = parentName.Substring(0, index); } - if (parentName == baseClass.FullName) + if (parentName == baseClassFullName) { return true; } @@ -80,8 +86,10 @@ public static bool ImplementsInterface(this TypeDefinition td, TypeReference bas public static bool IsArrayType(this TypeReference tr) { - if ((tr.IsArray && ((ArrayType)tr).ElementType.IsArray) || // jagged array - (tr.IsArray && ((ArrayType)tr).Rank > 1)) // multidimensional array + // jagged array + if ((tr.IsArray && ((ArrayType)tr).ElementType.IsArray) || + // multidimensional array + (tr.IsArray && ((ArrayType)tr).Rank > 1)) return false; return true; } @@ -114,13 +122,12 @@ public static bool CanBeResolved(this TypeReference parent) } - // Given a method of a generic class such as ArraySegment.get_Count, + // Given a method of a generic class such as ArraySegment.get_Count, // and a generic instance such as ArraySegment - // Creates a reference to the specialized method ArraySegment.get_Count; + // Creates a reference to the specialized method ArraySegment.get_Count // Note that calling ArraySegment.get_Count directly gives an invalid IL error public static MethodReference MakeHostInstanceGeneric(this MethodReference self, GenericInstanceType instanceType) { - MethodReference reference = new MethodReference(self.Name, self.ReturnType, instanceType) { CallingConvention = self.CallingConvention, @@ -137,7 +144,7 @@ public static MethodReference MakeHostInstanceGeneric(this MethodReference self, return Weaver.CurrentAssembly.MainModule.ImportReference(reference); } - public static CustomAttribute GetCustomAttribute(this MethodDefinition method, string attributeName) + public static CustomAttribute GetCustomAttribute(this ICustomAttributeProvider method, string attributeName) { foreach (CustomAttribute ca in method.CustomAttributes) { @@ -147,5 +154,171 @@ public static CustomAttribute GetCustomAttribute(this MethodDefinition method, s return null; } + public static CustomAttribute GetCustomAttribute(this ICustomAttributeProvider method, TypeReference attribute) + { + foreach (CustomAttribute ca in method.CustomAttributes) + { + if (ca.AttributeType.FullName == attribute.FullName) + return ca; + } + return null; + } + + public static bool HasCustomAttribute(this ICustomAttributeProvider attributeProvider, string attributeName) + { + foreach (CustomAttribute ca in attributeProvider.CustomAttributes) + { + if (ca.AttributeType.FullName == attributeName) + return true; + } + return false; + } + + public static bool HasCustomAttribute(this ICustomAttributeProvider attributeProvider, TypeReference attribute) + { + foreach (CustomAttribute ca in attributeProvider.CustomAttributes) + { + if (ca.AttributeType.FullName == attribute.FullName) + return true; + } + return false; + } + + public static T GetField(this CustomAttribute ca, string field, T defaultValue) + { + foreach (CustomAttributeNamedArgument customField in ca.Fields) + { + if (customField.Name == field) + { + return (T)customField.Argument.Value; + } + } + + return defaultValue; + } + + public static MethodDefinition GetMethod(this TypeDefinition td, string methodName) + { + foreach (MethodDefinition md in td.Methods) + { + if (md.Name == methodName) + return md; + } + return null; + } + + public static List GetMethods(this TypeDefinition td, string methodName) + { + List methods = new List(); + foreach (MethodDefinition md in td.Methods) + { + if (md.Name == methodName) + methods.Add(md); + } + return methods; + } + + public static MethodDefinition GetMethodInBaseType(this TypeDefinition td, string methodName) + { + TypeDefinition typedef = td; + while (typedef != null) + { + foreach (MethodDefinition md in typedef.Methods) + { + if (md.Name == methodName) + return md; + } + + try + { + TypeReference parent = typedef.BaseType; + typedef = parent?.Resolve(); + } + catch (AssemblyResolutionException) + { + // this can happen for pluins. + break; + } + } + + return null; + } + + /// + /// + /// + /// + /// + /// + /// + public static bool HasMethodInBaseType(this TypeDefinition td, string methodName, TypeReference stopAt) + { + TypeDefinition typedef = td; + while (typedef != null) + { + if (typedef.FullName == stopAt.FullName) + break; + + foreach (MethodDefinition md in typedef.Methods) + { + if (md.Name == methodName) + return true; + } + + try + { + TypeReference parent = typedef.BaseType; + typedef = parent?.Resolve(); + } + catch (AssemblyResolutionException) + { + // this can happen for pluins. + break; + } + } + + return false; + } + + /// + /// Finds public fields in type and base type + /// + /// + /// + public static IEnumerable FindAllPublicFields(this TypeReference variable) + { + return FindAllPublicFields(variable.Resolve()); + } + + /// + /// Finds public fields in type and base type + /// + /// + /// + public static IEnumerable FindAllPublicFields(this TypeDefinition typeDefinition) + { + while (typeDefinition != null) + { + foreach (FieldDefinition field in typeDefinition.Fields) + { + if (field.IsStatic || field.IsPrivate) + continue; + + if (field.IsNotSerialized) + continue; + + yield return field; + } + + try + { + typeDefinition = typeDefinition.BaseType.Resolve(); + } + catch + { + break; + } + } + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Helpers.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Helpers.cs index a776954..44398fd 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Helpers.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Helpers.cs @@ -1,63 +1,19 @@ -using System; -using System.Linq; -using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; -using Mono.CecilX; -using Mono.CecilX.Cil; -using Mono.CecilX.Mdb; -using Mono.CecilX.Pdb; namespace Mirror.Weaver { - class Helpers + static class Helpers { // This code is taken from SerializationWeaver - class AddSearchDirectoryHelper - { - delegate void AddSearchDirectoryDelegate(string directory); - readonly AddSearchDirectoryDelegate _addSearchDirectory; - - public AddSearchDirectoryHelper(IAssemblyResolver assemblyResolver) - { - // reflection is used because IAssemblyResolver doesn't implement AddSearchDirectory but both DefaultAssemblyResolver and NuGetAssemblyResolver do - MethodInfo addSearchDirectory = assemblyResolver.GetType().GetMethod("AddSearchDirectory", BindingFlags.Instance | BindingFlags.Public, null, new Type[] { typeof(string) }, null); - if (addSearchDirectory == null) - throw new Exception("Assembly resolver doesn't implement AddSearchDirectory method."); - _addSearchDirectory = (AddSearchDirectoryDelegate)Delegate.CreateDelegate(typeof(AddSearchDirectoryDelegate), assemblyResolver, addSearchDirectory); - } - - public void AddSearchDirectory(string directory) - { - _addSearchDirectory(directory); - } - } - - public static string UnityEngineDLLDirectoryName() + public static string UnityEngineDllDirectoryName() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); return directoryName?.Replace(@"file:\", ""); } - public static ISymbolReaderProvider GetSymbolReaderProvider(string inputFile) - { - string nakedFileName = inputFile.Substring(0, inputFile.Length - 4); - if (File.Exists(nakedFileName + ".pdb")) - { - Console.WriteLine("Symbols will be read from " + nakedFileName + ".pdb"); - return new PdbReaderProvider(); - } - if (File.Exists(nakedFileName + ".dll.mdb")) - { - Console.WriteLine("Symbols will be read from " + nakedFileName + ".dll.mdb"); - return new MdbReaderProvider(); - } - Console.WriteLine("No symbols for " + inputFile); - return null; - } - public static string DestinationFileFor(string outputDir, string assemblyPath) { string fileName = Path.GetFileName(assemblyPath); @@ -65,60 +21,5 @@ public static string DestinationFileFor(string outputDir, string assemblyPath) return Path.Combine(outputDir, fileName); } - - public static string PrettyPrintType(TypeReference type) - { - // generic instances, such as List - if (type.IsGenericInstance) - { - GenericInstanceType giType = (GenericInstanceType)type; - return giType.Name.Substring(0, giType.Name.Length - 2) + "<" + string.Join(", ", giType.GenericArguments.Select(PrettyPrintType).ToArray()) + ">"; - } - - // generic types, such as List - if (type.HasGenericParameters) - { - return type.Name.Substring(0, type.Name.Length - 2) + "<" + string.Join(", ", type.GenericParameters.Select(x => x.Name).ToArray()) + ">"; - } - - // non-generic type such as Int - return type.Name; - } - - public static ReaderParameters ReaderParameters(string assemblyPath, IEnumerable extraPaths, IAssemblyResolver assemblyResolver, string unityEngineDLLPath, string mirrorNetDLLPath) - { - ReaderParameters parameters = new ReaderParameters {ReadWrite = true}; - if (assemblyResolver == null) - assemblyResolver = new DefaultAssemblyResolver(); - AddSearchDirectoryHelper helper = new AddSearchDirectoryHelper(assemblyResolver); - helper.AddSearchDirectory(Path.GetDirectoryName(assemblyPath)); - helper.AddSearchDirectory(UnityEngineDLLDirectoryName()); - helper.AddSearchDirectory(Path.GetDirectoryName(unityEngineDLLPath)); - helper.AddSearchDirectory(Path.GetDirectoryName(mirrorNetDLLPath)); - if (extraPaths != null) - { - foreach (string path in extraPaths) - helper.AddSearchDirectory(path); - } - parameters.AssemblyResolver = assemblyResolver; - parameters.SymbolReaderProvider = GetSymbolReaderProvider(assemblyPath); - return parameters; - } - - public static WriterParameters GetWriterParameters(ReaderParameters readParams) - { - WriterParameters writeParams = new WriterParameters(); - if (readParams.SymbolReaderProvider is PdbReaderProvider) - { - //Log("Will export symbols of pdb format"); - writeParams.SymbolWriterProvider = new PdbWriterProvider(); - } - else if (readParams.SymbolReaderProvider is MdbReaderProvider) - { - //Log("Will export symbols of mdb format"); - writeParams.SymbolWriterProvider = new MdbWriterProvider(); - } - return writeParams; - } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/CommandProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/CommandProcessor.cs index b230d34..3d8ca27 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/CommandProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/CommandProcessor.cs @@ -1,24 +1,17 @@ -// all the [Command] code from NetworkBehaviourProcessor in one place using Mono.CecilX; using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// Processes [Command] methods in NetworkBehaviour + /// public static class CommandProcessor { - const string CmdPrefix = "InvokeCmd"; - /* // generates code like: public void CmdThrust(float thrusting, int spin) { - if (isServer) - { - // we are ON the server, invoke directly - CmdThrust(thrusting, spin); - return; - } - NetworkWriter networkWriter = new NetworkWriter(); networkWriter.Write(thrusting); networkWriter.WritePackedUInt32((uint)spin); @@ -33,87 +26,53 @@ public void CallCmdThrust(float thrusting, int spin) Originally HLAPI put the send message code inside the Call function and then proceeded to replace every call to CmdTrust with CallCmdTrust - This method moves all the user's code into the "Call" method + This method moves all the user's code into the "CallCmd" method and replaces the body of the original method with the send message code. This way we do not need to modify the code anywhere else, and this works correctly in dependent assemblies */ - public static MethodDefinition ProcessCommandCall(TypeDefinition td, MethodDefinition md, CustomAttribute ca) + public static MethodDefinition ProcessCommandCall(TypeDefinition td, MethodDefinition md, CustomAttribute commandAttr) { - MethodDefinition cmd = new MethodDefinition("Call" + md.Name, - MethodAttributes.Public | MethodAttributes.HideBySig, - Weaver.voidType); - - // add parameters - foreach (ParameterDefinition pd in md.Parameters) - { - cmd.Parameters.Add(new ParameterDefinition(pd.Name, ParameterAttributes.None, pd.ParameterType)); - } - - // move the old body to the new function - MethodBody newBody = cmd.Body; - cmd.Body = md.Body; - md.Body = newBody; - - ILProcessor cmdWorker = md.Body.GetILProcessor(); - - NetworkBehaviourProcessor.WriteSetupLocals(cmdWorker); - - if (Weaver.GenerateLogErrors) - { - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldstr, "Call Command function " + md.Name)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Call, Weaver.logErrorReference)); - } + MethodDefinition cmd = MethodProcessor.SubstituteMethod(td, md); - // local client check - Instruction localClientLabel = cmdWorker.Create(OpCodes.Nop); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg_0)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Call, Weaver.getBehaviourIsServer)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Brfalse, localClientLabel)); + ILProcessor worker = md.Body.GetILProcessor(); - // call the cmd function directly. - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg_0)); - for (int i = 0; i < md.Parameters.Count; i++) - { - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg, i + 1)); - } - cmdWorker.Append(cmdWorker.Create(OpCodes.Call, cmd)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ret)); - cmdWorker.Append(localClientLabel); + NetworkBehaviourProcessor.WriteSetupLocals(worker); // NetworkWriter writer = new NetworkWriter(); - NetworkBehaviourProcessor.WriteCreateWriter(cmdWorker); + NetworkBehaviourProcessor.WriteCreateWriter(worker); // write all the arguments that the user passed to the Cmd call - if (!NetworkBehaviourProcessor.WriteArguments(cmdWorker, md, false)) + if (!NetworkBehaviourProcessor.WriteArguments(worker, md, RemoteCallType.Command)) return null; string cmdName = md.Name; - int index = cmdName.IndexOf(CmdPrefix); - if (index > -1) - { - cmdName = cmdName.Substring(CmdPrefix.Length); - } + int channel = commandAttr.GetField("channel", 0); + bool ignoreAuthority = commandAttr.GetField("ignoreAuthority", false); // invoke internal send and return - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg_0)); // load 'base.' to call the SendCommand function with - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldtoken, td)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); // invokerClass - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldstr, cmdName)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldloc_0)); // writer - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldc_I4, NetworkBehaviourProcessor.GetChannelId(ca))); - cmdWorker.Append(cmdWorker.Create(OpCodes.Call, Weaver.sendCommandInternal)); - - NetworkBehaviourProcessor.WriteRecycleWriter(cmdWorker); - - cmdWorker.Append(cmdWorker.Create(OpCodes.Ret)); + // load 'base.' to call the SendCommand function with + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldtoken, td)); + // invokerClass + worker.Append(worker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); + worker.Append(worker.Create(OpCodes.Ldstr, cmdName)); + // writer + worker.Append(worker.Create(OpCodes.Ldloc_0)); + worker.Append(worker.Create(OpCodes.Ldc_I4, channel)); + worker.Append(worker.Create(ignoreAuthority ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0)); + worker.Append(worker.Create(OpCodes.Call, Weaver.sendCommandInternal)); + + NetworkBehaviourProcessor.WriteRecycleWriter(worker); + + worker.Append(worker.Create(OpCodes.Ret)); return cmd; } /* // generates code like: - protected static void InvokeCmdCmdThrust(NetworkBehaviour obj, NetworkReader reader) + protected static void InvokeCmdCmdThrust(NetworkBehaviour obj, NetworkReader reader, NetworkConnection senderConnection) { if (!NetworkServer.active) { @@ -122,50 +81,60 @@ protected static void InvokeCmdCmdThrust(NetworkBehaviour obj, NetworkReader rea ((ShipControl)obj).CmdThrust(reader.ReadSingle(), (int)reader.ReadPackedUInt32()); } */ - public static MethodDefinition ProcessCommandInvoke(TypeDefinition td, MethodDefinition md, MethodDefinition cmdCallFunc) + public static MethodDefinition ProcessCommandInvoke(TypeDefinition td, MethodDefinition method, MethodDefinition cmdCallFunc) { - MethodDefinition cmd = new MethodDefinition(CmdPrefix + md.Name, + MethodDefinition cmd = new MethodDefinition(Weaver.InvokeRpcPrefix + method.Name, MethodAttributes.Family | MethodAttributes.Static | MethodAttributes.HideBySig, Weaver.voidType); - ILProcessor cmdWorker = cmd.Body.GetILProcessor(); - Instruction label = cmdWorker.Create(OpCodes.Nop); + ILProcessor worker = cmd.Body.GetILProcessor(); + Instruction label = worker.Create(OpCodes.Nop); - NetworkBehaviourProcessor.WriteServerActiveCheck(cmdWorker, md.Name, label, "Command"); + NetworkBehaviourProcessor.WriteServerActiveCheck(worker, method.Name, label, "Command"); // setup for reader - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg_0)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Castclass, td)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Castclass, td)); - if (!NetworkBehaviourProcessor.ProcessNetworkReaderParameters(md, cmdWorker, false)) + if (!NetworkBehaviourProcessor.ReadArguments(method, worker, RemoteCallType.Command)) return null; + AddSenderConnection(method, worker); + // invoke actual command function - cmdWorker.Append(cmdWorker.Create(OpCodes.Callvirt, cmdCallFunc)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Callvirt, cmdCallFunc)); + worker.Append(worker.Create(OpCodes.Ret)); NetworkBehaviourProcessor.AddInvokeParameters(cmd.Parameters); + td.Methods.Add(cmd); return cmd; } - public static bool ProcessMethodsValidateCommand(MethodDefinition md, CustomAttribute ca) + static void AddSenderConnection(MethodDefinition method, ILProcessor worker) { - if (!md.Name.StartsWith("Cmd")) + foreach (ParameterDefinition param in method.Parameters) { - Weaver.Error($"{md} must start with Cmd. Consider renaming it to Cmd{md.Name}"); - return false; + if (NetworkBehaviourProcessor.IsSenderConnection(param, RemoteCallType.Command)) + { + // NetworkConnection is 3nd arg (arg0 is "obj" not "this" because method is static) + // exmaple: static void InvokeCmdCmdSendCommand(NetworkBehaviour obj, NetworkReader reader, NetworkConnection connection) + worker.Append(worker.Create(OpCodes.Ldarg_2)); + } } + } + public static bool ProcessMethodsValidateCommand(MethodDefinition md) + { if (md.IsStatic) { - Weaver.Error($"{md} cannot be static"); + Weaver.Error($"{md.Name} cannot be static", md); return false; } // validate return NetworkBehaviourProcessor.ProcessMethodsValidateFunction(md) && - NetworkBehaviourProcessor.ProcessMethodsValidateParameters(md, ca); + NetworkBehaviourProcessor.ProcessMethodsValidateParameters(md, RemoteCallType.Command); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs new file mode 100644 index 0000000..7d15a64 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs @@ -0,0 +1,110 @@ +using System.Collections.Generic; +using Mono.CecilX; + +namespace Mirror.Weaver +{ + public class GenericArgumentResolver + { + readonly Stack stack = new Stack(); + readonly int maxGenericArgument; + + public GenericArgumentResolver(int maxGenericArgument) + { + this.maxGenericArgument = maxGenericArgument; + } + + public bool GetGenericFromBaseClass(TypeDefinition td, int genericArgument, TypeReference baseType, out TypeReference itemType) + { + itemType = null; + if (GetGenericBaseType(td, baseType, out GenericInstanceType parent)) + { + TypeReference arg = parent.GenericArguments[genericArgument]; + if (arg.IsGenericParameter) + { + itemType = FindParameterInStack(td, genericArgument); + } + else + { + itemType = Weaver.CurrentAssembly.MainModule.ImportReference(arg); + } + } + + return itemType != null; + } + + TypeReference FindParameterInStack(TypeDefinition td, int genericArgument) + { + while (stack.Count > 0) + { + TypeReference next = stack.Pop(); + + if (!(next is GenericInstanceType genericType)) + { + // if type is not GenericInstanceType something has gone wrong + return null; + } + + if (genericType.GenericArguments.Count < genericArgument) + { + // if less than `genericArgument` then we didnt find generic argument + return null; + } + + if (genericType.GenericArguments.Count > maxGenericArgument) + { + // if greater than `genericArgument` it is hard to know which generic arg we want + // See SyncListGenericInheritanceWithMultipleGeneric test + Weaver.Error($"Type {td.Name} has too many generic arguments in base class {next}", td); + return null; + } + + TypeReference genericArg = genericType.GenericArguments[genericArgument]; + if (!genericArg.IsGenericParameter) + { + // if not generic, successfully found type + return Weaver.CurrentAssembly.MainModule.ImportReference(genericArg); + } + } + + // nothing left in stack, something went wrong + return null; + } + + bool GetGenericBaseType(TypeDefinition td, TypeReference baseType, out GenericInstanceType found) + { + stack.Clear(); + TypeReference parent = td.BaseType; + found = null; + + while (parent != null) + { + string parentName = parent.FullName; + + // strip generic parameters + int index = parentName.IndexOf('<'); + if (index != -1) + { + parentName = parentName.Substring(0, index); + } + + if (parentName == baseType.FullName) + { + found = parent as GenericInstanceType; + break; + } + try + { + stack.Push(parent); + parent = parent.Resolve().BaseType; + } + catch (AssemblyResolutionException) + { + // this can happen for plugins. + break; + } + } + + return found != null; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs.meta new file mode 100644 index 0000000..685f914 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/GenericArgumentResolver.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fd67b3f7c2d66074a9bc7a23787e2ffb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MessageClassProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MessageClassProcessor.cs index 131a6a5..f12e4b2 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MessageClassProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MessageClassProcessor.cs @@ -1,11 +1,20 @@ -// this class generates OnSerialize/OnDeserialize when inheriting from MessageBase +using System.Linq; using Mono.CecilX; using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// generates OnSerialize/OnDeserialize when inheriting from MessageBase + /// static class MessageClassProcessor { + + static bool IsEmptyDefault(this MethodBody body) + { + return body.Instructions.All(instruction => instruction.OpCode == OpCodes.Nop || instruction.OpCode == OpCodes.Ret); + } + public static void Process(TypeDefinition td) { Weaver.DLog(td, "MessageClassProcessor Start"); @@ -23,10 +32,10 @@ public static void Process(TypeDefinition td) static void GenerateSerialization(TypeDefinition td) { Weaver.DLog(td, " GenerateSerialization"); - foreach (MethodDefinition m in td.Methods) + MethodDefinition existingMethod = td.GetMethod("Serialize"); + if (existingMethod != null && !existingMethod.Body.IsEmptyDefault()) { - if (m.Name == "Serialize") - return; + return; } if (td.Fields.Count == 0) @@ -39,61 +48,86 @@ static void GenerateSerialization(TypeDefinition td) { if (field.FieldType.FullName == td.FullName) { - Weaver.Error($"{td} has field ${field} that references itself"); + Weaver.Error($"{td.Name} has field {field.Name} that references itself", field); return; } } - MethodDefinition serializeFunc = new MethodDefinition("Serialize", + MethodDefinition serializeFunc = existingMethod ?? new MethodDefinition("Serialize", MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig, Weaver.voidType); - serializeFunc.Parameters.Add(new ParameterDefinition("writer", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkWriterType))); - ILProcessor serWorker = serializeFunc.Body.GetILProcessor(); + //only add to new method + if (existingMethod == null) + { + serializeFunc.Parameters.Add(new ParameterDefinition("writer", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkWriterType))); + } + ILProcessor worker = serializeFunc.Body.GetILProcessor(); + if (existingMethod != null) + { + //remove default nop&ret from existing empty interface method + worker.Body.Instructions.Clear(); + } + + // if it is not a struct, call base + if (!td.IsValueType) + { + // call base + CallBase(td, worker, "Serialize"); + } foreach (FieldDefinition field in td.Fields) { if (field.IsStatic || field.IsPrivate || field.IsSpecialName) continue; - if (field.FieldType.Resolve().HasGenericParameters && !field.FieldType.FullName.StartsWith("System.ArraySegment`1", System.StringComparison.Ordinal)) - { - Weaver.Error($"{field} cannot have generic type {field.FieldType}. Consider creating a class that derives the generic type"); - return; - } + CallWriter(worker, field); + } + worker.Append(worker.Create(OpCodes.Ret)); - if (field.FieldType.Resolve().IsInterface) - { - Weaver.Error($"{field} has unsupported type. Use a concrete class instead of interface {field.FieldType}"); - return; - } + //only add if not just replaced body + if (existingMethod == null) + { + td.Methods.Add(serializeFunc); + } + } - MethodReference writeFunc = Writers.GetWriteFunc(field.FieldType); - if (writeFunc != null) - { - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldfld, field)); - serWorker.Append(serWorker.Create(OpCodes.Call, writeFunc)); - } - else - { - Weaver.Error($"{field} has unsupported type"); - return; - } + static void CallWriter(ILProcessor worker, FieldDefinition field) + { + MethodReference writeFunc = Writers.GetWriteFunc(field.FieldType); + if (writeFunc != null) + { + worker.Append(worker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, field)); + worker.Append(worker.Create(OpCodes.Call, writeFunc)); } - serWorker.Append(serWorker.Create(OpCodes.Ret)); + else + { + Weaver.Error($"{field.Name} has unsupported type", field); + } + } - td.Methods.Add(serializeFunc); + static void CallBase(TypeDefinition td, ILProcessor worker, string name) + { + MethodReference method = Resolvers.TryResolveMethodInParents(td.BaseType, Weaver.CurrentAssembly, name); + if (method != null) + { + // base + worker.Append(worker.Create(OpCodes.Ldarg_0)); + // writer + worker.Append(worker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Call, method)); + } } static void GenerateDeSerialization(TypeDefinition td) { Weaver.DLog(td, " GenerateDeserialization"); - foreach (MethodDefinition m in td.Methods) + MethodDefinition existingMethod = td.GetMethod("Deserialize"); + if (existingMethod != null && !existingMethod.Body.IsEmptyDefault()) { - if (m.Name == "Deserialize") - return; + return; } if (td.Fields.Count == 0) @@ -101,35 +135,58 @@ static void GenerateDeSerialization(TypeDefinition td) return; } - MethodDefinition serializeFunc = new MethodDefinition("Deserialize", + MethodDefinition serializeFunc = existingMethod ?? new MethodDefinition("Deserialize", MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig, Weaver.voidType); - serializeFunc.Parameters.Add(new ParameterDefinition("reader", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkReaderType))); - ILProcessor serWorker = serializeFunc.Body.GetILProcessor(); + //only add to new method + if (existingMethod == null) + { + serializeFunc.Parameters.Add(new ParameterDefinition("reader", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkReaderType))); + } + ILProcessor worker = serializeFunc.Body.GetILProcessor(); + if (existingMethod != null) + { + //remove default nop&ret from existing empty interface method + worker.Body.Instructions.Clear(); + } + + // if not value type, call base + if (!td.IsValueType) + { + CallBase(td, worker, "Deserialize"); + } foreach (FieldDefinition field in td.Fields) { if (field.IsStatic || field.IsPrivate || field.IsSpecialName) continue; - MethodReference readerFunc = Readers.GetReadFunc(field.FieldType); - if (readerFunc != null) - { - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); - serWorker.Append(serWorker.Create(OpCodes.Call, readerFunc)); - serWorker.Append(serWorker.Create(OpCodes.Stfld, field)); - } - else - { - Weaver.Error($"{field} has unsupported type"); - return; - } + CallReader(worker, field); + } + worker.Append(worker.Create(OpCodes.Ret)); + + //only add if not just replaced body + if (existingMethod == null) + { + td.Methods.Add(serializeFunc); } - serWorker.Append(serWorker.Create(OpCodes.Ret)); + } - td.Methods.Add(serializeFunc); + static void CallReader(ILProcessor worker, FieldDefinition field) + { + MethodReference readerFunc = Readers.GetReadFunc(field.FieldType); + if (readerFunc != null) + { + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Call, readerFunc)); + worker.Append(worker.Create(OpCodes.Stfld, field)); + } + else + { + Weaver.Error($"{field.Name} has unsupported type", field); + } } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs new file mode 100644 index 0000000..6ea5663 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs @@ -0,0 +1,125 @@ +using Mono.CecilX; +using Mono.CecilX.Cil; + +namespace Mirror.Weaver +{ + public static class MethodProcessor + { + private const string RpcPrefix = "UserCode_"; + + // creates a method substitute + // For example, if we have this: + // public void CmdThrust(float thrusting, int spin) + // { + // xxxxx + // } + // + // it will substitute the method and move the code to a new method with a provided name + // for example: + // + // public void CmdTrust(float thrusting, int spin) + // { + // } + // + // public void (float thrusting, int spin) + // { + // xxxxx + // } + // + // Note that all the calls to the method remain untouched + // + // the original method definition loses all code + // this returns the newly created method with all the user provided code + public static MethodDefinition SubstituteMethod(TypeDefinition td, MethodDefinition md) + { + string newName = RpcPrefix + md.Name; + MethodDefinition cmd = new MethodDefinition(newName, md.Attributes, md.ReturnType); + + // add parameters + foreach (ParameterDefinition pd in md.Parameters) + { + cmd.Parameters.Add(new ParameterDefinition(pd.Name, ParameterAttributes.None, pd.ParameterType)); + } + + // swap bodies + (cmd.Body, md.Body) = (md.Body, cmd.Body); + + // Move over all the debugging information + foreach (SequencePoint sequencePoint in md.DebugInformation.SequencePoints) + cmd.DebugInformation.SequencePoints.Add(sequencePoint); + md.DebugInformation.SequencePoints.Clear(); + + foreach (CustomDebugInformation customInfo in md.CustomDebugInformations) + cmd.CustomDebugInformations.Add(customInfo); + md.CustomDebugInformations.Clear(); + + (md.DebugInformation.Scope, cmd.DebugInformation.Scope) = (cmd.DebugInformation.Scope, md.DebugInformation.Scope); + + td.Methods.Add(cmd); + + FixRemoteCallToBaseMethod(td, cmd); + return cmd; + } + + /// + /// Finds and fixes call to base methods within remote calls + /// For example, changes `base.CmdDoSomething` to `base.CallCmdDoSomething` within `this.CallCmdDoSomething` + /// + /// + /// + public static void FixRemoteCallToBaseMethod(TypeDefinition type, MethodDefinition method) + { + string callName = method.Name; + + // Cmd/rpc start with Weaver.RpcPrefix + // eg CallCmdDoSomething + if (!callName.StartsWith(RpcPrefix)) + return; + + // eg CmdDoSomething + string baseRemoteCallName = method.Name.Substring(RpcPrefix.Length); + + foreach (Instruction instruction in method.Body.Instructions) + { + // if call to base.CmdDoSomething within this.CallCmdDoSomething + if (IsCallToMethod(instruction, out MethodDefinition calledMethod) && + calledMethod.Name == baseRemoteCallName) + { + TypeDefinition baseType = type.BaseType.Resolve(); + MethodDefinition baseMethod = baseType.GetMethodInBaseType(callName); + + if (baseMethod == null) + { + Weaver.Error($"Could not find base method for {callName}", method); + return; + } + + if (!baseMethod.IsVirtual) + { + Weaver.Error($"Could not find base method that was virutal {callName}", method); + return; + } + + instruction.Operand = baseMethod; + + Weaver.DLog(type, "Replacing call to '{0}' with '{1}' inside '{2}'", calledMethod.FullName, baseMethod.FullName, method.FullName); + } + } + } + + static bool IsCallToMethod(Instruction instruction, out MethodDefinition calledMethod) + { + if (instruction.OpCode == OpCodes.Call && + instruction.Operand is MethodDefinition method) + { + calledMethod = method; + return true; + } + else + { + calledMethod = null; + return false; + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs.meta new file mode 100644 index 0000000..3c81894 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MethodProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 661e1af528e3441f79e1552fb5ec4e0e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MonoBehaviourProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MonoBehaviourProcessor.cs index c5f880e..fafa89a 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MonoBehaviourProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/MonoBehaviourProcessor.cs @@ -1,8 +1,10 @@ -// this class only shows warnings in case we use SyncVars etc. for MonoBehaviour. using Mono.CecilX; namespace Mirror.Weaver { + /// + /// only shows warnings in case we use SyncVars etc. for MonoBehaviour. + /// static class MonoBehaviourProcessor { public static void Process(TypeDefinition td) @@ -16,17 +18,12 @@ static void ProcessSyncVars(TypeDefinition td) // find syncvars foreach (FieldDefinition fd in td.Fields) { - foreach (CustomAttribute ca in fd.CustomAttributes) - { - if (ca.AttributeType.FullName == Weaver.SyncVarType.FullName) - { - Weaver.Error($"[SyncVar] {fd} must be inside a NetworkBehaviour. {td} is not a NetworkBehaviour"); - } - } + if (fd.HasCustomAttribute(Weaver.SyncVarType)) + Weaver.Error($"SyncVar {fd.Name} must be inside a NetworkBehaviour. {td.Name} is not a NetworkBehaviour", fd); if (SyncObjectInitializer.ImplementsSyncObject(fd.FieldType)) { - Weaver.Error($"{fd} is a SyncObject and must be inside a NetworkBehaviour. {td} is not a NetworkBehaviour"); + Weaver.Error($"{fd.Name} is a SyncObject and must be inside a NetworkBehaviour. {td.Name} is not a NetworkBehaviour", fd); } } } @@ -40,17 +37,17 @@ static void ProcessMethods(TypeDefinition td) { if (ca.AttributeType.FullName == Weaver.CommandType.FullName) { - Weaver.Error($"[Command] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"Command {md.Name} must be declared inside a NetworkBehaviour", md); } if (ca.AttributeType.FullName == Weaver.ClientRpcType.FullName) { - Weaver.Error($"[ClienRpc] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"ClientRpc {md.Name} must be declared inside a NetworkBehaviour", md); } if (ca.AttributeType.FullName == Weaver.TargetRpcType.FullName) { - Weaver.Error($"[TargetRpc] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"TargetRpc {md.Name} must be declared inside a NetworkBehaviour", md); } string attributeName = ca.Constructor.DeclaringType.ToString(); @@ -58,16 +55,16 @@ static void ProcessMethods(TypeDefinition td) switch (attributeName) { case "Mirror.ServerAttribute": - Weaver.Error($"[Server] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"Server method {md.Name} must be declared inside a NetworkBehaviour", md); break; case "Mirror.ServerCallbackAttribute": - Weaver.Error($"[ServerCallback] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"ServerCallback method {md.Name} must be declared inside a NetworkBehaviour", md); break; case "Mirror.ClientAttribute": - Weaver.Error($"[Client] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"Client method {md.Name} must be declared inside a NetworkBehaviour", md); break; case "Mirror.ClientCallbackAttribute": - Weaver.Error($"[ClientCallback] {md} must be declared inside a NetworkBehaviour"); + Weaver.Error($"ClientCallback method {md.Name} must be declared inside a NetworkBehaviour", md); break; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/NetworkBehaviourProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/NetworkBehaviourProcessor.cs index 6c54025..038835f 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/NetworkBehaviourProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/NetworkBehaviourProcessor.cs @@ -1,19 +1,29 @@ -// this class processes SyncVars, Cmds, Rpcs, etc. of NetworkBehaviours -using System; -using System.Linq; using System.Collections.Generic; using Mono.CecilX; using Mono.CecilX.Cil; namespace Mirror.Weaver { + public enum RemoteCallType + { + Command, + ClientRpc, + TargetRpc, + SyncEvent + } + + + /// + /// processes SyncVars, Cmds, Rpcs, etc. of NetworkBehaviours + /// class NetworkBehaviourProcessor { readonly List syncVars = new List(); readonly List syncObjects = new List(); - readonly Dictionary syncVarNetIds = new Dictionary(); // - readonly List commands = new List(); - readonly List clientRpcs = new List(); + // + readonly Dictionary syncVarNetIds = new Dictionary(); + readonly List commands = new List(); + readonly List clientRpcs = new List(); readonly List targetRpcs = new List(); readonly List eventRpcs = new List(); readonly List commandInvocationFuncs = new List(); @@ -21,12 +31,20 @@ class NetworkBehaviourProcessor readonly List targetRpcInvocationFuncs = new List(); readonly List eventRpcInvocationFuncs = new List(); - readonly List commandCallFuncs = new List(); - readonly List clientRpcCallFuncs = new List(); - readonly List targetRpcCallFuncs = new List(); - readonly TypeDefinition netBehaviourSubclass; + public struct CmdResult + { + public MethodDefinition method; + public bool ignoreAuthority; + } + + public struct ClientRpcResult + { + public MethodDefinition method; + public bool excludeOwner; + } + public NetworkBehaviourProcessor(TypeDefinition td) { Weaver.DLog(td, "NetworkBehaviourProcessor"); @@ -37,7 +55,7 @@ public void Process() { if (netBehaviourSubclass.HasGenericParameters) { - Weaver.Error($"{netBehaviourSubclass} cannot have generic parameters"); + Weaver.Error($"{netBehaviourSubclass.Name} cannot have generic parameters", netBehaviourSubclass); return; } Weaver.DLog(netBehaviourSubclass, "Process Start"); @@ -101,7 +119,7 @@ public static void WriteServerActiveCheck(ILProcessor worker, string mdName, Ins public static void WriteSetupLocals(ILProcessor worker) { worker.Body.InitLocals = true; - worker.Body.Variables.Add(new VariableDefinition(Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkWriterType))); + worker.Body.Variables.Add(new VariableDefinition(Weaver.PooledNetworkWriterType)); } public static void WriteCreateWriter(ILProcessor worker) @@ -118,28 +136,50 @@ public static void WriteRecycleWriter(ILProcessor worker) worker.Append(worker.Create(OpCodes.Call, Weaver.RecycleWriterReference)); } - public static bool WriteArguments(ILProcessor worker, MethodDefinition md, bool skipFirst) + public static bool WriteArguments(ILProcessor worker, MethodDefinition method, RemoteCallType callType) { // write each argument - short argNum = 1; - foreach (ParameterDefinition pd in md.Parameters) + // example result + /* + writer.WritePackedInt32(someNumber); + writer.WriteNetworkIdentity(someTarget); + */ + + bool skipFirst = (callType == RemoteCallType.TargetRpc + && TargetRpcProcessor.HasNetworkConnectionParameter(method)); + + // arg of calling function, arg 0 is "this" so start counting at 1 + int argNum = 1; + foreach (ParameterDefinition param in method.Parameters) { + // NetworkConnection is not sent via the NetworkWriter so skip it here + // skip first for NetworkConnection in TargetRpc if (argNum == 1 && skipFirst) { argNum += 1; continue; } + // skip SenderConnection in Command + if (IsSenderConnection(param, callType)) + { + argNum += 1; + continue; + } - MethodReference writeFunc = Writers.GetWriteFunc(pd.ParameterType); + MethodReference writeFunc = Writers.GetWriteFunc(param.ParameterType); if (writeFunc == null) { - Weaver.Error($"{md} has invalid parameter {pd}" ); + Weaver.Error($"{method.Name} has invalid parameter {param}", method); return false; } + // use built-in writer func on writer object - worker.Append(worker.Create(OpCodes.Ldloc_0)); // writer object - worker.Append(worker.Create(OpCodes.Ldarg, argNum)); // argument - worker.Append(worker.Create(OpCodes.Call, writeFunc)); // call writer func on writer object + // NetworkWriter object + worker.Append(worker.Create(OpCodes.Ldloc_0)); + // add argument to call + worker.Append(worker.Create(OpCodes.Ldarg, argNum)); + // call writer extension method + worker.Append(worker.Create(OpCodes.Call, writeFunc)); argNum += 1; } return true; @@ -151,7 +191,7 @@ public static bool WriteArguments(ILProcessor worker, MethodDefinition md, bool // by adding an empty MirrorProcessed() function public static bool WasProcessed(TypeDefinition td) { - return td.Methods.Any(method => method.Name == ProcessedFunctionName); + return td.GetMethod(ProcessedFunctionName) != null; } public static void MarkAsProcessed(TypeDefinition td) @@ -174,29 +214,21 @@ void GenerateConstants() Weaver.DLog(netBehaviourSubclass, " GenerateConstants "); // find static constructor - MethodDefinition cctor = null; - bool cctorFound = false; - foreach (MethodDefinition md in netBehaviourSubclass.Methods) - { - if (md.Name == ".cctor") - { - cctor = md; - cctorFound = true; - } - } + MethodDefinition cctor = netBehaviourSubclass.GetMethod(".cctor"); + bool cctorFound = cctor != null; if (cctor != null) { // remove the return opcode from end of function. will add our own later. if (cctor.Body.Instructions.Count != 0) { - Instruction ret = cctor.Body.Instructions[cctor.Body.Instructions.Count - 1]; - if (ret.OpCode == OpCodes.Ret) + Instruction retInstr = cctor.Body.Instructions[cctor.Body.Instructions.Count - 1]; + if (retInstr.OpCode == OpCodes.Ret) { cctor.Body.Instructions.RemoveAt(cctor.Body.Instructions.Count - 1); } else { - Weaver.Error($"{netBehaviourSubclass} has invalid class constructor"); + Weaver.Error($"{netBehaviourSubclass.Name} has invalid class constructor", cctor); return; } } @@ -213,56 +245,49 @@ void GenerateConstants() } // find instance constructor - MethodDefinition ctor = null; + MethodDefinition ctor = netBehaviourSubclass.GetMethod(".ctor"); - foreach (MethodDefinition md in netBehaviourSubclass.Methods) + if (ctor == null) { - if (md.Name == ".ctor") - { - ctor = md; - - Instruction ret = ctor.Body.Instructions[ctor.Body.Instructions.Count - 1]; - if (ret.OpCode == OpCodes.Ret) - { - ctor.Body.Instructions.RemoveAt(ctor.Body.Instructions.Count - 1); - } - else - { - Weaver.Error($"{netBehaviourSubclass} has invalid constructor"); - return; - } - - break; - } + Weaver.Error($"{netBehaviourSubclass.Name} has invalid constructor", netBehaviourSubclass); + return; } - if (ctor == null) + Instruction ret = ctor.Body.Instructions[ctor.Body.Instructions.Count - 1]; + if (ret.OpCode == OpCodes.Ret) { - Weaver.Error($"{netBehaviourSubclass} has invalid constructor"); + ctor.Body.Instructions.RemoveAt(ctor.Body.Instructions.Count - 1); + } + else + { + Weaver.Error($"{netBehaviourSubclass.Name} has invalid constructor", ctor); return; } + // TODO: find out if the order below matters. If it doesn't split code below into 2 functions ILProcessor ctorWorker = ctor.Body.GetILProcessor(); ILProcessor cctorWorker = cctor.Body.GetILProcessor(); for (int i = 0; i < commands.Count; ++i) { - GenerateRegisterCommandDelegate(cctorWorker, Weaver.registerCommandDelegateReference, commandInvocationFuncs[i], commands[i].Name); + CmdResult cmdResult = commands[i]; + GenerateRegisterCommandDelegate(cctorWorker, Weaver.registerCommandDelegateReference, commandInvocationFuncs[i], cmdResult); } for (int i = 0; i < clientRpcs.Count; ++i) { - GenerateRegisterCommandDelegate(cctorWorker, Weaver.registerRpcDelegateReference, clientRpcInvocationFuncs[i], clientRpcs[i].Name); + ClientRpcResult clientRpcResult = clientRpcs[i]; + GenerateRegisterRemoteDelegate(cctorWorker, Weaver.registerRpcDelegateReference, clientRpcInvocationFuncs[i], clientRpcResult.method.Name); } for (int i = 0; i < targetRpcs.Count; ++i) { - GenerateRegisterCommandDelegate(cctorWorker, Weaver.registerRpcDelegateReference, targetRpcInvocationFuncs[i], targetRpcs[i].Name); + GenerateRegisterRemoteDelegate(cctorWorker, Weaver.registerRpcDelegateReference, targetRpcInvocationFuncs[i], targetRpcs[i].Name); } for (int i = 0; i < eventRpcs.Count; ++i) { - GenerateRegisterCommandDelegate(cctorWorker, Weaver.registerEventDelegateReference, eventRpcInvocationFuncs[i], eventRpcs[i].Name); + GenerateRegisterRemoteDelegate(cctorWorker, Weaver.registerEventDelegateReference, eventRpcInvocationFuncs[i], eventRpcs[i].Name); } foreach (FieldDefinition fd in syncObjects) @@ -287,27 +312,44 @@ void GenerateConstants() // This generates code like: NetworkBehaviour.RegisterCommandDelegate(base.GetType(), "CmdThrust", new NetworkBehaviour.CmdDelegate(ShipControl.InvokeCmdCmdThrust)); */ - void GenerateRegisterCommandDelegate(ILProcessor awakeWorker, MethodReference registerMethod, MethodDefinition func, string cmdName) + void GenerateRegisterRemoteDelegate(ILProcessor worker, MethodReference registerMethod, MethodDefinition func, string cmdName) { - awakeWorker.Append(awakeWorker.Create(OpCodes.Ldtoken, netBehaviourSubclass)); - awakeWorker.Append(awakeWorker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); - awakeWorker.Append(awakeWorker.Create(OpCodes.Ldstr, cmdName)); - awakeWorker.Append(awakeWorker.Create(OpCodes.Ldnull)); - awakeWorker.Append(awakeWorker.Create(OpCodes.Ldftn, func)); - - awakeWorker.Append(awakeWorker.Create(OpCodes.Newobj, Weaver.CmdDelegateConstructor)); - awakeWorker.Append(awakeWorker.Create(OpCodes.Call, registerMethod)); + worker.Append(worker.Create(OpCodes.Ldtoken, netBehaviourSubclass)); + worker.Append(worker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); + worker.Append(worker.Create(OpCodes.Ldstr, cmdName)); + worker.Append(worker.Create(OpCodes.Ldnull)); + worker.Append(worker.Create(OpCodes.Ldftn, func)); + + worker.Append(worker.Create(OpCodes.Newobj, Weaver.CmdDelegateConstructor)); + // + worker.Append(worker.Create(OpCodes.Call, registerMethod)); + } + + void GenerateRegisterCommandDelegate(ILProcessor worker, MethodReference registerMethod, MethodDefinition func, CmdResult cmdResult) + { + string cmdName = cmdResult.method.Name; + bool ignoreAuthority = cmdResult.ignoreAuthority; + + worker.Append(worker.Create(OpCodes.Ldtoken, netBehaviourSubclass)); + worker.Append(worker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); + worker.Append(worker.Create(OpCodes.Ldstr, cmdName)); + worker.Append(worker.Create(OpCodes.Ldnull)); + worker.Append(worker.Create(OpCodes.Ldftn, func)); + + worker.Append(worker.Create(OpCodes.Newobj, Weaver.CmdDelegateConstructor)); + + worker.Append(worker.Create(ignoreAuthority ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0)); + + worker.Append(worker.Create(OpCodes.Call, registerMethod)); } void GenerateSerialization() { Weaver.DLog(netBehaviourSubclass, " GenerateSerialization"); - foreach (MethodDefinition m in netBehaviourSubclass.Methods) - { - if (m.Name == "OnSerialize") - return; - } + const string SerializeMethodName = "SerializeSyncVars"; + if (netBehaviourSubclass.GetMethod(SerializeMethodName) != null) + return; if (syncVars.Count == 0) { @@ -315,13 +357,13 @@ void GenerateSerialization() return; } - MethodDefinition serialize = new MethodDefinition("OnSerialize", + MethodDefinition serialize = new MethodDefinition(SerializeMethodName, MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig, Weaver.boolType); serialize.Parameters.Add(new ParameterDefinition("writer", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkWriterType))); serialize.Parameters.Add(new ParameterDefinition("forceAll", ParameterAttributes.None, Weaver.boolType)); - ILProcessor serWorker = serialize.Body.GetILProcessor(); + ILProcessor worker = serialize.Body.GetILProcessor(); serialize.Body.InitLocals = true; @@ -329,35 +371,42 @@ void GenerateSerialization() VariableDefinition dirtyLocal = new VariableDefinition(Weaver.boolType); serialize.Body.Variables.Add(dirtyLocal); - MethodReference baseSerialize = Resolvers.ResolveMethodInParents(netBehaviourSubclass.BaseType, Weaver.CurrentAssembly, "OnSerialize"); + MethodReference baseSerialize = Resolvers.TryResolveMethodInParents(netBehaviourSubclass.BaseType, Weaver.CurrentAssembly, SerializeMethodName); if (baseSerialize != null) { - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // base - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); // writer - serWorker.Append(serWorker.Create(OpCodes.Ldarg_2)); // forceAll - serWorker.Append(serWorker.Create(OpCodes.Call, baseSerialize)); - serWorker.Append(serWorker.Create(OpCodes.Stloc_0)); // set dirtyLocal to result of base.OnSerialize() + // base + worker.Append(worker.Create(OpCodes.Ldarg_0)); + // writer + worker.Append(worker.Create(OpCodes.Ldarg_1)); + // forceAll + worker.Append(worker.Create(OpCodes.Ldarg_2)); + worker.Append(worker.Create(OpCodes.Call, baseSerialize)); + // set dirtyLocal to result of base.OnSerialize() + worker.Append(worker.Create(OpCodes.Stloc_0)); } // Generates: if (forceAll); - Instruction initialStateLabel = serWorker.Create(OpCodes.Nop); - serWorker.Append(serWorker.Create(OpCodes.Ldarg_2)); // forceAll - serWorker.Append(serWorker.Create(OpCodes.Brfalse, initialStateLabel)); + Instruction initialStateLabel = worker.Create(OpCodes.Nop); + // forceAll + worker.Append(worker.Create(OpCodes.Ldarg_2)); + worker.Append(worker.Create(OpCodes.Brfalse, initialStateLabel)); foreach (FieldDefinition syncVar in syncVars) { // Generates a writer call for each sync variable - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); // writer - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // this - serWorker.Append(serWorker.Create(OpCodes.Ldfld, syncVar)); + // writer + worker.Append(worker.Create(OpCodes.Ldarg_1)); + // this + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, syncVar)); MethodReference writeFunc = Writers.GetWriteFunc(syncVar.FieldType); if (writeFunc != null) { - serWorker.Append(serWorker.Create(OpCodes.Call, writeFunc)); + worker.Append(worker.Create(OpCodes.Call, writeFunc)); } else { - Weaver.Error($"{syncVar} has unsupported type. Use a supported Mirror type instead"); + Weaver.Error($"{syncVar.Name} has unsupported type. Use a supported Mirror type instead", syncVar); return; } } @@ -365,18 +414,20 @@ void GenerateSerialization() // always return true if forceAll // Generates: return true - serWorker.Append(serWorker.Create(OpCodes.Ldc_I4_1)); - serWorker.Append(serWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ldc_I4_1)); + worker.Append(worker.Create(OpCodes.Ret)); // Generates: end if (forceAll); - serWorker.Append(initialStateLabel); + worker.Append(initialStateLabel); // write dirty bits before the data fields // Generates: writer.WritePackedUInt64 (base.get_syncVarDirtyBits ()); - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); // writer - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // base - serWorker.Append(serWorker.Create(OpCodes.Call, Weaver.NetworkBehaviourDirtyBitsReference)); - serWorker.Append(serWorker.Create(OpCodes.Call, Writers.GetWriteFunc(Weaver.uint64Type))); + // writer + worker.Append(worker.Create(OpCodes.Ldarg_1)); + // base + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Call, Weaver.NetworkBehaviourDirtyBitsReference)); + worker.Append(worker.Create(OpCodes.Call, Writers.GetWriteFunc(Weaver.uint64Type))); // generate a writer call for any dirty variable in this class @@ -384,150 +435,282 @@ void GenerateSerialization() int dirtyBit = Weaver.GetSyncVarStart(netBehaviourSubclass.BaseType.FullName); foreach (FieldDefinition syncVar in syncVars) { - Instruction varLabel = serWorker.Create(OpCodes.Nop); + Instruction varLabel = worker.Create(OpCodes.Nop); // Generates: if ((base.get_syncVarDirtyBits() & 1uL) != 0uL) - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // base - serWorker.Append(serWorker.Create(OpCodes.Call, Weaver.NetworkBehaviourDirtyBitsReference)); - serWorker.Append(serWorker.Create(OpCodes.Ldc_I8, 1L << dirtyBit)); // 8 bytes = long - serWorker.Append(serWorker.Create(OpCodes.And)); - serWorker.Append(serWorker.Create(OpCodes.Brfalse, varLabel)); + // base + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Call, Weaver.NetworkBehaviourDirtyBitsReference)); + // 8 bytes = long + worker.Append(worker.Create(OpCodes.Ldc_I8, 1L << dirtyBit)); + worker.Append(worker.Create(OpCodes.And)); + worker.Append(worker.Create(OpCodes.Brfalse, varLabel)); // Generates a call to the writer for that field - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); // writer - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // base - serWorker.Append(serWorker.Create(OpCodes.Ldfld, syncVar)); + // writer + worker.Append(worker.Create(OpCodes.Ldarg_1)); + // base + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, syncVar)); MethodReference writeFunc = Writers.GetWriteFunc(syncVar.FieldType); if (writeFunc != null) { - serWorker.Append(serWorker.Create(OpCodes.Call, writeFunc)); + worker.Append(worker.Create(OpCodes.Call, writeFunc)); } else { - Weaver.Error($"{syncVar} has unsupported type. Use a supported Mirror type instead"); + Weaver.Error($"{syncVar.Name} has unsupported type. Use a supported Mirror type instead", syncVar); return; } // something was dirty - serWorker.Append(serWorker.Create(OpCodes.Ldc_I4_1)); - serWorker.Append(serWorker.Create(OpCodes.Stloc_0)); // set dirtyLocal to true + worker.Append(worker.Create(OpCodes.Ldc_I4_1)); + // set dirtyLocal to true + worker.Append(worker.Create(OpCodes.Stloc_0)); - serWorker.Append(varLabel); + worker.Append(varLabel); dirtyBit += 1; } if (Weaver.GenerateLogErrors) { - serWorker.Append(serWorker.Create(OpCodes.Ldstr, "Injected Serialize " + netBehaviourSubclass.Name)); - serWorker.Append(serWorker.Create(OpCodes.Call, Weaver.logErrorReference)); + worker.Append(worker.Create(OpCodes.Ldstr, "Injected Serialize " + netBehaviourSubclass.Name)); + worker.Append(worker.Create(OpCodes.Call, Weaver.logErrorReference)); } // generate: return dirtyLocal - serWorker.Append(serWorker.Create(OpCodes.Ldloc_0)); - serWorker.Append(serWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ldloc_0)); + worker.Append(worker.Create(OpCodes.Ret)); netBehaviourSubclass.Methods.Add(serialize); } - public static int GetChannelId(CustomAttribute ca) + void DeserializeField(FieldDefinition syncVar, ILProcessor worker, MethodDefinition deserialize) { - foreach (CustomAttributeNamedArgument customField in ca.Fields) + // check for Hook function + MethodDefinition hookMethod = SyncVarProcessor.GetHookMethod(netBehaviourSubclass, syncVar); + + if (IsNetworkIdentityField(syncVar)) { - if (customField.Name == "channel") - { - return (int)customField.Argument.Value; - } + DeserializeNetworkIdentityField(syncVar, worker, deserialize, hookMethod); + } + else + { + DeserializeNormalField(syncVar, worker, deserialize, hookMethod); } + } - return 0; + /// + /// Is the field a NetworkIdentity or GameObject + /// + /// + /// + static bool IsNetworkIdentityField(FieldDefinition syncVar) + { + return syncVar.FieldType.FullName == Weaver.gameObjectType.FullName || + syncVar.FieldType.FullName == Weaver.NetworkIdentityType.FullName; } - void DeserializeField(FieldDefinition syncVar, ILProcessor serWorker, MethodDefinition deserialize) + /// + /// [SyncVar] GameObject/NetworkIdentity? + /// + /// + /// + /// + /// + /// + void DeserializeNetworkIdentityField(FieldDefinition syncVar, ILProcessor worker, MethodDefinition deserialize, MethodDefinition hookMethod) { - // check for Hook function - if (!SyncVarProcessor.CheckForHookFunction(netBehaviourSubclass, syncVar, out MethodDefinition foundMethod)) + /* + Generates code like: + uint oldNetId = ___qNetId; + // returns GetSyncVarGameObject(___qNetId) + GameObject oldSyncVar = syncvar.getter; + ___qNetId = reader.ReadPackedUInt32(); + if (!SyncVarEqual(oldNetId, ref ___goNetId)) + { + // getter returns GetSyncVarGameObject(___qNetId) + OnSetQ(oldSyncVar, syncvar.getter); + } + */ + + // GameObject/NetworkIdentity SyncVar: + // OnSerialize sends writer.Write(go); + // OnDeserialize reads to __netId manually so we can use + // lookups in the getter (so it still works if objects + // move in and out of range repeatedly) + FieldDefinition netIdField = syncVarNetIds[syncVar]; + + // uint oldNetId = ___qNetId; + VariableDefinition oldNetId = new VariableDefinition(Weaver.uint32Type); + deserialize.Body.Variables.Add(oldNetId); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, netIdField)); + worker.Append(worker.Create(OpCodes.Stloc, oldNetId)); + + // GameObject/NetworkIdentity oldSyncVar = syncvar.getter; + VariableDefinition oldSyncVar = new VariableDefinition(syncVar.FieldType); + deserialize.Body.Variables.Add(oldSyncVar); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, syncVar)); + worker.Append(worker.Create(OpCodes.Stloc, oldSyncVar)); + + // read id and store in netId field BEFORE calling the hook + // -> this makes way more sense. by definition, the hook is + // supposed to be called after it was changed. not before. + // -> setting it BEFORE calling the hook fixes the following bug: + // https://github.com/vis2k/Mirror/issues/1151 in host mode + // where the value during the Hook call would call Cmds on + // the host server, and they would all happen and compare + // values BEFORE the hook even returned and hence BEFORE the + // actual value was even set. + // put 'this.' onto stack for 'this.netId' below + worker.Append(worker.Create(OpCodes.Ldarg_0)); + // reader. for 'reader.Read()' below + worker.Append(worker.Create(OpCodes.Ldarg_1)); + // Read() + worker.Append(worker.Create(OpCodes.Call, Readers.GetReadFunc(Weaver.uint32Type))); + // netId + worker.Append(worker.Create(OpCodes.Stfld, netIdField)); + + if (hookMethod != null) { - return; + // call Hook(this.GetSyncVarGameObject/NetworkIdentity(reader.ReadPackedUInt32())) + // because we send/receive the netID, not the GameObject/NetworkIdentity + // but only if SyncVar changed. otherwise a client would + // get hook calls for all initial values, even if they + // didn't change from the default values on the client. + // see also: https://github.com/vis2k/Mirror/issues/1278 + + // IMPORTANT: for GameObjects/NetworkIdentities we usually + // use SyncVarGameObjectEqual to compare equality. + // in this case however, we can just use + // SyncVarEqual with the two uint netIds. + // => this is easier weaver code because we don't + // have to get the GameObject/NetworkIdentity + // from the uint netId + // => this is faster because we void one + // GetComponent call for GameObjects to get + // their NetworkIdentity when comparing. + + // Generates: if (!SyncVarEqual); + Instruction syncVarEqualLabel = worker.Create(OpCodes.Nop); + + // 'this.' for 'this.SyncVarEqual' + worker.Append(worker.Create(OpCodes.Ldarg_0)); + // 'oldNetId' + worker.Append(worker.Create(OpCodes.Ldloc, oldNetId)); + // 'ref this.__netId' + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, netIdField)); + // call the function + GenericInstanceMethod syncVarEqualGm = new GenericInstanceMethod(Weaver.syncVarEqualReference); + syncVarEqualGm.GenericArguments.Add(netIdField.FieldType); + worker.Append(worker.Create(OpCodes.Call, syncVarEqualGm)); + worker.Append(worker.Create(OpCodes.Brtrue, syncVarEqualLabel)); + + // call the hook + // Generates: OnValueChanged(oldValue, this.syncVar); + SyncVarProcessor.WriteCallHookMethodUsingField(worker, hookMethod, oldSyncVar, syncVar); + + // Generates: end if (!SyncVarEqual); + worker.Append(syncVarEqualLabel); } + } - if (syncVar.FieldType.FullName == Weaver.gameObjectType.FullName || - syncVar.FieldType.FullName == Weaver.NetworkIdentityType.FullName) - { - // GameObject/NetworkIdentity SyncVar: - // OnSerialize sends writer.Write(go); - // OnDeserialize reads to __netId manually so we can use - // lookups in the getter (so it still works if objects - // move in and out of range repeatedly) - FieldDefinition netIdField = syncVarNetIds[syncVar]; - - VariableDefinition tmpValue = new VariableDefinition(Weaver.uint32Type); - deserialize.Body.Variables.Add(tmpValue); - - // read id and store in a local variable - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); - serWorker.Append(serWorker.Create(OpCodes.Call, Readers.GetReadFunc(Weaver.uint32Type))); - serWorker.Append(serWorker.Create(OpCodes.Stloc, tmpValue)); - - if (foundMethod != null) + /// + /// [SyncVar] int/float/struct/etc.? + /// + /// + /// + /// + /// + /// + void DeserializeNormalField(FieldDefinition syncVar, ILProcessor serWorker, MethodDefinition deserialize, MethodDefinition hookMethod) + { + /* + Generates code like: + // for hook + int oldValue = a; + Networka = reader.ReadPackedInt32(); + if (!SyncVarEqual(oldValue, ref a)) { - // call Hook(this.GetSyncVarGameObject/NetworkIdentity(reader.ReadPackedUInt32())) - // because we send/receive the netID, not the GameObject/NetworkIdentity - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // this. - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldloc, tmpValue)); - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldflda, syncVar)); - if (syncVar.FieldType.FullName == Weaver.gameObjectType.FullName) - serWorker.Append(serWorker.Create(OpCodes.Callvirt, Weaver.getSyncVarGameObjectReference)); - else if (syncVar.FieldType.FullName == Weaver.NetworkIdentityType.FullName) - serWorker.Append(serWorker.Create(OpCodes.Callvirt, Weaver.getSyncVarNetworkIdentityReference)); - serWorker.Append(serWorker.Create(OpCodes.Call, foundMethod)); + OnSetA(oldValue, Networka); } - // set the netid field - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldloc, tmpValue)); - serWorker.Append(serWorker.Create(OpCodes.Stfld, netIdField)); + */ + + MethodReference readFunc = Readers.GetReadFunc(syncVar.FieldType); + if (readFunc == null) + { + Weaver.Error($"{syncVar.Name} has unsupported type. Use a supported Mirror type instead", syncVar); + return; } - else + + // T oldValue = value; + VariableDefinition oldValue = new VariableDefinition(syncVar.FieldType); + deserialize.Body.Variables.Add(oldValue); + serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); + serWorker.Append(serWorker.Create(OpCodes.Ldfld, syncVar)); + serWorker.Append(serWorker.Create(OpCodes.Stloc, oldValue)); + + // read value and store in syncvar BEFORE calling the hook + // -> this makes way more sense. by definition, the hook is + // supposed to be called after it was changed. not before. + // -> setting it BEFORE calling the hook fixes the following bug: + // https://github.com/vis2k/Mirror/issues/1151 in host mode + // where the value during the Hook call would call Cmds on + // the host server, and they would all happen and compare + // values BEFORE the hook even returned and hence BEFORE the + // actual value was even set. + // put 'this.' onto stack for 'this.syncvar' below + serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); + // reader. for 'reader.Read()' below + serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); + // reader.Read() + serWorker.Append(serWorker.Create(OpCodes.Call, readFunc)); + // syncvar + serWorker.Append(serWorker.Create(OpCodes.Stfld, syncVar)); + + if (hookMethod != null) { - MethodReference readFunc = Readers.GetReadFunc(syncVar.FieldType); - if (readFunc == null) - { - Weaver.Error($"{syncVar} has unsupported type. Use a supported Mirror type instead"); - return; - } - VariableDefinition tmpValue = new VariableDefinition(syncVar.FieldType); - deserialize.Body.Variables.Add(tmpValue); + // call hook + // but only if SyncVar changed. otherwise a client would + // get hook calls for all initial values, even if they + // didn't change from the default values on the client. + // see also: https://github.com/vis2k/Mirror/issues/1278 - // read value and put it in a local variable - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); - serWorker.Append(serWorker.Create(OpCodes.Call, readFunc)); - serWorker.Append(serWorker.Create(OpCodes.Stloc, tmpValue)); + // Generates: if (!SyncVarEqual); + Instruction syncVarEqualLabel = serWorker.Create(OpCodes.Nop); - if (foundMethod != null) - { - // call hook - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldloc, tmpValue)); - serWorker.Append(serWorker.Create(OpCodes.Call, foundMethod)); - } - // set the property + // 'this.' for 'this.SyncVarEqual' + serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); + // 'oldValue' + serWorker.Append(serWorker.Create(OpCodes.Ldloc, oldValue)); + // 'ref this.syncVar' serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); - serWorker.Append(serWorker.Create(OpCodes.Ldloc, tmpValue)); - serWorker.Append(serWorker.Create(OpCodes.Stfld, syncVar)); + serWorker.Append(serWorker.Create(OpCodes.Ldflda, syncVar)); + // call the function + GenericInstanceMethod syncVarEqualGm = new GenericInstanceMethod(Weaver.syncVarEqualReference); + syncVarEqualGm.GenericArguments.Add(syncVar.FieldType); + serWorker.Append(serWorker.Create(OpCodes.Call, syncVarEqualGm)); + serWorker.Append(serWorker.Create(OpCodes.Brtrue, syncVarEqualLabel)); + + // call the hook + // Generates: OnValueChanged(oldValue, this.syncVar); + SyncVarProcessor.WriteCallHookMethodUsingField(serWorker, hookMethod, oldValue, syncVar); + + // Generates: end if (!SyncVarEqual); + serWorker.Append(syncVarEqualLabel); } - } void GenerateDeSerialization() { Weaver.DLog(netBehaviourSubclass, " GenerateDeSerialization"); - foreach (MethodDefinition m in netBehaviourSubclass.Methods) - { - if (m.Name == "OnDeserialize") - return; - } + const string DeserializeMethodName = "DeserializeSyncVars"; + if (netBehaviourSubclass.GetMethod(DeserializeMethodName) != null) + return; if (syncVars.Count == 0) { @@ -535,7 +718,7 @@ void GenerateDeSerialization() return; } - MethodDefinition serialize = new MethodDefinition("OnDeserialize", + MethodDefinition serialize = new MethodDefinition(DeserializeMethodName, MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.HideBySig, Weaver.voidType); @@ -547,12 +730,15 @@ void GenerateDeSerialization() VariableDefinition dirtyBitsLocal = new VariableDefinition(Weaver.int64Type); serialize.Body.Variables.Add(dirtyBitsLocal); - MethodReference baseDeserialize = Resolvers.ResolveMethodInParents(netBehaviourSubclass.BaseType, Weaver.CurrentAssembly, "OnDeserialize"); + MethodReference baseDeserialize = Resolvers.TryResolveMethodInParents(netBehaviourSubclass.BaseType, Weaver.CurrentAssembly, DeserializeMethodName); if (baseDeserialize != null) { - serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); // base - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); // reader - serWorker.Append(serWorker.Create(OpCodes.Ldarg_2)); // initialState + // base + serWorker.Append(serWorker.Create(OpCodes.Ldarg_0)); + // reader + serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); + // initialState + serWorker.Append(serWorker.Create(OpCodes.Ldarg_2)); serWorker.Append(serWorker.Create(OpCodes.Call, baseDeserialize)); } @@ -572,14 +758,14 @@ void GenerateDeSerialization() // Generates: end if (initialState); serWorker.Append(initialStateLabel); - // get dirty bits serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); serWorker.Append(serWorker.Create(OpCodes.Call, Readers.GetReadFunc(Weaver.uint64Type))); serWorker.Append(serWorker.Create(OpCodes.Stloc_0)); // conditionally read each syncvar - int dirtyBit = Weaver.GetSyncVarStart(netBehaviourSubclass.BaseType.FullName); // start at number of syncvars in parent + // start at number of syncvars in parent + int dirtyBit = Weaver.GetSyncVarStart(netBehaviourSubclass.BaseType.FullName); foreach (FieldDefinition syncVar in syncVars) { Instruction varLabel = serWorker.Create(OpCodes.Nop); @@ -606,38 +792,55 @@ void GenerateDeSerialization() netBehaviourSubclass.Methods.Add(serialize); } - public static bool ProcessNetworkReaderParameters(MethodDefinition md, ILProcessor worker, bool skipFirst) + public static bool ReadArguments(MethodDefinition method, ILProcessor worker, RemoteCallType callType) { - int count = 0; - - // read cmd args from NetworkReader - foreach (ParameterDefinition arg in md.Parameters) + // read each argument + // example result + /* + CallCmdDoSomething(reader.ReadPackedInt32(), reader.ReadNetworkIdentity()); + */ + + bool skipFirst = (callType == RemoteCallType.TargetRpc + && TargetRpcProcessor.HasNetworkConnectionParameter(method)); + + // arg of calling function, arg 0 is "this" so start counting at 1 + int argNum = 1; + foreach (ParameterDefinition param in method.Parameters) { - if (count++ == 0 && skipFirst) + // NetworkConnection is not sent via the NetworkWriter so skip it here + // skip first for NetworkConnection in TargetRpc + if (argNum == 1 && skipFirst) { + argNum += 1; continue; } - MethodReference readFunc = Readers.GetReadFunc(arg.ParameterType); //? + // skip SenderConnection in Command + if (IsSenderConnection(param, callType)) + { + argNum += 1; + continue; + } + + + MethodReference readFunc = Readers.GetReadFunc(param.ParameterType); - if (readFunc != null) + if (readFunc == null) { - worker.Append(worker.Create(OpCodes.Ldarg_1)); - worker.Append(worker.Create(OpCodes.Call, readFunc)); + Weaver.Error($"{method.Name} has invalid parameter {param}. Unsupported type {param.ParameterType}, use a supported Mirror type instead", method); + return false; + } - // conversion.. is this needed? - if (arg.ParameterType.FullName == Weaver.singleType.FullName) - { - worker.Append(worker.Create(OpCodes.Conv_R4)); - } - else if (arg.ParameterType.FullName == Weaver.doubleType.FullName) - { - worker.Append(worker.Create(OpCodes.Conv_R8)); - } + worker.Append(worker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Call, readFunc)); + + // conversion.. is this needed? + if (param.ParameterType.FullName == Weaver.singleType.FullName) + { + worker.Append(worker.Create(OpCodes.Conv_R4)); } - else + else if (param.ParameterType.FullName == Weaver.doubleType.FullName) { - Weaver.Error($"{md} has invalid parameter {arg}. Unsupported type {arg.ParameterType}, use a supported Mirror type instead"); - return false; + worker.Append(worker.Create(OpCodes.Conv_R8)); } } return true; @@ -645,80 +848,107 @@ public static bool ProcessNetworkReaderParameters(MethodDefinition md, ILProcess public static void AddInvokeParameters(ICollection collection) { - collection.Add(new ParameterDefinition("obj", ParameterAttributes.None, Weaver.NetworkBehaviourType2)); + collection.Add(new ParameterDefinition("obj", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkBehaviourType))); collection.Add(new ParameterDefinition("reader", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkReaderType))); + // senderConnection is only used for commands but NetworkBehaviour.CmdDelegate is used for all remote calls + collection.Add(new ParameterDefinition("senderConnection", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkConnectionType))); } public static bool ProcessMethodsValidateFunction(MethodReference md) { if (md.ReturnType.FullName == Weaver.IEnumeratorType.FullName) { - Weaver.Error($"{md} cannot be a coroutine"); + Weaver.Error($"{md.Name} cannot be a coroutine", md); return false; } if (md.ReturnType.FullName != Weaver.voidType.FullName) { - Weaver.Error($"{md} cannot return a value. Make it void instead"); + Weaver.Error($"{md.Name} cannot return a value. Make it void instead", md); return false; } if (md.HasGenericParameters) { - Weaver.Error($"{md} cannot have generic parameters"); + Weaver.Error($"{md.Name} cannot have generic parameters", md); return false; } return true; } - public static bool ProcessMethodsValidateParameters(MethodReference md, CustomAttribute ca) + public static bool ProcessMethodsValidateParameters(MethodReference method, RemoteCallType callType) { - for (int i = 0; i < md.Parameters.Count; ++i) + for (int i = 0; i < method.Parameters.Count; ++i) { - ParameterDefinition p = md.Parameters[i]; - if (p.IsOut) - { - Weaver.Error($"{md} cannot have out parameters"); - return false; - } - if (p.IsOptional) - { - Weaver.Error($"{md} cannot have optional parameters"); - return false; - } - if (p.ParameterType.Resolve().IsAbstract) - { - Weaver.Error($"{md} has invalid parameter {p}. Use concrete type instead of abstract type {p.ParameterType}"); - return false; - } - if (p.ParameterType.IsByReference) + ParameterDefinition param = method.Parameters[i]; + + bool valid = ValidateParameter(method, param, callType, i == 0); + + if (!valid) { - Weaver.Error($"{md} has invalid parameter {p}. Use supported type instead of reference type {p.ParameterType}"); return false; } - // TargetRPC is an exception to this rule and can have a NetworkConnection as first parameter - if (p.ParameterType.FullName == Weaver.NetworkConnectionType.FullName && - !(ca.AttributeType.FullName == Weaver.TargetRpcType.FullName && i == 0)) + } + return true; + } + + static bool ValidateParameter(MethodReference method, ParameterDefinition param, RemoteCallType callType, bool firstParam) + { + bool isNetworkConnection = param.ParameterType.FullName == Weaver.NetworkConnectionType.FullName; + bool isSenderConnection = IsSenderConnection(param, callType); + + if (param.IsOut) + { + Weaver.Error($"{method.Name} cannot have out parameters", method); + return false; + } + + + // if not SenderConnection And not TargetRpc NetworkConnection first param + if (!isSenderConnection && isNetworkConnection && !(callType == RemoteCallType.TargetRpc && firstParam)) + { + if (callType == RemoteCallType.Command) { - Weaver.Error($"{md} has invalid parameer {p}. Cannot pass NeworkConnections"); - return false; + Weaver.Error($"{method.Name} has invalid parameter {param}, Cannot pass NetworkConnections. Instead use 'NetworkConnectionToClient conn = null' to get the sender's connection on the server", method); } - if (p.ParameterType.Resolve().IsDerivedFrom(Weaver.ComponentType)) + else { - if (p.ParameterType.FullName != Weaver.NetworkIdentityType.FullName) - { - Weaver.Error($"{md} has invalid parameter {p}. Cannot pass components in remote method calls"); - return false; - } + Weaver.Error($"{method.Name} has invalid parameter {param}. Cannot pass NetworkConnections", method); } + return false; } + + // sender connection can be optional + if (param.IsOptional && !isSenderConnection) + { + Weaver.Error($"{method.Name} cannot have optional parameters", method); + return false; + } + return true; } + public static bool IsSenderConnection(ParameterDefinition param, RemoteCallType callType) + { + if (callType != RemoteCallType.Command) + { + return false; + } + + TypeReference type = param.ParameterType; + + const string ConnectionToClient = "Mirror.NetworkConnectionToClient"; + bool isConnectionToClient = type.FullName == ConnectionToClient || type.Resolve().IsDerivedFrom(ConnectionToClient); + + return isConnectionToClient; + } + void ProcessMethods() { HashSet names = new HashSet(); + // copy the list of methods because we will be adding methods in the loop + List methods = new List(netBehaviourSubclass.Methods); // find command and RPC functions - foreach (MethodDefinition md in netBehaviourSubclass.Methods) + foreach (MethodDefinition md in methods) { foreach (CustomAttribute ca in md.CustomAttributes) { @@ -741,118 +971,106 @@ void ProcessMethods() } } } + } - // cmds - foreach (MethodDefinition md in commandInvocationFuncs) - { - netBehaviourSubclass.Methods.Add(md); - } - foreach (MethodDefinition md in commandCallFuncs) - { - netBehaviourSubclass.Methods.Add(md); - } - - // rpcs - foreach (MethodDefinition md in clientRpcInvocationFuncs) - { - netBehaviourSubclass.Methods.Add(md); - } - foreach (MethodDefinition md in targetRpcInvocationFuncs) - { - netBehaviourSubclass.Methods.Add(md); - } - foreach (MethodDefinition md in clientRpcCallFuncs) - { - netBehaviourSubclass.Methods.Add(md); - } - foreach (MethodDefinition md in targetRpcCallFuncs) + void ProcessClientRpc(HashSet names, MethodDefinition md, CustomAttribute clientRpcAttr) + { + if (md.IsAbstract) { - netBehaviourSubclass.Methods.Add(md); + Weaver.Error("Abstract ClientRpc are currently not supported, use virtual method instead", md); + return; } - } - void ProcessClientRpc(HashSet names, MethodDefinition md, CustomAttribute ca) - { - if (!RpcProcessor.ProcessMethodsValidateRpc(md, ca)) + if (!RpcProcessor.ProcessMethodsValidateRpc(md)) { return; } if (names.Contains(md.Name)) { - Weaver.Error("Duplicate ClientRpc name [" + netBehaviourSubclass.FullName + ":" + md.Name + "]"); + Weaver.Error($"Duplicate ClientRpc name {md.Name}", md); return; } + + bool excludeOwner = clientRpcAttr.GetField("excludeOwner", false); + names.Add(md.Name); - clientRpcs.Add(md); + clientRpcs.Add(new ClientRpcResult + { + method = md, + excludeOwner = excludeOwner + }); - MethodDefinition rpcCallFunc = RpcProcessor.ProcessRpcCall(netBehaviourSubclass, md, ca); + MethodDefinition rpcCallFunc = RpcProcessor.ProcessRpcCall(netBehaviourSubclass, md, clientRpcAttr); MethodDefinition rpcFunc = RpcProcessor.ProcessRpcInvoke(netBehaviourSubclass, md, rpcCallFunc); if (rpcFunc != null) { clientRpcInvocationFuncs.Add(rpcFunc); } + } - if (rpcCallFunc != null) + void ProcessTargetRpc(HashSet names, MethodDefinition md, CustomAttribute targetRpcAttr) + { + if (md.IsAbstract) { - clientRpcCallFuncs.Add(rpcCallFunc); + Weaver.Error("Abstract TargetRpc are currently not supported, use virtual method instead", md); + return; } - } - void ProcessTargetRpc(HashSet names, MethodDefinition md, CustomAttribute ca) - { - if (!TargetRpcProcessor.ProcessMethodsValidateTargetRpc(md, ca)) + if (!TargetRpcProcessor.ProcessMethodsValidateTargetRpc(md)) return; if (names.Contains(md.Name)) { - Weaver.Error("Duplicate Target Rpc name [" + netBehaviourSubclass.FullName + ":" + md.Name + "]"); + Weaver.Error($"Duplicate Target Rpc name {md.Name}", md); return; } names.Add(md.Name); targetRpcs.Add(md); - MethodDefinition rpcCallFunc = TargetRpcProcessor.ProcessTargetRpcCall(netBehaviourSubclass, md, ca); + MethodDefinition rpcCallFunc = TargetRpcProcessor.ProcessTargetRpcCall(netBehaviourSubclass, md, targetRpcAttr); MethodDefinition rpcFunc = TargetRpcProcessor.ProcessTargetRpcInvoke(netBehaviourSubclass, md, rpcCallFunc); if (rpcFunc != null) { targetRpcInvocationFuncs.Add(rpcFunc); } + } - if (rpcCallFunc != null) + void ProcessCommand(HashSet names, MethodDefinition md, CustomAttribute commandAttr) + { + if (md.IsAbstract) { - targetRpcCallFuncs.Add(rpcCallFunc); + Weaver.Error("Abstract Commands are currently not supported, use virtual method instead", md); + return; } - } - void ProcessCommand(HashSet names, MethodDefinition md, CustomAttribute ca) - { - if (!CommandProcessor.ProcessMethodsValidateCommand(md, ca)) + if (!CommandProcessor.ProcessMethodsValidateCommand(md)) return; if (names.Contains(md.Name)) { - Weaver.Error("Duplicate Command name [" + netBehaviourSubclass.FullName + ":" + md.Name + "]"); + Weaver.Error($"Duplicate Command name {md.Name}", md); return; } + bool ignoreAuthority = commandAttr.GetField("ignoreAuthority", false); + names.Add(md.Name); - commands.Add(md); + commands.Add(new CmdResult + { + method = md, + ignoreAuthority = ignoreAuthority + }); - MethodDefinition cmdCallFunc = CommandProcessor.ProcessCommandCall(netBehaviourSubclass, md, ca); + MethodDefinition cmdCallFunc = CommandProcessor.ProcessCommandCall(netBehaviourSubclass, md, commandAttr); MethodDefinition cmdFunc = CommandProcessor.ProcessCommandInvoke(netBehaviourSubclass, md, cmdCallFunc); if (cmdFunc != null) { commandInvocationFuncs.Add(cmdFunc); } - - if (cmdCallFunc != null) - { - commandCallFuncs.Add(cmdCallFunc); - } } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/PropertySiteProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/PropertySiteProcessor.cs index eb78b6d..597094e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/PropertySiteProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/PropertySiteProcessor.cs @@ -57,32 +57,15 @@ static void ProcessSiteMethod(TypeDefinition td, MethodDefinition md) if (md.Name == ".cctor" || md.Name == NetworkBehaviourProcessor.ProcessedFunctionName || - md.Name.StartsWith("InvokeSyn")) + md.Name.StartsWith(Weaver.InvokeRpcPrefix)) return; if (md.Body != null && md.Body.Instructions != null) { // TODO move this to NetworkBehaviourProcessor - foreach (CustomAttribute attr in md.CustomAttributes) - { - switch (attr.Constructor.DeclaringType.ToString()) - { - case "Mirror.ServerAttribute": - InjectServerGuard(td, md, true); - break; - case "Mirror.ServerCallbackAttribute": - InjectServerGuard(td, md, false); - break; - case "Mirror.ClientAttribute": - InjectClientGuard(td, md, true); - break; - case "Mirror.ClientCallbackAttribute": - InjectClientGuard(td, md, false); - break; - } - } + ServerClientAttributeProcessor.ProcessMethodAttributes(td, md); - for (int iCount= 0; iCount < md.Body.Instructions.Count;) + for (int iCount = 0; iCount < md.Body.Instructions.Count;) { Instruction instr = md.Body.Instructions[iCount]; iCount += ProcessInstruction(md, instr, iCount); @@ -90,51 +73,6 @@ static void ProcessSiteMethod(TypeDefinition td, MethodDefinition md) } } - static void InjectServerGuard(TypeDefinition td, MethodDefinition md, bool logWarning) - { - if (!Weaver.IsNetworkBehaviour(td)) - { - Weaver.Error($"[Server] {md} must be declared in a NetworkBehaviour"); - return; - } - ILProcessor worker = md.Body.GetILProcessor(); - Instruction top = md.Body.Instructions[0]; - - worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.NetworkServerGetActive)); - worker.InsertBefore(top, worker.Create(OpCodes.Brtrue, top)); - if (logWarning) - { - worker.InsertBefore(top, worker.Create(OpCodes.Ldstr, "[Server] function '" + md.FullName + "' called on client")); - worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.logWarningReference)); - } - InjectGuardParameters(md, worker, top); - InjectGuardReturnValue(md, worker, top); - worker.InsertBefore(top, worker.Create(OpCodes.Ret)); - } - - static void InjectClientGuard(TypeDefinition td, MethodDefinition md, bool logWarning) - { - if (!Weaver.IsNetworkBehaviour(td)) - { - Weaver.Error($"[Client] {md} must be declared in a NetworkBehaviour"); - return; - } - ILProcessor worker = md.Body.GetILProcessor(); - Instruction top = md.Body.Instructions[0]; - - worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.NetworkClientGetActive)); - worker.InsertBefore(top, worker.Create(OpCodes.Brtrue, top)); - if (logWarning) - { - worker.InsertBefore(top, worker.Create(OpCodes.Ldstr, "[Client] function '" + md.FullName + "' called on server")); - worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.logWarningReference)); - } - - InjectGuardParameters(md, worker, top); - InjectGuardReturnValue(md, worker, top); - worker.InsertBefore(top, worker.Create(OpCodes.Ret)); - } - // replaces syncvar write access with the NetworkXYZ.get property calls static void ProcessInstructionSetterField(MethodDefinition md, Instruction i, FieldDefinition opField) { @@ -173,41 +111,29 @@ static void ProcessInstructionGetterField(MethodDefinition md, Instruction i, Fi static int ProcessInstruction(MethodDefinition md, Instruction instr, int iCount) { - if (instr.OpCode == OpCodes.Call || instr.OpCode == OpCodes.Callvirt) + if ((instr.OpCode == OpCodes.Call || instr.OpCode == OpCodes.Callvirt) + && instr.Operand is MethodReference opMethod) { - if (instr.Operand is MethodReference opMethod) - { - ProcessInstructionMethod(md, instr, opMethod, iCount); - } + ProcessInstructionMethod(md, instr, opMethod, iCount); } - if (instr.OpCode == OpCodes.Stfld) + if (instr.OpCode == OpCodes.Stfld && instr.Operand is FieldDefinition opFieldst) { // this instruction sets the value of a field. cache the field reference. - if (instr.Operand is FieldDefinition opField) - { - ProcessInstructionSetterField(md, instr, opField); - } + ProcessInstructionSetterField(md, instr, opFieldst); } - if (instr.OpCode == OpCodes.Ldfld) + if (instr.OpCode == OpCodes.Ldfld && instr.Operand is FieldDefinition opFieldld) { // this instruction gets the value of a field. cache the field reference. - if (instr.Operand is FieldDefinition opField) - { - ProcessInstructionGetterField(md, instr, opField); - } + ProcessInstructionGetterField(md, instr, opFieldld); } - if (instr.OpCode == OpCodes.Ldflda) + if (instr.OpCode == OpCodes.Ldflda && instr.Operand is FieldDefinition opFieldlda) { // loading a field by reference, watch out for initobj instruction // see https://github.com/vis2k/Mirror/issues/696 - - if (instr.Operand is FieldDefinition opField) - { - return ProcessInstructionLoadAddress(md, instr, opField, iCount); - } + return ProcessInstructionLoadAddress(md, instr, opFieldlda, iCount); } return 1; @@ -253,89 +179,34 @@ static int ProcessInstructionLoadAddress(MethodDefinition md, Instruction instr, static void ProcessInstructionMethod(MethodDefinition md, Instruction instr, MethodReference opMethodRef, int iCount) { - //DLog(td, "ProcessInstructionMethod " + opMethod.Name); - if (opMethodRef.Name == "Invoke") - { - // Events use an "Invoke" method to call the delegate. - // this code replaces the "Invoke" instruction with the generated "Call***" instruction which send the event to the server. - // but the "Invoke" instruction is called on the event field - where the "call" instruction is not. - // so the earlier instruction that loads the event field is replaced with a Noop. - - // go backwards until find a ldfld instruction that matches ANY event - bool found = false; - while (iCount > 0 && !found) - { - iCount -= 1; - Instruction inst = md.Body.Instructions[iCount]; - if (inst.OpCode == OpCodes.Ldfld) - { - FieldReference opField = inst.Operand as FieldReference; - - // find replaceEvent with matching name - // NOTE: original weaver compared .Name, not just the MethodDefinition, - // that's why we use dict. - if (Weaver.WeaveLists.replaceEvents.TryGetValue(opField.Name, out MethodDefinition replacement)) - { - instr.Operand = replacement; - inst.OpCode = OpCodes.Nop; - found = true; - } - } - } - } - } + if (opMethodRef.Name != "Invoke") + return; + // Events use an "Invoke" method to call the delegate. + // this code replaces the "Invoke" instruction with the generated "Call***" instruction which send the event to the server. + // but the "Invoke" instruction is called on the event field - where the "call" instruction is not. + // so the earlier instruction that loads the event field is replaced with a Noop. - // this is required to early-out from a function with "ref" or "out" parameters - static void InjectGuardParameters(MethodDefinition md, ILProcessor worker, Instruction top) - { - int offset = md.Resolve().IsStatic ? 0 : 1; - for (int index = 0; index < md.Parameters.Count; index++) + // go backwards until find a ldfld instruction that matches ANY event + while (iCount > 0) { - ParameterDefinition param = md.Parameters[index]; - if (param.IsOut) + iCount -= 1; + Instruction inst = md.Body.Instructions[iCount]; + if (inst.OpCode == OpCodes.Ldfld) { - TypeReference elementType = param.ParameterType.GetElementType(); - if (elementType.IsPrimitive) - { - worker.InsertBefore(top, worker.Create(OpCodes.Ldarg, index + offset)); - worker.InsertBefore(top, worker.Create(OpCodes.Ldc_I4_0)); - worker.InsertBefore(top, worker.Create(OpCodes.Stind_I4)); - } - else - { - md.Body.Variables.Add(new VariableDefinition(elementType)); - md.Body.InitLocals = true; + FieldReference opField = inst.Operand as FieldReference; - worker.InsertBefore(top, worker.Create(OpCodes.Ldarg, index + offset)); - worker.InsertBefore(top, worker.Create(OpCodes.Ldloca_S, (byte)(md.Body.Variables.Count - 1))); - worker.InsertBefore(top, worker.Create(OpCodes.Initobj, elementType)); - worker.InsertBefore(top, worker.Create(OpCodes.Ldloc, md.Body.Variables.Count - 1)); - worker.InsertBefore(top, worker.Create(OpCodes.Stobj, elementType)); + // find replaceEvent with matching name + // NOTE: original weaver compared .Name, not just the MethodDefinition, + // that's why we use dict. + if (Weaver.WeaveLists.replaceEvents.TryGetValue(opField.FullName, out MethodDefinition replacement)) + { + instr.Operand = replacement; + inst.OpCode = OpCodes.Nop; + return; } } } } - - // this is required to early-out from a function with a return value. - static void InjectGuardReturnValue(MethodDefinition md, ILProcessor worker, Instruction top) - { - if (md.ReturnType.FullName != Weaver.voidType.FullName) - { - if (md.ReturnType.IsPrimitive) - { - worker.InsertBefore(top, worker.Create(OpCodes.Ldc_I4_0)); - } - else - { - md.Body.Variables.Add(new VariableDefinition(md.ReturnType)); - md.Body.InitLocals = true; - - worker.InsertBefore(top, worker.Create(OpCodes.Ldloca_S, (byte)(md.Body.Variables.Count - 1))); - worker.InsertBefore(top, worker.Create(OpCodes.Initobj, md.ReturnType)); - worker.InsertBefore(top, worker.Create(OpCodes.Ldloc, md.Body.Variables.Count - 1)); - } - } - } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ReaderWriterProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ReaderWriterProcessor.cs index d87bf22..e69afcd 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ReaderWriterProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ReaderWriterProcessor.cs @@ -1,9 +1,6 @@ -using System; +using System.IO; using Mono.CecilX; using UnityEditor.Compilation; -using System.Linq; -using System.Collections.Generic; -using System.IO; namespace Mirror.Weaver { @@ -27,7 +24,7 @@ public static void ProcessReadersAndWriters(AssemblyDefinition CurrentAssembly) ProcessAssemblyClasses(CurrentAssembly, assembly); } } - catch(FileNotFoundException) + catch (FileNotFoundException) { // During first import, this gets called before some assemblies // are built, just skip them diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/RpcProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/RpcProcessor.cs index 9c2f2f6..a2b042b 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/RpcProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/RpcProcessor.cs @@ -1,37 +1,38 @@ -// all the [Rpc] code from NetworkBehaviourProcessor in one place using Mono.CecilX; using Mono.CecilX.Cil; + namespace Mirror.Weaver { + /// + /// Processes [Rpc] methods in NetworkBehaviour + /// public static class RpcProcessor { - public const string RpcPrefix = "InvokeRpc"; - public static MethodDefinition ProcessRpcInvoke(TypeDefinition td, MethodDefinition md, MethodDefinition rpcCallFunc) { MethodDefinition rpc = new MethodDefinition( - RpcPrefix + md.Name, + Weaver.InvokeRpcPrefix + md.Name, MethodAttributes.Family | MethodAttributes.Static | MethodAttributes.HideBySig, Weaver.voidType); - ILProcessor rpcWorker = rpc.Body.GetILProcessor(); - Instruction label = rpcWorker.Create(OpCodes.Nop); + ILProcessor worker = rpc.Body.GetILProcessor(); + Instruction label = worker.Create(OpCodes.Nop); - NetworkBehaviourProcessor.WriteClientActiveCheck(rpcWorker, md.Name, label, "RPC"); + NetworkBehaviourProcessor.WriteClientActiveCheck(worker, md.Name, label, "RPC"); // setup for reader - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldarg_0)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Castclass, td)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Castclass, td)); - if (!NetworkBehaviourProcessor.ProcessNetworkReaderParameters(md, rpcWorker, false)) + if (!NetworkBehaviourProcessor.ReadArguments(md, worker, RemoteCallType.ClientRpc)) return null; // invoke actual command function - rpcWorker.Append(rpcWorker.Create(OpCodes.Callvirt, rpcCallFunc)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Callvirt, rpcCallFunc)); + worker.Append(worker.Create(OpCodes.Ret)); NetworkBehaviourProcessor.AddInvokeParameters(rpc.Parameters); - + td.Methods.Add(rpc); return rpc; } @@ -52,78 +53,66 @@ public void CallRpcTest (int param) Originally HLAPI put the send message code inside the Call function and then proceeded to replace every call to RpcTest with CallRpcTest - This method moves all the user's code into the "Call" method + This method moves all the user's code into the "CallRpc" method and replaces the body of the original method with the send message code. This way we do not need to modify the code anywhere else, and this works correctly in dependent assemblies */ - public static MethodDefinition ProcessRpcCall(TypeDefinition td, MethodDefinition md, CustomAttribute ca) + public static MethodDefinition ProcessRpcCall(TypeDefinition td, MethodDefinition md, CustomAttribute clientRpcAttr) { - MethodDefinition rpc = new MethodDefinition("Call" + md.Name, MethodAttributes.Public | - MethodAttributes.HideBySig, - Weaver.voidType); - - // add paramters - foreach (ParameterDefinition pd in md.Parameters) - { - rpc.Parameters.Add(new ParameterDefinition(pd.Name, ParameterAttributes.None, pd.ParameterType)); - } + MethodDefinition rpc = MethodProcessor.SubstituteMethod(td, md); - // move the old body to the new function - MethodBody newBody = rpc.Body; - rpc.Body = md.Body; - md.Body = newBody; + ILProcessor worker = md.Body.GetILProcessor(); - ILProcessor rpcWorker = md.Body.GetILProcessor(); + NetworkBehaviourProcessor.WriteSetupLocals(worker); - NetworkBehaviourProcessor.WriteSetupLocals(rpcWorker); + if (Weaver.GenerateLogErrors) + { + worker.Append(worker.Create(OpCodes.Ldstr, "Call ClientRpc function " + md.Name)); + worker.Append(worker.Create(OpCodes.Call, Weaver.logErrorReference)); + } - NetworkBehaviourProcessor.WriteCreateWriter(rpcWorker); + NetworkBehaviourProcessor.WriteCreateWriter(worker); // write all the arguments that the user passed to the Rpc call - if (!NetworkBehaviourProcessor.WriteArguments(rpcWorker, md, false)) + if (!NetworkBehaviourProcessor.WriteArguments(worker, md, RemoteCallType.ClientRpc)) return null; string rpcName = md.Name; - int index = rpcName.IndexOf(RpcPrefix); - if (index > -1) - { - rpcName = rpcName.Substring(RpcPrefix.Length); - } + int channel = clientRpcAttr.GetField("channel", 0); + bool excludeOwner = clientRpcAttr.GetField("excludeOwner", false); // invoke SendInternal and return - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldarg_0)); // this - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldtoken, td)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); // invokerClass - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldstr, rpcName)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldloc_0)); // writer - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldc_I4, NetworkBehaviourProcessor.GetChannelId(ca))); - rpcWorker.Append(rpcWorker.Create(OpCodes.Callvirt, Weaver.sendRpcInternal)); - - NetworkBehaviourProcessor.WriteRecycleWriter(rpcWorker); - - rpcWorker.Append(rpcWorker.Create(OpCodes.Ret)); + // this + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldtoken, td)); + // invokerClass + worker.Append(worker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); + worker.Append(worker.Create(OpCodes.Ldstr, rpcName)); + // writer + worker.Append(worker.Create(OpCodes.Ldloc_0)); + worker.Append(worker.Create(OpCodes.Ldc_I4, channel)); + worker.Append(worker.Create(excludeOwner ? OpCodes.Ldc_I4_1 : OpCodes.Ldc_I4_0)); + worker.Append(worker.Create(OpCodes.Callvirt, Weaver.sendRpcInternal)); + + NetworkBehaviourProcessor.WriteRecycleWriter(worker); + + worker.Append(worker.Create(OpCodes.Ret)); return rpc; } - public static bool ProcessMethodsValidateRpc(MethodDefinition md, CustomAttribute ca) + public static bool ProcessMethodsValidateRpc(MethodDefinition md) { - if (!md.Name.StartsWith("Rpc")) - { - Weaver.Error($"{md} must start with Rpc. Consider renaming it to Rpc{md.Name}"); - return false; - } - if (md.IsStatic) { - Weaver.Error($"{md} must not be static"); + Weaver.Error($"{md.Name} must not be static", md); return false; } // validate return NetworkBehaviourProcessor.ProcessMethodsValidateFunction(md) && - NetworkBehaviourProcessor.ProcessMethodsValidateParameters(md, ca); + NetworkBehaviourProcessor.ProcessMethodsValidateParameters(md, RemoteCallType.ClientRpc); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs new file mode 100644 index 0000000..0600b04 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs @@ -0,0 +1,132 @@ +using Mono.CecilX; +using Mono.CecilX.Cil; + +namespace Mirror.Weaver +{ + /// + /// processes SyncVars, Cmds, Rpcs, etc. of NetworkBehaviours + /// + static class ServerClientAttributeProcessor + { + public static void ProcessMethodAttributes(TypeDefinition td, MethodDefinition md) + { + foreach (CustomAttribute attr in md.CustomAttributes) + { + switch (attr.Constructor.DeclaringType.ToString()) + { + case "Mirror.ServerAttribute": + InjectServerGuard(td, md, true); + break; + case "Mirror.ServerCallbackAttribute": + InjectServerGuard(td, md, false); + break; + case "Mirror.ClientAttribute": + InjectClientGuard(td, md, true); + break; + case "Mirror.ClientCallbackAttribute": + InjectClientGuard(td, md, false); + break; + default: + break; + } + } + } + + static void InjectServerGuard(TypeDefinition td, MethodDefinition md, bool logWarning) + { + if (!Weaver.IsNetworkBehaviour(td)) + { + Weaver.Error($"Server method {md.Name} must be declared in a NetworkBehaviour", md); + return; + } + ILProcessor worker = md.Body.GetILProcessor(); + Instruction top = md.Body.Instructions[0]; + + worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.NetworkServerGetActive)); + worker.InsertBefore(top, worker.Create(OpCodes.Brtrue, top)); + if (logWarning) + { + worker.InsertBefore(top, worker.Create(OpCodes.Ldstr, "[Server] function '" + md.FullName + "' called on client")); + worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.logWarningReference)); + } + InjectGuardParameters(md, worker, top); + InjectGuardReturnValue(md, worker, top); + worker.InsertBefore(top, worker.Create(OpCodes.Ret)); + } + + static void InjectClientGuard(TypeDefinition td, MethodDefinition md, bool logWarning) + { + if (!Weaver.IsNetworkBehaviour(td)) + { + Weaver.Error($"Client method {md.Name} must be declared in a NetworkBehaviour", md); + return; + } + ILProcessor worker = md.Body.GetILProcessor(); + Instruction top = md.Body.Instructions[0]; + + worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.NetworkClientGetActive)); + worker.InsertBefore(top, worker.Create(OpCodes.Brtrue, top)); + if (logWarning) + { + worker.InsertBefore(top, worker.Create(OpCodes.Ldstr, "[Client] function '" + md.FullName + "' called on server")); + worker.InsertBefore(top, worker.Create(OpCodes.Call, Weaver.logWarningReference)); + } + + InjectGuardParameters(md, worker, top); + InjectGuardReturnValue(md, worker, top); + worker.InsertBefore(top, worker.Create(OpCodes.Ret)); + } + + // this is required to early-out from a function with "ref" or "out" parameters + static void InjectGuardParameters(MethodDefinition md, ILProcessor worker, Instruction top) + { + int offset = md.Resolve().IsStatic ? 0 : 1; + for (int index = 0; index < md.Parameters.Count; index++) + { + ParameterDefinition param = md.Parameters[index]; + if (param.IsOut) + { + TypeReference elementType = param.ParameterType.GetElementType(); + if (elementType.IsPrimitive) + { + worker.InsertBefore(top, worker.Create(OpCodes.Ldarg, index + offset)); + worker.InsertBefore(top, worker.Create(OpCodes.Ldc_I4_0)); + worker.InsertBefore(top, worker.Create(OpCodes.Stind_I4)); + } + else + { + md.Body.Variables.Add(new VariableDefinition(elementType)); + md.Body.InitLocals = true; + + worker.InsertBefore(top, worker.Create(OpCodes.Ldarg, index + offset)); + worker.InsertBefore(top, worker.Create(OpCodes.Ldloca_S, (byte)(md.Body.Variables.Count - 1))); + worker.InsertBefore(top, worker.Create(OpCodes.Initobj, elementType)); + worker.InsertBefore(top, worker.Create(OpCodes.Ldloc, md.Body.Variables.Count - 1)); + worker.InsertBefore(top, worker.Create(OpCodes.Stobj, elementType)); + } + } + } + } + + // this is required to early-out from a function with a return value. + static void InjectGuardReturnValue(MethodDefinition md, ILProcessor worker, Instruction top) + { + if (md.ReturnType.FullName != Weaver.voidType.FullName) + { + if (md.ReturnType.IsPrimitive) + { + worker.InsertBefore(top, worker.Create(OpCodes.Ldc_I4_0)); + } + else + { + md.Body.Variables.Add(new VariableDefinition(md.ReturnType)); + md.Body.InitLocals = true; + + worker.InsertBefore(top, worker.Create(OpCodes.Ldloca_S, (byte)(md.Body.Variables.Count - 1))); + worker.InsertBefore(top, worker.Create(OpCodes.Initobj, md.ReturnType)); + worker.InsertBefore(top, worker.Create(OpCodes.Ldloc, md.Body.Variables.Count - 1)); + } + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs.meta new file mode 100644 index 0000000..5a5451d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/ServerClientAttributeProcessor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 024f251bf693bb345b90b9177892d534 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncDictionaryProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncDictionaryProcessor.cs index a095967..e5acd68 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncDictionaryProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncDictionaryProcessor.cs @@ -1,9 +1,10 @@ -// this class generates OnSerialize/OnDeserialize for SyncLists using Mono.CecilX; -using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// generates OnSerialize/OnDeserialize for SyncLists + /// static class SyncDictionaryProcessor { /// @@ -12,8 +13,26 @@ static class SyncDictionaryProcessor /// The synclist class public static void Process(TypeDefinition td) { - SyncObjectProcessor.GenerateSerialization(td, 0, "SerializeKey", "DeserializeKey"); - SyncObjectProcessor.GenerateSerialization(td, 1, "SerializeItem", "DeserializeItem"); + GenericArgumentResolver resolver = new GenericArgumentResolver(2); + + if (resolver.GetGenericFromBaseClass(td, 0, Weaver.SyncDictionaryType, out TypeReference keyType)) + { + SyncObjectProcessor.GenerateSerialization(td, keyType, Weaver.SyncDictionaryType, "SerializeKey", "DeserializeKey"); + } + else + { + Weaver.Error($"Could not find generic arguments for SyncDictionary in {td.Name}", td); + return; + } + + if (resolver.GetGenericFromBaseClass(td, 1, Weaver.SyncDictionaryType, out TypeReference itemType)) + { + SyncObjectProcessor.GenerateSerialization(td, itemType, Weaver.SyncDictionaryType, "SerializeItem", "DeserializeItem"); + } + else + { + Weaver.Error($"Could not find generic arguments for SyncDictionary in {td.Name}", td); + } } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncEventProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncEventProcessor.cs index 3a4e36f..10fc7e6 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncEventProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncEventProcessor.cs @@ -1,10 +1,12 @@ -// all the SyncEvent code from NetworkBehaviourProcessor in one place using System.Collections.Generic; using Mono.CecilX; using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// Processes SyncEvents in NetworkBehaviour + /// public static class SyncEventProcessor { public static MethodDefinition ProcessEventInvoke(TypeDefinition td, EventDefinition ed) @@ -21,52 +23,52 @@ public static MethodDefinition ProcessEventInvoke(TypeDefinition td, EventDefini } if (eventField == null) { - Weaver.Error($"{td} not found. Did you declare the event?"); + Weaver.Error($"event field not found for {ed.Name}. Did you declare it as an event?", ed); return null; } - MethodDefinition cmd = new MethodDefinition("InvokeSyncEvent" + ed.Name, MethodAttributes.Family | + MethodDefinition cmd = new MethodDefinition(Weaver.InvokeRpcPrefix + ed.Name, MethodAttributes.Family | MethodAttributes.Static | MethodAttributes.HideBySig, Weaver.voidType); - ILProcessor cmdWorker = cmd.Body.GetILProcessor(); - Instruction label1 = cmdWorker.Create(OpCodes.Nop); - Instruction label2 = cmdWorker.Create(OpCodes.Nop); + ILProcessor worker = cmd.Body.GetILProcessor(); + Instruction label1 = worker.Create(OpCodes.Nop); + Instruction label2 = worker.Create(OpCodes.Nop); - NetworkBehaviourProcessor.WriteClientActiveCheck(cmdWorker, ed.Name, label1, "Event"); + NetworkBehaviourProcessor.WriteClientActiveCheck(worker, ed.Name, label1, "Event"); // null event check - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg_0)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Castclass, td)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldfld, eventField)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Brtrue, label2)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ret)); - cmdWorker.Append(label2); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Castclass, td)); + worker.Append(worker.Create(OpCodes.Ldfld, eventField)); + worker.Append(worker.Create(OpCodes.Brtrue, label2)); + worker.Append(worker.Create(OpCodes.Ret)); + worker.Append(label2); // setup reader - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldarg_0)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Castclass, td)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ldfld, eventField)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Castclass, td)); + worker.Append(worker.Create(OpCodes.Ldfld, eventField)); // read the event arguments MethodReference invoke = Resolvers.ResolveMethod(eventField.FieldType, Weaver.CurrentAssembly, "Invoke"); - if (!NetworkBehaviourProcessor.ProcessNetworkReaderParameters(invoke.Resolve(), cmdWorker, false)) + if (!NetworkBehaviourProcessor.ReadArguments(invoke.Resolve(), worker, RemoteCallType.SyncEvent)) return null; // invoke actual event delegate function - cmdWorker.Append(cmdWorker.Create(OpCodes.Callvirt, invoke)); - cmdWorker.Append(cmdWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Callvirt, invoke)); + worker.Append(worker.Create(OpCodes.Ret)); NetworkBehaviourProcessor.AddInvokeParameters(cmd.Parameters); return cmd; } - public static MethodDefinition ProcessEventCall(TypeDefinition td, EventDefinition ed, CustomAttribute ca) + public static MethodDefinition ProcessEventCall(TypeDefinition td, EventDefinition ed, CustomAttribute syncEventAttr) { MethodReference invoke = Resolvers.ResolveMethod(ed.EventType, Weaver.CurrentAssembly, "Invoke"); - MethodDefinition evt = new MethodDefinition("Call" + ed.Name, MethodAttributes.Public | + MethodDefinition evt = new MethodDefinition(Weaver.SyncEventPrefix + ed.Name, MethodAttributes.Public | MethodAttributes.HideBySig, Weaver.voidType); // add paramters @@ -75,31 +77,34 @@ public static MethodDefinition ProcessEventCall(TypeDefinition td, EventDefiniti evt.Parameters.Add(new ParameterDefinition(pd.Name, ParameterAttributes.None, pd.ParameterType)); } - ILProcessor evtWorker = evt.Body.GetILProcessor(); - Instruction label = evtWorker.Create(OpCodes.Nop); + ILProcessor worker = evt.Body.GetILProcessor(); + Instruction label = worker.Create(OpCodes.Nop); - NetworkBehaviourProcessor.WriteSetupLocals(evtWorker); + NetworkBehaviourProcessor.WriteSetupLocals(worker); - NetworkBehaviourProcessor.WriteServerActiveCheck(evtWorker, ed.Name, label, "Event"); + NetworkBehaviourProcessor.WriteServerActiveCheck(worker, ed.Name, label, "Event"); - NetworkBehaviourProcessor.WriteCreateWriter(evtWorker); + NetworkBehaviourProcessor.WriteCreateWriter(worker); // write all the arguments that the user passed to the syncevent - if (!NetworkBehaviourProcessor.WriteArguments(evtWorker, invoke.Resolve(), false)) + if (!NetworkBehaviourProcessor.WriteArguments(worker, invoke.Resolve(), RemoteCallType.SyncEvent)) return null; // invoke interal send and return - evtWorker.Append(evtWorker.Create(OpCodes.Ldarg_0)); // this - evtWorker.Append(evtWorker.Create(OpCodes.Ldtoken, td)); - evtWorker.Append(evtWorker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); // invokerClass - evtWorker.Append(evtWorker.Create(OpCodes.Ldstr, ed.Name)); - evtWorker.Append(evtWorker.Create(OpCodes.Ldloc_0)); // writer - evtWorker.Append(evtWorker.Create(OpCodes.Ldc_I4, NetworkBehaviourProcessor.GetChannelId(ca))); - evtWorker.Append(evtWorker.Create(OpCodes.Call, Weaver.sendEventInternal)); + // this + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldtoken, td)); + // invokerClass + worker.Append(worker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); + worker.Append(worker.Create(OpCodes.Ldstr, ed.Name)); + // writer + worker.Append(worker.Create(OpCodes.Ldloc_0)); + worker.Append(worker.Create(OpCodes.Ldc_I4, syncEventAttr.GetField("channel", 0))); + worker.Append(worker.Create(OpCodes.Call, Weaver.sendEventInternal)); - NetworkBehaviourProcessor.WriteRecycleWriter(evtWorker); + NetworkBehaviourProcessor.WriteRecycleWriter(worker); - evtWorker.Append(evtWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ret)); return evt; } @@ -109,42 +114,35 @@ public static void ProcessEvents(TypeDefinition td, List events // find events foreach (EventDefinition ed in td.Events) { - foreach (CustomAttribute ca in ed.CustomAttributes) + CustomAttribute syncEventAttr = ed.GetCustomAttribute(Weaver.SyncEventType.FullName); + + if (syncEventAttr != null) { - if (ca.AttributeType.FullName == Weaver.SyncEventType.FullName) + if (ed.EventType.Resolve().HasGenericParameters) { - if (!ed.Name.StartsWith("Event")) - { - Weaver.Error($"{ed} must start with Event. Consider renaming it to Event{ed.Name}"); - return; - } - - if (ed.EventType.Resolve().HasGenericParameters) - { - Weaver.Error($"{ed} must not have generic parameters. Consider creating a new class that inherits from {ed.EventType} instead"); - return; - } + Weaver.Error($"{ed.Name} must not have generic parameters. Consider creating a new class that inherits from {ed.EventType} instead", ed); + return; + } - events.Add(ed); - MethodDefinition eventFunc = ProcessEventInvoke(td, ed); - if (eventFunc == null) - { - return; - } + events.Add(ed); + MethodDefinition eventFunc = ProcessEventInvoke(td, ed); + if (eventFunc == null) + { + return; + } - td.Methods.Add(eventFunc); - eventInvocationFuncs.Add(eventFunc); + td.Methods.Add(eventFunc); + eventInvocationFuncs.Add(eventFunc); - Weaver.DLog(td, "ProcessEvent " + ed); + Weaver.DLog(td, "ProcessEvent " + ed); - MethodDefinition eventCallFunc = ProcessEventCall(td, ed, ca); - td.Methods.Add(eventCallFunc); + MethodDefinition eventCallFunc = ProcessEventCall(td, ed, syncEventAttr); + td.Methods.Add(eventCallFunc); - Weaver.WeaveLists.replaceEvents[ed.Name] = eventCallFunc; // original weaver compares .Name, not EventDefinition. + // original weaver compares .Name, not EventDefinition. + Weaver.WeaveLists.replaceEvents[ed.FullName] = eventCallFunc; - Weaver.DLog(td, " Event: " + ed.Name); - break; - } + Weaver.DLog(td, " Event: " + ed.Name); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs deleted file mode 100644 index 20db50b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListInitializer.cs +++ /dev/null @@ -1,5 +0,0 @@ -// This file was removed in Mirror 3.4.9 -// The purpose of this file is to get the old file overwritten -// when users update from the asset store to prevent a flood of errors -// from having the old file still in the project as a straggler. -// This file will be dropped from the Asset Store package in May 2019 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListProcessor.cs index 0da1746..67af00e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListProcessor.cs @@ -1,18 +1,29 @@ -// this class generates OnSerialize/OnDeserialize for SyncLists using Mono.CecilX; -using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// generates OnSerialize/OnDeserialize for SyncLists + /// static class SyncListProcessor { /// /// Generates serialization methods for synclists /// /// The synclist class - public static void Process(TypeDefinition td) + /// the base SyncObject td inherits from + public static void Process(TypeDefinition td, TypeReference mirrorBaseType) { - SyncObjectProcessor.GenerateSerialization(td, 0, "SerializeItem", "DeserializeItem"); + GenericArgumentResolver resolver = new GenericArgumentResolver(1); + + if (resolver.GetGenericFromBaseClass(td, 0, mirrorBaseType, out TypeReference itemType)) + { + SyncObjectProcessor.GenerateSerialization(td, itemType, mirrorBaseType, "SerializeItem", "DeserializeItem"); + } + else + { + Weaver.Error($"Could not find generic arguments for {mirrorBaseType.Name} in {td}", td); + } } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs deleted file mode 100644 index 20db50b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncListStructProcessor.cs +++ /dev/null @@ -1,5 +0,0 @@ -// This file was removed in Mirror 3.4.9 -// The purpose of this file is to get the old file overwritten -// when users update from the asset store to prevent a flood of errors -// from having the old file still in the project as a straggler. -// This file will be dropped from the Asset Store package in May 2019 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectInitializer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectInitializer.cs index 14e27f6..fd38659 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectInitializer.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectInitializer.cs @@ -1,5 +1,3 @@ -// SyncObject code -using System; using System.Linq; using Mono.CecilX; using Mono.CecilX.Cil; @@ -8,20 +6,20 @@ namespace Mirror.Weaver { public static class SyncObjectInitializer { - public static void GenerateSyncObjectInitializer(ILProcessor methodWorker, FieldDefinition fd) + public static void GenerateSyncObjectInitializer(ILProcessor worker, FieldDefinition fd) { // call syncobject constructor - GenerateSyncObjectInstanceInitializer(methodWorker, fd); + GenerateSyncObjectInstanceInitializer(worker, fd); // register syncobject in network behaviour - GenerateSyncObjectRegistration(methodWorker, fd); + GenerateSyncObjectRegistration(worker, fd); } // generates 'syncListInt = new SyncListInt()' if user didn't do that yet - static void GenerateSyncObjectInstanceInitializer(ILProcessor ctorWorker, FieldDefinition fd) + static void GenerateSyncObjectInstanceInitializer(ILProcessor worker, FieldDefinition fd) { // check the ctor's instructions for an Stfld op-code for this specific sync list field. - foreach (Instruction ins in ctorWorker.Body.Instructions) + foreach (Instruction ins in worker.Body.Instructions) { if (ins.OpCode.Code == Code.Stfld) { @@ -37,20 +35,20 @@ static void GenerateSyncObjectInstanceInitializer(ILProcessor ctorWorker, FieldD // Not initialized by the user in the field definition, e.g: // public SyncListInt Foo; - MethodReference objectConstructor; - try - { - objectConstructor = Weaver.CurrentAssembly.MainModule.ImportReference(fd.FieldType.Resolve().Methods.First(x => x.Name == ".ctor" && !x.HasParameters)); - } - catch (Exception) + + TypeDefinition fieldType = fd.FieldType.Resolve(); + // find ctor with no parameters + MethodDefinition ctor = fieldType.Methods.FirstOrDefault(x => x.Name == ".ctor" && !x.HasParameters); + if (ctor == null) { - Weaver.Error($"{fd} does not have a default constructor"); + Weaver.Error($"Can not initialize field {fd.Name} because no default constructor was found. Manually initialize the field (call the constructor) or add constructor without Parameter", fd); return; } + MethodReference objectConstructor = Weaver.CurrentAssembly.MainModule.ImportReference(ctor); - ctorWorker.Append(ctorWorker.Create(OpCodes.Ldarg_0)); - ctorWorker.Append(ctorWorker.Create(OpCodes.Newobj, objectConstructor)); - ctorWorker.Append(ctorWorker.Create(OpCodes.Stfld, fd)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Newobj, objectConstructor)); + worker.Append(worker.Create(OpCodes.Stfld, fd)); } public static bool ImplementsSyncObject(TypeReference typeRef) @@ -77,13 +75,13 @@ public static bool ImplementsSyncObject(TypeReference typeRef) // generates code like: this.InitSyncObject(m_sizes); */ - static void GenerateSyncObjectRegistration(ILProcessor methodWorker, FieldDefinition fd) + static void GenerateSyncObjectRegistration(ILProcessor worker, FieldDefinition fd) { - methodWorker.Append(methodWorker.Create(OpCodes.Ldarg_0)); - methodWorker.Append(methodWorker.Create(OpCodes.Ldarg_0)); - methodWorker.Append(methodWorker.Create(OpCodes.Ldfld, fd)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, fd)); - methodWorker.Append(methodWorker.Create(OpCodes.Call, Weaver.InitSyncObjectReference)); + worker.Append(worker.Create(OpCodes.Call, Weaver.InitSyncObjectReference)); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectProcessor.cs index 9eb7494..f4e239c 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncObjectProcessor.cs @@ -1,4 +1,3 @@ -using System; using Mono.CecilX; using Mono.CecilX.Cil; @@ -10,44 +9,41 @@ public static class SyncObjectProcessor /// Generates the serialization and deserialization methods for a specified generic argument /// /// The type of the class that needs serialization methods - /// Which generic argument to serialize, 0 is the first one + /// generic argument to serialize + /// the base SyncObject td inherits from /// The name of the serialize method /// The name of the deserialize method - public static void GenerateSerialization(TypeDefinition td, int genericArgument, string serializeMethod, string deserializeMethod) + public static void GenerateSerialization(TypeDefinition td, TypeReference itemType, TypeReference mirrorBaseType, string serializeMethod, string deserializeMethod) { - // find item type - GenericInstanceType gt = (GenericInstanceType)td.BaseType; - if (gt.GenericArguments.Count <= genericArgument) - { - Weaver.Error($"{td} should have {genericArgument} generic arguments"); - return; - } - TypeReference itemType = Weaver.CurrentAssembly.MainModule.ImportReference(gt.GenericArguments[genericArgument]); - Weaver.DLog(td, "SyncObjectProcessor Start item:" + itemType.FullName); - MethodReference writeItemFunc = GenerateSerialization(serializeMethod, td, itemType); + bool success = GenerateSerialization(serializeMethod, td, itemType, mirrorBaseType); if (Weaver.WeavingFailed) { return; } - MethodReference readItemFunc = GenerateDeserialization(deserializeMethod, td, itemType); + success |= GenerateDeserialization(deserializeMethod, td, itemType, mirrorBaseType); - if (readItemFunc == null || writeItemFunc == null) - return; - - Weaver.DLog(td, "SyncObjectProcessor Done"); + if (success) + Weaver.DLog(td, "SyncObjectProcessor Done"); } // serialization of individual element - static MethodReference GenerateSerialization(string methodName, TypeDefinition td, TypeReference itemType) + static bool GenerateSerialization(string methodName, TypeDefinition td, TypeReference itemType, TypeReference mirrorBaseType) { Weaver.DLog(td, " GenerateSerialization"); - foreach (MethodDefinition m in td.Methods) + bool existing = td.HasMethodInBaseType(methodName, mirrorBaseType); + if (existing) + return true; + + + // this check needs to happen inside GenerateSerialization because + // we need to check if user has made custom function above + if (itemType.IsGenericInstance) { - if (m.Name == methodName) - return m; + Weaver.Error($"Can not create Serialize or Deserialize for generic element in {td.Name}. Override virtual methods with custom Serialize and Deserialize to use {itemType} in SyncList", td); + return false; } MethodDefinition serializeFunc = new MethodDefinition(methodName, MethodAttributes.Public | @@ -58,39 +54,39 @@ static MethodReference GenerateSerialization(string methodName, TypeDefinition t serializeFunc.Parameters.Add(new ParameterDefinition("writer", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkWriterType))); serializeFunc.Parameters.Add(new ParameterDefinition("item", ParameterAttributes.None, itemType)); - ILProcessor serWorker = serializeFunc.Body.GetILProcessor(); - - if (itemType.IsGenericInstance) - { - Weaver.Error($"{td} cannot have generic elements {itemType}"); - return null; - } + ILProcessor worker = serializeFunc.Body.GetILProcessor(); MethodReference writeFunc = Writers.GetWriteFunc(itemType); if (writeFunc != null) { - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); - serWorker.Append(serWorker.Create(OpCodes.Ldarg_2)); - serWorker.Append(serWorker.Create(OpCodes.Call, writeFunc)); + worker.Append(worker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Ldarg_2)); + worker.Append(worker.Create(OpCodes.Call, writeFunc)); } else { - Weaver.Error($"{td} cannot have item of type {itemType}. Use a type supported by mirror instead"); - return null; + Weaver.Error($"{td.Name} has sync object generic type {itemType.Name}. Use a type supported by mirror instead", td); + return false; } - serWorker.Append(serWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ret)); td.Methods.Add(serializeFunc); - return serializeFunc; + return true; } - static MethodReference GenerateDeserialization(string methodName, TypeDefinition td, TypeReference itemType) + static bool GenerateDeserialization(string methodName, TypeDefinition td, TypeReference itemType, TypeReference mirrorBaseType) { Weaver.DLog(td, " GenerateDeserialization"); - foreach (MethodDefinition m in td.Methods) + bool existing = td.HasMethodInBaseType(methodName, mirrorBaseType); + if (existing) + return true; + + // this check needs to happen inside GenerateDeserialization because + // we need to check if user has made custom function above + if (itemType.IsGenericInstance) { - if (m.Name == methodName) - return m; + Weaver.Error($"Can not create Serialize or Deserialize for generic element in {td.Name}. Override virtual methods with custom Serialize and Deserialize to use {itemType.Name} in SyncList", td); + return false; } MethodDefinition deserializeFunction = new MethodDefinition(methodName, MethodAttributes.Public | @@ -101,23 +97,23 @@ static MethodReference GenerateDeserialization(string methodName, TypeDefinition deserializeFunction.Parameters.Add(new ParameterDefinition("reader", ParameterAttributes.None, Weaver.CurrentAssembly.MainModule.ImportReference(Weaver.NetworkReaderType))); - ILProcessor serWorker = deserializeFunction.Body.GetILProcessor(); + ILProcessor worker = deserializeFunction.Body.GetILProcessor(); MethodReference readerFunc = Readers.GetReadFunc(itemType); if (readerFunc != null) { - serWorker.Append(serWorker.Create(OpCodes.Ldarg_1)); - serWorker.Append(serWorker.Create(OpCodes.Call, readerFunc)); - serWorker.Append(serWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Call, readerFunc)); + worker.Append(worker.Create(OpCodes.Ret)); } else { - Weaver.Error($"{td} cannot have item of type {itemType}. Use a type supported by mirror instead"); - return null; + Weaver.Error($"{td.Name} has sync object generic type {itemType.Name}. Use a type supported by mirror instead", td); + return false; } td.Methods.Add(deserializeFunction); - return deserializeFunction; + return true; } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncVarProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncVarProcessor.cs index 86be11c..6d4f1a0 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncVarProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/SyncVarProcessor.cs @@ -1,53 +1,73 @@ -// all the [SyncVar] code from NetworkBehaviourProcessor in one place using System.Collections.Generic; +using System.Linq; using Mono.CecilX; using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// Processes [SyncVar] in NetworkBehaviour + /// public static class SyncVarProcessor { - const int SyncVarLimit = 64; // ulong = 64 bytes + // ulong = 64 bytes + const int SyncVarLimit = 64; - // returns false for error, not for no-hook-exists - public static bool CheckForHookFunction(TypeDefinition td, FieldDefinition syncVar, out MethodDefinition foundMethod) + + static string HookParameterMessage(string hookName, TypeReference ValueType) + => string.Format("void {0}({1} oldValue, {1} newValue)", hookName, ValueType); + + // Get hook method if any + public static MethodDefinition GetHookMethod(TypeDefinition td, FieldDefinition syncVar) + { + CustomAttribute syncVarAttr = syncVar.GetCustomAttribute(Weaver.SyncVarType.FullName); + + if (syncVarAttr == null) + return null; + + string hookFunctionName = syncVarAttr.GetField("hook", null); + + if (hookFunctionName == null) + return null; + + return FindHookMethod(td, syncVar, hookFunctionName); + } + + static MethodDefinition FindHookMethod(TypeDefinition td, FieldDefinition syncVar, string hookFunctionName) { - foundMethod = null; - foreach (CustomAttribute ca in syncVar.CustomAttributes) + List methods = td.GetMethods(hookFunctionName); + + List methodsWith2Param = new List(methods.Where(m => m.Parameters.Count == 2)); + + if (methodsWith2Param.Count == 0) + { + Weaver.Error($"Could not find hook for '{syncVar.Name}', hook name '{hookFunctionName}'. " + + $"Method signature should be {HookParameterMessage(hookFunctionName, syncVar.FieldType)}", + syncVar); + + return null; + } + + foreach (MethodDefinition method in methodsWith2Param) { - if (ca.AttributeType.FullName == Weaver.SyncVarType.FullName) + if (MatchesParameters(syncVar, method)) { - foreach (CustomAttributeNamedArgument customField in ca.Fields) - { - if (customField.Name == "hook") - { - string hookFunctionName = customField.Argument.Value as string; - - foreach (MethodDefinition m in td.Methods) - { - if (m.Name == hookFunctionName) - { - if (m.Parameters.Count == 1) - { - if (m.Parameters[0].ParameterType != syncVar.FieldType) - { - Weaver.Error($"{m} should have signature:\npublic void {hookFunctionName}({syncVar.FieldType} value) {{ }}"); - return false; - } - foundMethod = m; - return true; - } - Weaver.Error($"{m} should have signature:\npublic void {hookFunctionName}({syncVar.FieldType} value) {{ }}"); - return false; - } - } - Weaver.Error($"No hook implementation found for {syncVar}. Add this method to your class:\npublic void {hookFunctionName}({syncVar.FieldType} value) {{ }}" ); - return false; - } - } + return method; } } - return true; + + Weaver.Error($"Wrong type for Parameter in hook for '{syncVar.Name}', hook name '{hookFunctionName}'. " + + $"Method signature should be {HookParameterMessage(hookFunctionName, syncVar.FieldType)}", + syncVar); + + return null; + } + + static bool MatchesParameters(FieldDefinition syncVar, MethodDefinition method) + { + // matches void onValueChange(T oldValue, T newValue) + return method.Parameters[0].ParameterType.FullName == syncVar.FieldType.FullName && + method.Parameters[1].ParameterType.FullName == syncVar.FieldType.FullName; } public static MethodDefinition ProcessSyncVarGet(FieldDefinition fd, string originalName, FieldDefinition netFieldId) @@ -59,38 +79,40 @@ public static MethodDefinition ProcessSyncVarGet(FieldDefinition fd, string orig MethodAttributes.HideBySig, fd.FieldType); - ILProcessor getWorker = get.Body.GetILProcessor(); + ILProcessor worker = get.Body.GetILProcessor(); // [SyncVar] GameObject? if (fd.FieldType.FullName == Weaver.gameObjectType.FullName) { // return this.GetSyncVarGameObject(ref field, uint netId); - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); // this. - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); - getWorker.Append(getWorker.Create(OpCodes.Ldfld, netFieldId)); - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); - getWorker.Append(getWorker.Create(OpCodes.Ldflda, fd)); - getWorker.Append(getWorker.Create(OpCodes.Call, Weaver.getSyncVarGameObjectReference)); - getWorker.Append(getWorker.Create(OpCodes.Ret)); + // this. + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, netFieldId)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, fd)); + worker.Append(worker.Create(OpCodes.Call, Weaver.getSyncVarGameObjectReference)); + worker.Append(worker.Create(OpCodes.Ret)); } // [SyncVar] NetworkIdentity? else if (fd.FieldType.FullName == Weaver.NetworkIdentityType.FullName) { // return this.GetSyncVarNetworkIdentity(ref field, uint netId); - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); // this. - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); - getWorker.Append(getWorker.Create(OpCodes.Ldfld, netFieldId)); - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); - getWorker.Append(getWorker.Create(OpCodes.Ldflda, fd)); - getWorker.Append(getWorker.Create(OpCodes.Call, Weaver.getSyncVarNetworkIdentityReference)); - getWorker.Append(getWorker.Create(OpCodes.Ret)); + // this. + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, netFieldId)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, fd)); + worker.Append(worker.Create(OpCodes.Call, Weaver.getSyncVarNetworkIdentityReference)); + worker.Append(worker.Create(OpCodes.Ret)); } // [SyncVar] int, string, etc. else { - getWorker.Append(getWorker.Create(OpCodes.Ldarg_0)); - getWorker.Append(getWorker.Create(OpCodes.Ldfld, fd)); - getWorker.Append(getWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, fd)); + worker.Append(worker.Create(OpCodes.Ret)); } get.Body.Variables.Add(new VariableDefinition(fd.FieldType)); @@ -108,70 +130,82 @@ public static MethodDefinition ProcessSyncVarSet(TypeDefinition td, FieldDefinit MethodAttributes.HideBySig, Weaver.voidType); - ILProcessor setWorker = set.Body.GetILProcessor(); + ILProcessor worker = set.Body.GetILProcessor(); - CheckForHookFunction(td, fd, out MethodDefinition hookFunctionMethod); + // if (!SyncVarEqual(value, ref playerData)) + Instruction endOfMethod = worker.Create(OpCodes.Nop); - if (hookFunctionMethod != null) + // this + worker.Append(worker.Create(OpCodes.Ldarg_0)); + // new value to set + worker.Append(worker.Create(OpCodes.Ldarg_1)); + // reference to field to set + // make generic version of SetSyncVar with field type + if (fd.FieldType.FullName == Weaver.gameObjectType.FullName) { - //if (NetworkServer.localClientActive && !getSyncVarHookGuard(dirtyBit)) - Instruction label = setWorker.Create(OpCodes.Nop); - setWorker.Append(setWorker.Create(OpCodes.Call, Weaver.NetworkServerGetLocalClientActive)); - setWorker.Append(setWorker.Create(OpCodes.Brfalse, label)); - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldc_I8, dirtyBit)); - setWorker.Append(setWorker.Create(OpCodes.Call, Weaver.getSyncVarHookGuard)); - setWorker.Append(setWorker.Create(OpCodes.Brtrue, label)); - - // setSyncVarHookGuard(dirtyBit, true); - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldc_I8, dirtyBit)); - setWorker.Append(setWorker.Create(OpCodes.Ldc_I4_1)); - setWorker.Append(setWorker.Create(OpCodes.Call, Weaver.setSyncVarHookGuard)); + // reference to netId Field to set + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, netFieldId)); - // call hook - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldarg_1)); - setWorker.Append(setWorker.Create(OpCodes.Call, hookFunctionMethod)); + worker.Append(worker.Create(OpCodes.Call, Weaver.syncVarGameObjectEqualReference)); + } + else if (fd.FieldType.FullName == Weaver.NetworkIdentityType.FullName) + { + // reference to netId Field to set + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, netFieldId)); - // setSyncVarHookGuard(dirtyBit, false); - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldc_I8, dirtyBit)); - setWorker.Append(setWorker.Create(OpCodes.Ldc_I4_0)); - setWorker.Append(setWorker.Create(OpCodes.Call, Weaver.setSyncVarHookGuard)); + worker.Append(worker.Create(OpCodes.Call, Weaver.syncVarNetworkIdentityEqualReference)); + } + else + { + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, fd)); - setWorker.Append(label); + GenericInstanceMethod syncVarEqualGm = new GenericInstanceMethod(Weaver.syncVarEqualReference); + syncVarEqualGm.GenericArguments.Add(fd.FieldType); + worker.Append(worker.Create(OpCodes.Call, syncVarEqualGm)); } + worker.Append(worker.Create(OpCodes.Brtrue, endOfMethod)); + + // T oldValue = value; + // TODO for GO/NI we need to backup the netId don't we? + VariableDefinition oldValue = new VariableDefinition(fd.FieldType); + set.Body.Variables.Add(oldValue); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldfld, fd)); + worker.Append(worker.Create(OpCodes.Stloc, oldValue)); + // this - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); // new value to set - setWorker.Append(setWorker.Create(OpCodes.Ldarg_1)); + worker.Append(worker.Create(OpCodes.Ldarg_1)); // reference to field to set - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldflda, fd)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, fd)); // dirty bit - setWorker.Append(setWorker.Create(OpCodes.Ldc_I8, dirtyBit)); // 8 byte integer aka long - + // 8 byte integer aka long + worker.Append(worker.Create(OpCodes.Ldc_I8, dirtyBit)); if (fd.FieldType.FullName == Weaver.gameObjectType.FullName) { // reference to netId Field to set - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldflda, netFieldId)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, netFieldId)); - setWorker.Append(setWorker.Create(OpCodes.Call, Weaver.setSyncVarGameObjectReference)); + worker.Append(worker.Create(OpCodes.Call, Weaver.setSyncVarGameObjectReference)); } else if (fd.FieldType.FullName == Weaver.NetworkIdentityType.FullName) { // reference to netId Field to set - setWorker.Append(setWorker.Create(OpCodes.Ldarg_0)); - setWorker.Append(setWorker.Create(OpCodes.Ldflda, netFieldId)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldflda, netFieldId)); - setWorker.Append(setWorker.Create(OpCodes.Call, Weaver.setSyncVarNetworkIdentityReference)); + worker.Append(worker.Create(OpCodes.Call, Weaver.setSyncVarNetworkIdentityReference)); } else { @@ -180,10 +214,44 @@ public static MethodDefinition ProcessSyncVarSet(TypeDefinition td, FieldDefinit gm.GenericArguments.Add(fd.FieldType); // invoke SetSyncVar - setWorker.Append(setWorker.Create(OpCodes.Call, gm)); + worker.Append(worker.Create(OpCodes.Call, gm)); + } + + MethodDefinition hookMethod = GetHookMethod(td, fd); + + if (hookMethod != null) + { + //if (NetworkServer.localClientActive && !getSyncVarHookGuard(dirtyBit)) + Instruction label = worker.Create(OpCodes.Nop); + worker.Append(worker.Create(OpCodes.Call, Weaver.NetworkServerGetLocalClientActive)); + worker.Append(worker.Create(OpCodes.Brfalse, label)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldc_I8, dirtyBit)); + worker.Append(worker.Create(OpCodes.Call, Weaver.getSyncVarHookGuard)); + worker.Append(worker.Create(OpCodes.Brtrue, label)); + + // setSyncVarHookGuard(dirtyBit, true); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldc_I8, dirtyBit)); + worker.Append(worker.Create(OpCodes.Ldc_I4_1)); + worker.Append(worker.Create(OpCodes.Call, Weaver.setSyncVarHookGuard)); + + // call hook (oldValue, newValue) + // Generates: OnValueChanged(oldValue, value); + WriteCallHookMethodUsingArgument(worker, hookMethod, oldValue); + + // setSyncVarHookGuard(dirtyBit, false); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldc_I8, dirtyBit)); + worker.Append(worker.Create(OpCodes.Ldc_I4_0)); + worker.Append(worker.Create(OpCodes.Call, Weaver.setSyncVarHookGuard)); + + worker.Append(label); } - setWorker.Append(setWorker.Create(OpCodes.Ret)); + worker.Append(endOfMethod); + + worker.Append(worker.Create(OpCodes.Ret)); set.Parameters.Add(new ParameterDefinition("value", ParameterAttributes.In, fd.FieldType)); set.SemanticsAttributes = MethodSemanticsAttributes.Setter; @@ -215,7 +283,8 @@ public static void ProcessSyncVar(TypeDefinition td, FieldDefinition fd, Diction //create the property PropertyDefinition propertyDefinition = new PropertyDefinition("Network" + originalName, PropertyAttributes.None, fd.FieldType) { - GetMethod = get, SetMethod = set + GetMethod = get, + SetMethod = set }; //add the methods and property to the type. @@ -248,54 +317,26 @@ public static void ProcessSyncVars(TypeDefinition td, List sync // find syncvars foreach (FieldDefinition fd in td.Fields) { - foreach (CustomAttribute ca in fd.CustomAttributes) + if (fd.HasCustomAttribute(Weaver.SyncVarType)) { - if (ca.AttributeType.FullName == Weaver.SyncVarType.FullName) + if ((fd.Attributes & FieldAttributes.Static) != 0) { - TypeDefinition resolvedField = fd.FieldType.Resolve(); - - if (resolvedField.IsDerivedFrom(Weaver.NetworkBehaviourType)) - { - Weaver.Error($"{fd} has invalid type. SyncVars cannot be NetworkBehaviours"); - return; - } - - if (resolvedField.IsDerivedFrom(Weaver.ScriptableObjectType)) - { - Weaver.Error($"{fd} has invalid type. SyncVars cannot be scriptable objects"); - return; - } - - if ((fd.Attributes & FieldAttributes.Static) != 0) - { - Weaver.Error($"{fd} cannot be static"); - return; - } - - if (resolvedField.HasGenericParameters) - { - Weaver.Error($"{fd} has invalid type. SyncVars cannot have generic parameters"); - return; - } - - if (resolvedField.IsInterface) - { - Weaver.Error($"{fd} has invalid type. Use a concrete type instead of interface {fd.FieldType}"); - return; - } - - if (fd.FieldType.IsArray) - { - Weaver.Error($"{fd} has invalid type. Use SyncLists instead of arrays"); - return; - } + Weaver.Error($"{fd.Name} cannot be static", fd); + return; + } - if (SyncObjectInitializer.ImplementsSyncObject(fd.FieldType)) - { - Log.Warning($"{fd} has [SyncVar] attribute. SyncLists should not be marked with SyncVar"); - break; - } + if (fd.FieldType.IsArray) + { + Weaver.Error($"{fd.Name} has invalid type. Use SyncLists instead of arrays", fd); + return; + } + if (SyncObjectInitializer.ImplementsSyncObject(fd.FieldType)) + { + Weaver.Warning($"{fd.Name} has [SyncVar] attribute. SyncLists should not be marked with SyncVar", fd); + } + else + { syncVars.Add(fd); ProcessSyncVar(td, fd, syncVarNetIds, 1L << dirtyBitCounter); @@ -304,10 +345,9 @@ public static void ProcessSyncVars(TypeDefinition td, List sync if (dirtyBitCounter == SyncVarLimit) { - Weaver.Error($"{td} has too many SyncVars. Consider refactoring your class into multiple components"); + Weaver.Error($"{td.Name} has too many SyncVars. Consider refactoring your class into multiple components", td); return; } - break; } } @@ -315,7 +355,13 @@ public static void ProcessSyncVars(TypeDefinition td, List sync { if (fd.IsStatic) { - Weaver.Error($"{fd} cannot be static"); + Weaver.Error($"{fd.Name} cannot be static", fd); + return; + } + + if (fd.FieldType.Resolve().HasGenericParameters) + { + Weaver.Error($"Cannot use generic SyncObject {fd.Name} directly in NetworkBehaviour. Create a class and inherit from the generic SyncObject instead", fd); return; } @@ -331,5 +377,76 @@ public static void ProcessSyncVars(TypeDefinition td, List sync Weaver.SetNumSyncVars(td.FullName, numSyncVars); } + + public static void WriteCallHookMethodUsingArgument(ILProcessor worker, MethodDefinition hookMethod, VariableDefinition oldValue) + { + _WriteCallHookMethod(worker, hookMethod, oldValue, null); + } + + public static void WriteCallHookMethodUsingField(ILProcessor worker, MethodDefinition hookMethod, VariableDefinition oldValue, FieldDefinition newValue) + { + if (newValue == null) + { + Weaver.Error("NewValue field was null when writing SyncVar hook"); + } + + _WriteCallHookMethod(worker, hookMethod, oldValue, newValue); + } + + static void _WriteCallHookMethod(ILProcessor worker, MethodDefinition hookMethod, VariableDefinition oldValue, FieldDefinition newValue) + { + WriteStartFunctionCall(); + + // write args + WriteOldValue(); + WriteNewValue(); + + WriteEndFunctionCall(); + + + // *** Local functions used to write OpCodes *** + // Local functions have access to function variables, no need to pass in args + + void WriteOldValue() + { + worker.Append(worker.Create(OpCodes.Ldloc, oldValue)); + } + + void WriteNewValue() + { + // write arg1 or this.field + if (newValue == null) + { + worker.Append(worker.Create(OpCodes.Ldarg_1)); + } + else + { + // this. + worker.Append(worker.Create(OpCodes.Ldarg_0)); + // syncvar.get + worker.Append(worker.Create(OpCodes.Ldfld, newValue)); + } + } + + // Writes this before method if it is not static + void WriteStartFunctionCall() + { + // dont add this (Ldarg_0) if method is static + if (!hookMethod.IsStatic) + { + // this before method call + // eg this.onValueChanged + worker.Append(worker.Create(OpCodes.Ldarg_0)); + } + } + + // Calls method + void WriteEndFunctionCall() + { + // only use Callvirt when not static + OpCode opcode = hookMethod.IsStatic ? OpCodes.Call : OpCodes.Callvirt; + worker.Append(worker.Create(opcode, hookMethod)); + } + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/TargetRpcProcessor.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/TargetRpcProcessor.cs index 3676e21..bd0494a 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/TargetRpcProcessor.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Processors/TargetRpcProcessor.cs @@ -1,13 +1,13 @@ -// all the [TargetRpc] code from NetworkBehaviourProcessor in one place using Mono.CecilX; using Mono.CecilX.Cil; namespace Mirror.Weaver { + /// + /// Processes [TargetRpc] methods in NetworkBehaviour + /// public static class TargetRpcProcessor { - const string TargetRpcPrefix = "InvokeTargetRpc"; - // helper functions to check if the method has a NetworkConnection parameter public static bool HasNetworkConnectionParameter(MethodDefinition md) { @@ -17,38 +17,38 @@ public static bool HasNetworkConnectionParameter(MethodDefinition md) public static MethodDefinition ProcessTargetRpcInvoke(TypeDefinition td, MethodDefinition md, MethodDefinition rpcCallFunc) { - MethodDefinition rpc = new MethodDefinition(RpcProcessor.RpcPrefix + md.Name, MethodAttributes.Family | + MethodDefinition rpc = new MethodDefinition(Weaver.InvokeRpcPrefix + md.Name, MethodAttributes.Family | MethodAttributes.Static | MethodAttributes.HideBySig, Weaver.voidType); - ILProcessor rpcWorker = rpc.Body.GetILProcessor(); - Instruction label = rpcWorker.Create(OpCodes.Nop); + ILProcessor worker = rpc.Body.GetILProcessor(); + Instruction label = worker.Create(OpCodes.Nop); - NetworkBehaviourProcessor.WriteClientActiveCheck(rpcWorker, md.Name, label, "TargetRPC"); + NetworkBehaviourProcessor.WriteClientActiveCheck(worker, md.Name, label, "TargetRPC"); // setup for reader - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldarg_0)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Castclass, td)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Castclass, td)); // NetworkConnection parameter is optional - bool hasNetworkConnection = HasNetworkConnectionParameter(md); - if (hasNetworkConnection) + if (HasNetworkConnectionParameter(md)) { + // if call has NetworkConnection write clients connection as first arg //ClientScene.readyconnection - rpcWorker.Append(rpcWorker.Create(OpCodes.Call, Weaver.ReadyConnectionReference)); + worker.Append(worker.Create(OpCodes.Call, Weaver.ReadyConnectionReference)); } // process reader parameters and skip first one if first one is NetworkConnection - if (!NetworkBehaviourProcessor.ProcessNetworkReaderParameters(md, rpcWorker, hasNetworkConnection)) + if (!NetworkBehaviourProcessor.ReadArguments(md, worker, RemoteCallType.TargetRpc)) return null; // invoke actual command function - rpcWorker.Append(rpcWorker.Create(OpCodes.Callvirt, rpcCallFunc)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Callvirt, rpcCallFunc)); + worker.Append(worker.Create(OpCodes.Ret)); NetworkBehaviourProcessor.AddInvokeParameters(rpc.Parameters); - + td.Methods.Add(rpc); return rpc; } @@ -79,85 +79,63 @@ public void CallTargetTest (int param) Originally HLAPI put the send message code inside the Call function and then proceeded to replace every call to TargetTest with CallTargetTest - This method moves all the user's code into the "Call" method + This method moves all the user's code into the "CallTargetRpc" method and replaces the body of the original method with the send message code. This way we do not need to modify the code anywhere else, and this works correctly in dependent assemblies - + */ - public static MethodDefinition ProcessTargetRpcCall(TypeDefinition td, MethodDefinition md, CustomAttribute ca) + public static MethodDefinition ProcessTargetRpcCall(TypeDefinition td, MethodDefinition md, CustomAttribute targetRpcAttr) { - MethodDefinition rpc = new MethodDefinition("Call" + md.Name, MethodAttributes.Public | - MethodAttributes.HideBySig, - Weaver.voidType); - - // add parameters - foreach (ParameterDefinition pd in md.Parameters) - { - rpc.Parameters.Add(new ParameterDefinition(pd.Name, ParameterAttributes.None, pd.ParameterType)); - } + MethodDefinition rpc = MethodProcessor.SubstituteMethod(td, md); - // move the old body to the new function - MethodBody newBody = rpc.Body; - rpc.Body = md.Body; - md.Body = newBody; + ILProcessor worker = md.Body.GetILProcessor(); - ILProcessor rpcWorker = md.Body.GetILProcessor(); + NetworkBehaviourProcessor.WriteSetupLocals(worker); - NetworkBehaviourProcessor.WriteSetupLocals(rpcWorker); - - NetworkBehaviourProcessor.WriteCreateWriter(rpcWorker); - - // NetworkConnection parameter is optional - bool hasNetworkConnection = HasNetworkConnectionParameter(md); + NetworkBehaviourProcessor.WriteCreateWriter(worker); // write all the arguments that the user passed to the TargetRpc call // (skip first one if first one is NetworkConnection) - if (!NetworkBehaviourProcessor.WriteArguments(rpcWorker, md, hasNetworkConnection)) + if (!NetworkBehaviourProcessor.WriteArguments(worker, md, RemoteCallType.TargetRpc)) return null; string rpcName = md.Name; - int index = rpcName.IndexOf(TargetRpcPrefix); - if (index > -1) - { - rpcName = rpcName.Substring(TargetRpcPrefix.Length); - } // invoke SendInternal and return - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldarg_0)); // this + // this + worker.Append(worker.Create(OpCodes.Ldarg_0)); if (HasNetworkConnectionParameter(md)) { - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldarg_1)); // connection + // connection + worker.Append(worker.Create(OpCodes.Ldarg_1)); } else { - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldnull)); // null + // null + worker.Append(worker.Create(OpCodes.Ldnull)); } - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldtoken, td)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); // invokerClass - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldstr, rpcName)); - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldloc_0)); // writer - rpcWorker.Append(rpcWorker.Create(OpCodes.Ldc_I4, NetworkBehaviourProcessor.GetChannelId(ca))); - rpcWorker.Append(rpcWorker.Create(OpCodes.Callvirt, Weaver.sendTargetRpcInternal)); + worker.Append(worker.Create(OpCodes.Ldtoken, td)); + // invokerClass + worker.Append(worker.Create(OpCodes.Call, Weaver.getTypeFromHandleReference)); + worker.Append(worker.Create(OpCodes.Ldstr, rpcName)); + // writer + worker.Append(worker.Create(OpCodes.Ldloc_0)); + worker.Append(worker.Create(OpCodes.Ldc_I4, targetRpcAttr.GetField("channel", 0))); + worker.Append(worker.Create(OpCodes.Callvirt, Weaver.sendTargetRpcInternal)); - NetworkBehaviourProcessor.WriteRecycleWriter(rpcWorker); + NetworkBehaviourProcessor.WriteRecycleWriter(worker); - rpcWorker.Append(rpcWorker.Create(OpCodes.Ret)); + worker.Append(worker.Create(OpCodes.Ret)); return rpc; } - public static bool ProcessMethodsValidateTargetRpc(MethodDefinition md, CustomAttribute ca) + public static bool ProcessMethodsValidateTargetRpc(MethodDefinition md) { - if (!md.Name.StartsWith("Target")) - { - Weaver.Error($"{md} must start with Target. Consider renaming it to Target{md.Name}"); - return false; - } - if (md.IsStatic) { - Weaver.Error($"{md} must not be static"); + Weaver.Error($"{md.Name} must not be static", md); return false; } @@ -167,7 +145,7 @@ public static bool ProcessMethodsValidateTargetRpc(MethodDefinition md, CustomAt } // validate - return NetworkBehaviourProcessor.ProcessMethodsValidateParameters(md, ca); + return NetworkBehaviourProcessor.ProcessMethodsValidateParameters(md, RemoteCallType.TargetRpc); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Program.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Program.cs index 62163d2..e3e9bd3 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Program.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Program.cs @@ -11,12 +11,12 @@ public static class Log public static void Warning(string msg) { - WarningMethod("Mirror.Weaver warning: " + msg); + WarningMethod(msg); } public static void Error(string msg) { - ErrorMethod("Mirror.Weaver error: " + msg); + ErrorMethod(msg); } } @@ -24,8 +24,8 @@ public static class Program { public static bool Process(string unityEngine, string netDLL, string outputDirectory, string[] assemblies, string[] extraAssemblyPaths, Action printWarning, Action printError) { - CheckDLLPath(unityEngine); - CheckDLLPath(netDLL); + CheckDllPath(unityEngine); + CheckDllPath(netDLL); CheckOutputDirectory(outputDirectory); CheckAssemblies(assemblies); Log.WarningMethod = printWarning; @@ -33,7 +33,7 @@ public static bool Process(string unityEngine, string netDLL, string outputDirec return Weaver.WeaveAssemblies(assemblies, extraAssemblyPaths, outputDirectory, unityEngine, netDLL); } - static void CheckDLLPath(string path) + static void CheckDllPath(string path) { if (!File.Exists(path)) throw new Exception("dll could not be located at " + path + "!"); diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Readers.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Readers.cs index a50798d..11b977b 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Readers.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Readers.cs @@ -3,7 +3,6 @@ using Mono.CecilX.Cil; using Mono.CecilX.Rocks; - namespace Mirror.Weaver { public static class Readers @@ -28,27 +27,58 @@ public static MethodReference GetReadFunc(TypeReference variable, int recursionC return foundFunc; } + MethodDefinition newReaderFunc; + + // Arrays are special, if we resolve them, we get teh element type, + // so the following ifs might choke on it for scriptable objects + // or other objects that require a custom serializer + // thus check if it is an array and skip all the checks. + if (variable.IsArray) + { + newReaderFunc = GenerateArrayReadFunc(variable, recursionCount); + RegisterReadFunc(variable.FullName, newReaderFunc); + return newReaderFunc; + } + TypeDefinition td = variable.Resolve(); if (td == null) { - Weaver.Error($"{variable} is not a supported type"); + Weaver.Error($"{variable.Name} is not a supported type", variable); + return null; + } + if (td.IsDerivedFrom(Weaver.ComponentType)) + { + Weaver.Error($"Cannot generate reader for component type {variable.Name}. Use a supported type or provide a custom reader", variable); + return null; + } + if (variable.FullName == Weaver.ObjectType.FullName) + { + Weaver.Error($"Cannot generate reader for {variable.Name}. Use a supported type or provide a custom reader", variable); + return null; + } + if (variable.FullName == Weaver.ScriptableObjectType.FullName) + { + Weaver.Error($"Cannot generate reader for {variable.Name}. Use a supported type or provide a custom reader", variable); return null; } - if (variable.IsByReference) { // error?? - Weaver.Error($"{variable} is not a supported reference type"); + Weaver.Error($"Cannot pass type {variable.Name} by reference", variable); return null; } - - MethodDefinition newReaderFunc; - - if (variable.IsArray) + if (td.HasGenericParameters && !td.FullName.StartsWith("System.ArraySegment`1", System.StringComparison.Ordinal)) { - newReaderFunc = GenerateArrayReadFunc(variable, recursionCount); + Weaver.Error($"Cannot generate reader for generic variable {variable.Name}. Use a supported type or provide a custom reader", variable); + return null; } - else if (td.IsEnum) + if (td.IsInterface) + { + Weaver.Error($"Cannot generate reader for interface {variable.Name}. Use a supported type or provide a custom reader", variable); + return null; + } + + if (td.IsEnum) { return GetReadFunc(td.GetEnumUnderlyingType(), recursionCount); } @@ -58,12 +88,12 @@ public static MethodReference GetReadFunc(TypeReference variable, int recursionC } else { - newReaderFunc = GenerateStructReadFunction(variable, recursionCount); + newReaderFunc = GenerateClassOrStructReadFunction(variable, recursionCount); } if (newReaderFunc == null) { - Weaver.Error($"{variable} is not a supported type"); + Weaver.Error($"{variable.Name} is not a supported type", variable); return null; } RegisterReadFunc(variable.FullName, newReaderFunc); @@ -83,7 +113,7 @@ static MethodDefinition GenerateArrayReadFunc(TypeReference variable, int recurs { if (!variable.IsArrayType()) { - Weaver.Error($"{variable} is an unsupported type. Jagged and multidimensional arrays are not supported"); + Weaver.Error($"{variable.Name} is an unsupported type. Jagged and multidimensional arrays are not supported", variable); return null; } @@ -137,13 +167,11 @@ static MethodDefinition GenerateArrayReadFunc(TypeReference variable, int recurs worker.Append(worker.Create(OpCodes.Ret)); worker.Append(labelEmptyArray); - // T value = new T[length]; worker.Append(worker.Create(OpCodes.Ldloc_0)); worker.Append(worker.Create(OpCodes.Newarr, variable.GetElementType())); worker.Append(worker.Create(OpCodes.Stloc_1)); - // for (int i=0; i< length ; i++) { worker.Append(worker.Create(OpCodes.Ldc_I4_0)); worker.Append(worker.Create(OpCodes.Stloc_2)); @@ -161,7 +189,6 @@ static MethodDefinition GenerateArrayReadFunc(TypeReference variable, int recurs worker.Append(worker.Create(OpCodes.Call, elementReadFunc)); worker.Append(worker.Create(OpCodes.Stobj, variable.GetElementType())); - worker.Append(worker.Create(OpCodes.Ldloc_2)); worker.Append(worker.Create(OpCodes.Ldc_I4_1)); worker.Append(worker.Create(OpCodes.Add)); @@ -218,21 +245,20 @@ static MethodDefinition GenerateArraySegmentReadFunc(TypeReference variable, int readerFunc.Body.InitLocals = true; ILProcessor worker = readerFunc.Body.GetILProcessor(); - + // int length = reader.ReadPackedInt32(); worker.Append(worker.Create(OpCodes.Ldarg_0)); worker.Append(worker.Create(OpCodes.Call, GetReadFunc(Weaver.int32Type))); worker.Append(worker.Create(OpCodes.Stloc_0)); - + // T[] array = new int[length] worker.Append(worker.Create(OpCodes.Ldloc_0)); worker.Append(worker.Create(OpCodes.Newarr, elementType)); worker.Append(worker.Create(OpCodes.Stloc_1)); - // loop through array and deserialize each element // generates code like this - // for (int i=0; i< length ; i++) + // for (int i=0; i< length ; i++) // { // value[i] = reader.ReadXXX(); // } @@ -244,15 +270,13 @@ static MethodDefinition GenerateArraySegmentReadFunc(TypeReference variable, int // loop body Instruction labelBody = worker.Create(OpCodes.Nop); worker.Append(labelBody); - { - // value[i] = reader.ReadT(); - worker.Append(worker.Create(OpCodes.Ldloc_1)); - worker.Append(worker.Create(OpCodes.Ldloc_2)); - worker.Append(worker.Create(OpCodes.Ldelema, elementType)); - worker.Append(worker.Create(OpCodes.Ldarg_0)); - worker.Append(worker.Create(OpCodes.Call, elementReadFunc)); - worker.Append(worker.Create(OpCodes.Stobj, elementType)); - } + // value[i] = reader.ReadT(); + worker.Append(worker.Create(OpCodes.Ldloc_1)); + worker.Append(worker.Create(OpCodes.Ldloc_2)); + worker.Append(worker.Create(OpCodes.Ldelema, elementType)); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Call, elementReadFunc)); + worker.Append(worker.Create(OpCodes.Stobj, elementType)); worker.Append(worker.Create(OpCodes.Ldloc_2)); worker.Append(worker.Create(OpCodes.Ldc_I4_1)); @@ -264,7 +288,7 @@ static MethodDefinition GenerateArraySegmentReadFunc(TypeReference variable, int worker.Append(worker.Create(OpCodes.Ldloc_2)); worker.Append(worker.Create(OpCodes.Ldloc_0)); worker.Append(worker.Create(OpCodes.Blt, labelBody)); - + // return new ArraySegment(array); worker.Append(worker.Create(OpCodes.Ldloc_1)); worker.Append(worker.Create(OpCodes.Newobj, Weaver.ArraySegmentConstructorReference.MakeHostInstanceGeneric(genericInstance))); @@ -272,16 +296,11 @@ static MethodDefinition GenerateArraySegmentReadFunc(TypeReference variable, int return readerFunc; } - static MethodDefinition GenerateStructReadFunction(TypeReference variable, int recursionCount) + static MethodDefinition GenerateClassOrStructReadFunction(TypeReference variable, int recursionCount) { if (recursionCount > MaxRecursionCount) { - Weaver.Error($"{variable} can't be deserialized because it references itself"); - return null; - } - - if (!Weaver.IsValidTypeToGenerate(variable.Resolve())) - { + Weaver.Error($"{variable.Name} can't be deserialized because it references itself", variable); return null; } @@ -310,12 +329,32 @@ static MethodDefinition GenerateStructReadFunction(TypeReference variable, int r ILProcessor worker = readerFunc.Body.GetILProcessor(); + TypeDefinition td = variable.Resolve(); + + CreateNew(variable, worker, td); + ReadAllFields(variable, recursionCount, worker); + + worker.Append(worker.Create(OpCodes.Ldloc_0)); + worker.Append(worker.Create(OpCodes.Ret)); + return readerFunc; + } + + // Initialize the local variable with a new instance + static void CreateNew(TypeReference variable, ILProcessor worker, TypeDefinition td) + { if (variable.IsValueType) { // structs are created with Initobj worker.Append(worker.Create(OpCodes.Ldloca, 0)); worker.Append(worker.Create(OpCodes.Initobj, variable)); } + else if (td.IsDerivedFrom(Weaver.ScriptableObjectType)) + { + GenericInstanceMethod genericInstanceMethod = new GenericInstanceMethod(Weaver.ScriptableObjectCreateInstanceMethod); + genericInstanceMethod.GenericArguments.Add(variable); + worker.Append(worker.Create(OpCodes.Call, genericInstanceMethod)); + worker.Append(worker.Create(OpCodes.Stloc_0)); + } else { // classes are created with their constructor @@ -323,20 +362,22 @@ static MethodDefinition GenerateStructReadFunction(TypeReference variable, int r MethodDefinition ctor = Resolvers.ResolveDefaultPublicCtor(variable); if (ctor == null) { - Weaver.Error($"{variable} can't be deserialized bcause i has no default constructor"); - return null; + Weaver.Error($"{variable.Name} can't be deserialized because it has no default constructor", variable); + return; } - worker.Append(worker.Create(OpCodes.Newobj, ctor)); + MethodReference ctorRef = Weaver.CurrentAssembly.MainModule.ImportReference(ctor); + + worker.Append(worker.Create(OpCodes.Newobj, ctorRef)); worker.Append(worker.Create(OpCodes.Stloc_0)); } + } + static void ReadAllFields(TypeReference variable, int recursionCount, ILProcessor worker) + { uint fields = 0; - foreach (FieldDefinition field in variable.Resolve().Fields) + foreach (FieldDefinition field in variable.FindAllPublicFields()) { - if (field.IsStatic || field.IsPrivate) - continue; - // mismatched ldloca/ldloc for struct/class combinations is invalid IL, which causes crash at runtime OpCode opcode = variable.IsValueType ? OpCodes.Ldloca : OpCodes.Ldloc; worker.Append(worker.Create(opcode, 0)); @@ -349,21 +390,18 @@ static MethodDefinition GenerateStructReadFunction(TypeReference variable, int r } else { - Weaver.Error($"{field} has an unsupported type"); - return null; + Weaver.Error($"{field.Name} has an unsupported type", field); } + FieldReference fieldRef = Weaver.CurrentAssembly.MainModule.ImportReference(field); - worker.Append(worker.Create(OpCodes.Stfld, field)); + worker.Append(worker.Create(OpCodes.Stfld, fieldRef)); fields++; } + if (fields == 0) { Log.Warning($"{variable} has no public or non-static fields to deserialize"); } - - worker.Append(worker.Create(OpCodes.Ldloc_0)); - worker.Append(worker.Create(OpCodes.Ret)); - return readerFunc; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Resolvers.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Resolvers.cs index 434aed4..3d868eb 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Resolvers.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Resolvers.cs @@ -12,29 +12,37 @@ public static class Resolvers { public static MethodReference ResolveMethod(TypeReference tr, AssemblyDefinition scriptDef, string name) { - //Console.WriteLine("ResolveMethod " + t.ToString () + " " + name); if (tr == null) { - Weaver.Error("Type missing for " + name); + Weaver.Error($"Cannot resolve method {name} without a class"); return null; } - foreach (MethodDefinition methodRef in tr.Resolve().Methods) + MethodReference method = ResolveMethod(tr, scriptDef, m => m.Name == name); + if (method == null) { - if (methodRef.Name == name) + Weaver.Error($"Method not found with name {name} in type {tr.Name}", tr); + } + return method; + } + + public static MethodReference ResolveMethod(TypeReference t, AssemblyDefinition scriptDef, System.Func predicate) + { + foreach (MethodDefinition methodRef in t.Resolve().Methods) + { + if (predicate(methodRef)) { return scriptDef.MainModule.ImportReference(methodRef); } } - Weaver.Error($"{tr}.{name}() not found"); + + Weaver.Error($"Method not found in type {t.Name}", t); return null; } - // TODO reuse ResolveMethod in here after Weaver.fail was removed - public static MethodReference ResolveMethodInParents(TypeReference tr, AssemblyDefinition scriptDef, string name) + public static MethodReference TryResolveMethodInParents(TypeReference tr, AssemblyDefinition scriptDef, string name) { if (tr == null) { - Weaver.Error("Type missing for " + name); return null; } foreach (MethodDefinition methodRef in tr.Resolve().Methods) @@ -44,28 +52,20 @@ public static MethodReference ResolveMethodInParents(TypeReference tr, AssemblyD return scriptDef.MainModule.ImportReference(methodRef); } } + // Could not find the method in this class, try the parent - return ResolveMethodInParents(tr.Resolve().BaseType, scriptDef, name); + return TryResolveMethodInParents(tr.Resolve().BaseType, scriptDef, name); } // System.Byte[] arguments need a version with a string public static MethodReference ResolveMethodWithArg(TypeReference tr, AssemblyDefinition scriptDef, string name, string argTypeFullName) { - foreach (MethodDefinition methodRef in tr.Resolve().Methods) - { - if (methodRef.Name == name) - { - if (methodRef.Parameters.Count == 1) - { - if (methodRef.Parameters[0].ParameterType.FullName == argTypeFullName) - { - return scriptDef.MainModule.ImportReference(methodRef); - } - } - } - } - Weaver.Error($"{tr}.{name}({argTypeFullName}) not found"); - return null; + bool match(MethodDefinition method) => + method.Name == name + && (method.Parameters.Count == 1) + && method.Parameters[0].ParameterType.FullName == argTypeFullName; + + return ResolveMethod(tr, scriptDef, match); } // reuse ResolveMethodWithArg string version @@ -92,37 +92,19 @@ public static GenericInstanceMethod ResolveMethodGeneric(TypeReference t, Assemb { foreach (MethodDefinition methodRef in t.Resolve().Methods) { - if (methodRef.Name == name) + if (methodRef.Name == name && methodRef.Parameters.Count == 0 && methodRef.GenericParameters.Count == 1) { - if (methodRef.Parameters.Count == 0) + MethodReference tmp = scriptDef.MainModule.ImportReference(methodRef); + GenericInstanceMethod gm = new GenericInstanceMethod(tmp); + gm.GenericArguments.Add(genericType); + if (gm.GenericArguments[0].FullName == genericType.FullName) { - if (methodRef.GenericParameters.Count == 1) - { - MethodReference tmp = scriptDef.MainModule.ImportReference(methodRef); - GenericInstanceMethod gm = new GenericInstanceMethod(tmp); - gm.GenericArguments.Add(genericType); - if (gm.GenericArguments[0].FullName == genericType.FullName) - { - return gm; - } - } + return gm; } } } - Weaver.Error($"{t}.{name}<{genericType}>() not found"); - return null; - } - - public static FieldReference ResolveField(TypeReference tr, AssemblyDefinition scriptDef, string name) - { - foreach (FieldDefinition fd in tr.Resolve().Fields) - { - if (fd.Name == name) - { - return scriptDef.MainModule.ImportReference(fd); - } - } + Weaver.Error($"Method {name} not found in {t.Name}", t); return null; } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Weaver.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Weaver.cs index 3ccef36..8fb3e99 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Weaver.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Weaver.cs @@ -27,8 +27,11 @@ class WeaverLists public Dictionary numSyncVars = new Dictionary(); } - class Weaver + internal static class Weaver { + public static string InvokeRpcPrefix => "InvokeUserCode_"; + public static string SyncEventPrefix => "SendEventMessage_"; + public static WeaverLists WeaveLists { get; private set; } public static AssemblyDefinition CurrentAssembly { get; private set; } public static ModuleDefinition CorLibModule { get; private set; } @@ -42,16 +45,19 @@ class Weaver // Network types public static TypeReference NetworkBehaviourType; - public static TypeReference NetworkBehaviourType2; + public static TypeReference RemoteCallHelperType; public static TypeReference MonoBehaviourType; public static TypeReference ScriptableObjectType; public static TypeReference NetworkConnectionType; public static TypeReference MessageBaseType; + public static TypeReference IMessageBaseType; public static TypeReference SyncListType; public static TypeReference SyncSetType; public static TypeReference SyncDictionaryType; + public static MethodReference ScriptableObjectCreateInstanceMethod; + public static MethodReference NetworkBehaviourDirtyBitsReference; public static MethodReference GetPooledWriterReference; public static MethodReference RecycleWriterReference; @@ -61,6 +67,7 @@ class Weaver public static TypeReference NetworkReaderType; public static TypeReference NetworkWriterType; + public static TypeReference PooledNetworkWriterType; public static TypeReference NetworkIdentityType; public static TypeReference IEnumeratorType; @@ -69,6 +76,7 @@ class Weaver public static MethodReference ReadyConnectionReference; public static TypeReference ComponentType; + public static TypeReference ObjectType; public static TypeReference CmdDelegateReference; public static MethodReference CmdDelegateConstructor; @@ -76,7 +84,6 @@ class Weaver public static MethodReference NetworkServerGetActive; public static MethodReference NetworkServerGetLocalClientActive; public static MethodReference NetworkClientGetActive; - public static MethodReference getBehaviourIsServer; // custom attribute types public static TypeReference SyncVarType; @@ -108,6 +115,9 @@ class Weaver public static TypeReference gameObjectType; public static TypeReference transformType; + public static MethodReference syncVarEqualReference; + public static MethodReference syncVarNetworkIdentityEqualReference; + public static MethodReference syncVarGameObjectEqualReference; public static MethodReference setSyncVarReference; public static MethodReference setSyncVarHookGuard; public static MethodReference getSyncVarHookGuard; @@ -143,6 +153,17 @@ public static void Error(string message) WeavingFailed = true; } + public static void Error(string message, MemberReference mr) + { + Log.Error($"{message} (at {mr})"); + WeavingFailed = true; + } + + public static void Warning(string message, MemberReference mr) + { + Log.Warning($"{message} (at {mr})"); + } + public static int GetSyncVarStart(string className) { return WeaveLists.numSyncVars.ContainsKey(className) @@ -245,16 +266,18 @@ static void SetupTargetTypes() ArraySegmentOffsetReference = Resolvers.ResolveProperty(ArraySegmentType, CurrentAssembly, "Offset"); ArraySegmentConstructorReference = Resolvers.ResolveMethod(ArraySegmentType, CurrentAssembly, ".ctor"); - NetworkReaderType = NetAssembly.MainModule.GetType("Mirror.NetworkReader"); NetworkWriterType = NetAssembly.MainModule.GetType("Mirror.NetworkWriter"); + TypeReference pooledNetworkWriterTmp = NetAssembly.MainModule.GetType("Mirror.PooledNetworkWriter"); + PooledNetworkWriterType = CurrentAssembly.MainModule.ImportReference(pooledNetworkWriterTmp); NetworkServerGetActive = Resolvers.ResolveMethod(NetworkServerType, CurrentAssembly, "get_active"); NetworkServerGetLocalClientActive = Resolvers.ResolveMethod(NetworkServerType, CurrentAssembly, "get_localClientActive"); NetworkClientGetActive = Resolvers.ResolveMethod(NetworkClientType, CurrentAssembly, "get_active"); - CmdDelegateReference = NetAssembly.MainModule.GetType("Mirror.NetworkBehaviour/CmdDelegate"); + CmdDelegateReference = NetAssembly.MainModule.GetType("Mirror.RemoteCalls.CmdDelegate"); CmdDelegateConstructor = Resolvers.ResolveMethod(CmdDelegateReference, CurrentAssembly, ".ctor"); + CurrentAssembly.MainModule.ImportReference(gameObjectType); CurrentAssembly.MainModule.ImportReference(transformType); @@ -262,16 +285,21 @@ static void SetupTargetTypes() NetworkIdentityType = CurrentAssembly.MainModule.ImportReference(networkIdentityTmp); NetworkBehaviourType = NetAssembly.MainModule.GetType("Mirror.NetworkBehaviour"); - NetworkBehaviourType2 = CurrentAssembly.MainModule.ImportReference(NetworkBehaviourType); + RemoteCallHelperType = NetAssembly.MainModule.GetType("Mirror.RemoteCalls.RemoteCallHelper"); NetworkConnectionType = NetAssembly.MainModule.GetType("Mirror.NetworkConnection"); MonoBehaviourType = UnityAssembly.MainModule.GetType("UnityEngine.MonoBehaviour"); ScriptableObjectType = UnityAssembly.MainModule.GetType("UnityEngine.ScriptableObject"); + ScriptableObjectCreateInstanceMethod = Resolvers.ResolveMethod( + ScriptableObjectType, CurrentAssembly, + md => md.Name == "CreateInstance" && md.HasGenericParameters); + NetworkConnectionType = NetAssembly.MainModule.GetType("Mirror.NetworkConnection"); NetworkConnectionType = CurrentAssembly.MainModule.ImportReference(NetworkConnectionType); MessageBaseType = NetAssembly.MainModule.GetType("Mirror.MessageBase"); + IMessageBaseType = NetAssembly.MainModule.GetType("Mirror.IMessageBase"); SyncListType = NetAssembly.MainModule.GetType("Mirror.SyncList`1"); SyncSetType = NetAssembly.MainModule.GetType("Mirror.SyncSet`1"); SyncDictionaryType = NetAssembly.MainModule.GetType("Mirror.SyncDictionary`2"); @@ -282,10 +310,13 @@ static void SetupTargetTypes() RecycleWriterReference = Resolvers.ResolveMethod(NetworkWriterPoolType, CurrentAssembly, "Recycle"); ComponentType = UnityAssembly.MainModule.GetType("UnityEngine.Component"); + ObjectType = UnityAssembly.MainModule.GetType("UnityEngine.Object"); ClientSceneType = NetAssembly.MainModule.GetType("Mirror.ClientScene"); ReadyConnectionReference = Resolvers.ResolveMethod(ClientSceneType, CurrentAssembly, "get_readyConnection"); - getBehaviourIsServer = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "get_isServer"); + syncVarEqualReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "SyncVarEqual"); + syncVarNetworkIdentityEqualReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "SyncVarNetworkIdentityEqual"); + syncVarGameObjectEqualReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "SyncVarGameObjectEqual"); setSyncVarReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "SetSyncVar"); setSyncVarHookGuard = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "setSyncVarHookGuard"); getSyncVarHookGuard = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "getSyncVarHookGuard"); @@ -294,9 +325,9 @@ static void SetupTargetTypes() getSyncVarGameObjectReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "GetSyncVarGameObject"); setSyncVarNetworkIdentityReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "SetSyncVarNetworkIdentity"); getSyncVarNetworkIdentityReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "GetSyncVarNetworkIdentity"); - registerCommandDelegateReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "RegisterCommandDelegate"); - registerRpcDelegateReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "RegisterRpcDelegate"); - registerEventDelegateReference = Resolvers.ResolveMethod(NetworkBehaviourType, CurrentAssembly, "RegisterEventDelegate"); + registerCommandDelegateReference = Resolvers.ResolveMethod(RemoteCallHelperType, CurrentAssembly, "RegisterCommandDelegate"); + registerRpcDelegateReference = Resolvers.ResolveMethod(RemoteCallHelperType, CurrentAssembly, "RegisterRpcDelegate"); + registerEventDelegateReference = Resolvers.ResolveMethod(RemoteCallHelperType, CurrentAssembly, "RegisterEventDelegate"); getTypeReference = Resolvers.ResolveMethod(objectType, CurrentAssembly, "GetType"); getTypeFromHandleReference = Resolvers.ResolveMethod(typeType, CurrentAssembly, "GetTypeFromHandle"); logErrorReference = Resolvers.ResolveMethod(UnityAssembly.MainModule.GetType("UnityEngine.Debug"), CurrentAssembly, "LogError"); @@ -315,15 +346,6 @@ public static bool IsNetworkBehaviour(TypeDefinition td) return td.IsDerivedFrom(NetworkBehaviourType); } - public static bool IsValidTypeToGenerate(TypeDefinition variable) - { - // a valid type is a simple class or struct. so we generate only code for types we dont know, and if they are not inside - // this assembly it must mean that we are trying to serialize a variable outside our scope. and this will fail. - // no need to report an error here, the caller will report a better error - string assembly = CurrentAssembly.MainModule.Name; - return variable.Module.Name == assembly; - } - static void CheckMonoBehaviour(TypeDefinition td) { if (td.IsDerivedFrom(MonoBehaviourType)) @@ -332,7 +354,7 @@ static void CheckMonoBehaviour(TypeDefinition td) } } - static bool CheckNetworkBehaviour(TypeDefinition td) + static bool WeaveNetworkBehavior(TypeDefinition td) { if (!td.IsClass) return false; @@ -367,100 +389,93 @@ static bool CheckNetworkBehaviour(TypeDefinition td) } } - bool didWork = false; + bool modified = false; foreach (TypeDefinition behaviour in behaviourClasses) { - didWork |= ProcessNetworkBehaviourType(behaviour); + modified |= ProcessNetworkBehaviourType(behaviour); } - return didWork; + return modified; } - static bool CheckMessageBase(TypeDefinition td) + static bool WeaveMessage(TypeDefinition td) { if (!td.IsClass) return false; - bool didWork = false; + bool modified = false; - // are ANY parent classes MessageBase - TypeReference parent = td.BaseType; - while (parent != null) + if (td.ImplementsInterface(IMessageBaseType)) { - if (parent.FullName == MessageBaseType.FullName) - { - MessageClassProcessor.Process(td); - didWork = true; - break; - } + // process this and base classes from parent to child order + try { - parent = parent.Resolve().BaseType; + TypeDefinition parent = td.BaseType.Resolve(); + // process parent + WeaveMessage(parent); } catch (AssemblyResolutionException) { // this can happen for plugins. //Console.WriteLine("AssemblyResolutionException: "+ ex.ToString()); - break; } + + // process this + MessageClassProcessor.Process(td); + modified = true; } // check for embedded types foreach (TypeDefinition embedded in td.NestedTypes) { - didWork |= CheckMessageBase(embedded); + modified |= WeaveMessage(embedded); } - return didWork; + return modified; } - static bool CheckSyncList(TypeDefinition td) + static bool WeaveSyncObject(TypeDefinition td) { - if (!td.IsClass) + bool modified = false; + + // ignore generic classes + // we can not process generic classes + // we give error if a generic syncObject is used in NetworkBehaviour + if (td.HasGenericParameters) return false; - bool didWork = false; + // ignore abstract classes + // we dont need to process abstract classes because classes that + // inherit from them will be processed instead - // are ANY parent classes SyncListStruct - TypeReference parent = td.BaseType; - while (parent != null) + // We cant early return with non classes or Abstract classes + // because we still need to check for embeded types + if (td.IsClass || !td.IsAbstract) { - if (parent.FullName.StartsWith(SyncListType.FullName, StringComparison.Ordinal)) + if (td.IsDerivedFrom(SyncListType)) { - SyncListProcessor.Process(td); - didWork = true; - break; + SyncListProcessor.Process(td, SyncListType); + modified = true; } - if (parent.FullName.StartsWith(SyncSetType.FullName, StringComparison.Ordinal)) + else if (td.IsDerivedFrom(SyncSetType)) { - SyncListProcessor.Process(td); - didWork = true; - break; + SyncListProcessor.Process(td, SyncSetType); + modified = true; } - if (parent.FullName.StartsWith(SyncDictionaryType.FullName, StringComparison.Ordinal)) + else if (td.IsDerivedFrom(SyncDictionaryType)) { SyncDictionaryProcessor.Process(td); - didWork = true; - break; - } - try - { - parent = parent.Resolve().BaseType; - } - catch (AssemblyResolutionException) - { - // this can happen for pluins. - //Console.WriteLine("AssemblyResolutionException: "+ ex.ToString()); - break; + modified = true; } } // check for embedded types foreach (TypeDefinition embedded in td.NestedTypes) { - didWork |= CheckSyncList(embedded); + modified |= WeaveSyncObject(embedded); } - return didWork; + return modified; } static bool Weave(string assName, IEnumerable dependencies, string unityEngineDLLPath, string mirrorNetDLLPath, string outputDir) @@ -469,7 +484,7 @@ static bool Weave(string assName, IEnumerable dependencies, string unity using (CurrentAssembly = AssemblyDefinition.ReadAssembly(assName, new ReaderParameters { ReadWrite = true, ReadSymbols = true, AssemblyResolver = asmResolver })) { asmResolver.AddSearchDirectory(Path.GetDirectoryName(assName)); - asmResolver.AddSearchDirectory(Helpers.UnityEngineDLLDirectoryName()); + asmResolver.AddSearchDirectory(Helpers.UnityEngineDllDirectoryName()); asmResolver.AddSearchDirectory(Path.GetDirectoryName(unityEngineDLLPath)); asmResolver.AddSearchDirectory(Path.GetDirectoryName(mirrorNetDLLPath)); if (dependencies != null) @@ -489,46 +504,14 @@ static bool Weave(string assName, IEnumerable dependencies, string unity ModuleDefinition moduleDefinition = CurrentAssembly.MainModule; Console.WriteLine("Script Module: {0}", moduleDefinition.Name); - // Process each NetworkBehaviour - bool didWork = false; + bool modified = WeaveModule(moduleDefinition); - // We need to do 2 passes, because SyncListStructs might be referenced from other modules, so we must make sure we generate them first. - for (int pass = 0; pass < 2; pass++) + if (WeavingFailed) { - System.Diagnostics.Stopwatch watch = System.Diagnostics.Stopwatch.StartNew(); - foreach (TypeDefinition td in moduleDefinition.Types) - { - if (td.IsClass && td.BaseType.CanBeResolved()) - { - try - { - if (pass == 0) - { - didWork |= CheckSyncList(td); - } - else - { - didWork |= CheckNetworkBehaviour(td); - didWork |= CheckMessageBase(td); - } - } - catch (Exception ex) - { - Error(ex.ToString()); - throw ex; - } - } - - if (WeavingFailed) - { - return false; - } - } - watch.Stop(); - Console.WriteLine("Pass: " + pass + " took " + watch.ElapsedMilliseconds + " milliseconds"); + return false; } - if (didWork) + if (modified) { // this must be done for ALL code, not just NetworkBehaviours try @@ -543,7 +526,6 @@ static bool Weave(string assName, IEnumerable dependencies, string unity if (WeavingFailed) { - //Log.Error("Failed phase II."); return false; } @@ -563,6 +545,45 @@ static bool Weave(string assName, IEnumerable dependencies, string unity return true; } + static bool WeaveModule(ModuleDefinition moduleDefinition) + { + try + { + bool modified = false; + + // We need to do 2 passes, because SyncListStructs might be referenced from other modules, so we must make sure we generate them first. + System.Diagnostics.Stopwatch watch = System.Diagnostics.Stopwatch.StartNew(); + foreach (TypeDefinition td in moduleDefinition.Types) + { + if (td.IsClass && td.BaseType.CanBeResolved()) + { + modified |= WeaveSyncObject(td); + } + } + watch.Stop(); + Console.WriteLine("Weave sync objects took " + watch.ElapsedMilliseconds + " milliseconds"); + + watch.Start(); + foreach (TypeDefinition td in moduleDefinition.Types) + { + if (td.IsClass && td.BaseType.CanBeResolved()) + { + modified |= WeaveNetworkBehavior(td); + modified |= WeaveMessage(td); + } + } + watch.Stop(); + Console.WriteLine("Weave behaviours and messages took" + watch.ElapsedMilliseconds + " milliseconds"); + + return modified; + } + catch (Exception ex) + { + Error(ex.ToString()); + throw; + } + } + public static bool WeaveAssemblies(IEnumerable assemblies, IEnumerable dependencies, string outputDir, string unityEngineDLLPath, string mirrorNetDLLPath) { WeavingFailed = false; diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Writers.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Writers.cs index 040960d..ece8b13 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Writers.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Editor/Weaver/Writers.cs @@ -24,24 +24,62 @@ public static void Register(TypeReference dataType, MethodReference methodRefere public static MethodReference GetWriteFunc(TypeReference variable, int recursionCount = 0) { if (writeFuncs.TryGetValue(variable.FullName, out MethodReference foundFunc)) - { + { return foundFunc; } + MethodDefinition newWriterFunc; + + // Arrays are special, if we resolve them, we get the element type, + // so the following ifs might choke on it for scriptable objects + // or other objects that require a custom serializer + // thus check if it is an array and skip all the checks. + if (variable.IsArray) + { + newWriterFunc = GenerateArrayWriteFunc(variable, recursionCount); + RegisterWriteFunc(variable.FullName, newWriterFunc); + return newWriterFunc; + } + if (variable.IsByReference) { // error?? - Weaver.Error($"{variable} has unsupported type. Use one of Mirror supported types instead"); + Weaver.Error($"Cannot pass {variable.Name} by reference", variable); return null; } - - MethodDefinition newWriterFunc; - - if (variable.IsArray) + TypeDefinition td = variable.Resolve(); + if (td == null) { - newWriterFunc = GenerateArrayWriteFunc(variable, recursionCount); + Weaver.Error($"{variable.Name} is not a supported type. Use a supported type or provide a custom writer", variable); + return null; } - else if (variable.Resolve().IsEnum) + if (td.IsDerivedFrom(Weaver.ComponentType)) + { + Weaver.Error($"Cannot generate writer for component type {variable.Name}. Use a supported type or provide a custom writer", variable); + return null; + } + if (variable.FullName == Weaver.ObjectType.FullName) + { + Weaver.Error($"Cannot generate writer for {variable.Name}. Use a supported type or provide a custom writer", variable); + return null; + } + if (variable.FullName == Weaver.ScriptableObjectType.FullName) + { + Weaver.Error($"Cannot generate writer for {variable.Name}. Use a supported type or provide a custom writer", variable); + return null; + } + if (td.HasGenericParameters && !td.FullName.StartsWith("System.ArraySegment`1", System.StringComparison.Ordinal)) + { + Weaver.Error($"Cannot generate writer for generic type {variable.Name}. Use a supported type or provide a custom writer", variable); + return null; + } + if (td.IsInterface) + { + Weaver.Error($"Cannot generate writer for interface {variable.Name}. Use a supported type or provide a custom writer", variable); + return null; + } + + if (variable.Resolve().IsEnum) { return GetWriteFunc(variable.Resolve().GetEnumUnderlyingType(), recursionCount); } @@ -51,7 +89,7 @@ public static MethodReference GetWriteFunc(TypeReference variable, int recursion } else { - newWriterFunc = GenerateStructWriterFunction(variable, recursionCount); + newWriterFunc = GenerateClassOrStructWriterFunction(variable, recursionCount); } if (newWriterFunc == null) @@ -72,16 +110,11 @@ static void RegisterWriteFunc(string name, MethodDefinition newWriterFunc) Weaver.WeaveLists.generateContainerClass.Methods.Add(newWriterFunc); } - static MethodDefinition GenerateStructWriterFunction(TypeReference variable, int recursionCount) + static MethodDefinition GenerateClassOrStructWriterFunction(TypeReference variable, int recursionCount) { if (recursionCount > MaxRecursionCount) { - Weaver.Error($"{variable} can't be serialized because it references itself"); - return null; - } - - if (!Weaver.IsValidTypeToGenerate(variable.Resolve())) - { + Weaver.Error($"{variable.Name} can't be serialized because it references itself", variable); return null; } @@ -106,53 +139,56 @@ static MethodDefinition GenerateStructWriterFunction(TypeReference variable, int ILProcessor worker = writerFunc.Body.GetILProcessor(); - uint fields = 0; - foreach (FieldDefinition field in variable.Resolve().Fields) - { - if (field.IsStatic || field.IsPrivate) - continue; - - if (field.FieldType.Resolve().HasGenericParameters) - { - Weaver.Error($"{field} has unsupported type. Create a derived class instead of using generics"); - return null; - } + if (!WriteAllFields(variable, recursionCount, worker)) + return null; - if (field.FieldType.Resolve().IsInterface) - { - Weaver.Error($"{field} has unsupported type. Use a concrete class instead of an interface"); - return null; - } + worker.Append(worker.Create(OpCodes.Ret)); + return writerFunc; + } + /// + /// Fiends all fields in + /// + /// + /// + /// + /// false if fail + static bool WriteAllFields(TypeReference variable, int recursionCount, ILProcessor worker) + { + uint fields = 0; + foreach (FieldDefinition field in variable.FindAllPublicFields()) + { MethodReference writeFunc = GetWriteFunc(field.FieldType, recursionCount + 1); if (writeFunc != null) { + FieldReference fieldRef = Weaver.CurrentAssembly.MainModule.ImportReference(field); + fields++; worker.Append(worker.Create(OpCodes.Ldarg_0)); worker.Append(worker.Create(OpCodes.Ldarg_1)); - worker.Append(worker.Create(OpCodes.Ldfld, field)); + worker.Append(worker.Create(OpCodes.Ldfld, fieldRef)); worker.Append(worker.Create(OpCodes.Call, writeFunc)); } else { - Weaver.Error($"{field} has unsupported type. Use a type supported by Mirror instead"); - return null; + Weaver.Error($"{field.Name} has unsupported type. Use a type supported by Mirror instead", field); + return false; } } + if (fields == 0) { - Log.Warning($" {variable} has no no public or non-static fields to serialize"); + Log.Warning($"{variable} has no no public or non-static fields to serialize"); } - worker.Append(worker.Create(OpCodes.Ret)); - return writerFunc; + + return true; } static MethodDefinition GenerateArrayWriteFunc(TypeReference variable, int recursionCount) { - if (!variable.IsArrayType()) { - Weaver.Error($"{variable} is an unsupported type. Jagged and multidimensional arrays are not supported"); + Weaver.Error($"{variable.Name} is an unsupported type. Jagged and multidimensional arrays are not supported", variable); return null; } @@ -231,13 +267,11 @@ static MethodDefinition GenerateArrayWriteFunc(TypeReference variable, int recur worker.Append(worker.Create(OpCodes.Ldobj, variable.GetElementType())); worker.Append(worker.Create(OpCodes.Call, elementWriteFunc)); - worker.Append(worker.Create(OpCodes.Ldloc_1)); worker.Append(worker.Create(OpCodes.Ldc_I4_1)); worker.Append(worker.Create(OpCodes.Add)); worker.Append(worker.Create(OpCodes.Stloc_1)); - // end for loop worker.Append(labelHead); worker.Append(worker.Create(OpCodes.Ldloc_1)); @@ -295,7 +329,7 @@ static MethodDefinition GenerateArraySegmentWriteFunc(TypeReference variable, in worker.Append(worker.Create(OpCodes.Call, countref)); worker.Append(worker.Create(OpCodes.Stloc_0)); - + // writer.WritePackedInt32(length); worker.Append(worker.Create(OpCodes.Ldarg_0)); worker.Append(worker.Create(OpCodes.Ldloc_0)); @@ -303,7 +337,7 @@ static MethodDefinition GenerateArraySegmentWriteFunc(TypeReference variable, in // Loop through the ArraySegment and call the writer for each element. // generates this: - // for (int i=0; i< length; i++) + // for (int i=0; i< length; i++) // { // writer.Write(value.Array[i + value.Offset]); // } @@ -315,32 +349,31 @@ static MethodDefinition GenerateArraySegmentWriteFunc(TypeReference variable, in // loop body Instruction labelBody = worker.Create(OpCodes.Nop); worker.Append(labelBody); - { - // writer.Write(value.Array[i + value.Offset]); - worker.Append(worker.Create(OpCodes.Ldarg_0)); - worker.Append(worker.Create(OpCodes.Ldarga_S, (byte)1)); - worker.Append(worker.Create(OpCodes.Call, Weaver.ArraySegmentArrayReference.MakeHostInstanceGeneric(genericInstance))); - worker.Append(worker.Create(OpCodes.Ldloc_1)); - worker.Append(worker.Create(OpCodes.Ldarga_S, (byte)1)); - worker.Append(worker.Create(OpCodes.Call, Weaver.ArraySegmentOffsetReference.MakeHostInstanceGeneric(genericInstance))); - worker.Append(worker.Create(OpCodes.Add)); - worker.Append(worker.Create(OpCodes.Ldelema, elementType)); - worker.Append(worker.Create(OpCodes.Ldobj, elementType)); - worker.Append(worker.Create(OpCodes.Call, elementWriteFunc)); - } + + // writer.Write(value.Array[i + value.Offset]); + worker.Append(worker.Create(OpCodes.Ldarg_0)); + worker.Append(worker.Create(OpCodes.Ldarga_S, (byte)1)); + worker.Append(worker.Create(OpCodes.Call, Weaver.ArraySegmentArrayReference.MakeHostInstanceGeneric(genericInstance))); + worker.Append(worker.Create(OpCodes.Ldloc_1)); + worker.Append(worker.Create(OpCodes.Ldarga_S, (byte)1)); + worker.Append(worker.Create(OpCodes.Call, Weaver.ArraySegmentOffsetReference.MakeHostInstanceGeneric(genericInstance))); + worker.Append(worker.Create(OpCodes.Add)); + worker.Append(worker.Create(OpCodes.Ldelema, elementType)); + worker.Append(worker.Create(OpCodes.Ldobj, elementType)); + worker.Append(worker.Create(OpCodes.Call, elementWriteFunc)); + worker.Append(worker.Create(OpCodes.Ldloc_1)); worker.Append(worker.Create(OpCodes.Ldc_I4_1)); worker.Append(worker.Create(OpCodes.Add)); worker.Append(worker.Create(OpCodes.Stloc_1)); - // end for loop worker.Append(labelHead); worker.Append(worker.Create(OpCodes.Ldloc_1)); worker.Append(worker.Create(OpCodes.Ldloc_0)); worker.Append(worker.Create(OpCodes.Blt, labelBody)); - + // return worker.Append(worker.Create(OpCodes.Ret)); return writerFunc; diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller deleted file mode 100644 index 5a7f506..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller +++ /dev/null @@ -1,156 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!91 &9100000 -AnimatorController: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Tank - serializedVersion: 5 - m_AnimatorParameters: - - m_Name: Fire - m_Type: 9 - m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - m_AnimatorLayers: - - serializedVersion: 5 - m_Name: Base Layer - m_StateMachine: {fileID: 1107206089488630588} - m_Mask: {fileID: 0} - m_Motions: [] - m_Behaviours: [] - m_BlendingMode: 0 - m_SyncedLayerIndex: -1 - m_DefaultWeight: 0 - m_IKPass: 0 - m_SyncedLayerAffectsTiming: 0 - m_Controller: {fileID: 9100000} ---- !u!1101 &1101845105868117086 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: Fire - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102477577393645330} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.45454544 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1101 &1101857281332299900 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: [] - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102845660080023070} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.058695674 - m_TransitionOffset: 0.41739127 - m_ExitTime: 0.9060869 - m_HasExitTime: 1 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1102 &1102477577393645330 -AnimatorState: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Recon_Tank_Rig|Shoot - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: - - {fileID: 1101857281332299900} - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 7400006, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: ---- !u!1102 &1102845660080023070 -AnimatorState: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Recon_Tank_Rig|Idle - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: - - {fileID: 1101845105868117086} - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 7400004, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: ---- !u!1107 &1107206089488630588 -AnimatorStateMachine: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Base Layer - m_ChildStates: - - serializedVersion: 1 - m_State: {fileID: 1102845660080023070} - m_Position: {x: 132, y: 300, z: 0} - - serializedVersion: 1 - m_State: {fileID: 1102477577393645330} - m_Position: {x: 360, y: 432, z: 0} - m_ChildStateMachines: [] - m_AnyStateTransitions: [] - m_EntryTransitions: [] - m_StateMachineTransitions: {} - m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 50, y: 20, z: 0} - m_EntryPosition: {x: 50, y: 120, z: 0} - m_ExitPosition: {x: 800, y: 120, z: 0} - m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} - m_DefaultState: {fileID: 1102845660080023070} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller.meta deleted file mode 100644 index b4df009..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/AnimationControllers/Tank.controller.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e0dbc8b2f2711a54f9b7ed1358a4c6af -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 9100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat deleted file mode 100644 index 09a4fa2..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Capsule - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0, g: 0.07727194, b: 1, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat.meta deleted file mode 100644 index b202aa9..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Capsule.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 3ec90781e3720544da7fc86055e6cbe6 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat deleted file mode 100644 index f7e2181..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Cube - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 0.93989503, b: 0, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat.meta deleted file mode 100644 index 9c096c8..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cube.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 1d5f3015968dad04780bf9d2113cc772 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat deleted file mode 100644 index 59d5192..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Cylinder - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0, g: 0.5943396, b: 0.054526776, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat.meta deleted file mode 100644 index 00cc85e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Cylinder.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 439a10ee8f8d14040be9003239449741 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat deleted file mode 100644 index d16a481..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Player - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0, g: 0, b: 0, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat.meta deleted file mode 100644 index 56884a4..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Player.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 792117fe9a386a8489e8010bec746339 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat deleted file mode 100644 index 060786b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Quad - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.8207547, g: 0.8207547, b: 0.8207547, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat.meta deleted file mode 100644 index be7d0db..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Quad.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6eb3f3ba66756364d8b94e662e7e8af5 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat deleted file mode 100644 index 73ef86d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Shelter - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.8018868, g: 0.52244145, b: 0, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat.meta deleted file mode 100644 index c261931..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Shelter.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: aef230244d219314fb8453f0365b8176 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat deleted file mode 100644 index 4358e1b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Sphere - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0.9716981, g: 0, b: 0.77970594, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat.meta deleted file mode 100644 index 8822215..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Sphere.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 58936713efca1ec488624ee297b5d687 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat deleted file mode 100644 index 38e8f91..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat +++ /dev/null @@ -1,78 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Zone - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _ALPHAPREMULTIPLY_ON - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: 3000 - stringTagMap: - RenderType: Transparent - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 10 - - _GlossMapScale: 1 - - _Glossiness: 0 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 3 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 0 - m_Colors: - - _Color: {r: 0, g: 0, b: 0, a: 0.039215688} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat.meta deleted file mode 100644 index 4cfbe95..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Materials/Zone.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a7c679cf124f7ae46a0291ea35848554 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs.meta deleted file mode 100644 index 37601bf..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2be4f78570b2a1e4cae84466d35d606c -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab deleted file mode 100644 index 4765d1e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab +++ /dev/null @@ -1,133 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1076878374699499732 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1076878374699499735} - - component: {fileID: 1076878374699499728} - - component: {fileID: 1076878374699499729} - - component: {fileID: 1076878374699499734} - - component: {fileID: 2648107611936813301} - - component: {fileID: 5697694911122891659} - m_Layer: 0 - m_Name: Capsule - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1076878374699499735 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1076878374699499732} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 20, y: 1, z: -20} - 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!33 &1076878374699499728 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1076878374699499732} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1076878374699499729 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1076878374699499732} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3ec90781e3720544da7fc86055e6cbe6, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!136 &1076878374699499734 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1076878374699499732} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &2648107611936813301 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1076878374699499732} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: e1971f4a8c7661546bc509b44bd91b80 - m_SceneId: 0 ---- !u!114 &5697694911122891659 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1076878374699499732} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1731d8de2d0c84333b08ebe1e79f4118, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - visRange: 5 - visUpdateInterval: 0.1 - checkMethod: 0 - forceHidden: 0 - castLayers: - serializedVersion: 2 - m_Bits: 512 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab.meta deleted file mode 100644 index 99fb5c0..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Capsule.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: e1971f4a8c7661546bc509b44bd91b80 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab deleted file mode 100644 index b626be6..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab +++ /dev/null @@ -1,132 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &5623359707189648430 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5623359707189648426} - - component: {fileID: 5623359707189648427} - - component: {fileID: 5623359707189648424} - - component: {fileID: 5623359707189648425} - - component: {fileID: 5623359707189648404} - - component: {fileID: 5623359707189648405} - m_Layer: 0 - m_Name: Cube - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &5623359707189648426 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5623359707189648430} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: 2} - m_LocalScale: {x: 2, y: 2, z: 2} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5623359707189648427 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5623359707189648430} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &5623359707189648424 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5623359707189648430} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1d5f3015968dad04780bf9d2113cc772, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!65 &5623359707189648425 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5623359707189648430} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &5623359707189648404 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5623359707189648430} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: 4ff300cf6bb3c6342a9552c4f18788c8 - m_SceneId: 0 ---- !u!114 &5623359707189648405 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5623359707189648430} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1731d8de2d0c84333b08ebe1e79f4118, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - visRange: 5 - visUpdateInterval: 0.1 - checkMethod: 0 - forceHidden: 0 - castLayers: - serializedVersion: 2 - m_Bits: 512 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab.meta deleted file mode 100644 index 8b53f72..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cube.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 4ff300cf6bb3c6342a9552c4f18788c8 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab deleted file mode 100644 index 5b6f649..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab +++ /dev/null @@ -1,133 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &6852530814182375312 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6852530814182375316} - - component: {fileID: 6852530814182375315} - - component: {fileID: 6852530814182375314} - - component: {fileID: 6852530814182375313} - - component: {fileID: 6852530814182375318} - - component: {fileID: 6852530814182375317} - m_Layer: 0 - m_Name: Cylinder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &6852530814182375316 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6852530814182375312} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -2, y: 1, 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!33 &6852530814182375315 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6852530814182375312} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &6852530814182375314 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6852530814182375312} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 439a10ee8f8d14040be9003239449741, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!136 &6852530814182375313 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6852530814182375312} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &6852530814182375318 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6852530814182375312} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: 12a4c14e672c00b4b840f937d824b890 - m_SceneId: 0 ---- !u!114 &6852530814182375317 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6852530814182375312} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1731d8de2d0c84333b08ebe1e79f4118, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - visRange: 5 - visUpdateInterval: 0.1 - checkMethod: 0 - forceHidden: 0 - castLayers: - serializedVersion: 2 - m_Bits: 512 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab deleted file mode 100644 index 41e8ab9..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab +++ /dev/null @@ -1,235 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &5815001218983416211 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3254954141432383832} - - component: {fileID: 1800893346221236401} - - component: {fileID: 136369082707552984} - m_Layer: 0 - m_Name: Visor - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3254954141432383832 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5815001218983416211} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0.39999998, z: 0.505} - m_LocalScale: {x: 0.5, y: 0.099999994, z: 0.19999999} - m_Children: [] - m_Father: {fileID: 5328458565928408179} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &1800893346221236401 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5815001218983416211} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &136369082707552984 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5815001218983416211} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 4294967295 - m_RendererPriority: 0 - m_Materials: - - {fileID: 10303, 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_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!1 &8872462076811691049 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5328458565928408179} - - component: {fileID: 7482234573209362796} - - component: {fileID: 8972496075962964235} - - component: {fileID: 8993127209816276930} - - component: {fileID: 8537344390966522168} - - component: {fileID: 8704659178864205755} - - component: {fileID: 887491563423388292} - m_Layer: 9 - m_Name: Player - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5328458565928408179 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1.08, z: -20} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 3254954141432383832} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &7482234573209362796 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &8972496075962964235 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 792117fe9a386a8489e8010bec746339, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!143 &8993127209816276930 -CharacterController: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Height: 2 - m_Radius: 0.5 - m_SlopeLimit: 45 - m_StepOffset: 0.3 - m_SkinWidth: 0.08 - m_MinMoveDistance: 0.001 - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &8537344390966522168 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 1 - m_AssetId: a5bdca0a2315d43499be7dcef473fbc7 - m_SceneId: 0 ---- !u!114 &8704659178864205755 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e8f68561248aaca4fb96847ce24742ee, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0 - moveSpeed: 8 - turnSpeedAccel: 5 - turnSpeedDecel: 5 - maxTurnSpeed: 150 - jumpSpeed: 0 - jumpFactor: 0.025 - horizontal: 0 - vertical: 0 - turn: 0 - isGrounded: 1 - isFalling: 0 ---- !u!114 &887491563423388292 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8872462076811691049} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0 - compressRotation: 1 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab.meta deleted file mode 100644 index b91d19d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Player.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: a5bdca0a2315d43499be7dcef473fbc7 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab deleted file mode 100644 index ae30f8f..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab +++ /dev/null @@ -1,132 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &855244094988030905 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 855244094988030909} - - component: {fileID: 855244094988030906} - - component: {fileID: 855244094988030907} - - component: {fileID: 855244094988030904} - - component: {fileID: 855244094988030911} - - component: {fileID: 855244094988030908} - m_Layer: 0 - m_Name: Sphere - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &855244094988030909 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 855244094988030905} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 2, y: 1, z: 0} - m_LocalScale: {x: 2, y: 2, z: 2} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &855244094988030906 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 855244094988030905} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &855244094988030907 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 855244094988030905} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 58936713efca1ec488624ee297b5d687, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!135 &855244094988030904 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 855244094988030905} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!114 &855244094988030911 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 855244094988030905} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: f6d08eb9a8e35d84fa30a7e3ae64181a - m_SceneId: 0 ---- !u!114 &855244094988030908 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 855244094988030905} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1731d8de2d0c84333b08ebe1e79f4118, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - visRange: 5 - visUpdateInterval: 0.1 - checkMethod: 0 - forceHidden: 0 - castLayers: - serializedVersion: 2 - m_Bits: 512 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab.meta deleted file mode 100644 index 0fb6a41..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Sphere.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: f6d08eb9a8e35d84fa30a7e3ae64181a -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab deleted file mode 100644 index 6d7aa37..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab +++ /dev/null @@ -1,599 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &160176457 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 160176456} - - component: {fileID: 160176460} - - component: {fileID: 160176459} - - component: {fileID: 160176458} - - component: {fileID: 160176461} - - component: {fileID: 160176462} - m_Layer: 0 - m_Name: Tank - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &160176456 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 160176457} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -20, y: 0, z: -20} - m_LocalScale: {x: 5, y: 5, z: 5} - m_Children: - - {fileID: 3234001708628876000} - - {fileID: 1042389410631263445} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!95 &160176460 -Animator: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 160176457} - m_Enabled: 1 - m_Avatar: {fileID: 9000000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Controller: {fileID: 9100000, guid: e0dbc8b2f2711a54f9b7ed1358a4c6af, type: 2} - m_CullingMode: 1 - m_UpdateMode: 0 - m_ApplyRootMotion: 0 - m_LinearVelocityBlending: 0 - m_WarningMessage: - m_HasTransformHierarchy: 1 - m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 ---- !u!114 &160176459 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 160176457} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: ab222ed73ada1ac4ba2f61e843d7627c - m_SceneId: 0 ---- !u!114 &160176458 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 160176457} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 1731d8de2d0c84333b08ebe1e79f4118, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - visRange: 10 - visUpdateInterval: 0.1 - checkMethod: 0 - forceHidden: 0 - castLayers: - serializedVersion: 2 - m_Bits: 512 ---- !u!114 &160176461 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 160176457} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7f6f3bf89aa97405989c802ba270f815, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - animator: {fileID: 160176460} ---- !u!114 &160176462 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 160176457} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7a25c54cd35eb284eb6b8ed19cf60443, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - rotation: {x: 0, y: 0, z: 0, w: 0} - turnSpeed: 0.1 ---- !u!1 &489699669850839237 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6048638457609172120} - m_Layer: 0 - m_Name: Wheel_Rear_L_end - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6048638457609172120 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 489699669850839237} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 0.0021921142, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 5371032128924763904} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &739025013192983599 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1766344861363284577} - m_Layer: 0 - m_Name: Wheel_Middle_L - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1766344861363284577 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 739025013192983599} - m_LocalRotation: {x: -0.5, y: 0.5, z: 0.49999994, w: 0.50000006} - m_LocalPosition: {x: -0, y: 0.0011627917, z: 0.0000000010728836} - m_LocalScale: {x: 1, y: 0.99999994, z: 1} - m_Children: - - {fileID: 9163197381092130014} - m_Father: {fileID: 847897825935598517} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1014401586714983030 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7755980514232685276} - m_Layer: 0 - m_Name: Turret - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7755980514232685276 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1014401586714983030} - m_LocalRotation: {x: 0, y: -0.000000119209275, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 0.0010293524, z: 0} - m_LocalScale: {x: 1, y: 0.99999994, z: 1} - m_Children: - - {fileID: 1517159280684637724} - m_Father: {fileID: 1703734463393124925} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1218215768088827738 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5371032128924763904} - m_Layer: 0 - m_Name: Wheel_Rear_L - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5371032128924763904 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1218215768088827738} - m_LocalRotation: {x: -0.5, y: 0.5, z: 0.49999994, w: 0.50000006} - m_LocalPosition: {x: -0, y: 0.0011627917, z: -0.0026999994} - m_LocalScale: {x: 1, y: 0.99999994, z: 1} - m_Children: - - {fileID: 6048638457609172120} - m_Father: {fileID: 847897825935598517} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &2620739405153902494 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7509984371715941402} - m_Layer: 0 - m_Name: Barrel_end - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7509984371715941402 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2620739405153902494} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 0.0063666296, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1517159280684637724} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &4300763244710219681 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 3234001708628876000} - - component: {fileID: 2715744559599808281} - - component: {fileID: 4300454509241183841} - m_Layer: 0 - m_Name: Recon_Tank - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &3234001708628876000 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4300763244710219681} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} - m_Children: [] - m_Father: {fileID: 160176456} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!137 &2715744559599808281 -SkinnedMeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4300763244710219681} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 2e67e42170aa64aa9a33424f8045ac89, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - serializedVersion: 2 - m_Quality: 0 - m_UpdateWhenOffscreen: 0 - m_SkinnedMotionVectors: 1 - m_Mesh: {fileID: 4300000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Bones: - - {fileID: 847897825935598517} - - {fileID: 1703734463393124925} - - {fileID: 7755980514232685276} - - {fileID: 1517159280684637724} - - {fileID: 7124543900430328667} - - {fileID: 1766344861363284577} - - {fileID: 5371032128924763904} - m_BlendShapeWeights: [] - m_RootBone: {fileID: 847897825935598517} - m_AABB: - m_Center: {x: 0, y: 0.0041689305, z: 0.0018957809} - m_Extent: {x: 0.0028734768, y: 0.004266139, z: 0.006842426} - m_DirtyAABB: 0 ---- !u!64 &4300454509241183841 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4300763244710219681} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 4300000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} ---- !u!1 &4728827432125738153 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 847897825935598517} - m_Layer: 0 - m_Name: Root - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &847897825935598517 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4728827432125738153} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1703734463393124925} - - {fileID: 7124543900430328667} - - {fileID: 1766344861363284577} - - {fileID: 5371032128924763904} - m_Father: {fileID: 1042389410631263445} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5311698857118067376 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7124543900430328667} - m_Layer: 0 - m_Name: Wheel_Front_L - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7124543900430328667 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5311698857118067376} - m_LocalRotation: {x: -0.5, y: 0.5, z: 0.49999994, w: 0.50000006} - m_LocalPosition: {x: -0, y: 0.0011627917, z: 0.0027000008} - m_LocalScale: {x: 1, y: 0.99999994, z: 1} - m_Children: - - {fileID: 5752532462053122769} - m_Father: {fileID: 847897825935598517} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &5804173475777962202 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1703734463393124925} - m_Layer: 0 - m_Name: Chasis - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1703734463393124925 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5804173475777962202} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 0.0015, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 7755980514232685276} - m_Father: {fileID: 847897825935598517} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &6536093484198670798 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1517159280684637724} - m_Layer: 0 - m_Name: Barrel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1517159280684637724 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6536093484198670798} - m_LocalRotation: {x: 0.00000017845065, y: 0.7071068, z: 0.7071067, w: 0.000000009863265} - m_LocalPosition: {x: 5.6542865e-10, y: 0.0015793034, z: 0.00237158} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 7509984371715941402} - m_Father: {fileID: 7755980514232685276} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7509875135952387032 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1042389410631263445} - m_Layer: 0 - m_Name: Recon_Tank_Rig - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1042389410631263445 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7509875135952387032} - m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071067} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 100, y: 100, z: 100} - m_Children: - - {fileID: 847897825935598517} - m_Father: {fileID: 160176456} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &7895955422738415095 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5752532462053122769} - m_Layer: 0 - m_Name: Wheel_Front_L_end - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5752532462053122769 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 7895955422738415095} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 0.0021921142, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 7124543900430328667} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &8824818431311294599 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 9163197381092130014} - m_Layer: 0 - m_Name: Wheel_Middle_L_end - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &9163197381092130014 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8824818431311294599} - m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0, y: 0.0021921142, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1766344861363284577} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab.meta deleted file mode 100644 index 9c53dff..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Tank.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: ab222ed73ada1ac4ba2f61e843d7627c -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md deleted file mode 100644 index 6c708c2..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# Additive Scenes Example - -IMPORTANT: Make sure you have a layer in project settings called Player for this example to work well. - -In Build Settings, remove all scenes and add all of the scenes from the Examples\AdditiveScenes\Scenes folder in the following order: -- MainScene -- SubScene - -Open the MainScene in the Editor and make sure the Sub Scenes list in the Network scene object contains the SubScene scene. This is already setup by default, but if the MainScene was opened and saved before putting the scenes in the Build Settings list, the Sub Scenes list may be cleared accidentally. - -File -> Build and Run - -Start up to 3 built instances: These will all be client players. - -Press Play in the Editor and click LAN Host in the editor -- This will be the host and the 1st player of up to 4. You can also use LAN Server if you prefer. - -Click LAN Client in the built instances. -- WASDQE keys to move & turn your player capsule. -- There are objects in the corners of the scene hidden by Proximity Checkers. -- The big area in the middle is where the subscene will be loaded when you get near the shelter. -- There are also networked objects inside the subscene, also with Proximity Checkers. -- Since subscenes are only loaded for individual clients, other clients that are outside the middle Zone won't see what those in the subscene can see. -- If you play a built instance as Host or Server and play as client in the editor, you'll see the subscene content load and unload in the hierarchy as you move in and out of the middle Zone. diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes.meta deleted file mode 100644 index 79b44f1..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e989860f377e7764bb7787086ef44ea4 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity deleted file mode 100644 index d4735a2..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity +++ /dev/null @@ -1,2093 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.4366757, g: 0.48427194, b: 0.5645252, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 10 - m_AtlasSize: 512 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 0 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 256 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 112000004, guid: b287b2046ddc6af4b9ddc48ab35ca3cb, - type: 2} - m_UseShadowmask: 0 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &34755345 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 34755346} - - component: {fileID: 34755348} - - component: {fileID: 34755347} - m_Layer: 0 - m_Name: VisibleRangeCapsule - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &34755346 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 34755345} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 20, y: 1, z: -20} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 47225731} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &34755347 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 34755345} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &34755348 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 34755345} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &47225730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 47225731} - m_Layer: 0 - m_Name: ProximityVisualizers - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &47225731 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 47225730} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1727677799} - - {fileID: 62078680} - - {fileID: 34755346} - - {fileID: 589935541} - m_Father: {fileID: 909502395} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &62078679 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 62078680} - - component: {fileID: 62078682} - - component: {fileID: 62078681} - m_Layer: 0 - m_Name: VisibleRangeCylinder - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &62078680 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 62078679} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 20, y: 1, z: 20} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 47225731} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &62078681 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 62078679} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &62078682 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 62078679} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &159607907 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 159607911} - - component: {fileID: 159607908} - - component: {fileID: 159607912} - - component: {fileID: 159607913} - m_Layer: 9 - m_Name: Zone - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!135 &159607908 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 159607907} - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 15 - m_Center: {x: 0, y: 0, z: 0} ---- !u!4 &159607911 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 159607907} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &159607912 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 159607907} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 1 - localPlayerAuthority: 0 - m_AssetId: - m_SceneId: 1834901131 ---- !u!114 &159607913 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 159607907} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 884ed76587eb5854abe6b428b791fdcd, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - subScene: SubScene ---- !u!1001 &160176455 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 909502395} - m_Modifications: - - target: {fileID: 160176457, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_Name - value: reconTank - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalPosition.x - value: -20 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalPosition.z - value: -20 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalRotation.y - value: 0.38268343 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalRotation.w - value: 0.92387956 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 45 - objectReference: {fileID: 0} - - target: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 160176459, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_AssetId - value: ab222ed73ada1ac4ba2f61e843d7627c - objectReference: {fileID: 0} - - target: {fileID: 160176459, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_SceneId - value: 705590806 - objectReference: {fileID: 0} - - target: {fileID: 160176459, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - propertyPath: m_LocalPlayerAuthority - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} ---- !u!4 &160176456 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 160176456, guid: ab222ed73ada1ac4ba2f61e843d7627c, - type: 3} - m_PrefabInstance: {fileID: 160176455} - m_PrefabAsset: {fileID: 0} ---- !u!1 &178547537 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 178547538} - - component: {fileID: 178547539} - m_Layer: 0 - m_Name: StartPos - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &178547538 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178547537} - m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0, y: 1.08, z: 20} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1172568542} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} ---- !u!114 &178547539 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 178547537} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &534669902 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 534669905} - - component: {fileID: 534669904} - - component: {fileID: 534669903} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &534669903 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 534669902} - m_Enabled: 1 ---- !u!20 &534669904 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 534669902} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &534669905 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 534669902} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 50, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!1 &589935540 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 589935541} - - component: {fileID: 589935543} - - component: {fileID: 589935542} - m_Layer: 0 - m_Name: VisibleRangeTank - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &589935541 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589935540} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -20, y: 1, z: -20} - m_LocalScale: {x: 20, y: 20, z: 20} - m_Children: [] - m_Father: {fileID: 47225731} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &589935542 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589935540} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &589935543 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589935540} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &612284967 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 612284968} - - component: {fileID: 612284971} - - component: {fileID: 612284970} - - component: {fileID: 612284969} - m_Layer: 0 - m_Name: Pillar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &612284968 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 612284967} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 8, y: 3, z: -8} - m_LocalScale: {x: 1, y: 3, z: 1} - m_Children: [] - m_Father: {fileID: 1608696205} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!136 &612284969 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 612284967} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!23 &612284970 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 612284967} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: aef230244d219314fb8453f0365b8176, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &612284971 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 612284967} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &652875644 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 652875645} - - component: {fileID: 652875646} - m_Layer: 0 - m_Name: StartPos - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &652875645 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 652875644} - m_LocalRotation: {x: 0, y: 0.7071068, z: -0, w: -0.7071068} - m_LocalPosition: {x: 20, y: 1.08, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1172568542} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 270, z: 0} ---- !u!114 &652875646 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 652875644} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &691846569 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 691846570} - - component: {fileID: 691846571} - m_Layer: 0 - m_Name: StartPos - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &691846570 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 691846569} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1.08, z: -20} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1172568542} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &691846571 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 691846569} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &748207074 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 909502395} - m_Modifications: - - target: {fileID: 855244094988030905, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_Name - value: Sphere - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalPosition.x - value: -20 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalPosition.z - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.92387956 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.38268343 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 135 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030911, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_AssetId - value: f6d08eb9a8e35d84fa30a7e3ae64181a - objectReference: {fileID: 0} - - target: {fileID: 855244094988030911, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_SceneId - value: 529586728 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, type: 3} ---- !u!4 &748207075 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - m_PrefabInstance: {fileID: 748207074} - m_PrefabAsset: {fileID: 0} ---- !u!1 &794922164 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 794922165} - - component: {fileID: 794922168} - - component: {fileID: 794922167} - - component: {fileID: 794922166} - m_Layer: 0 - m_Name: Roof - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &794922165 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 794922164} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 6, z: 0} - m_LocalScale: {x: 20, y: 0.2, z: 20} - m_Children: [] - m_Father: {fileID: 1608696205} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!65 &794922166 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 794922164} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!23 &794922167 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 794922164} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: aef230244d219314fb8453f0365b8176, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &794922168 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 794922164} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &856402103 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 856402104} - - component: {fileID: 856402107} - - component: {fileID: 856402106} - - component: {fileID: 856402105} - m_Layer: 0 - m_Name: Pillar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &856402104 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 856402103} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -8, y: 3, z: 8} - m_LocalScale: {x: 1, y: 3, z: 1} - m_Children: [] - m_Father: {fileID: 1608696205} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!136 &856402105 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 856402103} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!23 &856402106 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 856402103} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: aef230244d219314fb8453f0365b8176, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &856402107 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 856402103} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &901271862 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 909502395} - m_Modifications: - - target: {fileID: 6852530814182375312, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_Name - value: Cylinder - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalPosition.x - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalPosition.z - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.9238796 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.w - value: -0.38268325 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 225 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375318, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_SceneId - value: 568164022 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 12a4c14e672c00b4b840f937d824b890, type: 3} ---- !u!4 &901271863 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - m_PrefabInstance: {fileID: 901271862} - m_PrefabAsset: {fileID: 0} ---- !u!1 &909502394 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 909502395} - m_Layer: 0 - m_Name: Prefabs - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &909502395 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 909502394} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 160176456} - - {fileID: 901271863} - - {fileID: 748207075} - - {fileID: 1284471874} - - {fileID: 47225731} - m_Father: {fileID: 0} - m_RootOrder: 8 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1047741290 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1047741291} - - component: {fileID: 1047741294} - - component: {fileID: 1047741293} - - component: {fileID: 1047741292} - m_Layer: 0 - m_Name: Pillar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1047741291 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1047741290} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -8, y: 3, z: -8} - m_LocalScale: {x: 1, y: 3, z: 1} - m_Children: [] - m_Father: {fileID: 1608696205} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!136 &1047741292 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1047741290} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!23 &1047741293 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1047741290} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: aef230244d219314fb8453f0365b8176, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1047741294 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1047741290} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1172568541 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1172568542} - m_Layer: 0 - m_Name: StartPositions - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1172568542 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1172568541} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 178547538} - - {fileID: 1816951100} - - {fileID: 652875645} - - {fileID: 691846570} - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &1284471874 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - m_PrefabInstance: {fileID: 1076878375580925077} - m_PrefabAsset: {fileID: 0} ---- !u!1 &1405375878 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1405375880} - - component: {fileID: 1405375879} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1405375879 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1405375878} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 0.9622642, g: 0.90969414, b: 0.748932, a: 1} - m_Intensity: 0.8 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 0.5 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1405375880 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1405375878} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 1, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!1 &1461518024 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1461518032} - - component: {fileID: 1461518031} - - component: {fileID: 1461518030} - - component: {fileID: 1461518029} - - component: {fileID: 1461518028} - - component: {fileID: 1461518027} - - component: {fileID: 1461518026} - - component: {fileID: 1461518025} - m_Layer: 0 - m_Name: Quad - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!65 &1461518025 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 0.01, z: 3} - m_Center: {x: 0, y: -0.5, z: -1.5} ---- !u!65 &1461518026 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 0.01, z: 3} - m_Center: {x: 0, y: 0.5, z: -1.5} ---- !u!65 &1461518027 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.01, y: 1, z: 3} - m_Center: {x: 0.5, y: 0, z: -1.5} ---- !u!65 &1461518028 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.01, y: 1, z: 3} - m_Center: {x: -0.5, y: 0, z: -1.5} ---- !u!64 &1461518029 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &1461518030 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 6eb3f3ba66756364d8b94e662e7e8af5, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1461518031 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1461518032 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1461518024} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 50, y: 50, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!1 &1462312433 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1462312434} - - component: {fileID: 1462312437} - - component: {fileID: 1462312436} - - component: {fileID: 1462312435} - m_Layer: 0 - m_Name: Pillar - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1462312434 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1462312433} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 8, y: 3, z: 8} - m_LocalScale: {x: 1, y: 3, z: 1} - m_Children: [] - m_Father: {fileID: 1608696205} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!136 &1462312435 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1462312433} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - m_Radius: 0.5000001 - m_Height: 2 - m_Direction: 1 - m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} ---- !u!23 &1462312436 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1462312433} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: aef230244d219314fb8453f0365b8176, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1462312437 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1462312433} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1608696204 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1608696205} - m_Layer: 0 - m_Name: Shelter - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1608696205 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1608696204} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1047741291} - - {fileID: 612284968} - - {fileID: 1462312434} - - {fileID: 856402104} - - {fileID: 794922165} - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1630383476 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1630383479} - - component: {fileID: 1630383478} - - component: {fileID: 1630383477} - m_Layer: 0 - m_Name: ZoneVisualizer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!23 &1630383477 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1630383476} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1630383478 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1630383476} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1630383479 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1630383476} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 30, y: 30, z: 30} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1661834277 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1661834279} - - component: {fileID: 1661834281} - - component: {fileID: 1661834278} - - component: {fileID: 1661834280} - m_Layer: 0 - m_Name: Network - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!114 &1661834278 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1661834277} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 34d1daf9e7dbcb64aa647cb332054ea6, type: 3} - m_Name: - m_EditorClassIdentifier: - dontDestroyOnLoad: 0 - runInBackground: 1 - startOnHeadless: 1 - serverTickRate: 30 - showDebugMessages: 0 - offlineScene: - onlineScene: - transport: {fileID: 1661834280} - networkAddress: localhost - maxConnections: 4 - authenticator: {fileID: 0} - playerPrefab: {fileID: 8872462076811691049, guid: a5bdca0a2315d43499be7dcef473fbc7, - type: 3} - autoCreatePlayer: 1 - playerSpawnMethod: 1 - spawnPrefabs: - - {fileID: 1076878374699499732, guid: e1971f4a8c7661546bc509b44bd91b80, type: 3} - - {fileID: 5623359707189648430, guid: 4ff300cf6bb3c6342a9552c4f18788c8, type: 3} - - {fileID: 6852530814182375312, guid: 12a4c14e672c00b4b840f937d824b890, type: 3} - - {fileID: 855244094988030905, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, type: 3} - - {fileID: 160176457, guid: ab222ed73ada1ac4ba2f61e843d7627c, type: 3} - subScenes: - - SubScene ---- !u!4 &1661834279 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1661834277} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1661834280 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1661834277} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7424c1070fad4ba2a7a96b02fbeb4bb, type: 3} - m_Name: - m_EditorClassIdentifier: - OnClientConnected: - m_PersistentCalls: - m_Calls: [] - OnClientDataReceived: - m_PersistentCalls: - m_Calls: [] - OnClientError: - m_PersistentCalls: - m_Calls: [] - OnClientDisconnected: - m_PersistentCalls: - m_Calls: [] - OnServerConnected: - m_PersistentCalls: - m_Calls: [] - OnServerDataReceived: - m_PersistentCalls: - m_Calls: [] - OnServerError: - m_PersistentCalls: - m_Calls: [] - OnServerDisconnected: - m_PersistentCalls: - m_Calls: [] - port: 7777 - NoDelay: 1 - serverMaxMessageSize: 16384 - clientMaxMessageSize: 16384 ---- !u!114 &1661834281 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1661834277} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6442dc8070ceb41f094e44de0bf87274, type: 3} - m_Name: - m_EditorClassIdentifier: - showGUI: 1 - offsetX: 0 - offsetY: 0 ---- !u!1 &1727677796 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1727677799} - - component: {fileID: 1727677798} - - component: {fileID: 1727677797} - m_Layer: 0 - m_Name: VisibleRangeSphere - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!23 &1727677797 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727677796} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1727677798 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727677796} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1727677799 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1727677796} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -20, y: 1, z: 20} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 47225731} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1816951099 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1816951100} - - component: {fileID: 1816951101} - m_Layer: 0 - m_Name: StartPos - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1816951100 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1816951099} - m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -20, y: 1.08, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1172568542} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!114 &1816951101 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1816951099} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &1076878375580925077 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 909502395} - m_Modifications: - - target: {fileID: 1076878374699499732, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_Name - value: Capsule - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499732, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_StaticEditorFlags - value: 4294967295 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalPosition.x - value: 20 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalPosition.z - value: -20 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.3826836 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.w - value: -0.92387944 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 315 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2648107611936813301, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_SceneId - value: 2061538488 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: e1971f4a8c7661546bc509b44bd91b80, type: 3} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity.meta deleted file mode 100644 index a231750..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/MainScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7a0eee2f518e9dc4fb628d96dc452faf -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity deleted file mode 100644 index a1b2bf5..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity +++ /dev/null @@ -1,798 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.37311953, g: 0.38074014, b: 0.3587274, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 112000002, guid: b287b2046ddc6af4b9ddc48ab35ca3cb, - type: 2} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &21610633 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 21610634} - - component: {fileID: 21610636} - - component: {fileID: 21610635} - m_Layer: 0 - m_Name: VisibleRange - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &21610634 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21610633} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 3, y: 1, z: -3} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 1690140971} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &21610635 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21610633} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &21610636 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 21610633} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &174598777 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 1076878374699499732, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_Name - value: Capsule - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499732, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_StaticEditorFlags - value: 4294967295 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalPosition.x - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalPosition.z - value: -3 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.92387956 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.38268343 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_RootOrder - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 135 - objectReference: {fileID: 0} - - target: {fileID: 1076878374699499735, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 2648107611936813301, guid: e1971f4a8c7661546bc509b44bd91b80, - type: 3} - propertyPath: m_SceneId - value: 15452677 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: e1971f4a8c7661546bc509b44bd91b80, type: 3} ---- !u!1 &222935521 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 222935522} - - component: {fileID: 222935524} - - component: {fileID: 222935523} - m_Layer: 0 - m_Name: VisibleRange - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &222935522 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 222935521} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -3, y: 1, z: 3} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 1690140971} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &222935523 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 222935521} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &222935524 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 222935521} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &507729669 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 507729670} - - component: {fileID: 507729672} - - component: {fileID: 507729671} - m_Layer: 0 - m_Name: VisibleRange - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &507729670 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 507729669} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 3, y: 1, z: 3} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 1690140971} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &507729671 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 507729669} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &507729672 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 507729669} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1690140970 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1690140971} - m_Layer: 0 - m_Name: ProximityVisualizers - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1690140971 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1690140970} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1722279649} - - {fileID: 222935522} - - {fileID: 507729670} - - {fileID: 21610634} - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1722279648 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1722279649} - - component: {fileID: 1722279651} - - component: {fileID: 1722279650} - m_Layer: 0 - m_Name: VisibleRange - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!4 &1722279649 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1722279648} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -3, y: 1, z: -3} - m_LocalScale: {x: 10, y: 10, z: 10} - m_Children: [] - m_Father: {fileID: 1690140971} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &1722279650 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1722279648} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: a7c679cf124f7ae46a0291ea35848554, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!33 &1722279651 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1722279648} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &855244095324068329 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 855244094988030905, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_Name - value: Sphere - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalPosition.x - value: -3 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalPosition.z - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.3826836 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalRotation.w - value: -0.92387944 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_RootOrder - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 315 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030909, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244094988030911, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_SceneId - value: 11893259 - objectReference: {fileID: 0} - - target: {fileID: 855244096231524078, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_CastShadows - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244096231524078, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_ReceiveShadows - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 855244096231524078, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, - type: 3} - propertyPath: m_ReflectionProbeUsage - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: f6d08eb9a8e35d84fa30a7e3ae64181a, type: 3} ---- !u!1001 &5623359707641229621 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 5623359707189648430, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_Name - value: Cube - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648430, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_Icon - value: - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalPosition.x - value: -3 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalPosition.z - value: -3 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.9238796 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalRotation.w - value: -0.38268325 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 225 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648426, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5623359707189648404, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_SceneId - value: 4733130 - objectReference: {fileID: 0} - - target: {fileID: 5623359706949397433, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_CastShadows - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5623359706949397433, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_ReceiveShadows - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 5623359706949397433, guid: 4ff300cf6bb3c6342a9552c4f18788c8, - type: 3} - propertyPath: m_ReflectionProbeUsage - value: 0 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 4ff300cf6bb3c6342a9552c4f18788c8, type: 3} ---- !u!1001 &6852530815080958608 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 6852530814182375312, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_Name - value: Cylinder - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalPosition.x - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalPosition.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalPosition.z - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.38268343 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.92387956 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 45 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375316, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375318, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_AssetId - value: 12a4c14e672c00b4b840f937d824b890 - objectReference: {fileID: 0} - - target: {fileID: 6852530814182375318, guid: 12a4c14e672c00b4b840f937d824b890, - type: 3} - propertyPath: m_SceneId - value: 4633990 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: 12a4c14e672c00b4b840f937d824b890, type: 3} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity.meta deleted file mode 100644 index 94a2050..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scenes/SubScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 7f4fd683fc6d866418c95f99977533a6 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts.meta deleted file mode 100644 index cb97b32..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: f9c36b0deb5d9b245b7c97e3d6eeed29 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs deleted file mode 100644 index 14f061d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs +++ /dev/null @@ -1,55 +0,0 @@ -using UnityEngine; -using System.Collections; -using UnityEngine.SceneManagement; - -namespace Mirror.Examples.Additive -{ - public class AdditiveNetworkManager : NetworkManager - { - [Scene] - [Tooltip("Add all sub-scenes to this list")] - public string[] subScenes; - - public override void OnStartServer() - { - base.OnStartServer(); - Debug.Log("Loading Scenes"); - - // load all subscenes on the server only - foreach (string sceneName in subScenes) - { - SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive); - Debug.LogFormat("Loaded {0}", sceneName); - } - } - - public override void OnStopServer() - { - Debug.Log("Stopping Server"); - base.OnStopServer(); - UnloadScenes(); - } - - public override void OnStopClient() - { - Debug.Log("Stopping Client"); - base.OnStopClient(); - UnloadScenes(); - } - - void UnloadScenes() - { - Debug.Log("Unloading Scenes"); - foreach (string sceneName in subScenes) - if (SceneManager.GetSceneByName(sceneName).IsValid()) - StartCoroutine(UnloadScene(sceneName)); - } - - IEnumerator UnloadScene(string sceneName) - { - yield return SceneManager.UnloadSceneAsync(sceneName); - yield return Resources.UnloadUnusedAssets(); - Debug.LogFormat("Unloaded {0}", sceneName); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs.meta deleted file mode 100644 index 0df3fb3..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/AdditiveNetworkManager.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 34d1daf9e7dbcb64aa647cb332054ea6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs deleted file mode 100644 index 741bfe8..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs +++ /dev/null @@ -1,120 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.Additive -{ - [RequireComponent(typeof(CharacterController))] - public class PlayerController : NetworkBehaviour - { - public override void OnStartServer() - { - base.OnStartServer(); - playerColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f); - } - - [SyncVar(hook = nameof(SetColor))] - Color playerColor = Color.black; - - // Unity clones the material when GetComponent().material is called - // Cache it here and destroy it in OnDestroy to prevent a memory leak - Material cachedMaterial; - - void SetColor(Color color) - { - if (cachedMaterial == null) cachedMaterial = GetComponent().material; - cachedMaterial.color = color; - } - - void OnDisable() - { - if (isLocalPlayer) - { - Camera.main.transform.SetParent(null); - Camera.main.transform.localPosition = new Vector3(0f, 50f, 0f); - Camera.main.transform.localEulerAngles = new Vector3(90f, 0f, 0f); - } - } - - void OnDestroy() - { - Destroy(cachedMaterial); - } - - CharacterController characterController; - - public override void OnStartLocalPlayer() - { - base.OnStartLocalPlayer(); - - characterController = GetComponent(); - - Camera.main.transform.SetParent(transform); - Camera.main.transform.localPosition = new Vector3(0f, 3f, -8f); - Camera.main.transform.localEulerAngles = new Vector3(10f, 0f, 0f); - } - - [Header("Movement Settings")] - public float moveSpeed = 8f; - public float turnSpeedAccel = 5f; - public float turnSpeedDecel = 5f; - public float maxTurnSpeed = 150f; - - [Header("Jump Settings")] - public float jumpSpeed = 0f; - public float jumpFactor = .025F; - - [Header("Diagnostics")] - public float horizontal = 0f; - public float vertical = 0f; - public float turn = 0f; - public bool isGrounded = true; - public bool isFalling = false; - - void Update() - { - if (!isLocalPlayer) return; - - horizontal = Input.GetAxis("Horizontal"); - vertical = Input.GetAxis("Vertical"); - - if (Input.GetKey(KeyCode.Q) && (turn > -maxTurnSpeed)) - turn -= turnSpeedAccel; - else if (Input.GetKey(KeyCode.E) && (turn < maxTurnSpeed)) - turn += turnSpeedAccel; - else if (turn > turnSpeedDecel) - turn -= turnSpeedDecel; - else if (turn < -turnSpeedDecel) - turn += turnSpeedDecel; - else - turn = 0f; - - if (!isFalling && Input.GetKey(KeyCode.Space) && (isGrounded || jumpSpeed < 1)) - jumpSpeed += jumpFactor; - else if (isGrounded) - isFalling = false; - else - { - isFalling = true; - jumpSpeed = 0; - } - } - - void FixedUpdate() - { - if (!isLocalPlayer || characterController == null) return; - - transform.Rotate(0f, turn * Time.fixedDeltaTime, 0f); - - Vector3 direction = new Vector3(horizontal, jumpSpeed, vertical); - direction = Vector3.ClampMagnitude(direction, 1f); - direction = transform.TransformDirection(direction); - direction *= moveSpeed; - - if (jumpSpeed > 0) - characterController.Move(direction * Time.fixedDeltaTime); - else - characterController.SimpleMove(direction); - - isGrounded = characterController.isGrounded; - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs.meta deleted file mode 100644 index 5deced6..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/PlayerController.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e8f68561248aaca4fb96847ce24742ee -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs deleted file mode 100644 index 155d7ce..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs +++ /dev/null @@ -1,59 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.Additive -{ - // This script demonstrates the NetworkAnimator and how to leverage - // the built-in observers system to track players. - // Note that all ProximityCheckers should be restricted to the Player layer. - public class ShootingTankBehaviour : NetworkBehaviour - { - [SyncVar] - public Quaternion rotation; - - NetworkAnimator networkAnimator; - - [ServerCallback] - void Start() - { - networkAnimator = GetComponent(); - } - - [Range(0, 1)] - public float turnSpeed = 0.1f; - - void Update() - { - if (isServer && netIdentity.observers.Count > 0) - ShootNearestPlayer(); - - if (isClient) - transform.rotation = Quaternion.Slerp(transform.rotation, rotation, turnSpeed); - } - - [Server] - void ShootNearestPlayer() - { - GameObject target = null; - float distance = 100f; - - foreach (NetworkConnection networkConnection in netIdentity.observers.Values) - { - GameObject tempTarget = networkConnection.identity.gameObject; - float tempDistance = Vector3.Distance(tempTarget.transform.position, transform.position); - - if (target == null || distance > tempDistance) - { - target = tempTarget; - distance = tempDistance; - } - } - - if (target != null) - { - transform.LookAt(target.transform.position + Vector3.down); - rotation = transform.rotation; - networkAnimator.SetTrigger("Fire"); - } - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs.meta deleted file mode 100644 index 90771ab..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ShootingTankBehaviour.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7a25c54cd35eb284eb6b8ed19cf60443 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs deleted file mode 100644 index b4b0118..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs +++ /dev/null @@ -1,34 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.Additive -{ - // This script is attached to a scene object called Zone that is on the Player layer and has: - // - Sphere Collider with isTrigger = true - // - Network Identity with Server Only checked - // These OnTrigger events only run on the server and will only send a message to the player - // that entered the Zone to load the subscene assigned to the subscene property. - public class ZoneHandler : NetworkBehaviour - { - [Scene] - [Tooltip("Assign the sub-scene to load for this zone")] - public string subScene; - - [Server] - void OnTriggerEnter(Collider other) - { - Debug.LogFormat("Loading {0}", subScene); - - NetworkIdentity networkIdentity = other.gameObject.GetComponent(); - NetworkServer.SendToClientOfPlayer(networkIdentity, new SceneMessage { sceneName = subScene, sceneOperation = SceneOperation.LoadAdditive }); - } - - [Server] - void OnTriggerExit(Collider other) - { - Debug.LogFormat("Unloading {0}", subScene); - - NetworkIdentity networkIdentity = other.gameObject.GetComponent(); - NetworkServer.SendToClientOfPlayer(networkIdentity, new SceneMessage { sceneName = subScene, sceneOperation = SceneOperation.UnloadAdditive }); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs.meta deleted file mode 100644 index 126d072..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Scripts/ZoneHandler.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 884ed76587eb5854abe6b428b791fdcd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic.meta deleted file mode 100644 index 653ea78..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0ea49fcefbc864e19a94091a170fc06c -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs.meta deleted file mode 100644 index 234c22a..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4f821a97809492a479cac0843442e245 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab deleted file mode 100644 index 5518f4d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab +++ /dev/null @@ -1,266 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1088833922664441133 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1088833922664441134} - - component: {fileID: 1088833922664441128} - - component: {fileID: 1088833922664441135} - m_Layer: 5 - m_Name: PlayerNameText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1088833922664441134 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833922664441133} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1088833923132447023} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 60, y: -15} - m_SizeDelta: {x: 120, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1088833922664441128 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833922664441133} - m_CullTransparentMesh: 0 ---- !u!114 &1088833922664441135 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833922664441133} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 22 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: Player 00 ---- !u!1 &1088833923132447022 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1088833923132447023} - - component: {fileID: 1088833923132446996} - - component: {fileID: 1088833923132447019} - - component: {fileID: 1088833923132447017} - - component: {fileID: 1088833923132447018} - m_Layer: 5 - m_Name: Player - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1088833923132447023 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833923132447022} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1088833922664441134} - - {fileID: 1088833924003616757} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 120, y: 60} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1088833923132446996 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833923132447022} - m_CullTransparentMesh: 0 ---- !u!114 &1088833923132447019 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833923132447022} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0} - m_RaycastTarget: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!114 &1088833923132447017 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833923132447022} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a472ac3ae1701d149861871cf416a46d, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - rectTransform: {fileID: 1088833923132447023} - image: {fileID: 1088833923132447019} - playerNameText: {fileID: 1088833922664441135} - playerDataText: {fileID: 1088833924003616759} ---- !u!114 &1088833923132447018 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833923132447022} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: 22f1fa3a0aff72b46a371f667bb4fb30 - m_SceneId: 0 ---- !u!1 &1088833924003616756 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1088833924003616757} - - component: {fileID: 1088833924003616752} - - component: {fileID: 1088833924003616759} - m_Layer: 5 - m_Name: PlayerDataText - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1088833924003616757 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833924003616756} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1088833923132447023} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 60, y: -45} - m_SizeDelta: {x: 120, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!222 &1088833924003616752 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833924003616756} - m_CullTransparentMesh: 0 ---- !u!114 &1088833924003616759 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1088833924003616756} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_FontData: - m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 22 - m_FontStyle: 0 - m_BestFit: 0 - m_MinSize: 2 - m_MaxSize: 40 - m_Alignment: 4 - m_AlignByGeometry: 0 - m_RichText: 1 - m_HorizontalOverflow: 1 - m_VerticalOverflow: 1 - m_LineSpacing: 1 - m_Text: 'Data: 000' diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab.meta deleted file mode 100644 index c6a8284..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Prefabs/Player.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 22f1fa3a0aff72b46a371f667bb4fb30 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md deleted file mode 100644 index 3bde055..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/README.md +++ /dev/null @@ -1,16 +0,0 @@ -# Basic Example - -This is a bare bones example of a running game with Network Manager and UI prefab players: - -1. Remove all scenes from Build Settings, then add the Example scene alone. - -2. Open the Example scene and build the project. - -3. In the editor, click Play, and LAN Host or LAN Server...it will be listening on port 7777. - - If you clicked LAN Host, the host player will appear as Player 00. - -4. Run one or more instances (up to 16 total players) of the built application. - -5. Click LAN Client on each instance. - -6. Now you will see all players in the editor and the clients, all with data being updated and synchronized. diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes.meta deleted file mode 100644 index 0c751c6..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 16f46473489d3364badc2f37c4db8634 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity deleted file mode 100644 index da694df..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity +++ /dev/null @@ -1,618 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &249891953 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 249891957} - - component: {fileID: 249891954} - - component: {fileID: 249891956} - - component: {fileID: 249891955} - m_Layer: 0 - m_Name: NetworkManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &249891954 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249891953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6442dc8070ceb41f094e44de0bf87274, type: 3} - m_Name: - m_EditorClassIdentifier: - showGUI: 1 - offsetX: 0 - offsetY: 0 ---- !u!114 &249891955 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249891953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7424c1070fad4ba2a7a96b02fbeb4bb, type: 3} - m_Name: - m_EditorClassIdentifier: - OnClientConnected: - m_PersistentCalls: - m_Calls: [] - OnClientDataReceived: - m_PersistentCalls: - m_Calls: [] - OnClientError: - m_PersistentCalls: - m_Calls: [] - OnClientDisconnected: - m_PersistentCalls: - m_Calls: [] - OnServerConnected: - m_PersistentCalls: - m_Calls: [] - OnServerDataReceived: - m_PersistentCalls: - m_Calls: [] - OnServerError: - m_PersistentCalls: - m_Calls: [] - OnServerDisconnected: - m_PersistentCalls: - m_Calls: [] - port: 7777 - NoDelay: 1 - serverMaxMessageSize: 16384 - clientMaxMessageSize: 16384 ---- !u!114 &249891956 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249891953} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8aab4c8111b7c411b9b92cf3dbc5bd4e, type: 3} - m_Name: - m_EditorClassIdentifier: - dontDestroyOnLoad: 0 - runInBackground: 1 - startOnHeadless: 0 - serverTickRate: 30 - showDebugMessages: 0 - offlineScene: - onlineScene: - transport: {fileID: 249891955} - networkAddress: localhost - maxConnections: 16 - authenticator: {fileID: 0} - playerPrefab: {fileID: 1088833923132447022, guid: 22f1fa3a0aff72b46a371f667bb4fb30, - type: 3} - autoCreatePlayer: 1 - playerSpawnMethod: 1 - spawnPrefabs: [] ---- !u!4 &249891957 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 249891953} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -10, y: 4, z: 5} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &288173824 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 288173827} - - component: {fileID: 288173826} - - component: {fileID: 288173825} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &288173825 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288173824} - m_Enabled: 1 ---- !u!20 &288173826 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288173824} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 2 - m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &288173827 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 288173824} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -1} - 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!1 &379082678 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 379082679} - - component: {fileID: 379082681} - - component: {fileID: 379082680} - m_Layer: 5 - m_Name: PlayersPanel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &379082679 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 379082678} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 533055204} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &379082680 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 379082678} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 0, g: 0, b: 0, a: 0} - m_RaycastTarget: 0 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 ---- !u!222 &379082681 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 379082678} - m_CullTransparentMesh: 0 ---- !u!1 &522137823 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 522137826} - - component: {fileID: 522137825} - - component: {fileID: 522137824} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &522137824 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 522137823} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1077351063, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &522137825 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 522137823} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: -619905303, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &522137826 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 522137823} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &533055200 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 533055204} - - component: {fileID: 533055203} - - component: {fileID: 533055202} - - component: {fileID: 533055201} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &533055201 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 533055200} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1301386320, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &533055202 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 533055200} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 1980459831, guid: f70555f144d8491a825f0804e09c671c, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 ---- !u!223 &533055203 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 533055200} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &533055204 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 533055200} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_Children: - - {fileID: 379082679} - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!1 &707756284 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 707756286} - - component: {fileID: 707756285} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &707756285 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 707756284} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &707756286 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 707756284} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity.meta deleted file mode 100644 index 25c602e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scenes/Example.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b30904751905d3f4dacde62ac85ec7c2 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts.meta deleted file mode 100644 index 5cc0800..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9c5291659f25af9409bbc25a2d37d628 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs deleted file mode 100644 index 1b23ae8..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs +++ /dev/null @@ -1,80 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -namespace Mirror.Examples.Basic -{ - public class Player : NetworkBehaviour - { - [Header("Player Components")] - public RectTransform rectTransform; - public Image image; - - [Header("Child Text Objects")] - public Text playerNameText; - public Text playerDataText; - - // These are set in OnStartServer and used in OnStartClient - [SyncVar] - int playerNo; - [SyncVar] - Color playerColor; - - // This is updated by UpdateData which is called from OnStartServer via InvokeRepeating - [SyncVar(hook = nameof(OnPlayerDataChanged))] - int playerData; - - // This is called by the hook of playerData SyncVar above - void OnPlayerDataChanged(int newPlayerData) - { - // Show the data in the UI - playerDataText.text = string.Format("Data: {0:000}", newPlayerData); - } - - // This fires on server when this player object is network-ready - public override void OnStartServer() - { - base.OnStartServer(); - - // Set SyncVar values - playerNo = connectionToClient.connectionId; - playerColor = Random.ColorHSV(0f, 1f, 0.9f, 0.9f, 1f, 1f); - - // Start generating updates - InvokeRepeating(nameof(UpdateData), 1, 1); - } - - // This only runs on the server, called from OnStartServer via InvokeRepeating - [ServerCallback] - void UpdateData() - { - playerData = Random.Range(100, 1000); - } - - // This fires on all clients when this player object is network-ready - public override void OnStartClient() - { - base.OnStartClient(); - - // Make this a child of the layout panel in the Canvas - transform.SetParent(GameObject.Find("PlayersPanel").transform); - - // Calculate position in the layout panel - int x = 100 + ((playerNo % 4) * 150); - int y = -170 - ((playerNo / 4) * 80); - rectTransform.anchoredPosition = new Vector2(x, y); - - // Apply SyncVar values - playerNameText.color = playerColor; - playerNameText.text = string.Format("Player {0:00}", playerNo); - } - - // This only fires on the local client when this player object is network-ready - public override void OnStartLocalPlayer() - { - base.OnStartLocalPlayer(); - - // apply a shaded background to our player - image.color = new Color(1f, 1f, 1f, 0.1f); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs.meta deleted file mode 100644 index cf15827..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Basic/Scripts/Player.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a472ac3ae1701d149861871cf416a46d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs deleted file mode 100644 index 58b64d5..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/ListServer.cs +++ /dev/null @@ -1,338 +0,0 @@ -// add this component to the NetworkManager -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using UnityEngine; -using UnityEngine.UI; - -namespace Mirror.Examples.ListServer -{ - public class ServerStatus - { - public string ip; - //public ushort port; // <- not all transports use a port. assume default port. feel free to also send a port if needed. - public string title; - public ushort players; - public ushort capacity; - - public int lastLatency = -1; -#if !UNITY_WEBGL // Ping isn't known in WebGL builds - public Ping ping; -#endif - public ServerStatus(string ip, /*ushort port,*/ string title, ushort players, ushort capacity) - { - this.ip = ip; - //this.port = port; - this.title = title; - this.players = players; - this.capacity = capacity; -#if !UNITY_WEBGL // Ping isn't known in WebGL builds - ping = new Ping(ip); -#endif - } - } - - [RequireComponent(typeof(NetworkManager))] - public class ListServer : MonoBehaviour - { - [Header("Listen Server Connection")] - public string listServerIp = "127.0.0.1"; - public ushort gameServerToListenPort = 8887; - public ushort clientToListenPort = 8888; - public string gameServerTitle = "Deathmatch"; - - Telepathy.Client gameServerToListenConnection = new Telepathy.Client(); - Telepathy.Client clientToListenConnection = new Telepathy.Client(); - - [Header("UI")] - public GameObject mainPanel; - public Transform content; - public Text statusText; - public UIServerStatusSlot slotPrefab; - public Button serverAndPlayButton; - public Button serverOnlyButton; - public GameObject connectingPanel; - public Text connectingText; - public Button connectingCancelButton; - int connectingDots = 0; - - // all the servers, stored as dict with unique ip key so we can - // update them more easily - // (use "ip:port" if port is needed) - Dictionary list = new Dictionary(); - - void Start() - { - // examples - //list["127.0.0.1"] = new ServerStatus("127.0.0.1", "Deathmatch", 3, 10); - //list["192.168.0.1"] = new ServerStatus("192.168.0.1", "Free for all", 7, 10); - //list["172.217.22.3"] = new ServerStatus("172.217.22.3", "5vs5", 10, 10); - //list["172.217.16.142"] = new ServerStatus("172.217.16.142", "Hide & Seek Mod", 0, 10); - - // Update once a second. no need to try to reconnect or read data - // in each Update call - // -> calling it more than 1/second would also cause significantly - // more broadcasts in the list server. - InvokeRepeating(nameof(Tick), 0, 1); - } - - bool IsConnecting() => NetworkClient.active && !ClientScene.ready; - bool FullyConnected() => NetworkClient.active && ClientScene.ready; - - // should we use the client to listen connection? - bool UseClientToListen() - { - return !NetworkManager.isHeadless && !NetworkServer.active && !FullyConnected(); - } - - // should we use the game server to listen connection? - bool UseGameServerToListen() - { - return NetworkServer.active; - } - - void Tick() - { - TickGameServer(); - TickClient(); - } - - // send server status to list server - void SendStatus() - { - BinaryWriter writer = new BinaryWriter(new MemoryStream()); - - // create message - writer.Write((ushort)NetworkServer.connections.Count); - writer.Write((ushort)NetworkManager.singleton.maxConnections); - byte[] titleBytes = Encoding.UTF8.GetBytes(gameServerTitle); - writer.Write((ushort)titleBytes.Length); - writer.Write(titleBytes); - writer.Flush(); - - // list server only allows up to 128 bytes per message - if (writer.BaseStream.Position <= 128) - { - // send it - gameServerToListenConnection.Send(((MemoryStream)writer.BaseStream).ToArray()); - } - else Debug.LogError("[List Server] List Server will reject messages longer than 128 bytes. Please use a shorter title."); - } - - void TickGameServer() - { - // send server data to listen - if (UseGameServerToListen()) - { - // connected yet? - if (gameServerToListenConnection.Connected) - { - SendStatus(); - } - // otherwise try to connect - // (we may have just started the game) - else if (!gameServerToListenConnection.Connecting) - { - Debug.Log("[List Server] GameServer connecting......"); - gameServerToListenConnection.Connect(listServerIp, gameServerToListenPort); - } - } - // shouldn't use game server, but still using it? - else if (gameServerToListenConnection.Connected) - { - gameServerToListenConnection.Disconnect(); - } - } - - void ParseMessage(byte[] bytes) - { - // note: we don't use ReadString here because the list server - // doesn't know C#'s '7-bit-length + utf8' encoding for strings - BinaryReader reader = new BinaryReader(new MemoryStream(bytes, false), Encoding.UTF8); - byte ipBytesLength = reader.ReadByte(); - byte[] ipBytes = reader.ReadBytes(ipBytesLength); - string ip = new IPAddress(ipBytes).ToString(); - //ushort port = reader.ReadUInt16(); <- not all Transports use a port. assume default. - ushort players = reader.ReadUInt16(); - ushort capacity = reader.ReadUInt16(); - ushort titleLength = reader.ReadUInt16(); - string title = Encoding.UTF8.GetString(reader.ReadBytes(titleLength)); - //Debug.Log("PARSED: ip=" + ip + /*" port=" + port +*/ " players=" + players + " capacity= " + capacity + " title=" + title); - - // build key - string key = ip/* + ":" + port*/; - - // find existing or create new one - if (list.TryGetValue(key, out ServerStatus server)) - { - // refresh - server.title = title; - server.players = players; - server.capacity = capacity; - } - else - { - // create - server = new ServerStatus(ip, /*port,*/ title, players, capacity); - } - - // save - list[key] = server; - } - - void TickClient() - { - // receive client data from listen - if (UseClientToListen()) - { - // connected yet? - if (clientToListenConnection.Connected) - { - // receive latest game server info - while (clientToListenConnection.GetNextMessage(out Telepathy.Message message)) - { - // connected? - if (message.eventType == Telepathy.EventType.Connected) - Debug.Log("[List Server] Client connected!"); - // data message? - else if (message.eventType == Telepathy.EventType.Data) - ParseMessage(message.data); - // disconnected? - else if (message.eventType == Telepathy.EventType.Connected) - Debug.Log("[List Server] Client disconnected."); - } - -#if !UNITY_WEBGL // Ping isn't known in WebGL builds - // ping again if previous ping finished - foreach (ServerStatus server in list.Values) - { - if (server.ping.isDone) - { - server.lastLatency = server.ping.time; - server.ping = new Ping(server.ip); - } - } -#endif - } - // otherwise try to connect - // (we may have just joined the menu/disconnect from game server) - else if (!clientToListenConnection.Connecting) - { - Debug.Log("[List Server] Client connecting..."); - clientToListenConnection.Connect(listServerIp, clientToListenPort); - } - } - // shouldn't use client, but still using it? (e.g. after joining) - else if (clientToListenConnection.Connected) - { - clientToListenConnection.Disconnect(); - list.Clear(); - } - - // refresh UI afterwards - OnUI(); - } - - // instantiate/remove enough prefabs to match amount - public static void BalancePrefabs(GameObject prefab, int amount, Transform parent) - { - // instantiate until amount - for (int i = parent.childCount; i < amount; ++i) - { - Instantiate(prefab, parent, false); - } - - // delete everything that's too much - // (backwards loop because Destroy changes childCount) - for (int i = parent.childCount-1; i >= amount; --i) - Destroy(parent.GetChild(i).gameObject); - } - - void OnUI() - { - // only show while client not connected and server not started - if (!NetworkManager.singleton.isNetworkActive || IsConnecting()) - { - mainPanel.SetActive(true); - - // status text - if (clientToListenConnection.Connecting) - { - //statusText.color = Color.yellow; - statusText.text = "Connecting..."; - } - else if (clientToListenConnection.Connected) - { - //statusText.color = Color.green; - statusText.text = "Connected!"; - } - else - { - //statusText.color = Color.gray; - statusText.text = "Disconnected"; - } - - // instantiate/destroy enough slots - BalancePrefabs(slotPrefab.gameObject, list.Count, content); - - // refresh all members - for (int i = 0; i < list.Values.Count; ++i) - { - UIServerStatusSlot slot = content.GetChild(i).GetComponent(); - ServerStatus server = list.Values.ToList()[i]; - slot.titleText.text = server.title; - slot.playersText.text = server.players + "/" + server.capacity; - slot.latencyText.text = server.lastLatency != -1 ? server.lastLatency.ToString() : "..."; - slot.addressText.text = server.ip; - slot.joinButton.interactable = !IsConnecting(); - slot.joinButton.gameObject.SetActive(server.players < server.capacity); - slot.joinButton.onClick.RemoveAllListeners(); - slot.joinButton.onClick.AddListener(() => { - NetworkManager.singleton.networkAddress = server.ip; - NetworkManager.singleton.StartClient(); - }); - } - - // server buttons - serverAndPlayButton.interactable = !IsConnecting(); - serverAndPlayButton.onClick.RemoveAllListeners(); - serverAndPlayButton.onClick.AddListener(() => { - NetworkManager.singleton.StartHost(); - }); - - serverOnlyButton.interactable = !IsConnecting(); - serverOnlyButton.onClick.RemoveAllListeners(); - serverOnlyButton.onClick.AddListener(() => { - NetworkManager.singleton.StartServer(); - }); - } - else mainPanel.SetActive(false); - - // show connecting panel while connecting - if (IsConnecting()) - { - connectingPanel.SetActive(true); - - // . => .. => ... => .... - connectingDots = ((connectingDots + 1) % 4); - connectingText.text = "Connecting" + new string('.', connectingDots); - - // cancel button - connectingCancelButton.onClick.RemoveAllListeners(); - connectingCancelButton.onClick.AddListener(NetworkManager.singleton.StopClient); - } - else connectingPanel.SetActive(false); - } - - // disconnect everything when pressing Stop in the Editor - void OnApplicationQuit() - { - if (gameServerToListenConnection.Connected) - gameServerToListenConnection.Disconnect(); - if (clientToListenConnection.Connected) - clientToListenConnection.Disconnect(); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes.meta deleted file mode 100644 index e0412be..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9826d673f42ad4c59b8fc27ae86729e1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes/NavMesh.asset b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/Scenes/NavMesh.asset deleted file mode 100644 index 3acffc80e7884117f6ba1c24763179df0d46214e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5444 zcmb`KTWl0%6vxlD+ZGYAMNn>HQ9(ed-Ihy{i`%lT1-X>ARODiv?oQj0z0}=VXu-<} z0t$u)W8#xZNrag8!NezhFex#<5b#BOFi{^&Fg_U`j1N9o&;Pr1=c7tv9GIQ+{pQU7 zJLi0tnG#jsAX<mN3i3(^eM}e6 zJ;pyA&uqgZ)Xs5^b8x7`z2Lzt#1n~eUO2&#b0iL4F7jQ%&miCXgpTC<*!LAa5yxD^ zBlI2n?%+0b?&oVwfLO!&)!-B0VSOHBjI-be_zHdK%mWX=qe6d>+u#ovUJ;6aK6o7d zm7(|-fb$7H%5m!WA2d8l1-4J}i5MR;yh8Y&;x_VKXz>e*FS7UtiZ8bKM~W}8_!Y&M zTKrSRAGY}CiZ8SHRmC5%_%+3AE&i?I%Pszc;+XHUZn6%)DE^qmu|83s$1VP+;wvm3 zWoP)WwD?@bpHRGvy%sWC%jbG#tN5%A@T^=%3FeretHJpMzr=H=L-92hKdd;`YpMUB z;!jz;p!iygzoB@Y#V;!Uw8cMGyuO5EKjHmH#2+i+mzZBwyrG1{|C-{B7XMyx>^V9w z`2VapYNz?{%;xgO#uwTE9>6Xa^L)PIykAmv99*vJrOdJJnv8#VU2ih};dT8CIG@m8 z%^FyDSVNl)kJ2q(j~n?O_MR<**Rp?w7{@qsjPF*9wj=Z`AM_!eoyt*x}^V)B5omY?H zQvXAx|AOIR{R0-)`Y&2s>mM{+)@@YP?GSiyXWb5i$EWI}-@iw|`9!{-um%LtBo zhWDkc#dW?pi|c%c443-1mHw-ShxPLo*ZTNYsivuTw7ze6RE+x{tdDvY1xJ0NbbiKQ*X#6zpop_PG!OBeMIwI5 zbzZMoT<7(=;Zk3((>Dwc>%VDntshui>%V1qgl_TsqMq}@JUeB${I1aNqth1G`fpoY z>z}dsX4c2JoHd;L<+^QUj`?=Z@NmEHSX}q}uElk~=M9gD^~HY!h<@?iiery+Y`0q& zOgO$n9UXptOKZyWbNSX`-^~`hTy`5}dfU9TyCcCyhvN^jA^bY>ZokvFBU|vDY|@3B zlImvfg4RVtXlHs&H|CMSNA>ql|QpU@6x&u5I&3V_M zjFT-o>FsVh-Q}HdDX9&~QE&Y@hv^Eo0K=9Pbfd^ewWysR2&>5B2@i7?ercYEBt?XKrj&qxj ziTL=~`HAtdF??%_!?xvp=>uDC_q?Oo$6ZSDE@#vW#D%h%HLX_;Y62 zl-s{prFp{b?s*C^k!R2T%kk1YaYyIId2rq`XKl;eq|Y>Y^3&0Pe`b^?{Gzn@Kjo=& zEbZ%`#}i&8#uNEsJkdsO$V=PuIyKJ7Z^{R+Z#kY6R0i etc. -using UnityEngine; -using UnityEngine.UI; - -public class UIServerStatusSlot : MonoBehaviour -{ - public Text titleText; - public Text playersText; - public Text latencyText; - public Text addressText; - public Button joinButton; -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs.meta deleted file mode 100644 index a3fee6d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/ListServer/UI/UIServerStatusSlot.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7f24d39c9182b4098bcfd0c2546d0bf2 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong.meta deleted file mode 100644 index ac8a6e2..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2220cb06641bd40be8c8330b3b4dd0ee -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials.meta deleted file mode 100644 index 3ba9985..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7f122364b93b24938b3f50539de4d746 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D deleted file mode 100644 index e2dd2d0..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D +++ /dev/null @@ -1,10 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!62 &6200000 -PhysicsMaterial2D: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_Name: BallMaterial - friction: 0 - bounciness: 1 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D.meta deleted file mode 100644 index 85c1baf..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/PhysicsMaterials/BallMaterial.physicsMaterial2D.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 97a3e4cddb8635c4eba1265f44d106bf -timeCreated: 1426602119 -licenseType: Free -NativeFormatImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs.meta deleted file mode 100644 index 7e90f0d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: db1c7e1499ee84bfba33fa7f2cb1bc57 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab deleted file mode 100644 index ea7a7aa..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab +++ /dev/null @@ -1,180 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1080679924113744 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4700925592147096} - - component: {fileID: 212107498293566416} - - component: {fileID: 61279514624852186} - - component: {fileID: 50354248948880112} - - component: {fileID: 114290021321007948} - - component: {fileID: 114692463781779748} - - component: {fileID: 114121325390084138} - m_Layer: 0 - m_Name: Ball - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4700925592147096 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - 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 &212107498293566416 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: 4b66f21097323d44ab40669b2fb9c53d, 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!61 &61279514624852186 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - m_Enabled: 1 - m_Density: 1 - m_Material: {fileID: 6200000, guid: 97a3e4cddb8635c4eba1265f44d106bf, type: 2} - m_IsTrigger: 0 - m_UsedByEffector: 0 - m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 1, y: 1} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1, y: 1} - m_EdgeRadius: 0 ---- !u!50 &50354248948880112 -Rigidbody2D: - serializedVersion: 4 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - m_BodyType: 0 - m_Simulated: 0 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 0.0001 - m_LinearDrag: 0 - m_AngularDrag: 0.05 - m_GravityScale: 0 - m_Material: {fileID: 0} - m_Interpolate: 0 - m_SleepingMode: 1 - m_CollisionDetection: 0 - m_Constraints: 4 ---- !u!114 &114290021321007948 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: 5f7a7f34494ed40268eff49dbf9168bf - m_SceneId: 0 ---- !u!114 &114692463781779748 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 38b5c2f743cd8034a8beeebf277c92c1, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - speed: 30 - rigidbody2d: {fileID: 50354248948880112} ---- !u!114 &114121325390084138 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1080679924113744} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0 - compressRotation: 1 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab.meta deleted file mode 100644 index 6322417..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Ball.prefab.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5f7a7f34494ed40268eff49dbf9168bf -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 100100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab deleted file mode 100644 index 2a52ff7..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab +++ /dev/null @@ -1,180 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1240244544407914 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4118252415362944} - - component: {fileID: 212641192162007874} - - component: {fileID: 61279767645666242} - - component: {fileID: 50389918509199184} - - component: {fileID: 114104497298166850} - - component: {fileID: 114626868563338794} - - component: {fileID: 114398896143473162} - m_Layer: 0 - m_Name: Racket - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4118252415362944 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, 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 &212641192162007874 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: 619ccff3ba2f2a04f9ddd19c264a1ecd, 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!61 &61279767645666242 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - 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} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 2, y: 4} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 2, y: 4} - m_EdgeRadius: 0 ---- !u!50 &50389918509199184 -Rigidbody2D: - serializedVersion: 4 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - m_BodyType: 0 - m_Simulated: 1 - m_UseFullKinematicContacts: 0 - m_UseAutoMass: 0 - m_Mass: 1 - m_LinearDrag: 0 - m_AngularDrag: 0.05 - m_GravityScale: 0 - m_Material: {fileID: 0} - m_Interpolate: 1 - m_SleepingMode: 1 - m_CollisionDetection: 1 - m_Constraints: 4 ---- !u!114 &114104497298166850 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 1 - m_AssetId: b1651eaf8c7564a1c86031dfbb8a7b28 - m_SceneId: 0 ---- !u!114 &114626868563338794 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0748c7eda22b19845b9ce0e4d23d1021, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - speed: 1500 - rigidbody2d: {fileID: 50389918509199184} ---- !u!114 &114398896143473162 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240244544407914} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0 - compressRotation: 1 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab.meta deleted file mode 100644 index c67ac8f..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Prefabs/Racket.prefab.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: b1651eaf8c7564a1c86031dfbb8a7b28 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 100100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes.meta deleted file mode 100644 index ba5b4d4..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 00c56c45628954f44aa4d944cbd9bfca -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity deleted file mode 100644 index 8ffe2b4..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity +++ /dev/null @@ -1,942 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 3 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &4 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 0 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 1024 - m_ReflectionCompression: 2 - m_MixedBakeMode: 1 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 0 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 0 ---- !u!196 &5 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &289876230 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 289876232} - - component: {fileID: 289876231} - m_Layer: 0 - m_Name: DottedLine - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &289876231 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 289876230} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: 1b5c0b514d8b2d24091d5aec516fe860, 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!4 &289876232 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 289876230} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1607538195} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &473997959 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 473997961} - m_Layer: 0 - m_Name: RacketSpawnLeft - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &473997961 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 473997959} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -20, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &753891880 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 753891882} - - component: {fileID: 753891881} - - component: {fileID: 753891883} - m_Layer: 0 - m_Name: WallBottom - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &753891881 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 753891880} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: b931587800e08c54aa8dbbd6c15c894f, 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!4 &753891882 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 753891880} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: -16, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1607538195} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &753891883 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 753891880} - 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} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 50, y: 1} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 50, y: 1} - m_EdgeRadius: 0 ---- !u!1 &1346799726 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1346799731} - - component: {fileID: 1346799730} - - component: {fileID: 1346799729} - - component: {fileID: 1346799728} - - component: {fileID: 1346799727} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &1346799727 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1346799726} - m_Enabled: 1 ---- !u!124 &1346799728 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1346799726} - m_Enabled: 1 ---- !u!92 &1346799729 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1346799726} - m_Enabled: 1 ---- !u!20 &1346799730 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1346799726} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0.019607844} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 1 - orthographic size: 40 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 0 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1346799731 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1346799726} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -10} - 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!1 &1352350029 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1352350031} - - component: {fileID: 1352350030} - - component: {fileID: 1352350032} - m_Layer: 0 - m_Name: WallLeft - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1352350030 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1352350029} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: 0f2833a292a197d4fb0385a8efa1dc91, 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!4 &1352350031 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1352350029} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -24.5, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1607538195} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &1352350032 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1352350029} - 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} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 1, y: 32} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1, y: 32} - m_EdgeRadius: 0 ---- !u!1 &1368547944 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1368547946} - - component: {fileID: 1368547945} - - component: {fileID: 1368547947} - m_Layer: 0 - m_Name: WallTop - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1368547945 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1368547944} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: b931587800e08c54aa8dbbd6c15c894f, 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!4 &1368547946 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1368547944} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 16, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1607538195} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &1368547947 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1368547944} - 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} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 50, y: 1} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 50, y: 1} - m_EdgeRadius: 0 ---- !u!1 &1397990094 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1397990096} - m_Layer: 0 - m_Name: RacketSpawnRight - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1397990096 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1397990094} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 20, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1575697329 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1575697331} - - component: {fileID: 1575697330} - - component: {fileID: 1575697332} - m_Layer: 0 - m_Name: WallRight - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!212 &1575697330 -SpriteRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1575697329} - m_Enabled: 1 - m_CastShadows: 0 - m_ReceiveShadows: 0 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - 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_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: 0f2833a292a197d4fb0385a8efa1dc91, 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!4 &1575697331 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1575697329} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 24.5, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1607538195} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!61 &1575697332 -BoxCollider2D: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1575697329} - 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} - m_SpriteTilingProperty: - border: {x: 0, y: 0, z: 0, w: 0} - pivot: {x: 0.5, y: 0.5} - oldSize: {x: 1, y: 32} - newSize: {x: 1, y: 1} - adaptiveTilingThreshold: 0.5 - drawMode: 0 - adaptiveTiling: 0 - m_AutoTiling: 0 - serializedVersion: 2 - m_Size: {x: 1, y: 32} - m_EdgeRadius: 0 ---- !u!1 &1607538194 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1607538195} - m_Layer: 0 - m_Name: Table - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1607538195 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1607538194} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 1368547946} - - {fileID: 753891882} - - {fileID: 1575697331} - - {fileID: 1352350031} - - {fileID: 289876232} - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1886246549 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1886246550} - - component: {fileID: 1886246552} - - component: {fileID: 1886246551} - - component: {fileID: 1886246553} - m_Layer: 0 - m_Name: NetworkManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1886246550 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1886246549} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1886246551 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1886246549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6442dc8070ceb41f094e44de0bf87274, type: 3} - m_Name: - m_EditorClassIdentifier: - showGUI: 1 - offsetX: 0 - offsetY: 0 ---- !u!114 &1886246552 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1886246549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0aa3018bb284840d6a6d0acee29ab098, type: 3} - m_Name: - m_EditorClassIdentifier: - dontDestroyOnLoad: 1 - runInBackground: 1 - startOnHeadless: 1 - serverTickRate: 30 - showDebugMessages: 0 - offlineScene: - onlineScene: - transport: {fileID: 1886246553} - networkAddress: localhost - maxConnections: 4 - playerPrefab: {fileID: 1240244544407914, guid: b1651eaf8c7564a1c86031dfbb8a7b28, - type: 3} - autoCreatePlayer: 1 - playerSpawnMethod: 1 - spawnPrefabs: - - {fileID: 1080679924113744, guid: 5f7a7f34494ed40268eff49dbf9168bf, type: 3} - leftRacketSpawn: {fileID: 473997961} - rightRacketSpawn: {fileID: 1397990096} ---- !u!114 &1886246553 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1886246549} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7424c1070fad4ba2a7a96b02fbeb4bb, type: 3} - m_Name: - m_EditorClassIdentifier: - OnClientConnected: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - OnClientDataReceived: - m_PersistentCalls: - m_Calls: [] - m_TypeName: Mirror.UnityEventByteArray, Mirror, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - OnClientError: - m_PersistentCalls: - m_Calls: [] - m_TypeName: Mirror.UnityEventException, Mirror, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - OnClientDisconnected: - m_PersistentCalls: - m_Calls: [] - m_TypeName: UnityEngine.Events.UnityEvent, UnityEngine.CoreModule, Version=0.0.0.0, - Culture=neutral, PublicKeyToken=null - OnServerConnected: - m_PersistentCalls: - m_Calls: [] - m_TypeName: Mirror.UnityEventInt, Mirror, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - OnServerDataReceived: - m_PersistentCalls: - m_Calls: [] - m_TypeName: Mirror.UnityEventIntByteArray, Mirror, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - OnServerError: - m_PersistentCalls: - m_Calls: [] - m_TypeName: Mirror.UnityEventIntException, Mirror, Version=0.0.0.0, Culture=neutral, - PublicKeyToken=null - OnServerDisconnected: - m_PersistentCalls: - m_Calls: [] - m_TypeName: Mirror.UnityEventInt, Mirror, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - port: 7777 - NoDelay: 1 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity.meta deleted file mode 100644 index 88cc8f1..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scenes/Scene.unity.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 89a84548859e3b643b4fb27984dc2b0d -timeCreated: 1426587410 -licenseType: Free -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts.meta deleted file mode 100644 index b482c47..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 55e7bd9b7212f4318909cbca3bdb1284 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs deleted file mode 100644 index 69adbf1..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs +++ /dev/null @@ -1,60 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.Pong -{ - public class Ball : NetworkBehaviour - { - public float speed = 30; - public Rigidbody2D rigidbody2d; - - 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; - } - - [ServerCallback] // only call this on server - 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/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs.meta deleted file mode 100644 index 1eb956d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Ball.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 38b5c2f743cd8034a8beeebf277c92c1 -timeCreated: 1426602353 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs deleted file mode 100644 index a8869ff..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs +++ /dev/null @@ -1,37 +0,0 @@ -using UnityEngine; -using Mirror; - -// Custom NetworkManager that simply assigns the correct racket positions when -// spawning players. The built in RoundRobin spawn method wouldn't work after -// someone reconnects (both players would be on the same side). -public class NetworkManagerPong : NetworkManager -{ - public Transform leftRacketSpawn; - public Transform rightRacketSpawn; - GameObject ball; - - public override void OnServerAddPlayer(NetworkConnection conn) - { - // add player at correct spawn position - Transform start = numPlayers == 0 ? leftRacketSpawn : rightRacketSpawn; - GameObject player = Instantiate(playerPrefab, start.position, start.rotation); - NetworkServer.AddPlayerForConnection(conn, player); - - // spawn ball if two players - if (numPlayers == 2) - { - ball = Instantiate(spawnPrefabs.Find(prefab => prefab.name == "Ball")); - NetworkServer.Spawn(ball); - } - } - - public override void OnServerDisconnect(NetworkConnection conn) - { - // destroy ball - if (ball != null) - NetworkServer.Destroy(ball); - - // call base functionality (actually destroys the player) - base.OnServerDisconnect(conn); - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs.meta deleted file mode 100644 index 4b191ea..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/NetworkManagerPong.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0aa3018bb284840d6a6d0acee29ab098 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs deleted file mode 100644 index 5de9320..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs +++ /dev/null @@ -1,19 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.Pong -{ - public class Player : NetworkBehaviour - { - public float speed = 30; - public Rigidbody2D rigidbody2d; - - // 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 = Time.fixedDeltaTime * speed * new Vector2(0, Input.GetAxisRaw("Vertical")); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs.meta deleted file mode 100644 index 15c309e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Scripts/Player.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 0748c7eda22b19845b9ce0e4d23d1021 -timeCreated: 1426597826 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites.meta deleted file mode 100644 index 42350a3..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9d39b68545c2e43cfa4a37f6703a983b -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/Ball.png b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Pong/Sprites/Ball.png deleted file mode 100644 index 20c4387c8b1306491974318a9d601c60207d069f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2791 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

Ak(@z!nXm;o*^VoyFZi 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%0DOED8FO7JEffm`aD;B2}w<>rivfen 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 BJ+6?#O%Kq)x$rb+(DTfn`VC-Vl2e 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

MTSzP=iE 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

cVh zWA?he9PMCXJ+H}7k3?=CH~nsj9fg|xzo`S?hsd^QfgQlTz}eI@sj2Yy;PI%#12ALk zTE3H29~;#L1m|abiwufwm!Dkh#?B#)U?0ANr$ewAVGmduqa)V0-a96_yT&r{p}xrT zjSTWe{TUbwx!?L*$^I9=&8qsXTjh_WhN>oO@9@kCc=~S-&Tbx|uD{~xOu8EVVKth6 zT_`c24aZvJO4H8O^%6JvFKq+&r;!7x(n8p*dY@dd2AF)-QB| zXwa?fm(6(o$n~4lQP-$@la|CN9HGH!biy-wSc334yQO$~9CrUa8vQjgd{%{5Od6Wo zHuTP{YseAQqA%q2O^=)y68ZwQpO4E;K_>Eq+SpUKvCpn&uT6e1`hDJ*=gHkg*T?&u z+eACJBZs}S$Fb?1UDI?APs;`CFBBh8v`71y(|Ok5nS)!a6ng+ZZz(mta3Fy$V0z<* zk^BB$Ul3srALHH;jHQ(HDCRg!(muF2ql??N@ueN-((bbZ<8bt1BXf$Om1{=&4xwc< zOzXg!gAgEi`(wTeoaeTepRV&JjbGi2gtkt6zdOMT!D}8*ecU+b9e>Fny z!LGpV>yYZit(LvOhsTdgM?XA9X06!mHcKZ4UuXf|B`fz#evy{^cTJ5unhie=u5PobxXNQ7Z&o2R%jelg3f)>!U7M<~s9pvq zox0!3U9$;R3U!k?p}4XY{T*6){{0xNF`-xbh~7cm;E!^PKYE;8rn(EFXpzo_7OsAh&T@V+c(FIDN!7dMzH>e^l0P@VJuRx$|HAE4r47@CZ~kE2^7=x{~T*&Xfv1pX3h4@%xM^qwEM^ z2I*kp+Qu$Fz$5c)U(fUvXG^4C(LnughxH=HLcRca&%zS#xgi@Mbt-s z@3f_=6?P8)+{n%U9JBH1vwXkdT?>A#m&`qU#5P#v%1b;`h0c$eU+qQv5gVO9jAt;r z#?z7Y_In>nC8g!sx8M1R^x7ZfRQ%ij^G_w;;B+n?{}UtEKRY&df83?@yb^*+rR ze$7erJ!j~ZVfU!$9mvJ*wleQqVfWjqqh$QhFG-M;6u4n|M`%R|!Yk zhNh7FSgQhGh^n=N+c2-a2%hyu{5P<6;MT9@3hiG$-#c+*LjMXYQus{*=oRS;$hdg# zqx`*jpByHM-ItcvxrWRgeRFI?2UA#quaI7$A8p)#8up(vF?Ss=$!}{v-aQMx)lAqw zS-tD`vqcUAul>D!L~C+bO)is;9fkothPHih!OA|yg4WhVzAnEmp=|4!F*2u{JtHfY zApJvdXw`%lAHPDs9Hx+=BG@Mvclt1SJ+0{lW8e0txlKJYYHk-&5p3czv?$yR`8wLk zP>iADER)`R_k+E8g!-+dXHc9H>`rDAksB15+jZ5T^QZPZxa(W+0JyyU%T_W0%nhM_ zRUzIU@x84Kq_li)j$_Osg4=i+O$E12(=qlM$LSGrzx_Swe>P@()2r(K9~0U|P(0dge{`a}yTkT?5H3 zvxX*Wf*hQ_xiuZLxvQPNC^faBgQsI}X4er*&uNAiu36djtJ}B@v;=uJq()`vC{^9# zi|VeSN%`pNRUO_7zShCLTfblxh@FJ^8r}REz(J7M|Euxv>sRjo)J1NPRWO8yR<7#i zHt(2b)^C_*uHLu8Ja)`qf8v_lgwenIIFtE1L-blg*N=`(Zz zn)vXP;p(HGA6~isB)7iFE7kEfw?*c`{I;cu-*bX&-oN|1m!-ew?MFX&mCVCgW~oKf z#N`_q%&vco!>V+*yDHsbJG)RL z8KwHlmWV!|Ibg5;j3~TaX|ljZ6^-5wkryTlcBfVCU1@a>J`^;A_Lh!*WhgbR51_f~ z7+SUUOl>>4Q^=S_;U=&PV9y}*hRpABSi{EVjvn1{?iy!{+4G=rC@iCXqI0NhY?YA* zW~vKxYT51Vaq`~hdw7AHMN_cL-r(=fC@85hoG+^}o+>C(msQspj?lv%JMxono~i#a zBMV>8l^5q9{<HCEP!`$m%JoY1O)eNqeoQ z(}EUMD|T4#y!}4Cev^{yJZl-R`9gYy=3vUv939Gl0d1;n>$Z72N3-g~No%Dq3QHrb zV=tsBg;$CHP+e5kq%2@(hHq3~T;pM<7*H2gw<;^p`QaZFehgD{Y|zruHNcKy41MSf zz0iD4bZq?qea$|RchuZDViPq@F#YiesQH;t)wK5*niFFda<>g7O+ncy*qrAon#sqS zg{OKgn|a;TF}em9YR%66#8}_nuY&!lAVU-HgJFXgdzlpUcSsgQC{%5uqxfL5vvy0FX6!BUV9z?+(u4_-h8|y>AklNc} z2wkPvL5e(WZizg@U?_AB%G-wF45wEup1ws>V{B9--q0LaBGWtci#twy|7v zw5Iemw-1mH;H;0N9l|##yg%nIm8*`yCChl}yVC!9=&&Sa|3CU;N%~(j|GU)JIsfD2 z!1y~b{(tO?rVa&T{dujysG+8jOr7>lk(Z}wLB}TU%4qI|mtKcvJQJN9cm3&1_STlv z~4Nf|! z_h<|jmBM!~_VMh!C2FiRL|smDhZjD+^z8ax{cDf)X?bHlA7R#oK?k#ko&ZmMntz5X zz{kNSD4{t(6F(t~pz9mmyqn9e`o%Qb!uaSSJ;t&WW4E80qsH?wVtkC5tM}OV&ugi> z3hJ7)xbsl(0;Dc>Ahhg3lMKGtP1uN=qYvak!3CWOl=chffh7>!uvRX^`U)b z_hZ-G);((iePQ?bynJ={6UXY!PaH7*P3fhpns#>hV;gt$WcJ#Z$R3#AeQHGuXkr&& zgwJQ&{^XZA+n@cK%)?zH`xwR81fA^p|y?E8$KeJ_F#^g3oDt+|P8R>i6lP+9@ zbC3V07(WirPv$tXkSg;uxl)r1Y`fmF<8B2E$j-JEqK1=R zCFN1P_OR2fXb@fK5KJZ2ep`8M$VPp)z&N&$ZDc~jt1GE-Ynkn>b-}p3+Sh4o=^oB% z?HR4x_}`)}3|~a?d_Ttte~oDBaNk zo40$!K{lSH0p8(Wo_uE?xqV4JQS5Rvf|oiU8H~dU|aX#!M3jc zL-6lx?5VUL962Jr_mkgqD*h+AR_b58`SRk^f2vDwKRwbpwsin~xX^@Ky4VR1TzQt= zF}G`L?p@S*@jNy4jw!eYD`2*1yO;0S@pxHa<01Ea+0)~ZX;xL@ zCuMJCEN%4R3uso8Cn<7;jNEjTAF%`fke@S=%~!{3>Jk|g)PJQr+~=$fBy7bE0e!Q- z*BR+w%&YQ8O{ZaCe8_HDaEnXG+w_tx1)nR^8y#`&WmR7C5>p*4J)3uN}ro6nMGBs2;lW2+|Ar|@*m>YDgL3|#tb1S*z1FIej2u{c zlSbxwYsbKp6{eifkLi=+i^@2hJZd-GooQpZcZ`2u(4;0;^e|&|><6^4YW1*x$@?DD zqQBEek|S1pYgT4-J2lqK-W|Q$IC*jN8t&jqadRg#4sAYKedd1;_1#T<33M_0C&}vJ zhK&Xh=5IeaBK>3u&_9SB!tgwNzZG@=!j;2GvUz52Jb86u^Ulk0I6s2RCw>k3Kv@@F z|KENLZV&V}_zl=KOi5%6u`}QXLCsH%FG&-tyF%+n79TmgFo1_=HV!Z=+u-9Im|Wf6 zH#om#A|KD(JvyryUA$tV4=^yJ%RS+)z2_F(BDv5d3Ql(odppsypeZ8TXI|mu^A@vs zDf+D8#jEJrCo+q_q0rbLaN6Uu44%vQAxnXl-MU+CO($JGFA%IJR;{kH%9sP4?fF zkAI#=HX>Z%4gCP0J9VG^=A3@{)+hVm7-!Gj_~gKipZ%AYE`R*X!|mj=2jfF(?ms#) z!_QxPoK2r+JO<&?{LRLxbq>LiUsA%9Kawxj*EY^DbJc_m03(qxTU1 zo?l4r&-p6d`Qkb>+BG`SCmcV0L0(+zx1nFq@&CwaZ#JCb4nQAbV*g--6KsG7ti|JJ zfx%~QB#XYv(_yU*cH61%8G^OO%nCa=Xz=sz!JetCN`JS-og8ub2N!c|A_I;RST3Ue zi`lor?bkH=W6W}7BiExTWXG4!eBS7Z8cP~I+S>MRW__Qg2+af>Q*Bvo8(PYM>O6G@ z&!ZA=g`7Pw`}Q$&b9BsH9~ovh0)N!kL54tB*4*B$bazh}*vqQW)T7nygS#77)^nfd zt}pAI*l>9JrpdwGcD3UxBqJ~jzg}kN$g-83083(O-4-9);Mp>#ucBY5Vh`o+>X(tn ztEfdkTY?v*6#f|5eA@WPlC7IPE&0C=at3o+;=^RHUCAb6EgLqA-4`1&!)`#c(MJEp zv)=8OpWt>*O_Y)Gps5c=MShvB-XGSSFD>UjgieyZ#XD$W&v6%E?_l;uQW=TDs}R2_p``;#}`fK~bSH?LFi56yvI+wA>cmUCnNF&V8+yrt}smul({IE2^e{vy?UX)a1qO)gOLl@Dy|!U|$;QedHhddhNAsaa$vQ zZ}9Y3h5q0uexbM67YIE{r8h#Z-P%5PB<+Hkfe#^#o^sSRID6x8|J1cZioXhxjw8;kI{X@0n3RCI-Ix zy*f??INYm6U2Ae$O`oUX`)V7$_T_<|mB%^Bt;g9N@EqdH_p*A{9%eig&7c}p1 zyLcVe#|Nh_3O}JbOx|BZY($AK5xoO>m@tQqpDU9Z(1G~bFO++_WpMqp?*18ld7wwS zfYz@GeJgh)@~nn6+!l^0-;-KMLmweZh;~p0Pu3{RE#X>_6Lg zUf!Gk|5*OVlHpJOofP$ry*xC%Rsg5>&2U%$VP@|G&0d~y6qKt8?78-hX=h_5yAB~#R@zDI1Woq-* zf!?WQp#k96ESV-Z@4kS)1~31DgX~{(XKF$f>KRld$oysRPe$K7yM%FBS9+5D0~!Nn z))wYxA6|BmPbccQ*h_SgeIs=A?EBHuEpn&WQcZ2$dv5Z|{lmTUm!+Zgo39M6Tze@x zJSQjfp4)dPzjl&by_?(z=H-!|QISt;A{WQXzF#lcd4jnoJOJ;s|dwc-C9`+Dx z_Vo0MRd9yshg=Ig5BDvRXU{GG7Q(z{dh@=Eyg;+i9)$UPO4)Jt!1||;V)qsn^^pEz zik=EK4>xyTC;Z>J>*Uvxg+~9f`Q#UQ8+U%1wSMQ*jPd0i!@`Y^9UG6n%DVdGXW2W? zewlOYtN*%x=ac`Oef^8yukRR{ z_vJ$CD7+Rz_b>$u&>KSsII*BYhl$Q&(=@iaW8Z%C^}*dwe)ZBWjNi?tKYwoP(_bCN zFNvmzz3kY6fj<}R_}Z>(e0|q>k^SkVl5#u~^ZJ!LpYQYIDfr+hEc<-;cLjw~Is4ty zr_OL|Xs1UY>!PtyiVsZd`scT72K`4T^QGhL{{{C)aDR^r&GYF(vI3h-)P6l|As9c^nh(%%zmJ}b*~-S}u0?Zz z2Cznh=So*x>tTNB5}Xvg0o97)O0S{1C2VQ$oyuc(n$r-7J6poTncmoVCK)5blVGSM z-@qRq##2zIXryNunA|$l7U^?x?>0BF52*8WnW)JQG?6N9uzYRk!HUa8zLKi8Euyb$ zPnat_VMBSHS6xE=$0x>qq!La~L@gNfBIl@pH?#`!*65H4ZXTYw33GE-pV(2b0}9I< z{qXeQlAxiscw;a}xV?b?|eUtOHI z{neQkvLxY6s?fEWV7%uHY(CBzLIW^-{PK_0eAy0e%t^=Zi2Q8Wem zboedh!hc!i3B!hHSL5xMl{R{*^9eJWPMw?CoSzYEHOy-?Dr&w@E?@Vs3$~V`sM@3a z2;JV>@1k?SXVUopQT67*jo*2C-p>Jd!8K3@10yIHMxjtB7=aN4g|HYhA!Bmg9e1xK zM@l5Gv^$!SMy*!s?o)lR5B98bNmO+~RAfyKeIN zDtjVwGN;Xvr3ZQJAB+{gn6hJd+2{_X)PheSbiLx)BKU#qCb;L!YfiGOKaF>w(i2U4 z2jMr_`(_`wS`%8!57bvUtCgnY70SC5T=Ci{v)dfaW-S8|L(7K+zj((<$%!>G|w$eAGY7zH<>Dw;f z?0#-HSst*Bi};#4t9u4q-ihruBl97N|<14+hI)O&4^8qCi?7SDbo8Z;Mhy z=ym7^%;e44xF6?IhckNz#|2L|le@PmGCHrL-%yJ8E&TcLYS`~n=c#$Z=MTddW*>KX zX8s^|f)KlUa(P@++Yb*>RWz3WV^-Z>nZT7A{e?+>6;V3w1@;=VAuA*VOVgbP3( z=ZGFY-m7@xP3$NXZM`8h@)4nV5OqF%gWwKfjEyhq`$y)|nYP>}G-%h9!jnHVzo`$6 z&M1?!+Xi;;M*0t13XgsheL`qrRUvj4ox!A(oZaN>Iw}*KKzEn$El)_P)kns9`Wo`l zR0|>#@b0&+h23Yik@;=S^sT2R*gDSrum3!6=jjiwp@mynXzpc^sg;bqU;cH@_RGH{ z-}r^7(P^&m$mX7QdjFYue*cAquYm~;KkS2bmB<6&Ym3)G_!!|0(0d3bpx`C8perEn z&@zAParWkuUmm>q?AM29_g~}>EZrp2VBL&jNu~N=CMxm%sxdby*SC{Z z3cs`guXq1cZtw77VRU@!P)BeqyQaC%R0S^(4!)wK(#?(2omC0@wBFOl&Aml~rdoTW zx{X zI;&g4_Qr1R04+WPcW%Wwo>ANhbQjCm7v?^{outYmuk>U)x+0g$1G?6%iq_|pXtCq(k)AnhZAH@kFVV? z@WXENq0Ng=@3{QTUCm^g_YBS(&?d;Q*S1OZZN0MQKs57uof}R5skHa4n5;;2OVl>@ z0eFC5+)H&WJqkWgYF(As>1Nh+M>O2+b!~k^7Efrz!q-LdF*g}82fqIyw|y81WUv_E zwK}hnTZfNY1AoWrCR4e*HEd|?PTKi?bGu9Cpg+#xK6wall;zm5PoySyr{m;jpG(&+ zo&WpgAFrcdo7(;6#K_(^$MN##p-D4#4KCY*Fpq=e9CUH7h{6EyPVJZii+k4o)yMY0 z?4C8b`whIK1vQzl^va!51NYy+*t)@=+B8QO?l}j^Ib;@gkrnT35;uVUl&;zrQT2|l z+oLnPIl=LD2RD0e0dU5;qFFxp1{ICnit@T{1)6@@`Abz2w|i|zcXrr zW1+1i8>_0h&)|V6Q9+gfnn2yfiYB?(qlvc)*uHgSUe}Y2$=_jV3y)`aMp7=}=@9n< zkvYWoJ>yIIL~(0qLO;@s4zZ-RB?GPica$dd;bUY!j#=wFWBT*liG(J@M?LRLt+_`>3uV9pu;QX`Bc>zlXVTO=$YZQ^iAXr z&gnyocU;}Dci{Xgy(2Ju=@A46^cda%?k8y$P;FZz14fn%PFI@0DSD++_)TGE{>JE{ zzCJXk3vWJk;Sn(V$a?IVy=@Ecev{WQw5lJv`^$m|nt=AvRYQE|MQ&*2X-+TS-_D^$ zU0EmkuE4OOC$(Yjp1x@fZ@?5-f08S>Lfi_}t>_8a5vj?kKp!w9KYhb3HS~|E>)-~W z7a;?T+mC2)29dIfi7p0^Wt{HSx>V2JGJw0a&fOPwecXYe`?i%-#x7btYHpEmmpX`vc&AhyLjndO)PA_ zM*gqX8ydPtl(J43t15>i0rQ2F` zd*(sr{>2C1I@X{5;GDnx%rs7J(ZZu&Sb4Jv-(r1Rk5t#?mFm5C411aBM`onSt%vF; z`UGmWYGU_^Vfn#JdusKTetP49d4~5XeqXJpTVlo*9>T0f-bWR+yn#KcAI$~dN4?PM z`{SvsrM;JV!*d%JG#Gk#eRjSEmSAEct6Xr4%InZ&tQbXaCzwKK*#p#dbW4%xbrbc5 zocPxC$A`XC(-Rt0Mu+D0q3E~V}S*_2t@|G|1-$wgL))zT#C(q-VE~`VEa7}i(wAnzm zn~r(ca*m$h^o473kpnL>ScD%zXn23j6&AY-vUJc3Rie*^X<%;c8FbZmhAias=r7ka zDKD1S$*^^R^ z&1&ku?m|hK>;zfuSIZmZV&)flKA*AAfx(#0oxebR|D4^0xGRgBe>H5DVzIOQ1n*9R?b~Ra5?0G~sgWxO+U4PnRUE8Tb+iqb03$tz7K_4kHYqb^a{RTLA zy0Qkp!4n*EqK(e3bhn$z>zb`KO&!ipzc`iA>hb5EJ;HW@brSr5DAIDF*f*0X}{kyUGJbX?ySoiKU_7A?J_YmPXY%et z=5x&@GJXW#qnO)FT~}O-EzRztP zmZ3Y%_Y}E3O}-&z4fX#tU(*xlio~19ajqv%IJEvaJF@y!Zhdf8*SGr6j&|SF5S>%^ z%XkH}kc~D(^z~GP20se+m8MkfM~=MFUwx*E~UbfrJ9)j}iYUncxeK)BK#B=5-*R zQ?;Hx>xXEq-}&iL>3=-n&R)-{83LX(!1cQLP%F|XhbpyrmY7v6q1 z^rc-`MaN3M%ZE^+glb`Yq z@8#jKjfc+R&3jUEbx)ewe#GoQFU97!r0C45BDuKr4jFn!VC9HxAPI)AG`;mQ!eCZ{*dv)hkc30OgbAvC#i$GLL<>-;OsV5cr!MoT%ZO)T893TB*`$3_=#*$3y= zZGB{{L}PMIC+>2czg!MW|El)v`D-e{=@8j{6|H_FI%jlhUNt^tg{b}9 z0brisbL)t6FAo@)1$DLFh{cnbVlTOnPiAaxd22v-lv<1qOh*=sox7xrox5Dz`9tgg zBIBzEYg&Cq_N*3sRc7u5Swg3K`U3Y+;rC~LJO(3F_y<0wMxQCEkaJ%ZKB_F9N4hh` zH&l4=jd%~U@bqV%;P!c(KQEYVKYRZJ*ySIfJ-nFCZ@GBA(Qx{5nU-g#5>KM+$DDv- zbZB@8c>h0Y1TIL&m|exJ@gdw`>UtKp3sXZ^zk@q#b{Ti-OBMA>^5WIio`7Ctwu!o3 zjQ0^ntU@sB{`j4rvWMXIUFlYyzcLq1t0^i7HZgt0i4%V=;gy&|Z zJCKPUOcR;C=@NdfFYsrwkCqb44-2A8_YaKje*J3C(6Y0( z%h)BWV}~I8hun|3VI|QOjT^33HPc5>4|uj$G<0RUne!Vv`!&K#D83gTfA%GJ7ub-@ zrXR7lJ<1J+JOJ|-^fN+xbrk>J$DhNs60BnG;=&hq19md`yW*~_t>P{udH`yOp|+E| zczG>8jS@MmF(;W9MK!g}&TfCO=+lorMF0Q(Z(gV3AL=^#P4JLEYocc$quI#r*&dnP z%I?IoO|HDN6+M4s@xGItzYQlF<8=wgjl9u>G3* zV9|2399gx*mhNVUCvQ5)c(nwlcAaEFS~`=9=HU3IUDWf1*F~R;$5rs9GX!6$ zsV8CVj853Pc_XibnZ72?FG@3vD(ceD4t{2&hOUI}OZth^7wH@54agxPy9d@V`ZtmL zBYJ^)UkrAZ=m+b029@G%yb41RZ6KPIM*oPmxo=F17ck985Ugo56YxID(wqfqswup9 z#~GU6b8t`4B{yH>R`(|46+CCr9^iKf$>8xw)MD%C-uFedeW|Pyyxv-)lUiP@X7VN2 z&5^s<;!CrG=|f-#Ph|;xhj)^_Jz2v3soPf1@T#tYeLml7OZVa(Ti@1WXZz@uDZKR5 z<%g>t-+G?o#qZKRx?${^*fP1}v+Bt5LuUsZYq-SnPB@T_@PgQdsOo(K@-}n;mJIL;H_Ql3T29SQ7hG5kwN%* zqlV%6Eh{=WGx<2w|4nAzO=Em+T^}JYhdsR>Ex(3+LYDA{;RDEm@0ZcpKP<&&*Wr9F zN^oBlJ@L_up7@wNKCze?9b3#4d_BAXX$BvEH#_nDA~XP6`jRX%abH=w_3TqL`ER1@ z(@*U@Ivg09)lBR>DNHWjrtaU)o7lKp5TD=73y&??Qfqe$$2RUBgj1V8wfn4SaOt)* zaq}@gfV zsV~Fd|Ir5!rFZZrQuGPSmf`u$?BTg}M`&nV9~_+}^KV%Jd%wt@z4x_qdhaV2nSn0+0x;SZm16hrW)I*aUqECG2^Imb0|^hbOn4!J z!xKvSAM@<)BL}})xyR_H*xj$+`KB<1@4pI`@fETRO4+|o?L2k~ZMX1LvAZ#jtnRzI z(1r4K5ZXvGgtr|1WGLceL}NK&9NW5I)SH@j(Pw2d`hj|1 zzZIsgwu8*lrrvQUT70s9t22tpE&l}l&Qbh>g2%_cEfe2>94(>&Up~5Ox0ZQJdlfAp zS$U?<&z58yKVKp{b)`Z9??->)G(VHfqJrN}J{vcID)oskugJf=RIbK5m~{&MV7kt7 z4;7!|&)+`=dqL=zPEymppa(byzkugYlMhXz&rH39=^uCSoYkSNR&(1X2c}se-uGFa zjqr9eK4*46_Q~hc(GNb6PKv(cTruzGOTK?~ipnOhfoHd}f*t~$fT^yn&s5#q!%Wo5 z4A`nZLwyvr1%3hE&p%3MA{6udzH+TbR)#+Se?2#q3b^e)RcLCjsBe6?kX|6K0gd3* z@)kVya9~T(Gs7$^<~d)EM$kXL<&4bVDS*pTkX(6m;J-fSE8X6Vx~_f&dL!;e1`u^?08PnFP))=aZ@s|hsSp{>9|x{DI>c>b+x=s z6Npb9=C%4tdw1|aM^7OC^G`mK-hb!qe^CEJQ#-E=Z$AI5EjFIdUYq@QwbblOYHRr1 z=>d#*x(z|R0Ak1M9osNe_6!N`yL5xSe_eQ70b?c;CX5co4f@8BOpz~tp`wMX*j|ae zS!3VCCRxXuwlvRX^A2CqqU2W>L4nq2UBT;a*B z95Npq>;VigHPT*#&rgaw*_pI=x7jyjfX#0awO@F7#C`yMj>O+Z?MJiA=OTU;J%D%( z2u-SZ;})Vxu0JRef3`I;X{P?`U}vT4Kd=Av>koE?lvsP3(>=Isnuc8(-*}wIJteKl ztn(-2SLr{iJiQV}&O<;1%5?_CoU)h;ZmUV>WKD>p=<@-6F{&DoV*YT5dOXzRe z9|olodJXPK8ZqBfmmR(AbkO5x*7l9c19(0>c)r_UR(Fq+i@yFJ(IhZj=_1Y zkJ?`oOew@oNN7OtvZ}=QzH4wn*AN_0T<11%4aTqdzM@Bz*9XT`^&)c+Z2`VNCAWS> zr7y0iLHCeYeSC0m?b&N>%s6N~t@O?c7(kite)x&>zx|(Yq+hGQ`@1qp_s<>D;>6SA zWZM3O`r;%X#!}bZuH>KfoxKSy^;_3JG^vTC=E<<#Hby5G)iClE;o%trns_@*eG5Bz zD_%Zrkehp8cor|+BCMV%mA7Bq?iaN&=3G2xhsHMU6neQ&_l?e^HG)DXDC%i^dPN3X zS03Td!i3?!jl#uEFnbFY|75x+fa|N7+`Rjf)x8%VE#GR^I zlfuc}=ZDz!7vizckIrs5$ur0s-+FYIJ^C@SXT6|$N2LpH+BGLew0kVDd&;I=XE1KJRVw@!Fcb*%-=6C;h&hFQLl|8<8 zTRkwdB42s(y><5f*Ypr;@`=p{YVq+2y~W7d9+^jby7}D~)~T(B)|F?!%$vUb!Zo&b z$Hp$e#tvU2?i_7h{ZdmindsaGyxbPT!_x}#ow&8Z5e~-CTa08T7q`h!*fharv~E87 z{@}*LUmRS1_)QU+gVstiUPU(K?C$ei{FV6e8pK^i2PewF{}-RkVE6S2Tqc?Cvj1 z7q7vDWB>m#9|NB+_t19D<;n&%`3}bOFyUe37)onf^<}(Wt$+(#-k=nWp_B9z$KfPV z(-ru|m6a`iykuSK()xDh3^50`E76r1A`|QZQtR1dsH$pOg4E_vCVYkrvgH&l{vkCt zX&Jo*z5bk?eBNxbe-FYHz@tV_fscS)v$D23ga@+@Z5Fw_{+Q-kU8}sJ)u&?4%)&Qj zxJaHRUIp3J%4T>3UCLT`y>;yPuQhclj(u@XI>*lVQ+CnsfB2E~0k?n;KKev3Xfxoh zD1^^i>}<(z)4Styu2SmWY1mOh=XCR{p-!%*0Z%*ADnN`De%V1An>4Fc;o6(orG}U?{vU>lZvI|~Z4>xJSwrPb^ zGq{YVaQR+t0KNNJn3gBmO_jCbIYMXI&=yv9hbN4u+0l!=`em}`VC}IB!1vJ5uE3wK zW}dWhHz!{zplu4{1q~!jt-+L)->X0mVC;&|<~DZ4tQF*AkSU}PtZ91d4DmN7XPi z()TcW6J>DvR&MX)R&H=?JJ*+7K?~8R5X{Qz=5R)NLx8$DpzP%9-!ps5-afWrYaiLL z(x*Ded{p~VtH$opH3PFW-2JH3h#tQ^xj>H2ENq`7H=?i{rk1KbI;ra=ubLY@KO?ZI zdXmcih5PIg@cRv~nW}wBIoZ7`-`KXPZ{ePey@9-YWLb;e!ydi)+~rQpX}ZR?4Y92k z&hDu@WcjV>L~k&#{W7~THm$1fpH%R^VRiPw^Wg>*gHu1cVIUhq0~dkpa-T#WnISZz z`24grJ;_Wrxk8@gilII_p{*t70uGX1=p((OYx(q$dh|^iewH;K&|m!zhyUG=`hVGf zBmHw&K=Tt%KIK;aW?N_=hpZP9+<$d<-+-AJP+v`EU5ht_{~Z=CwJSNjs$mac;XbUO zKAM>S;ooeS@!iW|>KI|^sKX=V>kQ9jh2R173{1)U$?GAL_5*g&?*z#S99i9?hHPu_ z0kU_$1uu9NogKRLK6qc;%!SuaWXLym^`_arZQd}v|CDle=lOe!cV8Zv-+TJ@`lIiU ztn7dLX3xN^Dljrne$Zm({NBsLIXr7qyH8&kTHVhX+k8;OTi)F5=O2x3JSf6{FHP;e zkf`_R896$!{Mx|Mt^^NIKCyA{jpedzRGdUE|>5u6A_wu6}g$uD*X}EmP?7gqLw}<(B&1pZ&+e zg$Li*=59YV?0)-K*&|E0v)C0V;O$%Kcl5&Vu=4O1maVV;)HSiOuN_|8QgXwGxr3%~ z^RBj=KFce1`!gGAYQJOWo4-KQ|0hM`TMz9c>vzz;cac-fjfOs;oGg|I{Tus+EZ$V~ zfN2(T4<5^Y_BewxtA^2)UEAowO*`+;cJEjJ;mx&2-yLAbVn+L)iPs`~0ggZjzW`cK zJ$cSrdV<2qTTk)zu9yW&suK2K6}#W@^}Bh|sdX3r4NG@m*y{1cY?rTADBuCTUR~2{ z{1n#T-@pIA&;9?*m&M9!rFHhc(T%sL{{>@PPmWbK`|a!|^<>hZz3bMpqcq&8>E!j^ zt+`U`QQ`5E6;rFk4zuugd04m8gO;RO~PBJ=~QtJTa?^yzr6ReZd*b0sxs z`0J_1^*S903+8!FvB>{#RWibk)Ny?)vY zP|A(}3OPsAX7$CZmH68~VQ7oXL(AE?d1?@Iu*ZTI$*Y*0TC` z;RDoOxlye+!QLMK0{mFAghX#u(Wu00pkeM)(|;(xVCF8ZYtO7|4QeY}`ZRdg9U_ms z&J$5La;t3*j+uP}i}q?V1n_}#ul15~=U4Pk@8qJ}caedi7G4>_CqPT6Ywk<%HRIkI zOzN*wuddg7K1=Gqo~Z?r6iljfSxc5O@XEbZo$>Yc5-f*7b{!j>~J+7 zbEALvz4xUL_`E;mc0vZU0VcZ+ADOePB_upv`Q7821w#KJa%hi}d(hf9gx)=DsBZ7o zeN6B5>GAW_Q@;gvM|O8){FM*I{QyS5(VxF7o%rb3KdArF*}b4n=~|0y8`F5ZQgqb@3@-!M$}DkXDawTctP>8!9SSVaYV?J;dLlpn|Rbia&-La^L(GYk!j

VDFUP>GK+M`-dEGtF#xc)nxEatP)HxBYr@ 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

ISY>lqK3wgL?f>&>S!>D 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 zΜ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\SXk%MUzjX=o~PMdk0!X4f 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


e(T^& zHeI{&9pjJAKkeR4{A$mv)4x&k% zRzz1)!iTB$+oY#ti5@j&VtcQ20b9uV9&4enH^iF`wH*dFzJXm^C#PM;_EuT967~Ht zx|eMjVuvnwHQGftlAIYF zEKTvV=r7TUq~hCoMl^rqqEx5Hd@<~a^v5CfJh4~Ii#u~qufH*s&D3AYx;OEQ*y9$s zGlnlth?@iI<~%fUK0ezd$Jjte(&DalI^=@Lb35dJ{`{fTm?VQ2RET5|39ntzqJ_X=|ihzsnS*Z5hD&w%@}rOwqnn8&V~!PCk8YQEH8WbXLtC@q%$V*AgHKmWJ?_j^W8cm(!{!zW|-QDtF@d(W4PiBh^ z{5KlM1~E?Eo#gMy32~o&GlbPrw139c;{Tj^P8E5QKsmO0-IX|}2+@OtoGaA!{XC+A@dO$ibc)of&5STw`9#S@sefT0j%TT~2tukhr|Z=cx{9Q@kxYFBfd4egx8n zsrE49-F@t4$nRs@f-P0AAR7$ZHn4g4UiBRozhm&M7P(>A8X27%AvT-o@z z7J11C|K^PIBHU%PZdGuUgUvV5#HhZ@Cx#J*7q5_vb6va_v2g_qVXy`fYn0;u18}JN zEj!ps_106(fd&6z;;TbAJk_mf)`B>#IzQ`D^W=2Af&bQOo^IZx&)?neCjV~g*!kjz znEm$AjyI*O{by!%F#o=~q2+-Y(q)G?a)FV&$pSYLzM+$gDJkJ!(B;r^hI z7Y=8beRBTz?xJ|@)vWva-8?utneEJ+p#ST9{)j!^qDNWZyq4{uHR*FF+y33b7dTH5 z{=nZ|Cm(f{*lPkVVKU#X5$_w*oP!(LqI!9>rZ{tx`F*&jwfN+qFh4;bKiLrKBO~gd z_L!I0fsuv)=0gP1M;BC1*k^Ff!|XvoQC!g+*Cv7 z6H1Gy97`F$&;6`{qb#^XSNb6M%PK!-(!;oeU)X_zF{KNZ9zeX1&I{UYhqGz-ujLQQ zSK%eFo2;P=UJby1^adaX<&1DY%iv4{JYci80e8rShx5#ZvF;*xIKlV6Oit}&?k}Is zjRn@1p3fcnsqJ8wJJd|2^uVd3fmDycfV?Q(v!a~XT_a<;LIts%Aw;O5l- zM?HJUnGfCu3nrX-le_J!J}YMKdgp#VhbG%0mk@BKYj6@4x{0)aZ$}@|!hgKe*8x6& z=j?Nqy43XS!qLmenqaB2Uu2GPb#UD%43=JRem(q?)6cwr`@ZMNt3Uj;)en94iGOZq zv6w*@;MFGQF}Ai#$$)K;Q8V2veMzb;c}`vI<(K?BLjHV_p`a2R6;)S)|qV!4(cMM;RS!D?ByWy02OZ_KW+f9z0FXf(GyB@Zui@i*-`L2t$OBycn520)rYaGziL_C7H8=ty- zADg8e zEb>nECg06{Q_T*%o$65NA&@zT=u&oHr7zj5gS|QUbYd(Q+$mk4i(OV<71gY(ex^dc zuSx9RM4x5w-%B3aBVw=uXUL?#K)6o7@Ti?v9@5{pw>V0}wZGW<%I$Ai|LHv=-}-^? z1fTeU|JV5O(*xsbGICozYI8ZOU`6%%a=|}!bV&~O#nPI?J&4DR(Q=pJehXG5TiFM@ zaQ`Cj67!m`aGuaBx?lkE#y)+P!Wf(9p37(b3(Vj?lXaHJLt&Gp#aG>;`jIu=^}*6E z8qXd49(-1nSgI;p8NHTot(?nK^e+K=L5H|{9BaCTta7lJEo`DmA;%xL&!9^=o3+vO z^f`N)2@-MVBe>jX?59~fu!ek%_@W;CqHCe62<~Nv8e;)laI5gsXTj1cv#x-()6Yvz&G-9_^KM|n6XyIpioXIYq(dNBOc-Ih{ zoRA-rM$#q@aN*ir{C<=BWAkSom_C5N5hiG(--vnc7Iq+{|Aa+Oxz2ht&{!w}OVU00&V7dm8v43% zMw=86dn#uhf`@!`Ke2KJ#Q(80cG6Mt@6;d3R6Iz|q(TfPKi2Z?LHI^t z9#lUsp6KM@aDEn>Ue!g@s2)8YF=G*%?vf*mikt`TfOMUvY>VP@V)hOk_%iWqgq|VfJlOcB0PW~F zX9Sj1u0V5m9I&}dZmvY!UT6K(J6c?~iH5}@Ki1&iseZuR0heuG7`#=P$UXeB4S#BG zD4#(L2}e)AkgWC)TpOJlY|fxZg=bX%E0f*_Hkhwbk2Z4GI$I=3E@E#u&ZWLC1@)xxSo_VshaVz#)-S= zaE?N9OX~?-RP#bs=Dv$7F!)YWHkSBGb;zo1F|m2X{ygKY!L8j(T&NHzQbUDOgNJba)W_t zAHi5Y_Bi6+S@3jGk9=l}zYn>a1!hSuujeynn>dxZsfnHWZ#KSR{$J;wxWE6tdcT4v>F2Dt-eiA#So(s~^D0c3kn{<5Y zi#UtYm5qC`^2|*zp$$&$q7U%tooKQqb?#mRe%Rgzr}*%)W&A{VE1N-AS~kFW_F``C zEexW!&cb=VnD5t5<$LR=^POdE3!mwOztrco1P1W7rs2m==iTMWtj|6~)TW9P4#}%q z*p52;7!b!>eBZcMl{%ILUnKsh!r8JmrpZHHg9oGDiuX%Y_kpIqTcocqH3goBepGz7 zY6kKD7I-zpx0}*!U{`Fk9w~7T{pPYmINT%bSV~?qQvE1+u8G}qz)dE;U$I4`{6c>= zJLugUyh)w;u6a4ztr2%`+|Bp4&Y%;ABX3M(8wGlHmdKfrN7cNwCOKKf)osqV;*>F$ ziJh+y`!~R;>W$PSujIiOIOHVdM?&&QvOVGhOy!)(U4X0jS>YYs9e(F$gb`NYd`n=A zb#U)0IqZP}`d28A0rs$1FKg>YzPx`1jnIj~;oOchPK4O^ki3Lqx|%QmdpM50xJMQC(FNyJ@DmkmZL4ZiW7Qt`Z<@KieUJM8 z*}wMx^Ym9w|HmH~h0c4v75vnD|8)Idz$?xjje?DBdiuKX(cDvbU=NNXC6DLIXJNyn zrBJPexG(jYOH8f%dY&9z&KFiDheflH`S9|NGsPVurzLJ8I)6Mje`zpZD#L-o>x9$X zcQ6)nj00*6{Te>qEalc-iFvN%6RPC?;k2F3)Nt9qI9xAt&I`mfV1;qdJn(1iE{y0W zmMymz^TO72KA&F1k4|#V&SbsS3-oMx$7aSnYl|3LwL;^3D%jAcuWB27;j#YS0d-md z+~q2|C;XlIOtgqcR5#jU@0{K(&M$hS3jUls7J!wdZHl>r340zA!v*kg>iy?#f*s*@ z0(vBPirv+x4-7f3t0s<84D5s5WAtB|B>#H^FNTzE<@`>Z7TiDG50Ni!a%;_B-%c@)<>Pz;(FhCcHwq%4|tyHdLuCH^6+h@@DAen%FQK z94p?*Mhl~wG}Y7j++mM9P{)Rq;m=HLoGt7Dua&@^h=*vg2GTleKA?ITOGl&GO$K+; zV5Xk8SsUyg%#Cd4R&E@v{6qH-Ul{~%d;S;%&0iHbAY|szCf?KsbRH5-?C)x_~yp7!7^tx2wplq zxN)9ZZF1f4wh8;P$)2Xz#sJ+AbD%g6;6!S*ZTcsh#1~a`9wu`FY(sM%@Y9^nmd+M6 zCiQiEg0Y#k9&+Eoat8h?ME~T7LjfzOZhhR(fuFI6i_|L;%^`OK+YhF!gX==}(iKN2 zPO>*QsD1$rN8{7S?sYW0;42RvvVoteqi=E0y8GMI*lt`U_kAhbDyV0p?l(9POcJs$ z*e^}s5XN4j*kh&%Zd#XNkRWu{w&{R7Yfd4!6 zB1_1dd-PflZrpJT(B2h#Dm%Y*70%g=AUd14fzzdX8&MuK>@ z2QRY6T}trtZG3Hu`i&6Hn6ah$@@e=3cq;h^>Il_GCg!|Wi4``eAq?X4nSFmYcV~R& z)qQc$e#~s)xSkmgjc=I$Y2u0Z2QM7g&%E%BjgNl%xqGQTszwcZh|tT2``Dr8h+ens zJGw6Pe(U7d>R>76XA%>zx7?Ee-J44fB;ENA8rGh3F56wXFnGMqIRFc4j*WwM$ML{B z>pTzVOtq3>Yb^^8;ZU5jLmM4iotV1H-D*l_$NJ-M2P+S59p8U^mfmTf$>)n_^F!lY zepI}~3>xs9`XIwWgzZ`G75%LF?f?x*8$C;loS6C#y4)X|8Ig(#J`mvVn;QXIRpoWoCBYng68Mc(dldUazqSZqusY# zV7P63$IdIv(R^jtTDb~maW&hf7O;iR&jp9H*{=?<)jsFl>Ca^LkvQg)^z=Q)x#9k! zi!8KX13#aHt3MAXMLv%83W?of^6nP-WNDa^crkl`|5QDA3?{YcjiA^rQk>$TbH~p| z{IcNO)z??^TSN9BLPsFp(!v*yd!h65>PZ#CMQUEAtGmekY``6sTGb5xF>gGiezN#- zX5AyU<{Y-coo%=+OEqucs4DozBDdjU!@|eYdGPS%saNHg z*8!_&_Jw9s)WNCZgB)qV(RF(5+TeAbV+Z|#ML+1m*6N77@3H^uH~-@F|M}5D{2$)) z&G3Wo`AYC3cSh;z-YD&->?d=6=qX*JAGPAYZF-rd%q&p9fgqe4saK9LK%4s+?qUP> zr}Dz=#9(fbdaVce@;`c=Webu zH-otB(HVHfv%{U{`C+Yaaae?-EQxQ#$NKWO_!way)jz5ZNBncmE)7=pRx;y&{;c-d z%zy*5&{jC;chL_LuL|37PoyJ-x3bZL8N`io`Fgf>cx~9-`fR?rb|%{_Udr~Qdm^S* zt$}js^1)U7oC`-4kfVzDb6=ViaRR)*d>DS}pYb}jn_7qpv3ea}XYsqoeGSOdTg1YF z!Sk};9yTz>zN&6tT!Uuzs8_o~3|EH3r9Z>4g1xbNXsEac5!^};zLd3=Cdaxj0JPOK%A`;es)GJXf2a2|35MQyo+uT7$-;>m##rGxr~?e8>L7 zm-688PvZZ7=9zu@6Hm-@%&E3Ko-;r{3DyX1!@q+m!HP9Bo{lq_FRoAJD=Vy{&H+6~ znyv|6AvA||NGPOx4fxis}hiQ(e|Vx<;m#o#{d!iz-gokbrSkMpj1S|L7Jv-lkB^H}#! zPO6Sx&jI_liKSEcEAc|oo~jNtQGSKbbveIH^5ipMSO>mQGbgBz8}E_JdWY)uM9fuX zCPvtq%n!=wBP%zsgWz1^An6iSU+C+z;oqC!zp6Of*3H4^-K)o6a;J~K2reyw2e!!x z6#{x1I(G*LM{q~`ujJOksbQNKHASC9&$Z)UtzCWo8{DH!c-;_O+NZXl6N1-k;^L^M zMHg8nCWxfDGSJ;nE9SNh^49Pi;Iag+EN!Flfg5v(2Rrbb0XWSdp0A^E&>Xb7w5s@% zkY^tADmL@dH`b2tJmxO=Xg~R`>Xv%UoyC9hS^mB3b$TWB;Q}1itLxp(4)_e|D(oJ% zhr1tAkJa3p&w7Uw)OnNRBwvipgd!`h7>{@ea9 zeE8etPn*Nl##Ub3>tyu<&bV+3HpWto85qUn9Zl?@2Ubx$(84~o;mw`xyZPeoxqQYr zlh31%DuAo}wG&y0RzVzggBt7tbs!FTssy_cvQHu0W^-Hke`4qox2s2@^8POO(8FJ8 z_MM5H@!Y$ETjuOw;qh$lJ$fZ?qk%~0=%ohOB~$|SWta4m2->V+!Jjb=}!>FS{M z=AG=wKasVlXGr11diZ1Y$ky!2EwlrD@&4!x)I+e24QPXd0_B|L7F==jG$MyW9t`yk-um=X@Lct#~cK&$r-4I=s6}y}v_GjV5{JB6DvQClG@S zjvi27*P6=HdDfPh>gEB@-oH06zi{j8_MiO1v*-`r{kQ&4zWdM9|K@7;#xk?4!Vv%F zb56XhOzmg|twTsYr%TT#^`YvLKO4`e(#$(_P#$#wtBpDGXxK5cHrP8TeHuOwuEjgYorHU*A9xeLYGMNdenvS@3trV@y~T-A{|}xfKZ-wd z;Q^FKkI{vC(ny!7FCgA*qT5!VvT+Q?n%S(K`n9Ayvv7?3{&P#wN(SOea`gQvGyGY1`~ZHd>CcAlEf&6VLgGv8YDIZmkubXjN3jgha>% z|1nlm{zaNIVHVbrcdK)!OzNR5)yERUs=tLpPS63Po750B$yIoY%kX0!cUyS^>4!9n z%cPFQ5)TR&6Y?2$gZk4}>v-mIZMfE&&zg@`zwQ1nCkOuLJ}`0{A9;Fk|1CJ+7yP z1`=mqDT&AofvjlJc;!5e4tS?6TFy!IOUT@9?eMnF5-{CK$2=rfw*{WzD5=(7Y(s`bNZQdJhwBsz)tC z2=>*?HTA*@i7R)w2ZrKY?u-SVso~=+&YAjIiyz*^POGnYt+kvj5YIR1w^hT}uCd-m zWqnY8n^`1VC-ZprYJSkUIr!Z6YxLhcOWu?mF7{QmuqLq?@2VCPf* zTlLuEIoir|U~`)E1PbZLUhBXOcZd&-6WIaia-b=r-b zdzLTItIq9D!?T>?j7?<+`Z;upaeFq89$(8JHeSv5!6L!o^?cDmpE?izV*TZRTsSV( z$)=o18w_nKZ-ZS|jwV#CrDITsXu(617oqm=jRzNpR{30BUErOiIqO%z2lof%&&_|IYjHd;Z4$(8W=>G&2f{CU%irM+4gmr?tMnl&#Xgpbg&cQ=^hp$zAe& z)K1`c zu}41&gC5WhxVLDm=IgsF^z#EhuFC&#ex*Z{zs1i~$VE6I`3ZbunfcQ7Y5=#=XJ%=Y z+!OQAAHXxY=dz6j{4|`EiygPX0J4EDm{K`uACAp|YiyeLvX$*SgZq8*zW7$Zd@d`& zn~BSA5ZgD1DVoY-OV0)tZnEx{2{(t2sDZD9QA1*|FuG06=``z#<_iDpGBeNQ+?sH# zA!j8)TNC5=)gRv@zZ=TN;eXUiNd3+t;=N`MUV&JB+~1Y@C70eQ4nD`?{uVb@voaiO zJ-q<0LoNgkO+9Bl&bs>ho7hOz)EUHrV_gvI*a45&aEO}K6;zlDNB*RyxE7!7DUX7m zkft)m_l4ra$?X*Ax9FI;nY{b7tgKxN)FEFtT|)O2;PJ^GKQ;C zT~SP5tR6N)+|RgY0d|KTvH9}WGPO~chpXiEm(l);e-6-O2WSaW^fx|tB(1AQ2lh_q zneUOUi`jc|+?vCtK43a8%JCKO`89B%w4w6->NjBE&&E1I-br(G^xrWyw*_ts`&Y6D z^dC*=UEqVkO#FFMmxT6FbSWbc_n@9M29>>r;L^d4cAO(E}ubL zHlFu}Z5RJP?t`hGxt7bGu|M=%u(#%q=ia#d?9$$g&o0irn42?qm|G~kelPDHl1FBK zOJPy^bn0!;hcwZD6#b>|PJQX#lj$%0QeIsBrQ`TI`IePC!)0j@~=&FV771ocT4>& zVtAc#A5G%x?Lhq)?+iZYO%FcDUF&jQR@(HPef?JMyncea@u}mL8>jR7EZEjYE5Y4T z4^VNQ%l;CzZ`AD6ZF~%RsSW>${pDhI(0?i4*}nGeqd)l2u=@G;584;s_m_nay!d_p z)XvCne=grXjI(G*eJ-gTA@87BN+}#+N?yEyziILQiTc6PcXK(ukQWywjvw7xAMS#2 z)gRvm(}@c*IU5o7BY{`i;vGBMYsE$4-N1DI-aNVHb7*47ZIBQxhdHfXL=faoDrq$p8>iC(E{Bje$R+YV1y}C3knk^8SCTGfl&#fJYZ{N@R zJ0}M#cP&q)&_5b|mpZS0A?r-}4>fQe(`OzDr<)Slk$W=8} zlL&v|kn?M}wQOOFJ3ua`LS0$~tfIc+9^7Od`_;$Bc*N+`M-Gg~%qu%O#rZtRTAamx zogD63r;Z=qo5<5OYOC-Y9=UJVML&YSP#hD%#YE~gfgZ#r7D{E;ShE7}tThxT;@}@l zba+1fNJ2B9zX2R%jd%1s@@dQ~N)v3L;?$+Ax=k#zLGFhhaDGYm23y7F)_6_>ZoQ7J z(LF9>Q#I?=i59Xl^|oPuVpu7kgV#fgMEn>i?!x{wiOn5yg)V2ZLCmGRcL+yhE52nf z1N?=FZ!^_T2)|koM(6J=@?;)8&MmO3CG0@#Rfq3r;6EH%zZ8)CLCZgZfb$V0_iPjeBBXqw358_vjg6QlDDD zkCou(J-C8|dS2y2l{*qo7ZZc3enwi#7XD3Krb91|B7biXdsTUVoAacYH6o@;(M81A zmo97BqJAtQe=9w%orgupV`C`HCae+gP|ox+DLeYZQI(pK?ha|1QQ)S)KK)0Cy6CbwhG9A^I>69=pUH z35XwUuzd%tmJ*9*5>|aJurU;5oiS`4-K*Q11rS zVQCG;9YtWBv^O)@e}vY?d1bJDAC0kQ@v$FcPL_SJJLLO_kzKHy6_R7tzQf0eKT{p1 zPpwB&v1ncTQm_hlx=viC-ejt$7oY30cGA+O>V1p;CkA^m3m zp6I9BqUULi8nYG}uo#__L0`b}40CghzKzA_SNhY(*P?6rT=QyPCAZwW7kkG0x7nYN{7akJC@EZIjXr%<)=YP%0%sWXs7I&%Ap|dLZlR4Y*DM6}!xvYf z&#a)URNZ2rIAwo6bI8GldneH(eDe6g?GyP9`n#TZvgXZvZTr?>+BrQ~oWt*7tJDY3 z;Vj5zsNUVCABY8q>Dvx_kc|9}|9$JXt6A{yGkJe=;(Ok|`|!}g|2vmo_?rL0&wM|6 zbz>ClJ;=L9*gNiUIQFY&@U6^@F*zs8=$v@Q9`Rr+xRx(3UmMI8D}(zFmWCUh^T(fG zx=v0;IbU%)^qk|&if`OPqqE(zv%I@>?AI!@Q`Q>Svt|0D!joo2>Idhy&ki@&&!U}`rVtFp zU2S1|TG(Orj`BOit=OT!;F&m!c~C(b4U$Bhx61{9}@DGA)j3#$JLB)=F5HN zzQF+$o2RnoB5R1YRQ(H-C-Sjhn%AlN|5Sa2(B_%okOn>ESI{D-HbwPL2|g0M&0U0#<9->$N5#0Am-ZK#bw*6rc$K=KJGs42yt#jJ zXs(?eEX++4UvtLsfhKXANxiM|M5^Po!H^y`g@J06m|tPRJGkI5#bF(|OnS%l$IwV211ps%VkPkrI5)}MXsS@?(V`nLa(cm0?4kDkuVI~F~xm=oms z_!NsfZDQk^a5T)F27|4#7j@RCj@@?1xgKivheLnW1?(2stC5<|?!0xMc=|M4V?GCPD*4pzeKa+Z`r31r0`9(x4H?g`V}?Nizg33!u7j_t z%moiqI1w;yN=>8sS&r+;!IOGky| zpM{^ZOx6q>r1?YYNh*IL{fzW|KL4*-4dZ+d^D(87QQtT9W>+7LCi+WPISKruG{2Q` zz7U-?7|JfAEec#}3xZL*5j>6mhn=r~{{MheKl~}x|9yXX>cii4UL~hf1YfNO-1`7K z&95Nht{QM?%2#7M(3bT$XWH`)`zW4!Lpc}pyEgXFz_*R(7vYZ;XZplaDf=m&DI}k! zI=C9|9x1oOxoU&+rHR{SEw&WX!eOY^!8X8^Ml~z$vIo0Y!0p6R%%QFjlUi^i5uZnI z9kjDrE1eQM>qZ;kW0+%wLgump3jcrVtDbrLR-jzkz%{VXiv3iT+8h`GW| z^jTfvbMk+6Y_0kN+t{Y@+*Qt5mouUon=%>aH8Tf50;C@#@_sSdU?Vclxu_+7jk zJ)zPWW`^B*cIjXuUvys{HrA+@qSt^;&9YaS&ep&|kvG1Fp-sJCx^}oI2~<{ zM+_gM_3_XUi#Io-6=w3`%d5+S*`0E>(3u!(0RrkWTEr5eeKG5;QDZ19g=VBpOt?Y6 zB*mcO2GuunY&W@MWw5Gh3L97foX=*H>8Do@u0Ox==*4_t?NhlkLq3!DH>ve% zs`rV_8IH&|`^0cn`n8kON);CoFVv0Od9k=i4Q(Y~?%v2&;BK1uMQOD<%xiJzQ_w=c z(87mw;r&v05(8|lc>(ne@L+oy`%ZlWK1X%a31?Wd(@Vr{6|k~_eX#JK&W7y3^q6l} z-FJg{TXUiV>e@{5sLG{kj&g@tw+GU7amQU^Ap@JE9tWyvPRBd}-;WN;hUdm_jB{?{ zP;KSis83GdFugtMDtkAxIW$^LV-|hjLhc`)9IT@GZ!8iY;fEspp0xfR_fYfYHILKg zonxMN103j~qqoX@FPKM|T{?3UPPds926t6MLLS8{m^@>TxS~G{cB;?9-&p)h=g&X( z)cfOi{k{L;cYUSyFV1C++v&)S+TiGj&*#}VGFv(NhH&W-y?w75roVk#fqpckIY zIt%beXp+GL#EIN@>DSSm(N{6sq4)R>_+p27bK8pl$q^dh7{jor!wm)x_NgHx_t_=p z>f@6-0Wl2xjpjPp^vi5hu*xQ9sf9g^gq_K0X^vt5x82+Yr&{p;)Tij2 z1;lIOSX0?yaD&VK)~K6PKb@{PI(VLt`>4KT4RC;sEf&|Pz5*^Wo_gIV??0|3bQZDU zd=B<1;vF?lQXEK%y=&{|uyF?V)S?$bfjMn9`KK1#yXswAJd0znfB0<=&e+7ZTJ#HS zxfAFNcm`~%daEk`;$pMM8XtVO>VSOiVT#{~`m8lI3Gd{lcs~4<%Nj`A9CHW6bEpPe z{Vt@7(cH_B7$ZPqYg0F3Z#1*|V|*66Hk-UdUAi=B{-wucUDN}_#;>W5s(LDgJj*+C zS#=)yMZB$;MYHCm8`Yc(11+}+7h{sA@bHmMW|S1ERaPBAxZ(&LJ*C1F^;Dj-Lfzsa|U# z{lhg|DIx~c>~(Yo+(o!Ke6aMSk^CgSUK~XUUb)773BdO*y^5_qd30(hT<>-s?cd0c zdMAmq&*e>eQ`U*cYt$PCULy~8*N=m@nVA*7G)V5zkBxkb=5cxC0erN$Huynx&Ej`d z^V(t^0?u#Hn#wlUR2RWnq|Z{z!^UEZRr8z>qr}3K-~iVX7LfnPxAXfuy{MN4@mqI> z>#djb+A2M`;T&qx41!O6{6wsO%jbrQr?Jhhd_U*cRlg|K-31q!W9~?H3)`(YgMXu* zfPMUP%Do)d>tlB`-zZX^iTKJEZs(ji+~x5MOJQnaLuqSFG^-|DZGj#~CHR~=v6h9O zcd`#WUbjbsqxO1Pwdi0j>r^r>boS7p3&&sS^`=2G5M$m9OzQ zvzmL}0Gq2{M~E*7(I>mYAM{LjxksAY>Z8rI;j7iB)1VGZ_}u1uYc{b$@>2S>;RilbK(CB~SN0 z`@HkteK2pm@&3%Z_P(zj{q$$Q-#pc#PU!)?csiN$03H%Q+MqsdfmpKP)8h-QXkbqY z#J@psE)SQd==Xw6G0nXEkiPp5Ci3?3YxMtD?*d{4*2QM6O4#B${Pqg9b9MIHB{p=i zNAwg$J9v3mu1}(MCyzz0O7(%J>avcA4SJJVbNVH3;Eef!y(g{VxCARb~ z+<`GiXf}yk(FO1hRe$yP4jQysIEp5<*B&{LGW|2E>WkyU!&5g_r)O(}y|dtvA~Z=! z5iPGiQ)dkhwxZaBI$2w1s&kuu9jeiwMxo1}Q(LJXZ4vsJSZ5C`@3e@uz(tNQ48Bu3 z%oP63f#+AOqyB9=*AekqihroVcPP(oV;2q1M}vD~;$vLpfBif8Zb04G&h^2Y-f1*H z_+Mgw_0^X4F9nB1@D34igoOq_&}Vc1R9m55RMJIBKiE+{A$grT{IMflqP4;dN$hU> z)x0b&Ry3mA>COUt&$5j;N$-_ zGbSuG!GbL~w9VY#uRe2r>5kGAUA67!G^$`yE6x*j#vS{9Kd0Q9r2|+m`ZOfqFy2X-Xrm zJhHS(O}Ix3E@0eu7eA`GE}Ffry6ksm?NaLomUHAYxg+Fe;UKX8_ygg#5Zqql@6oUf zUFu&wd==aox;n*MieFjlbS^70Pqi9P(nA^EmKt*Pyi{G7^4B5z;}Mez2Rr1ZT-MTs zS9j@!-?HI6*QdGHiqVN{)b9-2r#^ue{GH~UyX>Rp-i-4RaI9T&Kr!d9$-P~p-nxN5 zQhv6E&2iD47~D^XImybw8`vb1e04~UDuCMx^^3ft%bYj|KPkVZIYyds8==Q=_#DNj z4Phm_nw7T6J)q~>T*IH5-P}5ih8z9jKXm?Z{W}kS|AXWWe~P>Jv(KW-pL}Ltu|`(1 zlCQ3E&fx$epEHZCN#K;c!+Co8(}Ql2`vzW9-#qnvQIAK}%*6C~Ojz>-{wG%L4!+KT z&sPtMI_sbwfEIUC^MN!=Pjzx-@|yIH%4-kq_}rWFD%dH3vghTeJS^s!1{IkgYO(0Z?ERw;}b)B=~R}? zff0#k$Fse(|ElStX3`N41)r!o9pQhAy{{0nmdJ5O!gyd9L-8iHyD{Ifim$2Cd&(xS zYaY#`cbLMbpBNNp@VjgLdt%KN=S{p(fKAX$F7Yx&`t+>|ALCn#=<(O#N}BlXHR_!l zG+`b#Qn<|}22lO4jYdMVwCe1U_$80K;$r92|KCBIXY`~aB~OG;Yr-w6zk8J$`3nA^ zLQGxZ&m6P{Rqky89g_>6Ycku&q>n-!t&-6eC&Qj7C$>v|);v$&PVPE3-$ZYs*&Gew zcK*zx&wfn3LPYN-ogprkKgpd7}S`O?_(xEL$g@qkkyR&AV}~ z4DuPw8OZjxujgBP^iJr$Jm}AUdSKiV4*?HK+$b!&f#yrT+7~7zFC|@M3|7^QgEnWf zi;dB&S=G<0-%~>x72btf`keX4!=!zBusuIb4wD#!oTi1HYOtPlK1X}&z%7KVjkf_G z8Jy2Hm?h9+uQWF-#>{-`jwx5?*Gxd zzU6=5U0-p2Y}*_!7%Eb zC5^Z^Xpd*KnB#n(_*!=@WRDGE`gQ8t>l^3!`3pmbIJ*Uo>Z%Tyv$RRflCUnj_`glg z->$Wob+>u<-Sd0~b(`)P_V+@zQ<}=!YvN(~4(xM5b_aY@14DMmh19VzHEc%(f0^`| zvAs!djCuece7){W6Ia54hv)Gx%mAZ4)v%|=dXP5vx`9vAEVmZ*E<0!|l&etPfh`>< zKF!6h*=Y2gRCT-HUE(`o-0_?M{I83RXn>3&g$KrG zj(Sr3p!x@HffKseYR$B^SrdnPIg>T1ai^PLTE)y&zN5x}7qKBldiFZRv<*I6eF{?5 z|Bhp8a4t4h+EWX>rW!r7Kc7{$sY%2~xNF=8%~0ij2Hcw_u~S0K6UrZQew1@ie;$j^ z(437;>|`ol0e-he&R4VOBJ8X*3obZDz2xX0!_VV06zg-2#d(OA3b^x$?mc!yYm>0I z%Hzc3z5}=t;XLUqO!)Xf^~q@i{UNvjzOK^@^61bZmoxY6)*meYQ}pjYFmj4Ng+2MX zC&9%}JlVKljFe-mm*xBaf12L(Nv`xd@B9abB1KDTaTNZ*kx8m4OEf8pl1Mh2-2l3Q zMq@{JV+RTapio;@Rc?2G@0K^$%G$AaHy4?d6d_ZTC{q&0`Y;or2uFCN3D4M;<&h}T z9GeoGCfOU7%6l{C_gut$K%g5yW#0QP=RD^*&pF4(ztT6rIP48JeMk7_(CF?}d@ekg zPwp@#{&RUgpZ;1Awk2f^ffW5R=nn!QL zS9#bB4}2gytG?&9{2hBLp3nhv%3m6Ezo~TJ*Z|coXfBlMN8sY~I<~J7GXI5H0#-R2 z20H*&R4fzf?7}^1cDzpYt&nf3g=P%{+gpt%MZ%7Zz!Cmljx|g1a=r}GInpqfuxwv$}4a!CQ&kc{u>^8IaM)5rY^_&e-rq}&(& z1?m7Vx~5J7JGqDFZ)w-W~3o;*aPJq5^P=w7EoiHSQ|VdZm7DZTYLmzDSm%_P6YT)4nQ!vW&hXvf8&hw@fARGF>eqg5QnQ|T*V+Gp zA2`3Z_u=rEI|&>chl{1pG9&=7lY|yR{MfqjyA3_%i(0Pqh15}4C$x4U_ckX zdZnCW0@eU8FJosl6Mc!gOo!Y|Lj2o-2UPzX@y$Mbu=?a!flDn8yju41azzgN7f{!rb5`YCl$<|!(=^}$@r@Cf!o&Vryn||9 zUEw~?f@ znRwmgZTnl5zc+vTvEAt3p#S^D|LJeiUpPI9m)euM@wgXVatFb9xK_yr%=KL-c5E-e zDb=pzQ}Bx7dg;RlCjs8%+4cO|bHg**_#N4KxM_L6Y%pZ2lH@_eI|zT&?t%v3eb1f zZ-U3;19@;wHSXB60r+7X{Y&Q%80>}IOpz<|SMu6Td^|i`iDT9Tmo4~h&4KpOxT&9VY4`CVr9PqDhnev*`O_t80aMMWbl{~*A5H8C zrZKYByki2E(Aov~7|je^Epy?-jQGwLy+4g|ywV_}0gk{)A?v5OS!W^P{+9ifh>Oa( zuh=-v1X6#C7~GpEFU(r1ANv6Nto{J%ovOLYobO3!!1AF>e$E}QWOdGu!`xrH0N20S z`_|OE!5>rmxAM!JuaEEUOnve}_7e8JGFw;`G}w-dFLOE9J~RAQ&^TQ#<~9x#?##j5 zT*Wrw6C%|q@f;p@-ot*Y55fT5LIe-P+{63^e?MTa#M315LHI@W;cqB!q4<>?UV<*7 zhyG77fk%(_D6rua6*sVl_~FK;J{vw0KimWtg*%)r&TKGGEW!L)hkSx+wtU$X#oXk6 znx*zbI7*xzF$T{=pEi6BntaX^y#erT{6Bsd{0MFZ+i?yf)=)g6Vl)daP_T|)a$mxy z=pNv&i2F*NBe+99)5Yht!LA1GvxC0Mh|iL*BxZ@l_p%m>E!y;)@3zlyE?*wcawnQ# z=04nOM7-GMyF7IGA$Y38&#B*JQbmIVK2)DpVNRdCj)A)>d)uPd(oD9RrUy)U58ZS1z_z zxvX+dGQPZvJ!tWKo}Pz%tP4KK;Ijts0n)le(rbXH%6ej*U2uVF0^Cx^!Fmugb-*#= z`Vw%7a74hlP>x8w$5y)d5bTuA{v@nd%8V%A?ZbD*_p85ui_3-=|xoq{eY1h$dkjHk| z8}XLnfjZpZfLf5I?iD^*+^Ei%dM{|EWvF}Eh~bEMT4;aOrgX*+!70pU$Fi$Js2^=~y((}0;1^0Y3og$sVE z5rF z)ZqH+#C3Jv&(M3zr&dQkA;uOsaQQwtsSy3Yb#q^yUEV*+rokqqE#ld*mnj;%u;r5v z;9VT@@os%|p<5j-+~IwQlf8LtJNd0X_F@e#(Fc3ad9(R-{K7J8*z`K|88(wFve8qo z{GIc6pLh^Z|7V_j&);9N9Gj3%z>fg=;@P^cpWvslz-xaiHy(wUKeLD=fGv9|+1 zN(`>`^<(*A?jSzLQ*Ch^fVI$9uonqBwuqV>%_WlklU&!_o5 zSGh6mAF=-uGuW>uFXvZ-WBC&OS;N{gy&x9z3Nw>JbSCivID&g#gO`{mRug_vt%jAI z87~t5E1y{M`v-BfN;ei{S1fY6VrBq}lPBw&9>q~bkzZi4xVt7u2zSOgH$F*+w0RG%%J!R+G#Ng_Aw#Ho>z(uw2Lq73P zozDn(U+J1G`B`B^?qxvDmgYArMpVt7r`V6@x6s@<*#8)AECEYvwpD_ibihFB@1Z#s z>gClU51ye14#A8zwLKm&T$el8#UHBHQCh|o_R!Mr+_5^}WAptMziW zAD+bc|HS+Fo0~6u=*@J`Qqi1SD5^69aB7D$=d<1xHirK2*_C3(xl&xCF2cp$h47>S zcm8pIPW+5wLSmLozR;T<-CKtfVunS3o}4ipl6o^pk1CChbUQwFtDIMeZwtZqK0ZqL zx=TMF&B$`3j~Rf^HmI>jhZ3Q8-@-3#!sE}94-Mq|Ra=4G4e|eF4=>_L>0M;cW3XXa zV}Pv?|DgUMy5HrWqvI=e3!Df2yy`Z3`2IF_Up%7LI9|u5uaO6@Y|Zf;o)B$c@eZTlJFl+=~NXU0(ifvh!08AZW*9ZJ}159nhbE_AEW*~>cW8ygR8|s&hh+ctoCA7`z^>k`lPE*0lXpcV+iM_ULoqY z?`u9Eb|d4?IM`_qoaQh$(l2LdW82}l6W*`Qz3xeui7je#rxM*4#VOn|0~a7|nd)+V zVifgVb-~wVk21y6oRh~k7`s9qG^L)ng%6I=+pF)0kp>AYWyv?{xwLlJOPh5RrqNtB z^*vB;0`(`7P1I}+>0!G38)@b7tMs#Lzzc(C_~ zh)-NE4yK6)Nt|mP-iCSig?9)4fA4v8pwH}f&Jq_W_M#V`;>a%dv};_>A$l2qdGsaT zFD54R$fH-_$21QiWrlY~U!GR;OzzB*mvs_2_K14A41Q&k-rwmYOws>;edXKE-~HMH z^S{66f0%#%p1(1_fX?J%cM@kU?k_lvy=t_Y<9Pc5HN0psmWTtEX7W4mItl(I0yC*! zV+(&9W9Ox5N~sU(>TGZ)18}T#it0_JS*YqImBRU}pN_cn7)_-|PSTJkpr<;#;}JA| zNBP+osDn7fTwi=BpBocbtqkZT6yX1<`&>&8)3cg6LNlC4uu(++7u9S?A#p9}u zdKr7Vf{$6i&o1*W#(4CispYjT&Ir2M7Cr65`lYfr~+RQ}%reh(k1o-ITe1 zdQ>(~!;@rGC`=jK4JNK^n#z!V`<4KBJbMeL{f^Qm$m@-h6K>K3=9`{k~L z_~-5>y;kD=c?EpvQBRS<>$brzZTbi#)X=raO9)pf9t+6bS!jB??5pM)4fuV7e2s8f z7tEx-_!;NMY~aVJC5@Tc?vo?(z?K8m|H?*zStIyV#b}D-Ra=yiQ%%bLjI5Wi7O{b1 zdzW=r-)h-SVHf>UpNKyF89L-$2lS6q4nGn`26sB_S)ds&i%a?3{0?~JcHX{+=7%`l z0vA~LusT}C8gqedv|i2v&&vH3X3aR`Z9d<^hiZmkgs!xXF3O>n!p~0Uw~5ID^i-

~ecO*{MS@qTH2|nLrJ#1`XB25kZA}&SRl7QdEwFvikk^<8ELONXTy zhswc}^M2smJh)iJ|DpUn@9POuiIY%{2o72Q-cVE3=KK5P`ZM)#K;xqtPZuoZvsMZA z%|pwj+*-*$!WsK;$c-+AI;@Awn{F!zbi-ESVOPpn~& zf5V#ir;6V7)6^SQ$2**-(3#6O)|QLy8z+i&dX|UtJd5~wct6i$X5x^(+uif|ZJw*i z-D_eK95@cEbFFCJJzL!I_KxmeJG=XZo%6-^t$m|gSN2geK27}yXOOe$h#Oxc9yQp{ zMKHf=a#OUgoaY3au_FEvI}z}i%fzSJGb0XuK<^cL0l0A04l%2X_AaPVyClpTl4s*i z*l-6PXFhRQfA|aP&9DQULD@~7HR8{trT4)}i}?HiyC%#!;9g22?-4g@hJfx?S#v~g zBmh6V#0KI{EuKqSi%jtk|E9%#Q9dyE>+iUE< z^wANY*JKVLvx?|(b$N6aY~}=4idVrTmN*P))#(|lvn$@JLVZe|+Nyy3iMW$4y+DG{ z27l7K06rw*JSD6t{U!^uGrN23^&`df%5$UO5?l}3l{R^HmpDYdp*!RW)AsW2-PbPf ze#JU4YF%Re@PX1X$yTT@pk~?D@vRCb++fB!I3Y^FMsB{jj%_9%Q-SZSVLyZ~I@}r6F-tqFT)%RM z^aRF7;G59qwBgm%YfC+ERd=tM%QZNd8fOJx57&#mVZB2BeW}Idyae2HVa`T;a6E5b z#Eu-!HZ=y`o-Dc7sUo;Z8o`J&Ehlo=>)DLfIpJ<#7~%ku090#K_*czzRWAkg>2={te7;NEX6YZnEp6)i60}<}IkE&kK)qw$sl*u?~&Js{@pffFO`PcoIi#@Xty_5rno8RspP))c;6+V~7U z-cU!cdP-tJ>^1ADyRS1!%oc>;70uXIzaQ2#0ay8O{p1Sr?)>Haj=ep)eVcctr&Pf6 z`Rb=jysnyo74GITwoT_*HrwV5O7HD+r&Dx&P56+edVHbDO^36i==E3f+x0zpbQSx8 zj}&(l^I57zEOR})kF@xzGZUuO{gzHdvkQCVsK|FuLbOoop&$+{!cNI&t2a?u+szpZ z$Qd-rsRh#0@SY`C08R}!qgCN(ac2p7S@~<8RX80E0SrQn#=lqXLWDmEu@g>s0ra1U*Z;~B6VLqoqxi_r|G&+TKKr0@ zf|{xuZMYRU4E1esPjD8f9a}yNXAK6}J~f_=j^^{T)C1!G)z_he&Fs@>pgWwU?-jUo z`MFW;JoXEJ8Ibq3qU)pD-7C9S?(Jp0_F(ruKb~{;j%H@}@$BSWyo0$vjja*Cyv6^A z_eW*r-dDYR00vht5(5tzfIZbi!+_t^Z?7%hh_e^z{IKs`o?jX?i*up6 z=`G?N%}533ptU3x#BUq$!8&|}@<5v1A}rj%M-O<`wxhU@wW6PLKwrKT-8iu``gGww zbcW3R@zF_S($8QYI`H>v@H1`fvEDbPH&PH$Tk#re8Sfv*GuRpF|KPR*2i}A_G!H!2 z;mk;*z04j;;}XCfW$5$z-18RxtDDY_UQNywuQ`|KlQoTwSXc@^idZ3)?uQ(N&Awr` z(eKafZhzrmkzLs{iqElsy#E$a9{{_OPK8wl56q?KC*&FvrSwPVaFo! z3oXuljJ=fxSanarn?|t$v6sO=J>yK*Ez0kvVgS#!=HFrg|sOm+TahJpuw85G>Cmr~da<&lXw#(1Q*agiQ@UY$D zwNsu?T&=jShWg(~gDd<&El-QPFP&WJqdd+@Vi#uHDq6QLz3G4J)P3_u^8ZhAo__UF za{5yb>=W>=)uqB(h_P|x43t~M9t6a|A$CIjBUJ0I*jQYm>Yvp|FWkI1GOr(GHtFYz z)ywEw;OQ2LPj#o|7XtP_3hA3B9P6-#)ND!vEls>)hlF!pM|bAHJ2r?n8`!f3`(`-9 z4!r*Yd39I%;S8-QI$56@O7-<=5Zm~yZ2~uqW-0exg?osf%eyo5Bf;k<;VamCY35ja zutbaRRxOvyGoziu|BEln@k|h4}Oi_jiM5Y7>*i@*(h`iG6}QBn*vT<-Vlk#@g64qvzqfJb3IF>_gtO z)Wu6r8aQA`FuSdq1Mq|}Xh!T`=0kV~_3jMCh3ic5-@+2oG9<(S4z=tR=Ark{U#84? zQ-3j+TqJ#C*kkgK>feFS(A@5FW;^!Xr?y3T3-Jr;X==fp+Thl%DP@=jIYA=*5HWH|1m56@jM>lq82qH8F{aa*hTZBdepBNY>#RS)tgAV zrii;7CiEt$G3$?5K{L7gaQ55O0eQq8jZOG4;=EpTWW3pso}0dtoJsXGaIj$|w}Njs z^zTt_*5SW{sKQy}P7$MPZ8W1#xg(GLPB>>>d~Ao>f9i1Z-p-|bCq0>O%;JL<$gOxT zw#9|R25V3^9WmdeMIS#84#MBS7SZpxMGckVp8N1%Rd8sXI@SjMvkT|cqjoP5Ptn($ zA?Cmm(`@6rwy_%>y*uYH1=lLhN~q1c#<_{OdqeSn)U0UsO14C=L2qgFI_J2ho@8#q z*@olnIP|n4=E07xhciXz-o+xm`TXwd*Y}O?%)-aA_X)AIW^ia;VT=#4!EVeP9L29+ z&)Z)*NYBkZqvZTtzJ2pLT+q?oJ6BX!L7dk+SKRieMqh3c3)HKlS8b13&uj1(Uz#Mt z?RINX6g=d{!g5ev)4D~?o5S%uFO2JqntALjvy7r^z>f_BLdYIbpqy<3bfG2fUR zNwg<#vR4MIpk9o^Q-=3m4lmO4p6?zWK@)el?1@vsW-MZpR@6sDc0QTTZ@|~kTZOYB zo6MRMbIU$-$!Ut8)@&!~jFbmbPCRK>_+IMlSC8a#^aos2E`!hPaHa#zG@<@F>A=GU z$H7Y{sY}F;@%d#;j?ar!<4=6tf=`vtFKao8Eff4|4-Qm)Fg4dUCgGgp0VxoYnXcc$zQgsoJqpX|MALtCt2 z2A=CmgWXqL&i<+X0WQ4c7|>ZtPh9Q|YoWRp^~6cI3p%4ddL+a1_}H|Vzte1%1n#s& zJ(~J8i)&O(zGCwhepxf)dYqw>Pr=43N2xjD_0m`K=j7Y`)Xh7$n?-W-{9FE?o_#m^ z#)l?RQ~v*BZ*J}TXFpkcmRf?nlUvpy; z`2LkuG&}Kg#l7^oVtr{Jv+9TeT-F_I`-UTY(CHC&+6+}^UL(zQ_Y!XNi^`4 z2HcsUOU*3xYs7!^?CL?>BG)6HJmRxe@9WclApu{h=YrwP4HNKz_5pt!fdiWAkpu1y z;Q&PoEtk;XFR zJn((!C-ME93zz(1neWo)!cRzFq}-9>u1N39+DGCI@r@SzgLvzZwb!2s8wg`42iaHy z(`3vaBkqdfTU3AALX)+M_Ej_e44N77t-|W!4Fctdl#3|W8~X)!6{z1EJWH}n496Ui zi1R8ff#D3K@=2_ljV`R&Y)yP`ct863>W|xh{(PR^`4@1vAD*;d{lKGy{=eympM5ud z?#85_-eo>&x5#dwWq?l=f0U%B^LzN80lqLWN5{d!VK{oQD;TNHyEM@w*RWw3ywwVJ zIId&Y(W@!pkuvZE9sHj3`-<5+Jdb)DcR968S+&vJr9Sxz@%?4YfSrxO@EQEx06(T)M$!89+`0AA z*zOg1%4%j}rR?IVd zV-4C#z>hu{TfI6}&(RbPXRia+bBQy#NQ@9r*DOtFN<5_e2D8zq!8}JF z>HVWS@B<#}9)mv>%VyZ{4)|9&*ABi<9G7N@80E-$K0_XUiFK{e7b2uTa~)lm`mr{8 za92acV=uDj@EFlidd1Lpf;zi|{gwSu4>M+f;$zrnaE0`IE%BM^K_cD@f2aOTh-JbbgxqYV*z(Khspd{#EK~6L^UR{3ANKSpESVTF!e@ z{7Jm8e23kIpC`WW(GN-Wg)LzsFi%Jv-Nt{V%ovD?KRe)&vJR0LuR(q(5Z@`=%KwLO zy?!4bk%A?#&1-OeLC6{ByDj>FG_bf6THoJ*>vj2z z2<)7apAhF95O2j`2;m*QXF#q*JWUE$(4yaYBHoOBkzTXT-Z$aJ8vM8Gy7Z?sd30y7 zm|wm0X8l_i-#G9`AD$%jk4_@@V-KQ}ANoP-H?Qu_UQ8#EcMD9FvX5vx@D~;_TB!kI zZPn+nqj-~Zk-*0*&Zf_8URggoT6z6>xbjbrDp#H_`zWbCG(*Rse#9PrtQDN(xlfHZ zy)*f3YJ>;mlj*^U77jas|CYvH+D+A=s2`3Y#uWBa9HF{#&9hW3m3(Up`(fbzT<}SR z-BLZJfyZmIrYfO9#?T7)h_j&lw)D>-7{G>~ zl(wzJ58_Y2r)HCx1|ir4U-&pT&z_TmG;l{QcV9hcH7i=Wjtbb>agK4ms5i2(5ybux zXFC9&t2ahKj-!sfHu5RLFX;Il<)qPpCD?u0;8^)O@pberVGb>PJ9nS^X4p#~-{Zsi zIpAqSEdntYxPtEhbNQUF5MHFu`_#Zesx9rXhRKke)fT?Ic{mTR6R%-!q_Ona7xf`c z@DWXLwa2=szm9B=N3RQ)8VI|N#zI(Z3Z zPfYxYhu8k)XCAh{`NV^0{}bO0KeA`EdZst--1CbY!%M|Y?sLZ3ZzpHKOu~AHit3fK z`Aof%Ph+df^92?UnSH##I+zXeuj$MA@&Z^;IxyBLVz!&jU6z(a+I#U@()~8Emo?sf znV7>8Mj`gmJV2wfMNBGw+;3mmb$|Qpqnp3|nc{Bt>-dUK?e)`fY`Ur zzIoJ3beuE!27ReJJhMxVRCc9F9kb>RG|-~7>D|*&E}l57D{MoKVF0#MeN-LIu!}8B zWlLn|;j<#}qws=J?v&4$*3?rEVeHpBTE~q3EJLj$XV_&eVtCdRUZ)3+h~f4+_%O}U zYY-PT=@*p1dG^S;ZIIvE!QXVlGsKVBFYZ{3ZeILYmEQ8x*<3!|zL?LTQ(1-^ZIZ*c zh_{oSDc0r~eSpCK_=07gCjhH7ncZG@&;aNi;)A=lr_L5zO$+~zZVzo&HCf4Lv9q(- z3$$y6b9ZKRB)93*CX20ML#`IF4N z@9iySf<2R__1uH6oI6xFGtJ^kXKr*6yE}{ho<)n>*3|SRm11^fv8dEs&JgDfU*QE+a`5mzTj=z$1;GOOb84Wa z@%QQgS!jn>cE7?LkX!N9;%;<)_p9ImYEO&#l`F+urOlqSM^`u7#Vqwk ziiI`nNjk!ia}!~|G$Xal-EvOEQ`!8AO25xuQ|}ktIK#8-$2RU6-M+H7U~Un94^9SK z5fMxKG4pca$OGwC6(_sSl&AHU9>K@;zTCAR8cxH2i%-OA_#5tWK@Ch%F z_c+04oWbs3d%&HVhqjE~tD*aat&Q->iig#!xQ-u>sS%Kdz=IbtdUj&02p^%oh;8yw z9ei$!_sID3SeQv1r?_wYiV=s4eVixes}WDu_*@&CseZBQr{lpfxIDk+VK}@)1D;Pa zL{&>|^BIa2GjK-)_pJIY^>be%50}BKCDfXD0p|$(p;?QHU8MmwJikr+kb#>c?yf7{ zm*P9-N+{M?5l6wli^!eD*!ULD(}MdB;Q0c+CzQ`5#uBHmcuGA|d~#?Z_)9TP4-AxX zwo_tMX*5(T+Q1hyu;a4NF?l-8$LmY`2S*rj-n#hmUe6;x*T}DR+)ic> z{{NBvvA3-kKJ@+NPt=QGZaC>gtKj&EXG8-_O-2M)p}L|Nt|{(ek5p?)O|VBULs(sX zGs5g5^T_BSZk}V7)Jc2~eH7vIBIN=VSJSV;OHU9(zQUYLW>_`%=fnAz_+4j{^#luc zdH%9i5-cF?g642Z*Jkk3!ot$2YnE#&O(}k^3oq5h7I%5~zG7oxKk+B*m-3|{H5r=g zR>wwL_#o9DHMvKs4-D~ps+Uv!yNB;|iDN96+>~-V%%*j0Y_4Voh-X3jDt(gto(HCC z@!!&Z2JklxaASj5wn<%tdNGT$E4h38pz8UBXA|+R!Vl6>AMx8X$`@pHavyuSyaF7ii_jim6`+W zo9cLa;8M+&&^+xfc(S9Mt>TALQzktD{2)JD_A+8EQ{h*%iXoUiD)UnO8}`DXHbH&e z9Bg?4R~%u(4YofXkUNA!kHF{3Unw7^J_GaAaUM>F1O~RNbh@J=YusX^nia6aBGR1MCr;fP){?i~%dVI%?jY zesuBP-rbkm&+NWbdn$LPj-WYZ4l{APYJkL>$v-QGlYU$EzT(b@>0xra$Eh7TJYHR) z2gZ%_)GO{Ql9`iWJ@^^4Ln%H#P+hX>L%=y1+(1IDO?_~NGl`!^1F!iN9=%sor_mrb zY7!6mycNr`m^w3y#iGM8S z1fkip;FWyrS4y0c;2%m26BxUW4ph2;ZrK|RZNspZ`!_lB#P9)m2nUYXgEw)o;dN~H zoc!7L^?d0r{7(J(e0YuA5?Yj?rd&XTuFFM}kDi3PPF*VVCCNwFFXI2 z0XDc+TwOZ^7COQnzW~lVIJ)c|q1XHI(WT0P(M9L#ql;fSS_D^~+3lX@yl|d$heFj= z1@!Mz9j3oEc5V#mDY@|7^go^bhw$IOcjBA(zF|K8zVCz|IWfs<)IwAjils`zx#w3L z;#Z{kq<0ee5)a+{ylUm?qZiYE)`4S@E>?5ueAP6dQ}kD>yPe-VQ><@&1|I%d^v$2m zZ%lvgLGLK@jOW{M2VL%E2Yax!d+km-b~iaU#7=E&M-$uObM74Qctox<;d>JK60o0Y z%Ut}h`l1Ex3!}L^XNtLA=9?>jvNJ(H|rrKCRQMMstP4 zufdh@KG+BRzci2?{GI9p#rC&M{|CeMqILH1M}Bw#eeM#bGwFWv+ZQIy3b^R*&i+gpU9>x2fUD zs`v$X^(dm30NR68=YpS+M#6&wFvPqK;U)5RE;ceC*JIEvy40t5tHg-h51;rs#MX)j zh_MeYF}1^fq+mDoZtG%KQ}y*B|0*4?A;$6P5T9gC z;Xy*#2F?Ka0G~6kL?7Eqf-cLVH!J!52;US@=N!UEbYpHLCe_3ky`SQ9;{|@%s z0ax%#HT0Up+K}(&cMqFU1wRO5hS5y^h3xX9ueMG-`d!&L{GoE1S?2N$V-fo6$k@LERP7W_*r4YqVV z;?2Ovs^z!ARH|PQkDxqD!uzTQ$)XNNGYfq5w(0{QZmcf7AisOq6WaklN&m+@aZ@M9 zgHKY=ic)7nJRsen^4c-@Tr*bmnE`Ql1ZNNspNGtf6@R4}9hzAwU2(#Udg+4OO=?bj zcd{C_9;9Cj-nRer`ANh7IR5|hkD@<(;-P!s=fA)6iD&MohwX`5+uoh|V*23R7r{{* z`^go4mYK5q=NjA>RYVSOeEq!Iry&h2m;ecwDPr!bG;Y`i z+3S?QH{{c${n38)(KQFGyEH)6MDyy{V{BU$?UT5y06d*yKYg&Z{7ASVj!Qn8o^jY2 z*+XF)7hCA5cOQ3E^HVcoG0i{>;BMEtXY!poaR~N#d3gTe*?TAXuFn_Vb@Il{?bSRi zbZYcXogOcCc~9ySJqJ7qKaioV_vyRf!#6B(p67^R7vU$=OVSoE#yu9dl%i4gsR@$b z570ff;Vw4F+x5`4wb&EGj1?Q3>#bmmb*>bT;m3S9f<_dKo8+VxdH#9qVj%95d`R4^ zf^%GSKy{vvzDBai=?Z#J>~G`6yffV(cY#d~%>@e!Oyhq%fszhip5%KNW@UDog?eeP!u zTiWG&rA3vNAn1eDH#l1c{Hi%R@bdw8$Y2{&^aFjgILd`}vFjbhh~Np~+K`?m4e~Us zXW2J1kS_sqM>g+D4N^$oYzIH>;oE(l+ZyxY!8I8;am38V&RT z^y;gxi6;dgqNS@d)7rxS8}>pycbo7=mUQ3f798wS$a`8myG4Ga2`=!_H>!WXdiD75 zAL%Om3ObRvipGZ=SEHf34yFfZG^9HdzQUKr!ZVz27hL8LA0>Rg^mqn8qg{$g=#^AUh8{{IXe_l5@b$q>5`;<5Gjb z8VFyfs{7!-Tlh%f<5(KS4gR}N%+vtiDz^fTGH7ZHxTOJqoDwf|#ZmF|(#Qx)8=kR- zPc!f`Ms^(kqi0kPX4T6UFrjaSw5)b3gdni<4&dnFszKJo_;E#uJn9@(2Fm z<|jY=M)0ZHBwM;o58%P>^gZX%g?leOI@#G@TuGk=Upzg!b^Q>w=Ot=$j_1MjiM%;Y zEmGeaukr2;a6khL9?=s^^M@7BN%tln+97`#psNl$*dcI$)<^wcISX)Ya2x9X%=vYd ze`B3p=GXgid+cwbtz?}wb0nlcP}*arZuJDc-H5@kPts_1;2}H2dCY@U&?BUkRW(Y(UF+vNKL{HwU&Ch>=QY8&{QrgSsxpZZ@)lVQQt zYR;q09Z-L+KKq`4&!vU($ho;-h!xIZUHrG|v!zeQ{={H_6wKShk9P38-p;{syK*pZ z&k%zX^DVdMcF%D)YjA%loMyY69RTlyUVRDQ+<>F?bdSI!E!L)mP49s(W5;2hc$GSI zI6ZJ{2d*+>ozyE`{IvS`W@zw|9(q9Zyc_uPP4aYYY;p&VBm-B3OXvm5emC4ZY)G_( zPST3dlTarL25`YVJz}Ue`%PH^jfHR2UWGd6e4SRZYx4Bf@ zHnq{6jfK&jo8a%ki|`Elcjqq=Lo)l=!uQ&~&Ck2=jg9dFcD2k`3#Y=nz{%vdD(vU7 z%Xy6_t)ZDXTMPd+_>ZUFFn{?z{Qvvj@}GL|cf616ePAE2O^h`duQLNc_1xr%nLkU7 zA~o~F;R$&CWBCpDXc5nHmpD(tqb=;lW>m?y*Jtvb_{4aPv*8dARj~`&Z)TT|PU+5I z=Yx>k>f)Kv)-=8B+%5V~bij$7+~0P`F?A|~=;i#5bt=E@a4$K#4*0xEUw&8pc5B2z z=r;77s?|}y{RAJKfiG=%d1iAyt z94_-oSHKvq{tO%D6aSYskn`{JKBZO;eo`Ez@)RvJNo~$hBEAxT>|;}W`qfB#srfDH zZ`!5TPuVvIeBFhAX~X|?m{Z*$ChKwrdz`yIGi{_R@K@3PfMo)7E2{C2@WUx_mTI!3 z)fczA$=WH-O7Ua#n}*B8zTrEiH)7k2f7awP1hlR77@JBZ1(Nf*G{6DdAij7UyScB*&-}wr*gWQ8+ z9dth)wJyGi;8WZAjT`9?TL1R)yXKFd#Q*>5J2wx1@Qs_FzK}OAEELXM0`_o6H*PLa z$4}m-N)BDx17d7(z%{<7NqiU8xf|TCNH`yTOOswB%hfA4@Fy6A`^xRxq-!Brn-xJ(C*wkr+-jMa{@69cdn{-sSm zq3orkn1lG$;yu+5PkkzU^84x`A+56aWJV@j3V+S>dKy?ni zl1qjsWBqkjGq8~~3m$xf<^ia$gM4AB@q`DC;iuH6rtCQk&VKw|*bDK<+|eqU4@v(X)@kA)9zR)13)oYLmG$se-j;@tVS zb!Mqs{rlCg58fVp^Z7~YefmN2ub#VazKQ?8^u+gXf8v*Z)Oo5g88ov=5Vm<9L*A)5 zx|}ZVUcNg$x=!yH>+&(H0gYMzxf?ft!q&SJU8*2ITT$bQUT7s(Zo`9rOdlP?{fUs7b6x;5ybO zfY(amGx<%h?y7Ww@VuHan#qQs2%b#eB(AL4J+uiph5sy4&G zZ8p(aNaIu1EP#m(_E@twrR}$P?iSp*3{mlNr>j*fN(sLKb$@kIojWSEoid<_6^CyW`eYD_`AG zUWk2SPEBpNf1K72jD0YMvjlgGzg{FCw}LHj;lWkYD{a$aXFi`_CkIWAK3iu3)PF?0 zgLHm|v(dojH^ABf-(kQBi39J-eGZjZ)n{YZ`e-KC$U|r1vAKiGod4MfOpV|7vB^Gn z!AHBMcvrEH@}y0kS9POq*(XdIJl+Re62jvNU-$4?n)4-$rdn*}DmKOSNgE4SE?%w0 zbF|PItFB5Mt$OJB(gbnGQ?PDKjz6H5M)Md|yQMids=@GyqYeC=@W0EQGt>)(>|YFT zRtGaRm?Iq!7iPo_E&9?qefnYQ+)!_Bp`EFdM^YcJ6f7P`DKpiR-R*l<--=WN_%-?e zUwP;1kq>@v@t4o%?)kOJ+Atd3ytPRF=A~l!>hZjBjk}Ls3#1WR=8jv=cv-zh#g)=G zjDCOEcw+j^2t{TjhOUmS4hGX?}RXnkUSN^xFH;mA`}^ zqDNlym2rjja`;szzY?{GQRuPQVJ#F7tL{>>Nj-QehyClqAA9U`1K*?B>GEsRa>Tk5 zor}BiSC7NXeDa;w4;~(Mr)=y>8{eBU2ew((S?hC!J6h-f%KA*~e~7P3*e}^ME1Di% zaIWN+(wW`U^f_2=GlQ>nD)(+2gIC+bnSCYylJoTLm#%PU*oHgCA3Lt}Xmd7wq1J`;GC-sP!@Y9E z2VlRHZz}t|fY~);Lbe!xlETXy?2O^rm8Xcgv+@n6>-1i2*JcX`0#LjMEiwrTf@^E0> z?hLb8&x|fpYqtqUMa^GcU*KF|%Y`?pRxlngJ9|@oMzvpCoxC z)kwtDM8`Go7x{mKkB{JXIEseek7_}@Z9)$GrsO=9grxV6DW zw8}?V|GoM8HQ^<4O62+iv{XiZ0d6M4PxOcb68a;$(aFNuK3)tro-XdV&y4QbdyBil zf!!|$&+oo=?a=7vb>`zn3&keApUo!vr0_U-(qnKF``8!!BH9se@kEaQ<=%_mUnp+6 z)napVDc@N?m2WMw2Nlil78auZ0ezyOw}G`H4oLpLGfB4^-}V0b@;~~2_0z=v@Bg9s zQ-%MidHMPfj6vTH55KFv zV>SF^dBIUP>z&ckUAPb8lRg^x4m^|k$$R*Jo7kRt z)5KT8_v&kQHeb0TfBEca<2*f3tHd^}osW$(ZQ}Sf>~IH;6JHwXIq~HKlqW+pv=R5O3g)JEsm|Zmz!S^p=xgNDT;;>i`Dy;L z`nV`wHP}k^a#8)3dVu?ScJR4+G#E5-OT1e^KQ9A^+2tPe;FpJkqtvM~6G1i8ykm+E zO+AML#cTX7OyUw7hS-siyo`sv^pslwyF}QJg#T9`0@-5K{?ysKI=04QZ9U#Qpmxc} zu9~(@Z*e#cJ|o7axI9-Ct+jYUx1u@P_%b0zh(c~#drKa{-udW z{(t89N8es}p)tOZRwt?WGWdCa>C|X$7Oh%iexhCpWuGSbM>OvK3R(>~vL2kO`ipB$ zwfcqx=%^ifep&b*7cI^PcRL%hhr}WQccq38TY?L$u#Qb^Nnp#7t1ljsTyYzo zzr`#<#a?lFmW5YmN6pu{57g?W%%M-P!!}%i&+Jv{)s=fTaK!<6j0}FDORg*h_jzdh z9Qvku1AHlGYzf;P5N9hF=62zV>A&PsV-dmis$MujmuOV;4YykFfw8E)@u(jt`}1*z zq;nC!t$s0@#~0!Ir3F`hIH5+)7QaY*+M+jBgWe|=_r$QS>IW$ujd(6;1WJ7d{zY+f z1h?j~H@3~Xf)@>Eqs=);g%{D*HI%1TUJss2{k&{^tp(O;(A&nb9eA1Uq?Pm^b-vPh zJN(xtCsy~f54_)hwv7K<+0Xuu_&0v$?~@Om2b=aMUb@B}Mci}FIKD9CeAs9*EMo92 z`)D3b5u-a!ewV&NU3yu!`%XUCBJT&5iQ)Ien`fLG)f?H)W8IJXe5rp-2aIXJq1_t2 z?0Ejx5ZjC<)yU?fH*faHe-R(KaF+qNNweD22U$J#)c2=}-H;Z@8J^3pVQ(7V8Tf!x z;0NXslhd=o7R%(etsZwqJOMFOK#ZWgyn0l4@FI=gnUW8Smf?c%mu=x^@TKmCdM2p< zWe0s&DjhT!qy;aa9^V^#pU`bfPMGnON)oGx70xs2O9i90!N#IYvP8(GrHVc#SrkdOSK4c$y^u=G>hO?}kDuQX|O@!-XZ;La#z4Tw>|1kBB=C9sQ{_3ZH5`6mo-y8n( zLz9Gg56df@{c4N-OWB)*9JiNm&>vbnnP&HR!SQi-@l>(4ytMmO@Liv}x{Un`H`y0* z1dR&0EHjr6Hi*l!BfR%P{K4UIxWFC5CV1GJ7!Gwcyu?|b;(R~m*KKTUg#B5=CMd3P z;hBPEanYO+^eoJX#g|bJ1Ga5?)A>!?E!L<>h{;b5(2uQy_gnNVi#g*-0FE)-vo6{S z?121ZwKG4uxPuJ}j?oL7?_zGd-(JoW_zS~)0p&LhdAJaq8N~Yk7^KWH#wiu7In!7rD&Vf6KM(DQ3YRn@U{WIMm*^<9NG#R2^-vHNp}MNQSF=$ z*O{vK3w4L;%jn~avgiVF8nHNQ?!wDdcsAu(hw$+oc#k#e#|#*=zKH&jK96P3Mr@5{ z^ccQN^TZzacqGOZUyWUn7Et*O@z&C~35R6dl?)#cET7Mp;ei{D&2t+#3yXbouzB`) zuxjOZahZpbrU;ik*Rz7xr z7$6DNDzoCA> zypu2*adQ(+M!jfP;r;vIx*GPPiG4Fm{EEN`{68@eH|SOA>jXAxZ@RK@-{U>ZTbT$N3HsGi+!;0-_*s@ z16%szqs1(B;Qoqc4Z$74sR(BTU?dyt?N{l`pq!Gp9bDM2bz7OJPrDj zlo~SCtsCO+8hz(htf}2s(&^nZ{nMlKiF8`@=K){4>U)Mh!6&9#1cxotm(D}Wkb+$u zI8$_hquT4!#kIjc@YFGU%*k;bUQQYj%`{ivDQQ@Jazg6+72~r5*4VZ!?wSkl(qxS_ zs}p^M<`r{xLe7oDdW-+E;EKvxTE$~v_Yj}#@aHvroaRt!{+fClBo4om`%@nT-80p; zx#FBSf6851*jyW28Nf5dOS}{Q$EBuGxZ6cXXoP>!a?2+rU?ue}mS#?UhN|Eg^@~oa z>B%@7F@63Nr>cisNK7j1n}La?NAMJ@8u3#Od`vtEk~aOR!uuOv+dD}c&)jeQ!QOY` zKY{US_p0`WhqtE;@X_q`KnpF1D#1mNpE03mypI20d(S%=&hD)(*H~4Xp*WVa&u4U&*=V zENf<=bP9^o8>{F-$suRlku`cF-+&KSzaRDYRG+zwz3;+f`uu!=F2NxVbkN{c>lr*% zC!Zx>wFu5zWM9?$MKgcYm$j@@=l{#QK|QK!8p*lRkKyWQWo0Xh4SnpgEtQEoP*-%^|Y zUtN4-j2*BzV+P;hauvO03_yC_+beT9mVYYL$&CG-7 za9*jLpvOLU8hjs;Q;sx8g`N~WV$Rjt;qh<<-iq9y{G&erYlUzHm9ucFoG)^z5xlYb zlnV!>XxC%zs15#F8**1z%MhN^N536{y<*igbEd=tDQ}(NBYk{x%i*kJ4=iG_C46cF zzAffF$K*Pa-nG0!&xS>6KbF9~b>1Tg;Fib>_vzu7x#+gY(+BYP^4B4Hf&ks@fVi`R z?`@-Z@nny|n=Sl@X6m##U#bzyxI5~(su@6Ke_*%`#rg(&=E2XYU%PFiv)~;yTdRe( zBw^msD$fw(t32|7`dO#Mv)o(mK|oI`*Z0U>Ho*X@9c69ld#QTpi1V-hv@L0z@jL1* z9FZ%C;bZiSWvs;d`Rm-dRd5zD*dRSJu2qlcwR!e|K2!2bs+raIs(+DY0!P?);TF|; zE00jlMdb5k7sQDeasmlGS3>*c+`A6`SPb~{n7f>Ue+~SlT?~g-zQx?aP6vBMeWLoS z+He|vj~o{LV;6my1 zn>}q(ms2A@PzSFJSmRz2fbW_AwaVvZ=ST6~Q|J+&ngor{J$n7Zo;(tX;9GmLaKLW*x`29Zi*}$QRW05A$<$PP zi4J*$Hnsm7VAVC(o&-++9rGuxH{)+TI~jPNdKmxiQxD=ldSYT)Kl{Vz*M8=2>mS5# zPro+l_HT_>2doEpQN1cOt858AVm_W7T|(n)ab8rTy3F0LMHkUP!I6OREMogu{kXZ) zik(zfG{6_h$99Ox+>pFH+G&fJSu^xn;^V+UTmH#>Yl+-6Ie5)LRPL(}W>Y^ZhyC!; z{l?UHhU5o@zXqMD{0{uqrtS&3*a|(s;PEEHNk05Q8&1pMS1q2q4hBl;%cuU!(khF4 zQvSxkyZXetuFeiRfUe>;G!};UllCb>!y@|;qW4J_71t9-!{Y?xb`o^F5jnaA@`5hU z-$R$!ZoqkA2fMs;2Dd2vv=^NLgK>wjy9xFx;#aShvX>dp+2R~$Y*EDHa&L(4C)ba%zsJyL&}S=n z5gf&ghUfr&`i>M=6Y2o_`?=?P;pPru>(M6IaL3pi8+~Sb@zUrE^(f!ku1~zd_5U9J zpBGF2ANl{}ZS(Z|zvn;sT<%X*C#y{x9;3zmX~O})|HnRYf0ek1oH@MgGQ9wnwpqt* zcz&1fs7sRp?kDeN>eN=yFK~5DTnk(Qu|NYmq}r7Xu5y!g9B`jHv%ZZDx1YxNL4 zpvbL)vFqr;ZPjAY6KY5-|9EB!F$g#y18a&a$~b=+{g|7?OAXdqK6?qf({Qkl*j1a) z4_SBhc+xCL^_q1#a}oaA@C=$CZr~A8aOoQP#;$mCZ0a2Ltb(ms7S};9mV|sjL?5S= zc*lqTQcrntN}7S^^PCp-y9VA+^=+zmQT|^sMhu=-U3Us@>`HfH33sc1xMFFYA^sir zLoeAZkBQ7jYUNeJxPO$TanlSY;PRZLR`uCh;aSA%aG5)GYEnjActI>VZE05d~ zI!thV#*8uP$ztNavhD!v(~vzxqe4G9?kk@sjKZC0u1@FX273hG70jU92RErVN{Y=_ z%&(bF(yn*$`b1F46tLvdl>3R9u z2J^|#p(p4D)Dz2NMoWOMQu?Kg9+>J~X3+kn*!!~oAN{KR?#?KB&3~}?)tR4cf9tuC zc}?|y|6(^d|BFBAJbU=9i-)g{F3qlyi}SG$a8USOk9_kIcRb=OsaKPMtCg0sPps3R z?~sd5KWI=(r5Y06(N}-Oz<^&=zX}Hfwh~w2ud=4t{4W1iwJi<$bi19ag?0PqnL)>Z9y$_EK=a+f z?iz9d@c`Uk!M;;lt2rSN-x=e-RG*+6jn5heXxY?rU$r6;dOyv&^uYflq$yr=5c#j%9Ex36A7DfpWEC9T8bUeItQoDb%e66d3F?Mp)f1_dh% z?`LSfTD+gQcGY`?XaJhvVxQcd=B%W|6+?VyXJLM_x}3gw?~kLm!#{g^;x&H#q4&Gb z-jBcebCam`GyfR<>d$=J`Ck?%>$T1C#%5A-3l99M<+<1@Fl#l2FG|KsJr5j!Rw6`u zD6DaV_4Z#R&x$rqJr3a2+VGF%eS;(DgPl|(--ff%{yM6wgA39OKA-p|r4A_Uk;h&l zR-}fph3+ARw~H0SfVnj%#DizC!N5&&aP0pme*IT_c=e;{{e&Jq*AO|td@_S6F( zswbZzui}&YNHSMC4D5+)Gv^eW(cn&%vwCcula zN3d4q&eC7pCywrMhdS6wk-rP_NWT*o!^#s&;xqOzdURBD|gVP=H z&)Bl4j6(x7h1d)5la0=<0tV1bi?qZ<PW3bCCOcIIqpUlFwGI(*L14;o3-Q4`1lP3Z!R27ZfE=}YCk@T1e4};-Ec00FlYnET8&#c%VjJ;NRcyBI zWmC0A8WY|w)+6`x7HyN70= zxn9jzG&76%-cG4^ZITy26Qx?KQlqRh!Wpi?3rZX9V>1Kpptu3uPeZIGjaIC+M^_tj zXUe%u*tT-+8Mae7NW-(pw`-PMIX4I2Y>U$*Cme8hGSwoGQ;2!ja{e6aDt%xJzbxKP zy6ukYe8BNt{DWrSNrPh)gRvGq-|v&ZXy|TlC@ZtMiMs=eb4Qi&vRh^&_x31zJ1Pjd6(yX-si=S%ST8f zIU;BG(I1WDqxCDy`s$OniPN2N&ok`3IQjwa7=!DomodS<=lC39b&B_VYQ4UAg~Cqp zv*JpvNVf(%9Af*Uz`>q&;V^dUd|UA$ycO2UBTn$)635{GrSJprKxy7Ied(-6)CH?F zv+34go%!e1-Od+UKMnt<$0yz^zcF*|57xoOU;RP&;U|7J|3o$m-J84CX1rVUsD*Xs ziDTMuN2*%tbEV`8ZSL^`GdIG-;*Ja7ReVW)Oio#7rYO&mtuYhTb9iPC z?1a5kJ`evSN2@#0pQ9@~^S9@AF5P3(_a!PcDI1|E1 zG%HV96S9Hgj_bT|@A3cY`wg*`@$MbpEn*<+j z^KMO@hCT5(6XLk3Mg(o9h>jV^c86~B~ck|woB4Ac{+ojAEG4IFBzn%5D5 zeS2`onpzI_&)_ZxnqN+QYLVjv#8ZK=EcJ%q`-Z&Rm|QuR@8HW32b?&t2>E@)h8Fs4 znkno#g110n&7TCL#&xpluz;31VB52OKY68;Ttc2%s z4`X~nML$Rd|2T?|pr-~84*rVfeCqqucj-3y0{cnsq5cGER}>>OE5Y77imNu-@7(^< z^ONxQr{Jf2?2iA3`2RoqZ)b7#3x5}WaL>2X2bX4Bjx+PP3r2@Hv*QuxaK5N*_nj4N z95pI8B7XM4iCuDX-dS4m^n~_U!;JH>L48IuX>9WJwT-j%cpcx}4xd5u{pjT7)o1XV zQSy%X#F1>FZY(SrQF+-Qnp#GtmII3fKwr1frFfpF>WiF( z7T>4yp&EV=v46xPjZQOuGsK=2)O&}lvjqkq-AD(#D4|xbzKN84N*sIXe8x?`3VA!v z)nmO=&RVuk-8wr=oT+DnhYUuZk}o=F)kw!!IdKm=E4?uv-z+|7fE{!>W5QnoaQ}jL zN$_bF_=tET)cj^XwzP-+6h}gwRPHJ7&!74GketSY6CvD1+$`zRhT?UgdlJH@b%^f_ z+Hk9gYQ(YFC43fOZ;B$bkiGzpLcnN zgj`WMk7C{!>``}nfX_^bH6qms!3#X{W9el@#MR=1Hu`k<&}Oz6b4~1Ra{A4K*trAX zD(pX84bP&tGqvFa@VWG+IlNOBKPL?y6hcvnT$HIY-hf(@Yd$YtnNo z_?@azd)OWInfrW(bpK6qa`hMl4SHHLNp~LUA4~%A^w}D1#Z#TFO*1dXq5}ehX>=27ce?wTFIAZ#LbdibKbbq<~;7kcvLBgJO@y)(t)yubnw_1O4YLdM2$yvPi zkvsNR9(&vV`hPcz(qH&t_@Vp1TRcR3ytq2+bV_0e{JZbs|H)0UOT&0!@)`I1bc9aK z$T7%As3}nY*e2$azS4T{O#R}<3G}h{?!0{N#LgF5OS9Bon=HO;-d*{F{j*{9$?53Q zBRjXx9-n-Ue0|(sm?p0t-)*ly$sEcj>fjvzkIk~_tIC<*?p>n~m;BX+Moif$-@&5_+6mS&kO!OVV?I zZUA@hANveKuy>cYjT@CLb} zMPEKM>$}9hCOD>{XWh%dkX!)i(5}m<`<6coWHU#o%dSP#bSB7fN#GB1|3n?OsQ)~D_pUw&%Mxm zzL-5}kC|`J`nBTK$+efR%vOm3s_qLv@czT8#{Y-jo}c;;@A+2zz`<#J!JSn-AMA+x zP99jmJxW;*&G671x{!K%5AL{Qba>Xz?y9p&?Ss31ot#Fvy-mGF`j6c03>;1KUX&Z8 z@ShU;G(EVbFu|s$y*Kz)sXCwHK<>Z%o`>J{8tyCqFC1vRgr@Nc z`o7UIB-im)u(^pj*}l=L$IJon)L%jz6Jd*lYl^QT4V&hSVTYA(ndA@_wqEtm3g4VH zy)e{cW#c*f(!x}(Cx4pov&!QW{HhDCVzGV(x*lDye+N6O`GhgG%@SW3bH+XOiQ^|i z@_%WSXs(ctR<%ofo~k|!&Jhv6OV3dAiA_Go7!u>ryPLv4>Cuz!srDkf%^lDj?u0t1 z_`XeU44!S>M%OF;-JJ{P(34ta4|o^##dyjGSwoN9C?K{KRu$m;ebo}EFKSj{!;K`j zcCr5kXQZ*U`0j#Uzp^wri*S&r<%jfvNJCWTKfn(7{MY0CLgL^69;JG_0@kssS}niR z=)!Fn6m{nnYCfZj_2x^b-}vHJ9@}+pe1QG<@S7X^e(A66_nx?$9(!>X=i6v;B;;UM znS=5CBzd8=yPovWH36sOou%2S+GD|*jMtv8Z?FcMx7AZ@tJ*F;X^5RrT)PpRuU|~g z)LX;^A@NiI=d+am;NQhL)B7t9@~}J1k`#SWp8+wM!$(ViRR}?XIinF zbfPnCKm?BB3LoI?2*Z(vpL#VDY+pf6lPV4%C+YD$1@}+9Hyb~sUM|g{(rjbD!MC+$ ziU-&$`^-$Uaw_Vhy7L(}TDqtay^Wc2B+a=HcFkJk;Mb}@gv6COwlId*AdT{bdVV7R zCJdI(RgBr=JZs)nre|d>1Af2H{Ns$eUpGF8ojbT|Tt5bG`>}Wa=pwm1yZ~zjdynQx zLhYv@{w_k7cP9?$(E~=EH^jawb`Hed=NzQuxH0ijM2~^{+8lrPSY6_?6d&pLMflx& zd|}pzwYg4Bxd6M3ct?+Q(cD(`atYgzeyF&!(pIuntL3>hH*lN%9uPle+&gB;H9kzU zUln6W^T4K#E}bW7SxOh?-e>CU$iB$;GZQ6TnuV-SfKAD$CmQUXa*F<1YnDd+pSAvc z^_|tPd~z1FKK9OQUwrH>=P&-rEF9ebqwu%y|90^p`+dcng;q-34WER1Qc2Cv8C;tN zH&0G)b@okr3+Jads4m|8+4}I~cfWAylXthCIXTO_ zYj@9n_VV46w;pBB9*2YW*tEa&$%%jFB>e4jleu7Fat>|i>u}gBVzKU)Yy|V&uYjp| zHtSD4BwHbF!XAOMu-m4!evxPrO?^b!Qd?EefO~6RN{(%m224o& zq&!e|(gasn0k65j-3gS}({~etDSCXrxaZQ@h=@0Bepeg2;wRWW<%a5)0wd6@Y}J@5 z_%1!xxd#R=y%+fnpS~Vx>yocbF9j_${=qJ=ui}bn2BQ_N)mM3z82h4GSiW)&;$q=; z(*I0-gP6BXT>%U%2ZtN2OxxR6XGVPDht4<8{V@Cw_tCSu=V$)M@Bh~L!2{_3+q1F) zAH}aI|8sO_cxT~js`a^G!4Y$$Q#1!WVyZs>?ZJ<-1{dmc*v*!5P`LO3Scfp|0B(tm z?FrDT_p$X3cG!hy7e|MQwU3~!``qpb|Gz+f@31x|_~deWe0Mp2roNgT03$k3uUR+T z?-g&ZV6Rs=kKzOnH%zxTSEd`x3UTSxYV_XlR~fl&LhjVeCIHK7IMv(@)dR#IQ;jJF zzsTsx@~IQ3PVP~|P|vqP9aNenh4N%DUezBx@~ey<=?q?O$^Hby-VuFlIkCxD^W~+P zDZ4FwYSoQp`;~|A?-q8)QstC9xB8o;8zjGA;4eC=ozXKAuMrnE`Mhe0!~o!S zs(UN;5!V8(X>_&EO)vS+PFJaa#0_79_<%gsW8XvZoS9SMH=J#18LCms$KWe9bIT)N zvdDj>KPT)%m_o%fDGys`4HE8iADVe|mP`FaC}5;B$BT&s4J%4JmIk z-ATT1c6wv=$w_qj3Va)KTs;&1Bh%WE*G6zeQ|37r+`&dW4BT8kKjJQy^oLCxcp&ZsyeYvf$lz(ba)rAx=!qb4OC!iXF}v!tJnP_a67vDbj$46(e z`N2E(A@z%K53p;RLtSATd+3Aq`Kr);kp7d-tzv*?J((+zhVTvGi6>~(7{%h`Jp9M5 z;%;Vy>E1}=T`_z!=UP9EPv(Tj{W-Yyz}{g@xU~F`Jc?<{xAGE`pBMd7r%aLx^})j^R0?A z=A!383<_Te9`9u7v&=Lt=>Mh;5}-HSh2L$#rMc!Gf`iUpQO{lsp3y9qcb@s&-n+-v zKDFbVe0G}7FH=u&@0|a_mFeZ;@tx-v&+Z&IPfk}>z}A z`kbaF>)@AI8%Hq_8Yz}=1b$b^?^3P6gX3^aJqgtf)e`z-FEqpKizb^bx{eOYG=bhlG`@dB@_{p8{q%(`a z^`%Sis(+a~7^ttFKZn>fS9m_0j4^u_!kr($=@@ec$_2Pf_Vr!=CO8{^=YnS|zFDRA zZR49(sbQIL(R^&b-J`Zb{%_OEoTew4b$FCGdPIJQpW^vFY_o-}T?U^q{e!i46eJC&8tFJi&U}4s#IvGv;w)1SX_0qgXLL4I?{8+DXfB4h{yc~3dLHj) z5KFCc-WyIRpB1lPgBwX4;ZawiPTeL?lHOEIKVXTk)4Vcq05joC!~+4Cr1l`{V>{Sm z7n|7d4#_1F?4Ye0D0@(1Gl#r;pP%o8nQIP*=CWu`OU3h5ietDpDLvj9eIy~A36tJd z#c>&SqQZWcJafsJlfJ!X%xdnMY?h-~$mT4t9=`AyVp8d&SoH7Y_>h=9PaJ;Pf6aYu z@Jwu=bP^oy6TEI>Lu@DhQrMX088j^9ztbXLmKMGA*UD~2 zo?7k%uLYCp<>%jszkcdn?++fBCD%Sc9{1sQ&zyh%PdcAEJL#M*XNkE1kEh%*fB(Yt z+S+5BUtzSIS!{>&y>je?G;N}i-bUt(wTR!=(o@(ka5(&hW+s`#IrZIvn;c?(-9E6* zC*XA*1K)&OO%7JE4k5X8Ky9M2A*`i((k=E;_(GE}a!(pfHvE;iR_dv5_#(uY_qd?M zJJc`(-qFYI(0kRy0ReGR0LQ4a=I&ngyt*|Ez@*4WSr_$aYVMk94o%ETZ0r+5NRv!@ z*Qyz4_NsU>{&nuffH|L6!A6-;QT4?+)tSVm6X$9+h0nc8(Sh?gcL~~=CNYeO{S4Jp z%Kes)bA_AGo3Tv%<51Vp3`$R21?-e^BlSQT#14vyYr>;n-=G{i$Bp^PT_1W=h@`F9L~Z5|JLDo#C=H=Q(%J=&V7ch zQEyqsze&?ew!Z1L;eNaLxiM#XozE$-Hx-{#l4F%4as~Fmp-~Q z+1b7y<3lS5zsu)R{BcFa46`dxTO)L+n*OYup5 zwm5m7`_*;U=wZYLsK$XmugJ&!WNqi%E5eVSn#Pw{TkL}?&O4t!WOh^!UBeXLQesmy z4>7_XYTlmkeV={REG(a#py6%fvjc2NJFu}WoEPrAI4GJi-Qz4Or;!#wgT=51%jKo| z>KH9xWyY zRkynL6|fJ&AYGgDcn_ax;tBCk)laCNj);BMUN(Fy)7&{D~e#oDP*yIqdV#eo>vA=z4Ar1Ed zTxh5mm2(qg*Mw6wdUWsvq|<0{rw#moxM`Y&(j_hur$*cyi#4`*_KvVb;Sro|7a#9{ z0R-f4(o66a3*l20sXD zP08;h|LN3^LhApabN^f6WA}f{eDKjaK5fm^SLVv5pl{`qlWDeJB410463b6frymo0 z^;n;rv)EG)qV-&T8=Fz_JEV`}^4^;ND(w}YT9;4%RjBxhI4uCb>97Vt#r>rRAoTX# z{lXP;67Ua?*e`&$7UBB}YHZ@zm*^b~T{I~*qY^AD5Z7Ipj@xQ*Pkd0lvCjIeGqbIQ zujZVUa4Xh13l(?X<(!6ats=B#0(hED9?qWw%fePUU;^MP(gE8b*Jc*8hkoJO3iBQ} zh`Ce;2;ntQBZ$GdH7`gr@T%ss(M`cVDE>5A7inMw)Cn{{G~yj&VVLsABi@;wl9Ifp zR8EDqiZl#0+gy30=2j@@wz->{b=k}y!d_a$x;{8%POjZ2kKE+52k>$V?!Nk(WV0<| z0+)JqGoK!OO+9Zuxs9_04(m$OhdYA(%egNJdIb*stKvv$W(z&ejZLt57U^|~7pppN z!n5Q&x8`k+u#K9D8;TPP$1?!$_vvrdybhavCg;VEaaZ|L5BopX(QL4CgR|jN2kB9V zRqv2ywOaUn)e__jEeqSk9nrknxZq6loCfE)2M4<61v~j?{Ym-Cv+o3deDcRn{=xfa zsrMT^-~X^PKK1^;^L~52UORsqj@3H6qGIZ7FHGj>nF#193dFs`F2%&rK`{qk7Cj2{ znfls1c{chT-3@*hGlyL9BgtVMo_&q@ZJ8Lo3(sniep-*3TDf+rewp5^&%^7fz^PMw zpJFN5N*~)PUR!`4MXL>8E1aLRz`BXYp!sCdo(u4WE-{lsETlQV;*lu#S9}o2C&}m8 zXb(s?9R0z(NT^G7n>;EN9}g_Rr)Hqp2m$uklr}2O&6iBu)M% zXV*KC`}E*5FgvK(bDwh(u+BF9>jwTmpq?wvee-Ud5;$k1Y^AdZ~M`xQ^ z)$Fg%J-7?8khFiKx$Z?C_cxqHQTmSgui`h-uRk`+&EJ0K+!sInX7=aQ|I7P-6#dqo z|Kk1X3)2$)pR_D?S2oeBpbpepju;)5_-tS^ceLfj-j zqWNJ3*yMm-tugUa4`1EmP7m21o$XLu3dLvSNiIAQX(wo|Z^rj}SFs~-!M#NM9<)8U zvmtyl>EMSg^}A5JV{TH(>>i(-eFe?FHF^k5G;uZCTRq1GICw$)vEJogl0W6xmXv;k z2!5Wp-w7ChNZu$;jmKUZ)G!=4j2T)tDfzYZp`T^(^>@aF;elX@FN`XN%Vq!G3+Cte=IYZ!t} zk8I6ZQExWSFkszSzaIVdeRMzj!-aYa4S?(Ts6PD*B{reL-cw^|eHC|uof9vp_M~Ui zTng1KD&_p(44SPcjoKBy&%~Y!mvMSuf&?;(Ci!u$L5>$S$+$?D7GNSh~SegEk6^Q)(SVE)zV??3zR_sn7& z|Np7`zmvZIiMl*(%)AtxAYvWWJc0oI|9_}`iE9>uAEvxp&wdtu5$_6Con^;3cgN7M zq*g_2JA$)OaIRcpzN*W-8J=%U%(ad`&^-#UVJSFfKrUmU1G5ZPoh~2RjTSlg*a2Y# z;+cs*qCWf<{HNun51-ir%Zk}pAKiWSD;D<3eMy;5>9L=_K`x>AnwX^IXX6&!5$Z9H z;w18apYP51>{$J#aMk)~36|8&W6n)HA|_z|Z@i4nT_)y1!@#E}C?H4iLTnklY+t^M z*s)~)3%zF>I|onJ}F8GWUSkyU%cHz{`xz()i6v=ev; z+BbtZM0tM~9K*I{v$R*-Lt(U`d;+$aGc622oN4)ouIm07JRtTkvDJ%6jgR#)vD*>x zudrI_{S?GcmS(|67Pc9#ZQ8BVSJ8UdJ~G4h{MRS{;M7j|rH5u6>%;GipZ?Xqbv|%; z8sY!Fa*TbVHz!=E7tpLxT%^8v@j;~}rkGkYCj#^&O86Zkv@Cn@$Avux@)PV=gLCTH zS^Jclw9Q(D)rq=)^O@ah^O4C<&V4N84f33+M2dMZEF{q?xVnxiKzhlWdrFLm*i z`Vxmdw8ej6J=jO>0h(jv8^jX22l#Di$u{{iXJwrkMeA@4D>NJ`V(gN5vqOFoiWkj! zv#~8c7=%MSu3Yt=jpLj)`K)pg;vL~A^sdTw$6#2!Mt=ZXqCMiv#E+W%&PKnb(a3~{ z!kvrO*~^T$2aOM#xJ7Y_@(3RcpagG_riMo!nreGhhnUn}V82;!V$Ohkd>Nc9pjIHi z9;)_7Z0HE1U@t71Z(HXv|0(bMMO$@=pBi1?R zK7z?(fjJ0NZmhG!ACsrOI5TeGwaVuA+qV_lWkCj6UE92SFt=+7zjX~l)1FcWYs zSA3(UpNtp*KO`QFIDZLymK0a(r6E0V#Qj~k5nXB-U1BVU8l>__^(H2s$NwkbvAsL~ zSJF4GeRcmVNqz^Nich|sf9)5TqmKXo?fbqJy?1VwUG`@^dKY?d|GM}(0}h@zhJ)bh z)Vs-D?L9Sl`SLT}Uu=V0Qd?aUH=VeV zoG?c_SMl{2`!r&I$L!&lGom$@&Ph&Ov6-*bvDY_y3fx$ETX zH`0arMX;MbKD4JgI``ks#Dol^nH>pEy(q~elH&vi_rFpdm>$^s*5;nOYI*9mx z)eOZ!(R~sJTC=x=nXC5*4mIbHGl#uVjXL7*#QPD~rO~AVpJnff-?*dLnvxhPXD&yK z&Www{Rz7Ee1$toZ1NFkN=Y9C;1vzH`_Eo}->1l=#x!ZMOt|2kJ>`DxF72*@d;P@3e zLrLv0MXR7R(9{CoTf<*j9-j|}sJ?Uc`33BSW?+l!oPd#+_`h}IOnnm!OL$IzPY79q z2>d|3UE*s?cR+EBw6;RdZ_3^G=&f?xkQmrutwU^_L!LuFI6t>e>@X(&7$|4M)@qiE zX7t&yv%3@;JM*vlcUJ%9GqZAW-_&{O!gr4U?+;AlFWvu6_{5&?l^^)T-Q?L8JuDv2 z>0&n(S9In7$y0a+?wbuS+EI?|9^-2c%!mJ%{!VrfJnkUpN_si;lEK@E$Tx)tXpU6e zKgGQx-okcx*uM}vE4@%3dt$=F=vwdq(W+E#5K@;-`SQc(ri+Vn)5U8>ePz>bw2-^2 z!U{P9isP|m33ofdkE}2!bGd(_UTl*iVI!r>v_{@!w#c)(U1o343qV{PGe^Reo(5dP zjJ2)sh2l91XX$B9C^`-iTE)^|3($P)P^*#lyGd;}ATDjVMdW22azdZK6OS{e7XfY| z@uje5{10ms@^d-yK~4@f5LbY>$wSjLGk8yCY)ThMwR|7F_&k(N#UFDvWQSaQW5|06 z$4=;(j)|LAxksH1Y`TAN*InShUA~vQs2Y^C5ybxrcpv5O0XUq6A6n+TwW-;;JWE6j zQ__bzhBp)8dm`!+(x%9nXp-LEW~vWIJ0Ks%joT==A*v8Hup?37NptI zaO-$q#f9om(~Jbw-F4S|)mlk%HLWaSeOnjzBu#qJ~#+- zDtzT7;5d5!Ciaj&BX{7endmr_@iX;ym%dZ-UiB(AnsNAJ@zKTY@Kw(dZ(QpX60gu- zRk?@2!B5r~umK+Z3K_9i#`%@~Z}JxWZHbL7d3UW{g`Mnk=2H3w3f4$GWcBJvd!$hB zps;)J9QDh_ojL3!v7@-|e2>GLm)He;mgXx2@T4_YP*|q4!#w4=_%+R2Z18&dUi@~0 z?W;DAy>?mW9%rsgoMp1ds#U7*Xb1;H>k{(b^10#$cZBH?zs2M<(m~c7-35GyDL=3J zta!VeE6qzZSrc*T9df}gcB|osOWT}$S^Q}2v&(r2#q9?-5MNOm7&$RW3SQ-a;rqld zBk(Y--90=)@gn!VIeR=4w#DH+dtibI7>4E(O2;pkJ`}h_M$V9cIr=U?M;ycR@$>Lg zu>qRRt=WPpYo{J{#Z(z&3+mj8iwU-<*-z@#RQ#ZLM|EO{oJsmg z(!OkS|1{gcg;UvMy`)7D;(gbPwTa#!y;qaVTi145%x_7gxx)P@us1P0Z|O3p(ys@n62{rb7L2%C z>#RB0Z2dAZ-GJv@EAf-kC&cGR^iQv)3sd*S`APEGeY^R!Pu2N({teuuz!!BnduG+D zS8mQ>ClBsc^j^hR;aKsWAvuo$FWOF|v5Vasf`!m0+SA-dX1R)cwJpt) zwD>#mmUH%6^-GU@Uo&Eri%7q*nJuk8O7Mz`p1&A>0>y znL!TtgnACu`z)TS&G`+91JaN&eBab>Z8N7b}`>X%)fobxkJ$LZ`-${P`<9Ce1omt>z+_``=DD0k`S$U@XKkKeO z{#ESLHSCN@Oz2||Y|fnW^F@#M4~dyszXUF@W=F-?!x$`II;U;cGN5)GC_lhHIjoC; z4Hi$z0=rFg*V#AaLymu@UR*wp7Gs2#dNJ*8=h$&#HqMw2-_ZpNaj_WzHq3*AAq=F& z`EiMf0(x^*M_glHrLlIM+E|gmMeeD84&4*pL$$z|^P)PIYK!U<3FvEzs;BGK1@;wP zSC8Kj((B{$zP|h+=OI!J7@KbqHw4t!BVwSK{9u4x8G`?>v*(p+--C{5a$<=Rj9GQBWL&(I=)*}-zrQ#I z>cbQ7HHJGC6XS-&-4WQRg-_`6-r|Gm_cc69{EzCzvj6&TM>%)nUt~vFQ$9!Wkp4}* zXPUVw9S`w!#3>Orpc<_(NpY$odY)8ID#2Dg#|IZmcB0R@JJx4T61$yXrrL>}>WdG} z`o?emtbF{Jzvq7N+Rp1&m}O!2@!bjc(dHb1si>wwoUfirM_4gu#6T0t8lqLjeDfH+ z8JB%m4~dJvknUS3J|cF>hXdC}qsSi;CzQmp-hOnhpC+bf|FLl~T9?v#Ou;W5VZq=S zo9Ltsw9n+ILBrc4e#BSB=v(;Ue~Z}eHfL@X-!D#!xKbwe!p24`eyp$yl`uZeUr3B6 zE^q)wYLG*jV3X=`RsLlX5BJ~$rr?ER);5Qepgh4Q{<5%@(gIWsYK?p4V@n-r=!J89 z4lxL`l~cHHO|1d{9Ig@Xg~7dE6V6bG&GhL-F|naGXWrp+#S=-mS9YfU6zc25llu8K zxmAm^*iqcam*$HIYYfE=QGJ8lS$pn*Sq0e5m}gf1RhP4y$}TX6RI>%c9Q=TN5PqN> zOy?z`PUcao=@J_?JOIvm4#wz;rv;WM&O=K48gNI1`$hDxt9~kxHqUT3Erw@NBd)NE@@~6Q!4$tiHL+{$Z|KuCtH^~39J^wZO=zIP;`jz8# z_gpb+_0!$80r)d9*aq152DRP}T)j@bI5lq&zs38R+kTF@u;-`l?F*BaUV40TiOK&BGy_cL zT}L53o6L_1jFWY_aK6qK0_u+a`sx*pGVjZG5rvV4oT4F<5CEj&gScz14uc znf~=`ncrb5kFntX5XW~B@D=(uYV!uVpJV!Qh$sAoIk<3eMd-cpq`T?G+^ux#Uk`Vz z&t99w%u5?>&i!!pn;&~O{`#JG@&Dhp-v6;X_EBe+1TOm!U`xROsNDy|nCheOuu(Dh z(I<{kFGs@MtWdcD^&Xq|Ud9Kmf2b>T3m#FN28M#DL3Koh=Iks45Xh19udH+b_Ped&xe{ht^?{d0rpkg ziay$*^1aH5a&owkxGd&utEWc2k1@5e44)li@1-4@;m@-MBZgao-3h_%!HK|uco*W= zhC707Rj+1=E!A_m%-XZ5NvFi54d#!}Qod!%eo>S0;Rbg3T_L>E%%Tq7OLo%FnmY@( zPtBa@_*?Fuo_f2_{GWmO&`*L-|I&{~pKMKgmoG9iWduf&;?Ky%u!$c2U;5DM2UiZI z{xS8`w>hTl^~Rg4kg6Fa<@KBJ5O3V1g0vzz)mpE>0F#bI?-_oWV?`7EwtPR_kg?a!l6Gy_-D z{O1BZQMjr&G#+zlgrh}ZHVtP6JD@%&@wlWf5Ky}k7O$LBd|#VbGbRQSce+cg*-NSi_aUp){Ff0Vj-N8Cnwjm1NA=^2t%Q2|%Y#rMX-!oW1d6Kr}TxyJ!Hv=6r8 zD3@p5b8L?CzLcDz!H9`n<-ar!OPsira~N}X)jt-IV|mo(V)e4XKU6%SnF8vS45_^i z=-ZCSIR@%krjDJn<_>EWsMbf^>bnl>9nKOrM5l7_lM8<_H|ypfecS(|y+2F7alick zkK+%&=l@y#-Pkq99)6Z}?maiH=1)wvE|FiQ&LnwlVKV>fzUhtV(Vgq3 zpP1ev2l8HgWaq-g1H1kb@5Fm3wh<4w&pwvy4V(vT7qx%vL;7^7XSIHX`d zV*03J@|}$SQtt+_d32;6&l8ik9XMdZ{_(+Zyw$JY;Eb$Y8nx^A_NCob{C}rKp2OMj zc(*QjYzKR;ye;7V1>~kC*pmTH;N#;wdQKc_Mjh;M1bz|`CpgraEpRjGCEGUZPMjL4 z?nSL40xwOOY2v}du(2~b>y7Rxd5J|Xr8<9#zf3u2ZR)BS^_LjEtXTZ}ZR`Yj$T%SO zVK#kx{VC#w$9C6(z5LEc(eKzt9=M;{33x>J`Q0)2amB1(;}+{!?T2r2k{P{d9K<1U zpo#s)pEv&B-&y_K(li-8J&V?l|0w!*AAL9cH}}0Ad}7bH&G$XF6VExb7!0-w9rm!x z{pWl&wp#K2y}U|%dTE(Ri^RrfNXuI|w{(mmdIF^pVSw$a$4E1$Y~pa~l*%rtKB#%K z0e@D%Mxk>~ew`4n_Q?NB{EImI>zu72+QIQPufAdA(;H*#C%U1+jL|r#Z*|VqH|>>r z%Uhe?vO3e7%t%Em1KncrSW?`UsEnY&e)@GBO}(6MtT#Q$R6|DiF&wG_Sqn}l5J(*EHKP9?8Gwp@-mz< zgLy$AbuAzKYz@qNslod3e{dTeo-t~js7H%7n3Kbul;#HS&%ITyBn`ht(;eGhvUa+U zs=LcZIbc>@aFtNn>*PQceLMkiZ~+FUd79$*gEh}IXH#{N2rf`UT#(Vf7ceht86B!+ z@Fp{Un%o-=E}L2eac4z*T}h)-JR5X10&Hx={YtRK0d^$Er&ZX5io8-9Fgf)%^+KfF z=|&?M`b8*L=~qIxq@>`jVI61S)a_9woM3(uk?Kh22&gmVd3HPDA~(S|X=5mw11 zHFK^+v@#4yqy_QZPzgYfXX!@=b`-Fljz zIe=c^5p-AXP zop9SZlP)(@O5NYAzvsr3hS3eJnY+MQn2C=}8R9Q62C$>2606xKl}96$P`R z%HCZ5v*p@)`Qf+xf4%o-(Km$uzvuhmLqGq2o4qs~ z3fFkFytum+ouB607szv%`I79NzM4HYS-bf7WPYC7JA2!upVC7A!^Ky`_?(J7H#Fek zk;nLoyTOw^Fe&vMtrD+wH&4@7&Fr`q_!@qv$9V)3stsnacY^(B#$u~%a8_dB5_~kp z&IgsWlc|f~>lIhJ*nNk)H|Y@pbreK4(uoB=H#AzD>;{dAu&K9@ur4 z&~IW5E1tQ;URbQ79g1fGzRus5{C7|-Og4$Jd+q`9Z}M^0AFj*vws&Rci`4AK+T(=! z0+?CBophKL5G`>IO>A~SK8l`*OWY7pPfDqa=j>ZS?M|87#`fcjvw3fo}Ro4_hLwl7U8dY-i3NAzEt1f9QFGb>xJnx1`ah5%FLJf2sSLr`>z+Pm_+V~D19+FQ_bx2I7`l%-@Qg&PX zHEfsx7A3y9!TIU3-v;?a8-Lp+r;pnwYUir*By0tmA=2v6+#}yTUJvPM>~~!7DZ38A z01{%#rd}YdQS}D(?2CMHg~2WY_!@p@Pn{c%G_Kwb{`I*#=9hmR|No&ki+%s>d)I#J zOx?a<)&9jk{`b}0wb6k19jsdTzxo;QH;vXa_uq1ydX*j+lUicX0c#}B5O3Yb_lP5; z-j+nzt~9UENz1^1VrFMZhubkNb?VN39bs)P9sbx>md z3=AdbY&gV3*TJF2#IriT9_QWU467f-17pz|#jLC5HZQZcIrvvkc` zz=>7oR=r9-SFwf#ceCl&;Q4LrmrZQYjp?!9u)L&&2BQ$Xf{@>@Esz18GCaVW80<#PI*bH*mTrmQE z#vuM)?H?iUJ_P>~4jy~!gDo0p|5oUpSM%%_Kd&63Voiis*_=UPCN_6f^&O9xTzw^x z>bLx!g8LkypQRd!dew8@yGYN~Tin;{GUvvOg3R#ij% zX}sHQN4twbHMukdBd?a21$%btzjScAT|L74JVL$jW4po9V>_48r3A)3Xct^{`UTBDfnoR+=E!&(DCpp&YWck+ebYfGdda5{Hnk!5cSEoR#l^`oGcV^SFK_LiUN4x{k~})uxVUfX zUBwrIWp(kn%e}eXwf-S$rU$5f6I1YangclitIf!*H6zJK1xg&NoKpUu+@HIV<7ZON zq3XH`cu`7h)YaYMOiS0g;w)Xqe-F6>19}N>hDYkrGCVzc5;Oxw`kSi%6!aTp0dWv9 zP(iP6fnOJn6?3*5-A~2Td|$v>Zu(})X?-w@0PNkTHqz!Es~1%|nyRO{aOYI#bm`6W zS!XY#SELVD6Q2@EFI1fE(N*x@Q_R{pfNw%egR`GtLvn10_%AK&!U~+TfIB7MBdq`% zj*N@OyK=>ZTA8*R9hRfL~_6V3aI zuj&))DW+&@*VvbUb0EH!PfR18k#ue^zc(Lb*_pUn|j$B9YOL=#XyQl5@HTv)k&kT zMGX>cD1gtEQQI=H!w%ZoAsSHXV<=aNU(nJ@RL28zj^Sj>_NXRcsShCWXJH&pmTq`I zj{ldlcjB)w|F83*AElr8r{7-v_2pT6F^99%r;qtI@3{_EKfump)GF0OOdic1R-C0l z8~iItc01R(E7SoB);Z>mH90KbqdrJ!E0Gu0Yd0=Tvu);TE$^?_=@}S7b!%)}adx=HX=+m+iY8l**W^J$~noljg=??cpccjf3(p%lKJ!TVfpLgBGv`&apXs4Z z@j*F#L~VF;9=6pbZj^pkgJC-c`{=U9@BqDX>Ws3t$A7e1hqpidruVg{-iZF~ee|Zj z=kKBq{``NAe&xdM=xRChf*c!}?)sgIcOLMZ1-3lcH3zHcyr17WcXK~FOpg=iKQaw3 zK0fVUCjJKl?YF^W(Q)nLQ?iYAz0LE6os;$YGP;Ifoqg_k0Y@woHb4v+u2B0f?a9S$ z=BW+ff(7(0!*k0OzhJ`yd~wWskMUo9>W9*-viTfgF(dHmq3@7SP^ShvO!E1uzkPAK zxbYNgx_^2u1zVnf3SNS6FnA{1cOTwaynPJ*+QB-$q@Ew_&XAsE>Y!tAik`Ha!33FA zT6eFbv5YMqbe@{_&z+cV!x^YXOB4Gw=1usIP3IShv*6fCvKy@@->#rT{OU)lrnFY!@hu+UPt9#5qj0PZ6Ef&4zEULvlb z0sl)FV@CezQ$tgoO+2Z%!VZ(06yU1Ty66(Cdd&DWv8lFso_+(3~ z0dbK>ty%9fB0e(m3-uNM{N(D^g{imw)bytPNBMQ2C9_*Xkyn1xE$J{^JS=y^-s7gXi>!C=1~VK$s<%RZFo*_wp0(3E@Hs?NAkBk zr?g>WhukW#iN}ehIVUN9r+yyw)M>VbNzQASa2f~L4ep6BNQb=A!I%4-NAaiSL(z?_ zSFc~3gs&a~Yx(3fIDZ&C3+xRZeu-@p9<2VgX6`WO->1H>{=fn}Edk3wv!SU2G_%ti z{t3Jcu&!nJT`e$XoAvY+!-AvA$8=c-gW81;pGEo>J>p-_Ltm2^O|ui_15A8Yi#*D~ zr}yaf%!m(Fi&eZU4pxSpPubrRJUHSWssBaXSBt*-xTAUx?}g3v=@*aLqlnsD!MV0Vb^1%IdVNHHADl_eD9Ys**#8mwa@+DnoJ)hV=Mcjv7nGk6mt355bhN-7zzxQ& z$(7q^Qj|}^(b`)NuHqLKi4}QH8{V2n4O(+@Lb&!iTN$yC*WfO)4PZdjL#6eZ(lby| zn~T5!)z2agyEvUAZp26NZ!UF+CRZgMk-mS<49NhDM7@5ReWe*XnvLLND?&b3^>UjS zLw)Va&sCF4*+?w-V0~68nBn;(Oqj9{rLj>WGm!}`d*y}Fg^9CHFz?)n#DN^u-n3k#^_yl z3i7tK=ce1z5F$3sh}F8vb=ku$#U=2ka_TTKF=oVB@_8?txS*LA!um)@SUH^fJREA5 zCO;SPOidpdwybjOj`$q>MF=Ko5)+$Xi!S%dgd-Fw#_&=SC6;Aw9~!RM(4oT)enr8 z4;;HbXT~9RbA&;!Q5Oj4hZ%66Hh5Ps=74|8$c+cwMQLs>6HgY|+~hO(njtmQ5jBls zopUmHp}ytMO}EhO4VXz|QePQyx7{sjDc+&!`618v;-@FsnFG_3ntUJIldPYqy%!Jd zx~<11@e9~7?4fM419#42{VMtjk`-cq?2lP2?JT`^X6MrFC#ao%dK%B~-OZLxPP<#0 zRrmOAxP%|mY+!I!dz0R8i&-~|U~t5yP6!{A_uU{5%lHzvSK3lB`>J{5;ehj<5R;Qb zN>8ubryj!kbvcX1i2KIu(KRrhgtyj7w z1^6X=sj>y;(&2r{jXnA!6pKdqhLBi4i!|nM`uTKz2YmDL7BOj=uu8&C%gk zT&+5*G`tOZcg6dOm18LvyhbhHtU7OB`ops` zcl?o^^%MK1qebe(*dY1A1Uy=0{s1iOL1 z?j3*!^2puoGuRyRx4wEUR`40(lHgNZIIPlWORmu`N30dmvl4qxgYn?sL-gIiFKyxo z58q;WNBDjGe?X5R{Tg5QuO(_^p8z$K0YcLu+WrM(JH9$;ftcc}Osx$uw8bCZ=<5ALqo4^KCi@c$`wjP4OQ za_Sk=nG**L?45X_4~CGiUIF`FVJD?|ToGHSFVG`b_qrZy6@$UX%&PQQOEin9g<13m zsa9^22MWtJ$O~*{7nNw`#b8gG`=?pz4r^zELyJpeZ%~f}3s7A(qmDgLErd1DjM@m? zKzxva>@=URx!oCexxn@mikXSiwWe@-h*LPHoOShzYfftde=icYO72l|{zg5kzHzgS z|9|1l=JFzSINWrrYId=s;DM@q2c}~_zy*1M3)STc(+X*b~ zn)G<>!@J3X{4wVfeAVErD~_qKr<#?l9;2Rm8NuW$G(9@&%;zW`MIVQ_jQ;o-9MRGI zaBO|tn|=z;ZVcY1Swqem7#z8-&)N&a^NHOIYR7H( zyKQV}Lcf1cJuy6+tGQO3-A!sfbWcY|6? zNPVasovANyzq?>1%hc++!V6^&xHm~}j{5F?bjA1Aiz|x7`3kvD_>c}g znbyPY#d?6wO~JmUoW*|de7(i@mDg75_3Or@|N8OWt#I$;<)vrIC;2|`fN+4l-8jlT zf@i0jR~M&)>nrbm{-vku&lLxz#f7J)=H=zd9QCgy_yz?yO~ze|@T2wsj#~RL^EX*j zatzJ$g%5=$zI2+f!R(v($`0pnHM%-E6JFjqsw0hiG~cp?KkD!<2H0CuqvB4e$Jt;H+5@b+j#UYq!`T-*imV0o^P zp2?UV6<aH`@av zjQRJN|M!XY`e-$ja2rP03~}Y86IE4aJw~gi6bF`fu)v4J2a)cLw9!h{La96X#5Ia1 z3Uansxm3a3#};b#;RyRtf>pYlS&wt6`DGzzMtr3Jj#Wr~pcMYezsu%owxV?Am9JUE zaz1&ui|=Lb-*jp7+|HSo4k%Wx+ZV+JQLhN`7j~Z>N&E$$k8VM{ei++GY=lOlG*r~{ zTH;HZ`KQDH6&!&9c4oxv(Ow0{0q5RiO{GU6Z5ZLCA!phoW?O-m-X)F>z#DAowot2x z-Am2+>|uM=-)#`*y0WP~-3ekNVuJ`9m4H`8>)4YJP6)AorkW}^c>-V3r*|H`bml9= zeNT_=2F#IIgM((`pVW7qkT*!nD9_iX>E`Ort=s3OHwMq{&d1Nc+5PH?JJDC(H;ar9 z{O~gP|L8&d%R-Fq{D@jrir=RPk~MeG7wF*kH1E(L9#ij)iPm34tXX;JOmE!-^;yCM)+yYris6Cd46#= zvxc|IIilVk;pdVK`uAPUwU%}bJUGsLKt2)iJ9F-N!!g58tIwhW|1t2PE^%GgB3=_8 zfjmGtPKnPKKS6aR>DDXvRc_CGSUyK_1~pJ(oa>yiKAet`f4Cma6BDR*t6mt@!xg83 zZMdw7k4DviI79wFV=qHE`Z;(=z|ULUE1SJmzqh{6<~`SPbh@d_t)W}hB35Yi`G0t$ z!P*@5hrQ;^cflSlYI+gzTp~=8I&$;O;#WwY1*}TPsQPWQDOt_j~4a)wmvllFSb zY*LrIs(YP-F+}uJceu~19db5CfNITM_$Zon8S;0! zKhn)^uu<%$PdzH&%zDBrz_)X7Oq)DJ^N56_h4jZrU&#Q^HNj}4ca?)%#l(-rI@&Lq z!M?n2^6JvubVKg99OP`qa zIv>C5AKhE0XUPTW%TMu%(j`?)<$`y4y=SPeKFxd~**kIs>hUJ{parJ4B7BlNF70WD zeA3~a6(0up0!y3~>N!E5bLWD?NY{)WjW#vO09$YIciKzwy)jq)ksxjSb%HHG4^(N*tY$M+d5>${v6@=3t8ny~7sw z#KC__->d2n>o7mZjkCv^wJLo^<+S3gXRNi)pB?H|E8Mpg zGyrYtc|q?GnAPKOkbV~~DfR>#8sQ7g3 zfRB$?Z?*xhV{=ymbQv=^f{K-NcRYHyLhyo6c`a*LV3SMZICF-{;e77mh~5iqjb^=Q zE}3fFG3%Zt&(CxoQ~2OM+CkEo5Ed-$xMr3I_+^K4Y=UtXoXG-Tr=D^LEq)K&oOr9L zjg;6#>bbkPuqIirbkf8x0Sez8sc#KdN4zLNJ7oEuZ3i(otxJP;~F8rQmrXDdwYNO{#Y$`sWdi5(}$U&1EvJaeBVcwbn*39-~ zZB@TnAun9Tw@W8ZTo-ZC)SKpGD;?n&#MTbnU!Ohz_zXM`amGL9`-+vAL*tNhIM{E^ zdor=x?NwquYIi<1Q#vJW-r1**F)-lA5D&SE5y{u21>ofLr@Yjv2d_L`U%vFr>_Xf5 zd-LC4d^`N=1GAv}fp;&S`n4Yy51*@p^T{l*Q(}gM=OKO*&fUb!aDI9AMD+%(Bba)C zwug5E8+75n~N{UY|P&za2Wl{OrFA3E*Q29vE9*Ic!8 zX^(fvdDL^JzKn$0P;7&h;8T5imm>0*l=!KGZi%q*lvrGv$^lqm${yt45h*p%Lj4eM zd6taR^?9@^EO4cm`fSA6h=~I$?3;9-rJ<98J@?>gNe^DSS8;w8eird8@u`ni;Z3lv zjC#uw>+PdmoY5oVqurtz57L-!)&~FY!7KL3nG#}D#jhRqPuf;CngAWmd4r$qfuE~S z*5SYH0X#hBCK>c+n|`Zaf}^(rPoaa|lqGJn^&VQ-)sQ_a*bB`skKlfJaMK%&ZQ(2IrDn-? zu}LN|ysdnSULB)k4q5m3^c;EgM*76g>kI5D+*RphXg0hw?|j3brOEJ(@mD){`d@nZ zt?*Aj`cCj?@0t18&wV#~@V|lo$IO+*>&#ub&byT8{|%_~1ZX|2(XY&GB<&~p!xDAf zg%Dmo@u;^99_QQmS!wRUU&EGYMx_Oed)pOpLx@jWog)X~ zdAKh=chM)WQjdb>Drr_;LVsJNo&|8k1m6$`E|@U+u(UUb-+bL+?uy&!gJJL3N9lNI z4w}Pf${*@nncQm!4nS9SoV(QUVpYH6ysM7o(pMFt+tN zIrq7Tz0R}Deperu!&<9mrrvMjL~Ms@gVKU1v7I@b^d9FTBi4|nyn3^Q^*h*M58oIP z&jvhu3GNtk=9Kd{+$>@;>9NMx=NzoBMQiQuc1q6jShepeyZ*-(HnyHrRP0YFOq8r zOOS4tW^y+3x-`?CoY5QNx5+l3v2j4#U+}lp?E^`Z*9)L ziS0?TOX@ul9v5=9eYgk_9C;6)WKv`7z{7VH&&u8t`&z`qj_@>|FU0S7;GZ7)T(;uy z+?>R(x26}uXD4Sac4yXR{KN2@=iW~LT#@Te{IYTg^ls$I1 z7u*|q5(9GdOq_PGJ?3XMHM1`MU);8UeK&}u+Tf-sbx_Sl2&BhDycnU49R&M1E8s`; ze6`^%(j(pEAL93ke=okAYA@<@Q~l8uc7mRTe46x=6rb8?EqQS5a_X4>KTU7?W$9hr z_x=Yql44%O#9(6!Fu_jnO>ARB3)sc4-8hM{gWqI1$+~8+0WlaGgCx4nbL!mB_mT6Wm!P}qoM+g- zy}$drzkBbDo=O`msD1;7xR!tcEc~SQ51ITlx}Os>`}u2p_YRs*o(=dwT7ew9ikLB( z;2avFYN`rn<;{7xZ7MOSUyC-fb>B;vU;wWn91b z_#Sl_%~I9Ajjpj;-BDY=grCjGbwco;gHP973zs}=K+Ful?V7W%nHj3{xBM46EX~{3 zy~`f-Jf!`+hI7xFsoMiOtNy0?v;Dvz+Nvvcp}>VEXEADQp2{@Q-9 zB<&aPowMhILu^yh{~!L{t=~giy7$js3qJp$ANqgz0Q-O5@@o7(^8cUY=P&Ina(|nj z-y_!S9K^eDaKxyZ+<8y41(?&^=e;65*n!z21%p}k0Tg|cEHow943^7{TsBO3t z?Scz**1-lPcz>5#RDpgr)BTRF%&fcA3$jONx6WZ3^n?sJ=d1V*X>oS^!MuC5Gh4lj zZ-e95?tP-UzKq^pv#6`*=bJlA^9zF`Z#;eJ!u{jk=KMT$Z_UWku04zM)r;}VoNwV@ z3;!$bJe2>3hfBamDe)&~)^T2Jk$>>J#ODmZnFPWu^zsusGv*RkXv*4LnjEU_$zcX? zO^i0^bVE1sRk1Lr1JV+$nL`sXGpgCgKDbl;B^8)3BPLXw>8bNH z`c>w!@L2`Fr~KaKTBOa5guF{7u5%(OcHYvSzCH@g^6bwIg zPBcUM8z*oh1$}oV*PywgDf!_D`xugwWYke(xD09PTyhTHcjMk-p9~yhy~5{WKPB-d zMUN5`0q2RcMm@-OUH-q%bE7}H$bMvg6Fhd~sYSlA^zHILpZUg1UwVlA@PWULf91ii zt-km0zW=PXD7@)Gx<}6%_ci7nR`~t_wJGI21$=3#+9q7z4%*b*tT)*ma-`jl&#$h3 zVjf<=7YXx-9|5!Giao^YfSrpLnvg&<@Tozmchl#Lxq7cX^5znq_wDCry?cjvx4+hy zi;vN7OKk^CvBgX{)i8Xt&KtaAn;0?1_l&Whnwb^B@L6nw?Jj90)&!WT@#>!h-YzI~(9+dD5 zIXsk4?xonM`g7XiHO@3P9x;PJ8Z6a~2k?CX*f~QZUsFrT!KIq*>~ns^MHD=rl=Gln zI;y)04{M%F44%k%PMQfMTq(SueicJ3^2uX-aZ#LYN1CQK;%TV3GkI?Y&UyJzZa_t`aI|BzNT~I`Sr0N7N zKFrcP0@rK*X3A%W?6Qc^s%G2Fqs`amm%PEk_ku-mwf;u@rAt33fB$C}RsTKv@yVZk zHU6d3GwamuqS#XX|8wY%y_PQ<@*HdMvd8@ye9@abdw4Fyvl!eRg84l6;_Uf!Wqv+g zp0D7~G=C%_KefSySI8w}_D0B`x$r&Oy%SUO3-Ptgi6S=3zBr3Kvvw~|8~?#)*j@k! zEq(Za`lxyh!{9JA3j8AYUK%)u*s56}4*ZK|m1|e1@Y+@U*RK2r&s6<|+Do0mkEG!I zL|lR9k%6TLeM~@M?-R*A-Q^m4!98i#QPBr*DOEnCK9hu z^6a&v&A>gz%-hcNZpnMJM@KnAL@bT4fgbPO(oR!2(}?)2U39H36?@XYfm%EU_M$y& z`g_gs4OR2w|I7DjR=8$_*c@sz-z%DJg`VA@&7;e-!^`dp4N?jQ1EK%;iG%Z!6pAOhY!Nb*p%WXoJ$GLDZ#`Qm_DE2g9~(T;%hjo>Y>q0Ztc&E zz^@toKHB9OkBKq#q$t1I<6Ljc7P&@ix;$IE`!v4kk^8sLvbUAlX*KgUisAX@I(g#| z46rf1G+&*bYSz>zZ9YLRN*#hZ<^GjZ^DAHm7cIMq$b;@o;K~6 z3(yRwd{%(ZF=%$w+g$35D8D48)Z{BSI4{~&>!MGK;c?_w3-HTuz#QVTJKx;9-1M(; zHq0URIH0=)BW)7jd(?J(dd@;>At^a%yVqP8lU&PC^UT%rE}mL_pkN(`IFL-}MMXQ{ zbH-w@eZg)}^&@D%R7fsn;Ce%Nq!_+#$Teng3F4d76Ys+_il=g@L1}kp2R@(&t_ySW zcQgwV`?=&!A&%K*~xEaUwZ1h#UH0xv#hv&XkMv$B6H=QoITCDv5C1c_3+demg5|9#>Zg4UbQ~!z4YvSb@WlRq=%SQ z%MK+pE~5^y2(Bw)hO-|eP5&l)`*zRCOB)D} zfFC+VeUx_#4--f1^a9%(e%4TP42Z#1>@`>EyDQ;?V|o)t!PCtRYAlhv#2Fx;$DRl9 z;vqO9p)YcXZa1fnFD@$odrl~3Mn;!7W1(lzOy40`X$nua$Ge-7%jMv-c5fp!Phr9V zKNG{-sn<4z-<5vQM|TQJt{;Er zHwW*((4-fyFS5Mm*(PwH_$a=+q_$nqL#h3m?XGIqY^w)Puj!j$LWL0{$C;BVyjK@MI3BLLVRb4F0H%t#9%GihU_s z3hj09c^`&-O&%H)X`d^!rKR|1ayDs^m_5Sh>Gz36_)Q}|h!R=DzX}{DL?i^`C~| zG(%0n5KE`LpOP4n@tzHzQ%LU%KV$ek<9p=N>MO^Wlm8T)trQzc@xSeESa|A?_o~`L z!o6r0SIdin1zJ4>_8_bqlQ*b_k<#-Vlh+83^|7e|&q}&0^$HBIW$mTv;zRWuG{0{I zCK{5zXGVL5(8cic?M^3gEO3GCtUhco1&apEY4zdAHPcUAgywY*d4~yHNeC|Btdo<# zH*!rD-{-nKf8kr=mv$*+`1l;`Is~g~u9oITw0nXSm&g@za?DE~!C)r0$tYVjE7yW|8Sy7Fy zujePsz;lpocExw%yN1|+_Dg6-m|tF*Z(Tb}E{{IQejJ_?uG7VjYd&*yyt&S7L5sOr z9pY1mGt#HFGr(7g^9jW@fx|SnwuHwQAECLsV*~fg_Xp(Z+MjLI=fShp%wCuJQiTpX zLo*}ZQ8grgo0x|GP4RsR->vz{0q^Rtz=1XR9iYdN5!+&gp(+bXx=FW&Wlg`hG#{w@od+6Y5@&vBWBhO6z zCzz#!?ZPccGiNFPBmV2N0_@mBe-NS%h7+T2g?BzaOz!yU96wDB! zO?9XtsTU`NQ!L>fQqD*~jIr?P3E0F28>qL*0@w7dlg;HG+AeTw4F4ov-e5}^&s+L7 z?L!fVBki+|{|jUGfJ<|X@5uCT(xE4vxx*}sHMAt1AvJ~Q(Sz*D(Pp>`r$R3xyRz8f zvb6}q=)k{9%@|H5BySVulKYbzErt6*pPD

x%)IRmb# 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%0DCZt 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

_-pYn!~#t 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

- /// Called just after GamePlayer object is instantiated and just before it replaces RoomPlayer object. - /// This is the ideal point to pass any data like player name, credentials, tokens, colors, etc. - /// into the GamePlayer object as it is about to enter the Online scene. - /// - /// - /// - /// true unless some code in here decides it needs to abort the replacement - public override bool OnRoomServerSceneLoadedForPlayer(GameObject roomPlayer, GameObject gamePlayer) - { - PlayerController player = gamePlayer.GetComponent(); - player.index = roomPlayer.GetComponent().index; - player.playerColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f); - return true; - } - - /* - This code below is to demonstrate how to do a Start button that only appears for the Host player - showStartButton is a local bool that's needed because OnRoomServerPlayersReady is only fired when - all players are ready, but if a player cancels their ready state there's no callback to set it back to false - Therefore, allPlayersReady is used in combination with showStartButton to show/hide the Start button correctly. - Setting showStartButton false when the button is pressed hides it in the game scene since NetworkRoomManager - is set as DontDestroyOnLoad = true. - */ - - bool showStartButton; - - public override void OnRoomServerPlayersReady() - { - // calling the base method calls ServerChangeScene as soon as all players are in Ready state. - if (isHeadless) - base.OnRoomServerPlayersReady(); - else - showStartButton = true; - } - - public override void OnGUI() - { - base.OnGUI(); - - if (allPlayersReady && showStartButton && GUI.Button(new Rect(150, 300, 120, 20), "START GAME")) - { - // set to false to hide it in the game scene - showStartButton = false; - - ServerChangeScene(GameplayScene); - } - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs.meta deleted file mode 100644 index d8f5760..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: e7d8650c751710349bb9546d1697b9cb -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs deleted file mode 100644 index aa981ce..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs +++ /dev/null @@ -1,26 +0,0 @@ -using UnityEngine; -using UnityEngine.SceneManagement; - -namespace Mirror.Examples.NetworkRoom -{ - [AddComponentMenu("")] - public class NetworkRoomPlayerExt : NetworkRoomPlayer - { - public override void OnStartClient() - { - if (LogFilter.Debug) Debug.LogFormat("OnStartClient {0}", SceneManager.GetActiveScene().name); - - base.OnStartClient(); - } - - public override void OnClientEnterRoom() - { - if (LogFilter.Debug) Debug.LogFormat("OnClientEnterRoom {0}", SceneManager.GetActiveScene().name); - } - - public override void OnClientExitRoom() - { - if (LogFilter.Debug) Debug.LogFormat("OnClientExitRoom {0}", SceneManager.GetActiveScene().name); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs.meta deleted file mode 100644 index 8e4d135..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomPlayerExt.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 41fc608223969754e817c29908fdb1d3 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs deleted file mode 100644 index 12c3d9b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs +++ /dev/null @@ -1,30 +0,0 @@ -using UnityEngine; -using UnityEngine.SceneManagement; - -namespace Mirror.Examples.NetworkRoom -{ - public class OfflineGUI : MonoBehaviour - { - [Scene] - public string RoomScene; - - void Start() - { - // Ensure main camera is enabled because it will be disabled by PlayerController - Camera.main.enabled = true; - } - - void OnGUI() - { - GUILayout.BeginArea(new Rect(10, 10, 200, 130)); - - GUILayout.Box("OFFLINE SCENE"); - GUILayout.Box("WASDQE keys to move & turn\nTouch the spheres for points\nLighter colors score higher"); - - if (GUILayout.Button("Join Game")) - SceneManager.LoadScene(RoomScene); - - GUILayout.EndArea(); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs.meta deleted file mode 100644 index 89237e0..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/OfflineGUI.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 039bde4e5e3b63e46be9b967d06e5469 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs deleted file mode 100644 index 9ebfbb6..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs +++ /dev/null @@ -1,158 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.NetworkRoom -{ - [RequireComponent(typeof(CharacterController))] - public class PlayerController : NetworkBehaviour - { - [SyncVar] - public int index; - - [SyncVar] - public uint score; - - [SyncVar(hook = nameof(SetColor))] - public Color playerColor = Color.black; - - // Unity clones the material when GetComponent().material is called - // Cache it here and destroy it in OnDestroy to prevent a memory leak - Material cachedMaterial; - - void SetColor(Color color) - { - if (cachedMaterial == null) cachedMaterial = GetComponent().material; - cachedMaterial.color = color; - } - - void OnDisable() - { - if (isLocalPlayer) - { - Camera.main.transform.SetParent(null); - Camera.main.transform.localPosition = new Vector3(0f, 50f, 0f); - Camera.main.transform.localEulerAngles = new Vector3(90f, 0f, 0f); - } - } - - void OnDestroy() - { - Destroy(cachedMaterial); - } - - CharacterController characterController; - - public override void OnStartLocalPlayer() - { - base.OnStartLocalPlayer(); - - characterController = GetComponent(); - - Camera.main.transform.SetParent(transform); - Camera.main.transform.localPosition = new Vector3(0f, 3f, -8f); - Camera.main.transform.localEulerAngles = new Vector3(10f, 0f, 0f); - } - - [Header("Movement Settings")] - public float moveSpeed = 8f; - public float turnSpeedAccel = 5f; - public float turnSpeedDecel = 5f; - public float maxTurnSpeed = 150f; - - [Header("Jump Settings")] - public float jumpSpeed = 0f; - public float jumpFactor = .025F; - - [Header("Diagnostics")] - public float horizontal = 0f; - public float vertical = 0f; - public float turn = 0f; - public bool isGrounded = true; - public bool isFalling = false; - - void Update() - { - if (!isLocalPlayer) return; - - horizontal = Input.GetAxis("Horizontal"); - vertical = Input.GetAxis("Vertical"); - - if (Input.GetKey(KeyCode.Q) && (turn > -maxTurnSpeed)) - turn -= turnSpeedAccel; - else if (Input.GetKey(KeyCode.E) && (turn < maxTurnSpeed)) - turn += turnSpeedAccel; - else if (turn > turnSpeedDecel) - turn -= turnSpeedDecel; - else if (turn < -turnSpeedDecel) - turn += turnSpeedDecel; - else - turn = 0f; - - if (!isFalling && Input.GetKey(KeyCode.Space) && (isGrounded || jumpSpeed < 1)) - jumpSpeed += jumpFactor; - else if (isGrounded) - isFalling = false; - else - { - isFalling = true; - jumpSpeed = 0; - } - } - - void FixedUpdate() - { - if (!isLocalPlayer || characterController == null) return; - - transform.Rotate(0f, turn * Time.fixedDeltaTime, 0f); - - Vector3 direction = new Vector3(horizontal, jumpSpeed, vertical); - direction = Vector3.ClampMagnitude(direction, 1f); - direction = transform.TransformDirection(direction); - direction *= moveSpeed; - - if (jumpSpeed > 0) - characterController.Move(direction * Time.fixedDeltaTime); - else - characterController.SimpleMove(direction); - - isGrounded = characterController.isGrounded; - } - - GameObject controllerColliderHitObject; - - void OnControllerColliderHit(ControllerColliderHit hit) - { - // If player and prize objects are on their own layer(s) with correct - // collision matrix, we wouldn't have to validate the hit.gameobject. - // Since this is just an example, project settings aren't included so we check the name. - - controllerColliderHitObject = hit.gameObject; - - if (isLocalPlayer && controllerColliderHitObject.name.StartsWith("Prize")) - { - if (LogFilter.Debug) Debug.LogFormat("OnControllerColliderHit {0}[{1}] with {2}[{3}]", name, netId, controllerColliderHitObject.name, controllerColliderHitObject.GetComponent().netId); - - // Disable the prize gameobject so it doesn't impede player movement - // It's going to be destroyed in a few frames and we don't want to spam CmdClaimPrize. - // OnControllerColliderHit will fire many times as the player slides against the object. - controllerColliderHitObject.SetActive(false); - - CmdClaimPrize(controllerColliderHitObject); - } - } - - [Command] - void CmdClaimPrize(GameObject hitObject) - { - // Null check is required, otherwise close timing of multiple claims could throw a null ref. - if (hitObject != null) - { - hitObject.GetComponent().ClaimPrize(gameObject); - } - } - - void OnGUI() - { - GUI.Box(new Rect(10f + (index * 110), 10f, 100f, 25f), score.ToString().PadLeft(10)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs.meta deleted file mode 100644 index 74f8f95..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/PlayerController.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 24fd13686a451ad498101a604d134e39 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs deleted file mode 100644 index aefab97..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs +++ /dev/null @@ -1,55 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.NetworkRoom -{ - public class Reward : NetworkBehaviour - { - [SyncVar(hook = nameof(SetColor))] - public Color prizeColor = Color.black; - - // Unity makes a clone of the material when GetComponent().material is used - // Cache it here and Destroy it in OnDestroy to prevent a memory leak - Material materialClone; - - void SetColor(Color color) - { - if (materialClone == null) materialClone = GetComponent().material; - materialClone.color = color; - } - - void OnDestroy() - { - Destroy(materialClone); - } - - public bool available = true; - public Spawner spawner; - uint points; - - // This is called from PlayerController.CmdClaimPrize which is invoked by PlayerController.OnControllerColliderHit - // This only runs on the server - public void ClaimPrize(GameObject player) - { - if (available) - { - // This is a fast switch to prevent two players claiming the prize in a bang-bang close contest for it. - // First hit turns it off, pending the object being destroyed a few frames later. - available = false; - - // calculate the points from the color ... lighter scores higher as the average approaches 255 - // UnityEngine.Color RGB values are float fractions of 255 - points = (uint)(((prizeColor.r * 255) + (prizeColor.g * 255) + (prizeColor.b * 255)) / 3); - if (LogFilter.Debug) Debug.LogFormat("Scored {0} points R:{1} G:{2} B:{3}", points, prizeColor.r, prizeColor.g, prizeColor.b); - - // award the points via SyncVar on the PlayerController - player.GetComponent().score += points; - - // spawn a replacement - spawner.SpawnPrize(); - - // destroy this one - NetworkServer.Destroy(gameObject); - } - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs.meta deleted file mode 100644 index 879bc7d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Reward.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a22f9eb8ebad79e47babf4c051a714ee -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs deleted file mode 100644 index ca39186..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs +++ /dev/null @@ -1,37 +0,0 @@ -using UnityEngine; - -namespace Mirror.Examples.NetworkRoom -{ - public class Spawner : NetworkBehaviour - { - public NetworkIdentity prizePrefab; - - float x; - float z; - - GameObject newPrize; - Reward reward; - - public override void OnStartServer() - { - for (int i = 0; i < 10; i++) - SpawnPrize(); - } - - public void SpawnPrize() - { - x = Random.Range(-19, 20); - z = Random.Range(-19, 20); - - newPrize = Instantiate(prizePrefab.gameObject, new Vector3(x, 1, z), Quaternion.identity); - newPrize.name = prizePrefab.name; - reward = newPrize.gameObject.GetComponent(); - reward.spawner = this; - reward.prizeColor = Random.ColorHSV(0f, 1f, 1f, 1f, 0.5f, 1f); - - if (LogFilter.Debug) Debug.LogFormat("Spawning Prize R:{0} G:{1} B:{2}", reward.prizeColor.r, reward.prizeColor.g, reward.prizeColor.b); - - NetworkServer.Spawn(newPrize); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs.meta deleted file mode 100644 index d4103d6..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/Spawner.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 0bf5c082d04f7ea459fcd30e60b5bd70 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks.meta deleted file mode 100644 index bee4222..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a6dc5104926d44c9296aec7699989ac3 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models.meta deleted file mode 100644 index c94259a..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6878aacf12b204d03a94f71e49f9ad60 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank.meta deleted file mode 100644 index 93b0075..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d8b3e43538fc240feb28e07816c7e733 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png deleted file mode 100644 index bcd4bee1a09ee33116fd4766157857e238ac497b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 939498 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≺_cNzcoF8cN5|<^ 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 z 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�dX*h1ys34c5_CSWit^`OG~v;7su-1TQ#Js1D(J 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 c4 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

CFD#LxA3 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 vbE?3&z_x5uv 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

(nl!7GX#u6#1 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Ξ+E|!%#RGRp@lp!T8O?08E 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

xp43y1 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�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%0AiZ+@2XI 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⋘dfLaw^+NzU|&B$gAq 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 fITU2#HaeRdl zt7jqY)SYGr@5p!kCiGW%>&SQAt1hs>Hu=M592hBeHL05=eG?``+002ec0|JIQy8eE z=^#~F_Vl7e#@|=?aLlGC-H`dp(M~ z)1^U;vc>GxhgL+SRw2+Rdf+fouedd$_mbE;HM%&t=Cba7LQ!h_KzI*ZJe^n;-MZB3 zZ%2d_Nxz#hfHxmMuR5;!vg*3Z3EhyE99`XSHr=#tM{@vYdOcErBt=`~g~F#D2JvyW zSn5h}0Y_wHh{{~i4YC*$s9NN7-s}SOv4(e%S3i$7%xEq`v!>CVmPJIrgzDzgoW1Xj zhSJ4Kdo?-#ST=fwqFdpziKpEn$CY#{7coc3+G1Mouoi{*fn7{WYV<}|PcJA)aawQ- z9qLBzbd|rx9xUZiqM;}1?)9|_`vQfcNB6{k%9!V)CNv7#ETx_kX@!irnrh{gog#-6 zczW6}Ags=^3l~^AYvZg`yHJrVw8pOF;sAg-*f5`8A{?UCsrQ!5>$&Hhi#1#+?7Q}h zCIbol^JaC7E8FG$`-vizArK!QujEE;Zbkk2`1L%1hFg+ev@XYOFG+LJp4f%nM0U{~ zwnU|5(M9(z`bMwbPr8U(NY+D#5g<`eYNNmDzN^5Zw2KjS!gLDMjwUT?$0ys=Vpl>ruDVC4-nMUR&OKqIFCJ)hQ~WRb`#>&y1{3p+&yMo zPkEfj_;3TwC%n~>2InRjm{EU&ZvWhD68~uUOC{-n<6_Rth+25?T_+D z(Y8~nESa>R8M11jclzoWOR)yj%?bEhWxWP--`;gRo`q2xA5nV08_g0SC2u*@y0=)y z%v|HU?6A=WbAv^5W5*c`2BBHCWdXD|X%*eb30bJZ3c0a05L)x*!S*bUmJU<(bF1

=Sf3gto-z_S@26L#>}w32#;*+$y8uv4q&O;kLL? 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ð?zpX>n?FffkdK0b8C#a8S4Xl} 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 z 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 Qp#T5?07*qoM6N<$f{{wu-2eap diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Normal.png.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Normal.png.meta deleted file mode 100644 index acc128a..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Normal.png.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: 2617bfecca4d44805a3a51a7aa215d7c -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - sRGBTexture: 0 - 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: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 0 - spriteTessellationDetail: -1 - textureType: 1 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt deleted file mode 100644 index ed10006..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt +++ /dev/null @@ -1,7 +0,0 @@ -Recon Tank (update), by Mophs -https://opengameart.org/users/mophs - -Based on original work, Recon Tank, By MNDV.ecb, 2018 Eric Buisson -https://opengameart.org/content/recon-tank - -CC-BY 4.0 \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt.meta deleted file mode 100644 index 2168518..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Recon_Tank - License.txt.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 6e745106dbbc3412bbe43eaf25dabd4f -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat deleted file mode 100644 index 207b1f7..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat +++ /dev/null @@ -1,82 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: TankMaterial - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: _EMISSION _METALLICGLOSSMAP _NORMALMAP _SPECGLOSSMAP - m_LightmapFlags: 0 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 2800000, guid: 2617bfecca4d44805a3a51a7aa215d7c, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 2800000, guid: 9b3e91ab0048a4aa3a17706a349c6bf5, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 2800000, guid: ce00d67f9368944fa8ef4de6ccc77bfa, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 2800000, guid: a7467e18a834e4d1390091c8b1ea562c, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _SpecGlossMap: - m_Texture: {fileID: 2800000, guid: a7467e18a834e4d1390091c8b1ea562c, type: 3} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1.75 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 0.09 - - _Glossiness: 0.5 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} - - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} - - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat.meta deleted file mode 100644 index 080f534..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/TankMaterial.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2e67e42170aa64aa9a33424f8045ac89 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx deleted file mode 100644 index 5877b09457d82ce53fd745c56c2cbf0f9e216114..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224204 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 R_NmcVeu}v8@>}Kd{tsDmN#Oth diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx.meta deleted file mode 100644 index 1ac1ee0..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/reconTank.fbx.meta +++ /dev/null @@ -1,239 +0,0 @@ -fileFormatVersion: 2 -guid: 38b49695fc0a4418bbc350f2366660c5 -ModelImporter: - serializedVersion: 23 - fileIDToRecycleName: - 100000: Barrel - 100002: Barrel_end - 100004: Chasis - 100006: Recon_Tank - 100008: Recon_Tank_Rig - 100010: //RootNode - 100012: Root - 100014: Turret - 100016: Wheel_Front_L - 100018: Wheel_Front_L_end - 100020: Wheel_Middle_L - 100022: Wheel_Middle_L_end - 100024: Wheel_Rear_L - 100026: Wheel_Rear_L_end - 400000: Barrel - 400002: Barrel_end - 400004: Chasis - 400006: Recon_Tank - 400008: Recon_Tank_Rig - 400010: //RootNode - 400012: Root - 400014: Turret - 400016: Wheel_Front_L - 400018: Wheel_Front_L_end - 400020: Wheel_Middle_L - 400022: Wheel_Middle_L_end - 400024: Wheel_Rear_L - 400026: Wheel_Rear_L_end - 2100000: Recon_Tank - 4300000: Recon_Tank - 7400000: Recon_Tank_Rig|Drive - 7400002: Recon_Tank_Rig|Forward - 7400004: Recon_Tank_Rig|Idle - 7400006: Recon_Tank_Rig|Shoot - 9500000: //RootNode - 13700000: Recon_Tank - externalObjects: {} - materials: - importMaterials: 1 - materialName: 0 - materialSearch: 1 - materialLocation: 1 - animations: - legacyGenerateAnimations: 4 - bakeSimulation: 0 - resampleCurves: 1 - optimizeGameObjects: 0 - motionNodeName: - rigImportErrors: - rigImportWarnings: - animationImportErrors: - animationImportWarnings: - animationRetargetingWarnings: - animationDoRetargetingWarnings: 0 - importAnimatedCustomProperties: 0 - importConstraints: 0 - animationCompression: 1 - animationRotationError: 0.5 - animationPositionError: 0.5 - animationScaleError: 0.5 - animationWrapMode: 0 - extraExposedTransformPaths: [] - extraUserProperties: [] - clipAnimations: - - serializedVersion: 16 - name: Recon_Tank_Rig|Drive - takeName: Recon_Tank_Rig|Drive - firstFrame: 0 - lastFrame: 1 - wrapMode: 0 - orientationOffsetY: 0 - level: 0 - cycleOffset: 0 - loop: 0 - hasAdditiveReferencePose: 0 - loopTime: 0 - loopBlend: 0 - loopBlendOrientation: 0 - loopBlendPositionY: 0 - loopBlendPositionXZ: 0 - keepOriginalOrientation: 0 - keepOriginalPositionY: 1 - keepOriginalPositionXZ: 0 - heightFromFeet: 0 - mirror: 0 - bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 - curves: [] - events: [] - transformMask: [] - maskType: 3 - maskSource: {instanceID: 0} - additiveReferencePoseFrame: 0 - - serializedVersion: 16 - name: Recon_Tank_Rig|Forward - takeName: Recon_Tank_Rig|Forward - firstFrame: 0 - lastFrame: 25 - wrapMode: 0 - orientationOffsetY: 0 - level: 0 - cycleOffset: 0 - loop: 0 - hasAdditiveReferencePose: 0 - loopTime: 0 - loopBlend: 0 - loopBlendOrientation: 0 - loopBlendPositionY: 0 - loopBlendPositionXZ: 0 - keepOriginalOrientation: 0 - keepOriginalPositionY: 1 - keepOriginalPositionXZ: 0 - heightFromFeet: 0 - mirror: 0 - bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 - curves: [] - events: [] - transformMask: [] - maskType: 3 - maskSource: {instanceID: 0} - additiveReferencePoseFrame: 0 - - serializedVersion: 16 - name: Recon_Tank_Rig|Idle - takeName: Recon_Tank_Rig|Idle - firstFrame: 0 - lastFrame: 11 - wrapMode: 0 - orientationOffsetY: 0 - level: 0 - cycleOffset: 0 - loop: 0 - hasAdditiveReferencePose: 0 - loopTime: 1 - loopBlend: 1 - loopBlendOrientation: 0 - loopBlendPositionY: 0 - loopBlendPositionXZ: 0 - keepOriginalOrientation: 0 - keepOriginalPositionY: 1 - keepOriginalPositionXZ: 0 - heightFromFeet: 0 - mirror: 0 - bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 - curves: [] - events: [] - transformMask: [] - maskType: 3 - maskSource: {instanceID: 0} - additiveReferencePoseFrame: 0 - - serializedVersion: 16 - name: Recon_Tank_Rig|Shoot - takeName: Recon_Tank_Rig|Shoot - firstFrame: 0 - lastFrame: 15 - wrapMode: 0 - orientationOffsetY: 0 - level: 0 - cycleOffset: 0 - loop: 0 - hasAdditiveReferencePose: 0 - loopTime: 0 - loopBlend: 0 - loopBlendOrientation: 0 - loopBlendPositionY: 0 - loopBlendPositionXZ: 0 - keepOriginalOrientation: 0 - keepOriginalPositionY: 1 - keepOriginalPositionXZ: 0 - heightFromFeet: 0 - mirror: 0 - bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000 - curves: [] - events: [] - transformMask: [] - maskType: 3 - maskSource: {instanceID: 0} - additiveReferencePoseFrame: 0 - isReadable: 1 - meshes: - lODScreenPercentages: [] - globalScale: 0.15 - meshCompression: 0 - addColliders: 0 - useSRGBMaterialColor: 1 - importVisibility: 1 - importBlendShapes: 1 - importCameras: 1 - importLights: 1 - swapUVChannels: 0 - generateSecondaryUV: 0 - useFileUnits: 1 - optimizeMeshForGPU: 1 - keepQuads: 0 - weldVertices: 1 - preserveHierarchy: 0 - indexFormat: 0 - secondaryUVAngleDistortion: 8 - secondaryUVAreaDistortion: 15.000001 - secondaryUVHardAngle: 88 - secondaryUVPackMargin: 4 - useFileScale: 1 - previousCalculatedGlobalScale: 0.0015 - hasPreviousCalculatedGlobalScale: 1 - tangentSpace: - normalSmoothAngle: 60 - normalImportMode: 0 - tangentImportMode: 3 - normalCalculationMode: 4 - legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 - blendShapeNormalImportMode: 1 - normalSmoothingSource: 0 - importAnimation: 1 - copyAvatar: 0 - humanDescription: - serializedVersion: 2 - human: [] - skeleton: [] - armTwist: 0.5 - foreArmTwist: 0.5 - upperLegTwist: 0.5 - legTwist: 0.5 - armStretch: 0.05 - legStretch: 0.05 - feetSpacing: 0 - rootMotionBoneName: - hasTranslationDoF: 0 - hasExtraRoot: 0 - skeletonHasParents: 1 - lastHumanDescriptionAvatarSource: {instanceID: 0} - animationType: 2 - humanoidOversampling: 1 - additionalBone: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs.meta deleted file mode 100644 index 6c92485..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2baeb281f5e8e421582aa9f72e7f1702 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab deleted file mode 100644 index ec833f0..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab +++ /dev/null @@ -1,247 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &63476987332307980 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8035186136109819211} - - component: {fileID: 9118274893554935717} - - component: {fileID: 69063397099238371} - m_Layer: 0 - m_Name: 3D Model - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8035186136109819211 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 63476987332307980} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0.05, y: 0.1, z: 0.05} - m_Children: [] - m_Father: {fileID: 24373266488650541} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!33 &9118274893554935717 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 63476987332307980} - m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &69063397099238371 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 63476987332307980} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: cba1b63a0bccc4b12ac25f05d0ae2dd1, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!1 &5890560936853567077 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 24373266488650541} - - component: {fileID: 1713098107664522388} - - component: {fileID: 2355290524794870353} - - component: {fileID: 4629190479245867726} - - component: {fileID: 7082621516996595528} - m_Layer: 0 - m_Name: Projectile - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &24373266488650541 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890560936853567077} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 8035186136109819211} - - {fileID: 7830988697844474908} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1713098107664522388 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890560936853567077} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 0 - m_AssetId: b7dd46dbf38c643f09e206f9fa4be008 - m_SceneId: 0 ---- !u!136 &2355290524794870353 -CapsuleCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890560936853567077} - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_Enabled: 1 - m_Radius: 0.05 - m_Height: 0.2 - m_Direction: 1 - m_Center: {x: 0, y: 0, z: 0} ---- !u!54 &4629190479245867726 -Rigidbody: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890560936853567077} - serializedVersion: 2 - m_Mass: 1 - m_Drag: 0 - m_AngularDrag: 0.05 - m_UseGravity: 0 - m_IsKinematic: 0 - m_Interpolate: 1 - m_Constraints: 0 - m_CollisionDetection: 1 ---- !u!114 &7082621516996595528 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5890560936853567077} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8f49b83f111a64bc7a5275af4f6f930b, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - destroyAfter: 5 - rigidBody: {fileID: 4629190479245867726} - force: 1000 ---- !u!1 &9126921595194253319 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7830988697844474908} - - component: {fileID: 4878977110396366525} - m_Layer: 0 - m_Name: Point Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7830988697844474908 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9126921595194253319} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 24373266488650541} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!108 &4878977110396366525 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 9126921595194253319} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 2 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 5 - m_Range: 2 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 0 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 3 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab.meta deleted file mode 100644 index f6d4068..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Projectile.prefab.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: b7dd46dbf38c643f09e206f9fa4be008 -PrefabImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab deleted file mode 100644 index ffed32e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab +++ /dev/null @@ -1,314 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &1916082411674582 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 4492442352427800} - - component: {fileID: 114118589361100106} - - component: {fileID: 2240606817507776182} - - component: {fileID: 114250499875391520} - - component: {fileID: 6900008319038825817} - - component: {fileID: 5194388907919410155} - - component: {fileID: 114654712548978148} - m_Layer: 0 - m_Name: Tank - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4492442352427800 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 7831918942946891954} - - {fileID: 6564220120147636086} - - {fileID: 5718089106632469514} - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &114118589361100106 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 0 - localPlayerAuthority: 1 - m_AssetId: 6f43bf5488a7443d19ab2a83c6b91f35 - m_SceneId: 0 ---- !u!95 &2240606817507776182 -Animator: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_Enabled: 1 - m_Avatar: {fileID: 9000000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Controller: {fileID: 9100000, guid: a7211483bbd794b6d85ed88576e7d85c, type: 2} - m_CullingMode: 0 - m_UpdateMode: 0 - m_ApplyRootMotion: 0 - m_LinearVelocityBlending: 0 - m_WarningMessage: - m_HasTransformHierarchy: 1 - m_AllowConstantClipSamplingOptimization: 1 - m_KeepAnimatorControllerStateOnDisable: 0 ---- !u!114 &114250499875391520 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 2f74aedd71d9a4f55b3ce499326d45fb, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - compressRotation: 1 ---- !u!195 &6900008319038825817 -NavMeshAgent: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_Enabled: 1 - m_AgentTypeID: 0 - m_Radius: 0.5 - m_Speed: 1 - m_Acceleration: 1 - avoidancePriority: 50 - m_AngularSpeed: 120 - m_StoppingDistance: 0 - m_AutoTraverseOffMeshLink: 1 - m_AutoBraking: 1 - m_AutoRepath: 1 - m_Height: 0.5 - m_BaseOffset: 0 - m_WalkableMask: 4294967295 - m_ObstacleAvoidanceType: 0 ---- !u!135 &5194388907919410155 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0.25, z: 0} ---- !u!114 &114654712548978148 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1916082411674582} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7deadf756194d461e9140e42d651693b, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - agent: {fileID: 6900008319038825817} - animator: {fileID: 2240606817507776182} - rotationSpeed: 80 - shootKey: 32 - projectilePrefab: {fileID: 5890560936853567077, guid: b7dd46dbf38c643f09e206f9fa4be008, - type: 3} - projectileMount: {fileID: 5718089106632469514} ---- !u!1 &4426914200102054949 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 6564220120147636086} - - component: {fileID: 7604806193092689376} - m_Layer: 0 - m_Name: Spot Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &6564220120147636086 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4426914200102054949} - m_LocalRotation: {x: 0.02281505, y: -0, z: -0, w: 0.9997397} - m_LocalPosition: {x: 0.07, y: 0.46, z: 0.126} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 4492442352427800} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 2.615, y: 0, z: 0} ---- !u!108 &7604806193092689376 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4426914200102054949} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 0 - m_Color: {r: 1, g: 0.9205329, b: 0.7877358, a: 1} - m_Intensity: 3 - m_Range: 15 - m_SpotAngle: 80 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!1 &4730779867780281009 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5718089106632469514} - m_Layer: 0 - m_Name: ProjectileMount - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5718089106632469514 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4730779867780281009} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.412, z: 0.936} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 4492442352427800} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &7831918942947279416 -PrefabInstance: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 4492442352427800} - m_Modifications: - - target: {fileID: 100010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_Name - value: 3D Model - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_RootOrder - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalEulerAnglesHint.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 13700000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 2e67e42170aa64aa9a33424f8045ac89, type: 2} - m_RemovedComponents: - - {fileID: 9500000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_SourcePrefab: {fileID: 100100000, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} ---- !u!4 &7831918942946891954 stripped -Transform: - m_CorrespondingSourceObject: {fileID: 400010, guid: 38b49695fc0a4418bbc350f2366660c5, - type: 3} - m_PrefabInstance: {fileID: 7831918942947279416} - m_PrefabAsset: {fileID: 0} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab.meta deleted file mode 100644 index 4454818..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Prefabs/Tank.prefab.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 6f43bf5488a7443d19ab2a83c6b91f35 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 100100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes.meta deleted file mode 100644 index 5665d39..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 91225a3fc58fe4a7f9e10718cd3bdc61 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.meta deleted file mode 100644 index 01af532..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 81cfd31f234d94a0985fe946d2ce699f -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity deleted file mode 100644 index 8351a56..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity +++ /dev/null @@ -1,655 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 3 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 0 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 23800000, guid: 0bc607fa2e315482ebe98797e844e11f, type: 2} ---- !u!1 &88936773 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 88936777} - - component: {fileID: 88936776} - - component: {fileID: 88936775} - - component: {fileID: 88936774} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &88936774 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 88936773} - m_Enabled: 1 ---- !u!124 &88936775 -Behaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 88936773} - m_Enabled: 1 ---- !u!20 &88936776 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 88936773} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0, g: 0, b: 0, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &88936777 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 88936773} - m_LocalRotation: {x: 0, y: 0.92387956, z: -0.38268343, w: 0} - m_LocalPosition: {x: 0, y: 6.5, z: 8} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 45, y: 180, z: 0} ---- !u!1 &251893064 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 251893065} - - component: {fileID: 251893066} - m_Layer: 0 - m_Name: Spawn - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &251893065 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 251893064} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3, y: 0, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &251893066 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 251893064} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &535739935 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 535739936} - - component: {fileID: 535739937} - m_Layer: 0 - m_Name: Spawn - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &535739936 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 535739935} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 3, y: 0, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &535739937 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 535739935} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1107091652 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1107091656} - - component: {fileID: 1107091655} - - component: {fileID: 1107091654} - - component: {fileID: 1107091653} - m_Layer: 0 - m_Name: Ground - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 4294967295 - m_IsActive: 1 ---- !u!23 &1107091653 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1107091652} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 4294967295 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 29b49c27a74f145918356859bd7af511, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1107091654 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1107091652} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1107091655 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1107091652} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1107091656 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1107091652} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1282001517 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1282001518} - - component: {fileID: 1282001520} - - component: {fileID: 1282001519} - - component: {fileID: 1282001521} - m_Layer: 0 - m_Name: NetworkManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1282001518 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1282001517} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1282001519 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1282001517} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6442dc8070ceb41f094e44de0bf87274, type: 3} - m_Name: - m_EditorClassIdentifier: - showGUI: 1 - offsetX: 0 - offsetY: 0 ---- !u!114 &1282001520 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1282001517} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8aab4c8111b7c411b9b92cf3dbc5bd4e, type: 3} - m_Name: - m_EditorClassIdentifier: - dontDestroyOnLoad: 1 - runInBackground: 1 - startOnHeadless: 1 - serverTickRate: 30 - showDebugMessages: 0 - offlineScene: - onlineScene: - transport: {fileID: 1282001521} - networkAddress: localhost - maxConnections: 4 - authenticator: {fileID: 0} - playerPrefab: {fileID: 1916082411674582, guid: 6f43bf5488a7443d19ab2a83c6b91f35, - type: 3} - autoCreatePlayer: 1 - playerSpawnMethod: 1 - spawnPrefabs: - - {fileID: 5890560936853567077, guid: b7dd46dbf38c643f09e206f9fa4be008, type: 3} ---- !u!114 &1282001521 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1282001517} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7424c1070fad4ba2a7a96b02fbeb4bb, type: 3} - m_Name: - m_EditorClassIdentifier: - OnClientConnected: - m_PersistentCalls: - m_Calls: [] - OnClientDataReceived: - m_PersistentCalls: - m_Calls: [] - OnClientError: - m_PersistentCalls: - m_Calls: [] - OnClientDisconnected: - m_PersistentCalls: - m_Calls: [] - OnServerConnected: - m_PersistentCalls: - m_Calls: [] - OnServerDataReceived: - m_PersistentCalls: - m_Calls: [] - OnServerError: - m_PersistentCalls: - m_Calls: [] - OnServerDisconnected: - m_PersistentCalls: - m_Calls: [] - port: 7777 - NoDelay: 1 - serverMaxMessageSize: 16384 - clientMaxMessageSize: 16384 ---- !u!1 &1458789072 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1458789073} - - component: {fileID: 1458789074} - m_Layer: 0 - m_Name: Spawn - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1458789073 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1458789072} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3, y: 0, z: 3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1458789074 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1458789072} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1501912662 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1501912663} - - component: {fileID: 1501912664} - m_Layer: 0 - m_Name: Spawn - m_TagString: Untagged - m_Icon: {fileID: -964228994112308473, guid: 0000000000000000d000000000000000, type: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1501912663 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1501912662} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -3, y: 0, z: -3} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1501912664 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1501912662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &2054208274 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2054208276} - - component: {fileID: 2054208275} - m_Layer: 0 - m_Name: Directional light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &2054208275 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2054208274} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &2054208276 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2054208274} - m_LocalRotation: {x: 0.10938167, y: 0.8754261, z: -0.40821788, w: 0.23456976} - m_LocalPosition: {x: 0, y: 10, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 50, y: 150, z: 0} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity.meta deleted file mode 100644 index c7f922e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 83f9d2fb76f5742448c6e51f258327a2 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene/NavMesh.asset b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Scenes/Scene/NavMesh.asset deleted file mode 100644 index 3acffc80e7884117f6ba1c24763179df0d46214e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5444 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�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%0Ai~*MUVw4AGhb2nu1yyAT(LQSwUKz9h*DaXxJ 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 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/dirt.png.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/dirt.png.meta deleted file mode 100644 index b00a626..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/(Public Domain) Dirt Hand Painted Texture/dirt.png.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: bcc8fc05f1f924531a65f39394c0b703 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - 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: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat deleted file mode 100644 index d231b59..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat +++ /dev/null @@ -1,77 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: ProjectileMaterial - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 4 - m_EnableInstancingVariants: 0 - m_DoubleSidedGI: 0 - m_CustomRenderQueue: -1 - stringTagMap: {} - disabledShaderPasses: [] - m_SavedProperties: - serializedVersion: 3 - m_TexEnvs: - - _BumpMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailAlbedoMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailMask: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _DetailNormalMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _EmissionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MainTex: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _MetallicGlossMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _OcclusionMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - - _ParallaxMap: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - - _BumpScale: 1 - - _Cutoff: 0.5 - - _DetailNormalMapScale: 1 - - _DstBlend: 0 - - _GlossMapScale: 1 - - _Glossiness: 0 - - _GlossyReflections: 1 - - _Metallic: 0 - - _Mode: 0 - - _OcclusionStrength: 1 - - _Parallax: 0.02 - - _SmoothnessTextureChannel: 0 - - _SpecularHighlights: 1 - - _SrcBlend: 1 - - _UVSec: 0 - - _ZWrite: 1 - m_Colors: - - _Color: {r: 0, g: 1, b: 0.8901961, a: 1} - - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat.meta deleted file mode 100644 index 84c957e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Textures/ProjectileMaterial.mat.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: cba1b63a0bccc4b12ac25f05d0ae2dd1 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 2100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt deleted file mode 100644 index 2925e86..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt +++ /dev/null @@ -1,3 +0,0 @@ -The Mirror DLLs in the Plugins folder are MIT licensed: - -https://github.com/vis2k/Mirror \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt new file mode 100644 index 0000000..5f10030 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt @@ -0,0 +1,23 @@ +Copyright (c) 2008 - 2015 Jb Evain +Copyright (c) 2008 - 2011 Novell, Inc. + +https://github.com/jbevain/cecil + +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. diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt.meta similarity index 75% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt.meta index 6129dfe..9477cb6 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/License.txt.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/License.txt.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: dbf30d11d3879431f87403d009e47bf7 +guid: ab858db5ebbb0d542a9acd197669cb5a TextScriptImporter: externalObjects: {} userData: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Mdb.dll.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Mdb.dll.meta index f75f642..d5555bf 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Mdb.dll.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Mdb.dll.meta @@ -10,17 +10,77 @@ PluginImporter: isOverridable: 0 isExplicitlyReferenced: 0 platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 - first: Any: second: - enabled: 1 + enabled: 0 settings: {} - first: Editor: Editor second: - enabled: 0 + enabled: 1 settings: DefaultValueInitialized: true + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - 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: x86 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None - first: Windows Store Apps: WindowsStoreApps second: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Pdb.dll.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Pdb.dll.meta index 773758f..3ab420f 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Pdb.dll.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Pdb.dll.meta @@ -10,17 +10,77 @@ PluginImporter: isOverridable: 0 isExplicitlyReferenced: 0 platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 - first: Any: second: - enabled: 1 + enabled: 0 settings: {} - first: Editor: Editor second: - enabled: 0 + enabled: 1 settings: DefaultValueInitialized: true + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - 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: x86 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None - first: Windows Store Apps: WindowsStoreApps second: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Rocks.dll.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Rocks.dll.meta index a222084..aff0237 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Rocks.dll.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.Rocks.dll.meta @@ -10,17 +10,77 @@ PluginImporter: isOverridable: 0 isExplicitlyReferenced: 0 platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 - first: Any: second: - enabled: 1 + enabled: 0 settings: {} - first: Editor: Editor second: - enabled: 0 + enabled: 1 settings: DefaultValueInitialized: true + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - 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: x86 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None - first: Windows Store Apps: WindowsStoreApps second: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.dll.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.dll.meta index 73262f2..f87dc69 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.dll.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Plugins/Mono.Cecil/Mono.CecilX.dll.meta @@ -10,17 +10,79 @@ PluginImporter: isOverridable: 0 isExplicitlyReferenced: 0 platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Editor: 0 + Exclude Linux: 1 + Exclude Linux64: 1 + Exclude LinuxUniversal: 1 + Exclude OSXUniversal: 1 + Exclude Win: 1 + Exclude Win64: 1 - first: Any: second: - enabled: 1 + enabled: 0 settings: {} - first: Editor: Editor second: - enabled: 0 + enabled: 1 settings: + CPU: AnyCPU DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: None + - 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: x86 + - first: + Standalone: Win + second: + enabled: 0 + settings: + CPU: None + - first: + Standalone: Win64 + second: + enabled: 0 + settings: + CPU: None - first: Windows Store Apps: WindowsStoreApps second: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Readme.txt b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Readme.txt index a62cf78..fb011f3 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Readme.txt +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Readme.txt @@ -4,7 +4,7 @@ and several MMO projects in development. *** IMPORTANT -- You must restart Unity after importing Mirror for the Components Menu to update! *** Requirements: - Unity 2018.3.6+ + Unity 2018.4 LTS Runtime .Net 4.x (Project Settings > Player > Other Settings) Documentation: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/AssemblyInfo.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/AssemblyInfo.cs index f0c4858..ea866b0 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/AssemblyInfo.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/AssemblyInfo.cs @@ -1,3 +1,8 @@ -using System.Runtime.CompilerServices; +using System.Runtime.CompilerServices; -[assembly: InternalsVisibleTo("Mirror.Tests")] \ No newline at end of file +[assembly: InternalsVisibleTo("Mirror.Tests.Common")] +[assembly: InternalsVisibleTo("Mirror.Tests")] +[assembly: InternalsVisibleTo("Mirror.Tests.Runtime")] +[assembly: InternalsVisibleTo("Mirror.Tests.Performance.Editor")] +[assembly: InternalsVisibleTo("Mirror.Tests.Performance.Runtime")] +[assembly: InternalsVisibleTo("Mirror.Editor")] diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/ClientScene.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/ClientScene.cs index eb7adf0..1b41b73 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/ClientScene.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/ClientScene.cs @@ -18,12 +18,31 @@ namespace Mirror ///

vH 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 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png.meta deleted file mode 100644 index 6e069a1..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/BaseColor.png.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: ce00d67f9368944fa8ef4de6ccc77bfa -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - 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: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller deleted file mode 100644 index e05d28c..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller +++ /dev/null @@ -1,272 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!91 &9100000 -AnimatorController: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Controller - serializedVersion: 5 - m_AnimatorParameters: - - m_Name: Moving - m_Type: 4 - m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - - m_Name: Shoot - m_Type: 9 - m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - m_AnimatorLayers: - - serializedVersion: 5 - m_Name: Base Layer - m_StateMachine: {fileID: 1107772262116321704} - m_Mask: {fileID: 0} - m_Motions: [] - m_Behaviours: [] - m_BlendingMode: 0 - m_SyncedLayerIndex: -1 - m_DefaultWeight: 0 - m_IKPass: 0 - m_SyncedLayerAffectsTiming: 0 - m_Controller: {fileID: 9100000} ---- !u!1101 &1101104249963802978 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: Moving - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102824315819425342} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.6 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1101 &1101366829127142966 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: Shoot - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102254808008813326} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0 - m_TransitionOffset: 0 - m_ExitTime: 1 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1101 &1101806660142692138 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 2 - m_ConditionEvent: Moving - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102207974245764242} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.6 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1101 &1101862483397811748 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 2 - m_ConditionEvent: Moving - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102207974245764242} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.75 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1101 &1101947542735704306 -AnimatorStateTransition: - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: - m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: Moving - m_EventTreshold: 0 - m_DstStateMachine: {fileID: 0} - m_DstState: {fileID: 1102824315819425342} - m_Solo: 0 - m_Mute: 0 - m_IsExit: 0 - serializedVersion: 3 - m_TransitionDuration: 0.25 - m_TransitionOffset: 0 - m_ExitTime: 0.75 - m_HasExitTime: 0 - m_HasFixedDuration: 1 - m_InterruptionSource: 0 - m_OrderedInterruption: 1 - m_CanTransitionToSelf: 1 ---- !u!1102 &1102207974245764242 -AnimatorState: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Idle - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: - - {fileID: 1101947542735704306} - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 0} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: ---- !u!1102 &1102254808008813326 -AnimatorState: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Shoot - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: - - {fileID: 1101104249963802978} - - {fileID: 1101806660142692138} - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 7400006, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: ---- !u!1102 &1102824315819425342 -AnimatorState: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Moving - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: - - {fileID: 1101862483397811748} - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 7400004, guid: 38b49695fc0a4418bbc350f2366660c5, type: 3} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: ---- !u!1107 &1107772262116321704 -AnimatorStateMachine: - serializedVersion: 5 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: Base Layer - m_ChildStates: - - serializedVersion: 1 - m_State: {fileID: 1102207974245764242} - m_Position: {x: 252, y: 48, z: 0} - - serializedVersion: 1 - m_State: {fileID: 1102824315819425342} - m_Position: {x: 252, y: 204, z: 0} - - serializedVersion: 1 - m_State: {fileID: 1102254808008813326} - m_Position: {x: 420, y: 120, z: 0} - m_ChildStateMachines: [] - m_AnyStateTransitions: - - {fileID: 1101366829127142966} - m_EntryTransitions: [] - m_StateMachineTransitions: {} - m_StateMachineBehaviours: [] - m_AnyStatePosition: {x: 60, y: 132, z: 0} - m_EntryPosition: {x: 60, y: 168, z: 0} - m_ExitPosition: {x: 60, y: 96, z: 0} - m_ParentStateMachinePosition: {x: 800, y: 20, z: 0} - m_DefaultState: {fileID: 1102207974245764242} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller.meta deleted file mode 100644 index 7e1061c..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Controller.controller.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: a7211483bbd794b6d85ed88576e7d85c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 9100000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png deleted file mode 100644 index 61ca0cbaf3c3a65d4f9e6903252d5505af499806..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80294 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 O1W=Gs{a7Vs68wM81?4ON diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png.meta deleted file mode 100644 index 333174c..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Emissive.png.meta +++ /dev/null @@ -1,88 +0,0 @@ -fileFormatVersion: 2 -guid: 9b3e91ab0048a4aa3a17706a349c6bf5 -TextureImporter: - fileIDToRecycleName: {} - externalObjects: {} - serializedVersion: 9 - mipmaps: - mipMapMode: 0 - enableMipMap: 1 - 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: -1 - aniso: -1 - mipBias: -100 - wrapU: -1 - wrapV: -1 - wrapW: -1 - nPOTScale: 1 - lightmap: 0 - compressionQuality: 50 - spriteMode: 0 - 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: 0 - spriteTessellationDetail: -1 - textureType: 0 - textureShape: 1 - singleChannelComponent: 0 - maxTextureSizeSet: 0 - compressionQualitySet: 0 - textureFormatSet: 0 - platformSettings: - - serializedVersion: 2 - buildTarget: DefaultTexturePlatform - maxTextureSize: 2048 - resizeAlgorithm: 0 - textureFormat: -1 - textureCompression: 1 - compressionQuality: 50 - crunchedCompression: 0 - allowsAlphaSplitting: 0 - overridden: 0 - androidETC2FallbackOverride: 0 - spriteSheet: - serializedVersion: 2 - sprites: [] - outline: [] - physicsShape: [] - bones: [] - spriteID: - vertices: [] - indices: - edges: [] - weights: [] - spritePackingTag: - pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Metallic.png b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Tanks/Models/(Public Domain) Recon_Tank/Metallic.png deleted file mode 100644 index d5d5559fe82d85d11be1b75d41003ed1c74b05c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62860 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 z 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 Build and Run - -Start up to 4 built instances: These will all be client players. - -Open the Offline scene in the Editor and press Play - -Click the Join Game and LAN Host in the editor: This will be host and the 5th player. You can also use LAN Server if you prefer. - -Click Join Game and LAN Client in the built instances. - -Click Ready in each instance, and finally in the Editor (Host). - -Click the Start Game button when all players are ready. - -You should now be in the Online scene with your players of random color. - -WASDQE keys to move & turn your player capsule. -Collide with the spheres to score points. -Lighter colors score higher. diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/README.md.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/README.md.meta deleted file mode 100644 index eb4961d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/README.md.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9110f04bd1e8468479f6625342d311c5 -TextScriptImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes.meta deleted file mode 100644 index 17072cf..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4f704ae4b4f98ae41a0bce26658850c1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity deleted file mode 100644 index b536b68..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity +++ /dev/null @@ -1,210 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0, g: 0, b: 0, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &639890310 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 639890313} - - component: {fileID: 639890312} - - component: {fileID: 639890311} - - component: {fileID: 639890314} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &639890311 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_Enabled: 1 ---- !u!20 &639890312 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.23429157, g: 0.254717, b: 0.23546094, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &639890313 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - 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!114 &639890314 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 039bde4e5e3b63e46be9b967d06e5469, type: 3} - m_Name: - m_EditorClassIdentifier: - RoomScene: RoomScene diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity.meta deleted file mode 100644 index 45332ad..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OfflineScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 9e6f14982412b2545a0911ebaaa46a23 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity deleted file mode 100644 index 764d6af..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity +++ /dev/null @@ -1,860 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0.4366757, g: 0.48427194, b: 0.5645252, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 112000002, guid: 83612f89e0d5b404fbd99891bda78df4, - type: 2} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &29930032 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 29930035} - - component: {fileID: 29930034} - - component: {fileID: 29930033} - m_Layer: 0 - m_Name: Spawner - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &29930033 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 29930032} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9b91ecbcc199f4492b9a91e820070131, type: 3} - m_Name: - m_EditorClassIdentifier: - serverOnly: 1 - localPlayerAuthority: 0 - m_AssetId: - m_SceneId: 6047645 ---- !u!114 &29930034 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 29930032} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0bf5c082d04f7ea459fcd30e60b5bd70, type: 3} - m_Name: - m_EditorClassIdentifier: - syncMode: 0 - syncInterval: 0.1 - prizePrefab: {fileID: 114251241889735402, guid: 52f1c9ea06cfd154cb68ff9d1b66fc13, - type: 3} ---- !u!4 &29930035 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 29930032} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &151116940 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 151116942} - - component: {fileID: 151116941} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &151116941 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151116940} - m_Enabled: 1 - serializedVersion: 8 - m_Type: 1 - m_Color: {r: 0.990566, g: 0.9496818, b: 0.82702917, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 0.7 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &151116942 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 151116940} - m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 10, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!1 &204334129 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 204334130} - - component: {fileID: 204334131} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &204334130 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 204334129} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &204334131 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 204334129} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &263230754 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 263230755} - - component: {fileID: 263230756} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &263230755 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 263230754} - m_LocalRotation: {x: 0, y: 0.38268343, z: 0, w: 0.92387956} - m_LocalPosition: {x: -15, y: 0, z: -15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 45, z: 0} ---- !u!114 &263230756 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 263230754} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &290557149 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 290557150} - - component: {fileID: 290557151} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &290557150 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 290557149} - m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -15, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!114 &290557151 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 290557149} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &733367779 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 733367780} - - component: {fileID: 733367781} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &733367780 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 733367779} - m_LocalRotation: {x: -0, y: 1, z: -0, w: 0} - m_LocalPosition: {x: 0, y: 0, z: 15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0} ---- !u!114 &733367781 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 733367779} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &990635329 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 990635330} - - component: {fileID: 990635331} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &990635330 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 990635329} - m_LocalRotation: {x: 0, y: 0.92387956, z: 0, w: 0.38268343} - m_LocalPosition: {x: -15, y: 0, z: 15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 135, z: 0} ---- !u!114 &990635331 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 990635329} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1050066542 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1050066545} - - component: {fileID: 1050066544} - - component: {fileID: 1050066543} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &1050066543 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1050066542} - m_Enabled: 1 ---- !u!20 &1050066544 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1050066542} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.23429157, g: 0.254717, b: 0.23546094, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1050066545 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1050066542} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 2, z: -10} - 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!1 &1305256737 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1305256745} - - component: {fileID: 1305256744} - - component: {fileID: 1305256742} - - component: {fileID: 1305256743} - - component: {fileID: 1305256741} - - component: {fileID: 1305256740} - - component: {fileID: 1305256739} - - component: {fileID: 1305256738} - m_Layer: 0 - m_Name: PlayArea - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!65 &1305256738 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 10, y: 2, z: 0.1} - m_Center: {x: 0, y: 1, z: 5} ---- !u!65 &1305256739 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 10, y: 2, z: 0.1} - m_Center: {x: 0, y: 1, z: -5} ---- !u!65 &1305256740 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.1, y: 2, z: 10} - m_Center: {x: 5, y: 1, z: 0} ---- !u!65 &1305256741 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 0.1, y: 2, z: 10} - m_Center: {x: -5, y: 1, z: 0} ---- !u!23 &1305256742 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RenderingLayerMask: 4294967295 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 3201636fa507dad448e9a36d66a80825, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 ---- !u!64 &1305256743 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Convex: 0 - m_CookingOptions: 14 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1305256744 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1305256745 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1305256737} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 4, y: 1, z: 4} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1445635739 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1445635740} - m_Layer: 0 - m_Name: StartPositions - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1445635740 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1445635739} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1.08, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 733367780} - - {fileID: 2127619492} - - {fileID: 1975674813} - - {fileID: 1760045337} - - {fileID: 204334130} - - {fileID: 263230755} - - {fileID: 290557150} - - {fileID: 990635330} - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1760045336 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1760045337} - - component: {fileID: 1760045338} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1760045337 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1760045336} - m_LocalRotation: {x: 0, y: 0.3826836, z: -0, w: -0.92387944} - m_LocalPosition: {x: 15, y: 0, z: -15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 315, z: 0} ---- !u!114 &1760045338 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1760045336} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1975674812 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1975674813} - - component: {fileID: 1975674814} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1975674813 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1975674812} - m_LocalRotation: {x: 0, y: 0.7071068, z: -0, w: -0.7071068} - m_LocalPosition: {x: 15, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 270, z: 0} ---- !u!114 &1975674814 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1975674812} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &2127619491 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2127619492} - - component: {fileID: 2127619493} - m_Layer: 0 - m_Name: PlayerStart - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2127619492 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2127619491} - m_LocalRotation: {x: 0, y: 0.9238796, z: -0, w: -0.38268325} - m_LocalPosition: {x: 15, y: 0, z: 15} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 1445635740} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 225, z: 0} ---- !u!114 &2127619493 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2127619491} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 41f84591ce72545258ea98cb7518d8b9, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity.meta deleted file mode 100644 index 8a990fe..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/OnlineScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: d7a6763559b31854586c9e49916273ef -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity deleted file mode 100644 index 6e3c210..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity +++ /dev/null @@ -1,321 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0, g: 0, b: 0, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 11 - m_GIWorkflowMode: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 0 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 10 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 - m_PVRBounces: 2 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 - m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &639890310 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 639890313} - - component: {fileID: 639890312} - - component: {fileID: 639890311} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &639890311 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_Enabled: 1 ---- !u!20 &639890312 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.23429157, g: 0.254717, b: 0.23546094, a: 0} - m_projectionMatrixMode: 1 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: 3 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 0 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &639890313 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 639890310} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - 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!1 &2008127829 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2008127832} - - component: {fileID: 2008127833} - - component: {fileID: 2008127831} - - component: {fileID: 2008127830} - m_Layer: 0 - m_Name: RoomManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &2008127830 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2008127829} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c7424c1070fad4ba2a7a96b02fbeb4bb, type: 3} - m_Name: - m_EditorClassIdentifier: - OnClientConnected: - m_PersistentCalls: - m_Calls: [] - OnClientDataReceived: - m_PersistentCalls: - m_Calls: [] - OnClientError: - m_PersistentCalls: - m_Calls: [] - OnClientDisconnected: - m_PersistentCalls: - m_Calls: [] - OnServerConnected: - m_PersistentCalls: - m_Calls: [] - OnServerDataReceived: - m_PersistentCalls: - m_Calls: [] - OnServerError: - m_PersistentCalls: - m_Calls: [] - OnServerDisconnected: - m_PersistentCalls: - m_Calls: [] - port: 7780 - NoDelay: 1 - serverMaxMessageSize: 16384 - clientMaxMessageSize: 16384 ---- !u!114 &2008127831 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2008127829} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e7d8650c751710349bb9546d1697b9cb, type: 3} - m_Name: - m_EditorClassIdentifier: - dontDestroyOnLoad: 1 - runInBackground: 1 - startOnHeadless: 1 - serverTickRate: 30 - showDebugMessages: 0 - offlineScene: OfflineScene - onlineScene: - transport: {fileID: 2008127830} - networkAddress: localhost - maxConnections: 5 - authenticator: {fileID: 0} - playerPrefab: {fileID: 1480027675339556, guid: 21daf89214c6ee443ad6875b73083c60, - type: 3} - autoCreatePlayer: 1 - playerSpawnMethod: 1 - spawnPrefabs: - - {fileID: 1139254171913846, guid: 52f1c9ea06cfd154cb68ff9d1b66fc13, type: 3} - showRoomGUI: 1 - minPlayers: 1 - roomPlayerPrefab: {fileID: 114033720796874720, guid: deae2134a1d77704b9c595efe69767dd, - type: 3} - RoomScene: RoomScene - GameplayScene: OnlineScene - roomSlots: [] - allPlayersReady: 0 ---- !u!4 &2008127832 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2008127829} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &2008127833 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2008127829} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6442dc8070ceb41f094e44de0bf87274, type: 3} - m_Name: - m_EditorClassIdentifier: - showGUI: 1 - offsetX: 0 - offsetY: 0 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity.meta deleted file mode 100644 index 8749026..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scenes/RoomScene.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 48478f4d522f96945b8396f376299d3a -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts.meta deleted file mode 100644 index b15256a..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 03401915dd450454e88f0a839d3346f1 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs deleted file mode 100644 index 69fea5c..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/Room/Scripts/NetworkRoomManagerExt.cs +++ /dev/null @@ -1,58 +0,0 @@ -using UnityEngine; -using UnityEngine.Rendering; - -namespace Mirror.Examples.NetworkRoom -{ - [AddComponentMenu("")] - public class NetworkRoomManagerExt : NetworkRoomManager - { - ///

public static class ClientScene { + static readonly ILogger logger = LogFactory.GetLogger(typeof(ClientScene)); + static bool isSpawnFinished; + static NetworkIdentity _localPlayer; /// /// NetworkIdentity of the localPlayer /// - public static NetworkIdentity localPlayer { get; private set; } + public static NetworkIdentity localPlayer + { + get => _localPlayer; + private set + { + NetworkIdentity oldPlayer = _localPlayer; + NetworkIdentity newPlayer = value; + if (oldPlayer != newPlayer) + { + _localPlayer = value; + onLocalPlayerChanged?.Invoke(oldPlayer, newPlayer); + } + } + } + + public delegate void LocalplayerChanged(NetworkIdentity oldPlayer, NetworkIdentity newPlayer); + public static event LocalplayerChanged onLocalPlayerChanged; /// /// Returns true when a client's connection has been set to ready. @@ -31,11 +50,11 @@ public static class ClientScene /// This is read-only. To change the ready state of a client, use ClientScene.Ready(). The server is able to set the ready state of clients using NetworkServer.SetClientReady(), NetworkServer.SetClientNotReady() and NetworkServer.SetAllClientsNotReady(). /// This is done when changing scenes so that clients don't receive state update messages during scene loading. /// - public static bool ready { get; internal set; } + public static bool ready { get; set; } /// /// The NetworkConnection object that is currently "ready". This is the connection to the server where objects are spawned from. - /// This connection can be used to send messages to the server. There can only be one ready connection at a time. There can be multiple NetworkClient instances in existence, each with their own NetworkConnections, but there is only one ClientScene instance and corresponding ready connection. + /// This connection can be used to send messages to the server. There can only be one ClientScene and ready connection at a time. /// public static NetworkConnection readyConnection { get; private set; } @@ -43,24 +62,22 @@ public static class ClientScene /// This is a dictionary of the prefabs that are registered on the client with ClientScene.RegisterPrefab(). /// The key to the dictionary is the prefab asset Id. ///
- public static Dictionary prefabs = new Dictionary(); + public static readonly Dictionary prefabs = new Dictionary(); /// /// This is dictionary of the disabled NetworkIdentity objects in the scene that could be spawned by messages from the server. /// The key to the dictionary is the NetworkIdentity sceneId. /// - public static Dictionary spawnableObjects; + public static readonly Dictionary spawnableObjects = new Dictionary(); // spawn handlers - static readonly Dictionary spawnHandlers = new Dictionary(); - static readonly Dictionary unspawnHandlers = new Dictionary(); + internal static readonly Dictionary spawnHandlers = new Dictionary(); + internal static readonly Dictionary unspawnHandlers = new Dictionary(); - // this is never called, and if we do call it in NetworkClient.Shutdown - // then the client's player object won't be removed after disconnecting! internal static void Shutdown() { ClearSpawners(); - spawnableObjects = null; + spawnableObjects.Clear(); readyConnection = null; ready = false; isSpawnFinished = false; @@ -70,43 +87,33 @@ internal static void Shutdown() // this is called from message handler for Owner message internal static void InternalAddPlayer(NetworkIdentity identity) { - if (LogFilter.Debug) Debug.LogWarning("ClientScene.InternalAddPlayer"); + logger.Log("ClientScene.InternalAddPlayer"); // NOTE: It can be "normal" when changing scenes for the player to be destroyed and recreated. // But, the player structures are not cleaned up, we'll just replace the old player localPlayer = identity; + + // NOTE: we DONT need to set isClient=true here, because OnStartClient + // is called before OnStartLocalPlayer, hence it's already set. + // localPlayer.isClient = true; + if (readyConnection != null) { readyConnection.identity = identity; } else { - Debug.LogWarning("No ready connection found for setting player controller during InternalAddPlayer"); + logger.LogWarning("No ready connection found for setting player controller during InternalAddPlayer"); } } - /// - /// This adds a player GameObject for this client. - /// This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer is called. - /// - /// True if player was added. - public static bool AddPlayer() => AddPlayer(null); - - /// - /// This adds a player GameObject for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer is called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. - /// - /// The connection to become ready for this client. - /// True if player was added. - public static bool AddPlayer(NetworkConnection readyConn) => AddPlayer(readyConn, null); - /// /// This adds a player GameObject for this client. This causes an AddPlayer message to be sent to the server, and NetworkManager.OnServerAddPlayer is called. If an extra message was passed to AddPlayer, then OnServerAddPlayer will be called with a NetworkReader that contains the contents of the message. /// extraMessage can contain character selection, etc. /// /// The connection to become ready for this client. - /// An extra message object that can be passed to the server for this player. /// True if player was added. - public static bool AddPlayer(NetworkConnection readyConn, byte[] extraData) + public static bool AddPlayer(NetworkConnection readyConn) { // ensure valid ready connection if (readyConn != null) @@ -117,49 +124,28 @@ public static bool AddPlayer(NetworkConnection readyConn, byte[] extraData) if (!ready) { - Debug.LogError("Must call AddPlayer() with a connection the first time to become ready."); + logger.LogError("Must call AddPlayer() with a connection the first time to become ready."); return false; } if (readyConnection.identity != null) { - Debug.LogError("ClientScene.AddPlayer: a PlayerController was already added. Did you call AddPlayer twice?"); + logger.LogError("ClientScene.AddPlayer: a PlayerController was already added. Did you call AddPlayer twice?"); return false; } - if (LogFilter.Debug) Debug.Log("ClientScene.AddPlayer() called with connection [" + readyConnection + "]"); + if (logger.LogEnabled()) logger.Log("ClientScene.AddPlayer() called with connection [" + readyConnection + "]"); - AddPlayerMessage message = new AddPlayerMessage() - { -#pragma warning disable CS0618 // Type or member is obsolete - value = extraData -#pragma warning restore CS0618 // Type or member is obsolete - }; - readyConnection.Send(message); + readyConnection.Send(new AddPlayerMessage()); return true; } + // Deprecated 5/2/2020 /// - /// Removes the player from the game. + /// Obsolete: Removed as a security risk. Use NetworkServer.RemovePlayerForConnection instead. /// - /// True if succcessful - public static bool RemovePlayer() - { - if (LogFilter.Debug) Debug.Log("ClientScene.RemovePlayer() called with connection [" + readyConnection + "]"); - - if (readyConnection.identity != null) - { - readyConnection.Send(new RemovePlayerMessage()); - - Object.Destroy(readyConnection.identity.gameObject); - - readyConnection.identity = null; - localPlayer = null; - - return true; - } - return false; - } + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Removed as a security risk. Use NetworkServer.RemovePlayerForConnection(NetworkConnection conn, bool keepAuthority = false) instead", true)] + public static bool RemovePlayer() { return false; } /// /// Signal that the client connection is ready to enter the game. @@ -171,21 +157,26 @@ public static bool Ready(NetworkConnection conn) { if (ready) { - Debug.LogError("A connection has already been set as ready. There can only be one."); + logger.LogError("A connection has already been set as ready. There can only be one."); return false; } - if (LogFilter.Debug) Debug.Log("ClientScene.Ready() called with connection [" + conn + "]"); + if (logger.LogEnabled()) logger.Log("ClientScene.Ready() called with connection [" + conn + "]"); if (conn != null) { - conn.Send(new ReadyMessage()); + // Set these before sending the ReadyMessage, otherwise host client + // will fail in InternalAddPlayer with null readyConnection. ready = true; readyConnection = conn; readyConnection.isReady = true; + + // Tell server we're ready to have a player object spawned + conn.Send(new ReadyMessage()); + return true; } - Debug.LogError("Ready() called with invalid connection object: conn=null"); + logger.LogError("Ready() called with invalid connection object: conn=null"); return false; } @@ -198,6 +189,9 @@ internal static void HandleClientDisconnect(NetworkConnection conn) } } + /// + /// Checks if identity is not spawned yet, not hidden and has sceneId + /// static bool ConsiderForSpawning(NetworkIdentity identity) { // not spawned yet, not hidden, etc.? @@ -212,21 +206,19 @@ static bool ConsiderForSpawning(NetworkIdentity identity) /// public static void PrepareToSpawnSceneObjects() { - // add all unspawned NetworkIdentities to spawnable objects - spawnableObjects = Resources.FindObjectsOfTypeAll() - .Where(ConsiderForSpawning) - .ToDictionary(identity => identity.sceneId, identity => identity); - } + // remove existing items, they will be re-added below + spawnableObjects.Clear(); - static NetworkIdentity SpawnSceneObject(ulong sceneId) - { - if (spawnableObjects.TryGetValue(sceneId, out NetworkIdentity identity)) + // finds all NetworkIdentity currently loaded by unity (includes disabled objects) + NetworkIdentity[] allIdentities = Resources.FindObjectsOfTypeAll(); + foreach (NetworkIdentity identity in allIdentities) { - spawnableObjects.Remove(sceneId); - return identity; + // add all unspawned NetworkIdentities to spawnable objects + if (ConsiderForSpawning(identity)) + { + spawnableObjects.Add(identity.sceneId, identity); + } } - Debug.LogWarning("Could not find scene object with sceneid:" + sceneId.ToString("X")); - return null; } /// @@ -243,28 +235,85 @@ public static bool GetPrefab(Guid assetId, out GameObject prefab) prefabs.TryGetValue(assetId, out prefab) && prefab != null; } + /// + /// Valids Prefab then adds it to prefabs dictionary + /// + /// NetworkIdentity on Prefab GameObject + static void RegisterPrefabIdentity(NetworkIdentity prefab) + { + if (prefab.assetId == Guid.Empty) + { + logger.LogError($"Can not Register '{prefab.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead"); + return; + } + + if (prefab.sceneId != 0) + { + logger.LogError($"Can not Register '{prefab.name}' because it has a sceneId, make sure you are passing in the original prefab and not an instance in the scene."); + return; + } + + NetworkIdentity[] identities = prefab.GetComponentsInChildren(); + if (identities.Length > 1) + { + logger.LogWarning($"Prefab '{prefab.name}' has multiple NetworkIdentity components. There should only be one NetworkIdentity on a prefab, and it must be on the root object."); + } + + if (prefabs.ContainsKey(prefab.assetId)) + { + GameObject existingPrefab = prefabs[prefab.assetId]; + logger.LogWarning($"Replacing existing prefab with assetId '{prefab.assetId}'. Old prefab '{existingPrefab.name}', New prefab '{prefab.name}'"); + } + + if (spawnHandlers.ContainsKey(prefab.assetId) || unspawnHandlers.ContainsKey(prefab.assetId)) + { + logger.LogWarning($"Adding prefab '{prefab.name}' with assetId '{prefab.assetId}' when spawnHandlers with same assetId already exists."); + } + + if (logger.LogEnabled()) logger.Log($"Registering prefab '{prefab.name}' as asset:{prefab.assetId}"); + + prefabs[prefab.assetId] = prefab.gameObject; + } + /// /// Registers a prefab with the spawning system. /// When a NetworkIdentity object is spawned on a server with NetworkServer.SpawnObject(), and the prefab that the object was created from was registered with RegisterPrefab(), the client will use that prefab to instantiate a corresponding client object with the same netId. /// The NetworkManager has a list of spawnable prefabs, it uses this function to register those prefabs with the ClientScene. /// The set of current spawnable object is available in the ClientScene static member variable ClientScene.prefabs, which is a dictionary of NetworkAssetIds and prefab references. + /// NOTE: newAssetId can not be set on GameObjects that already have an assetId /// - /// A Prefab that will be spawned. - /// An assetId to be assigned to this prefab. This allows a dynamically created game object to be registered for an already known asset Id. + /// A GameObject that will be spawned. + /// An assetId to be assigned to this GameObject. This allows a dynamically created game object to be registered for an already known asset Id. public static void RegisterPrefab(GameObject prefab, Guid newAssetId) { - NetworkIdentity identity = prefab.GetComponent(); - if (identity) + if (prefab == null) + { + logger.LogError("Could not register prefab because it was null"); + return; + } + + if (newAssetId == Guid.Empty) { - identity.assetId = newAssetId; + logger.LogError($"Could not register '{prefab.name}' with new assetId because the new assetId was empty"); + return; + } - if (LogFilter.Debug) Debug.Log("Registering prefab '" + prefab.name + "' as asset:" + identity.assetId); - prefabs[identity.assetId] = prefab; + NetworkIdentity identity = prefab.GetComponent(); + if (identity == null) + { + logger.LogError($"Could not register '{prefab.name}' since it contains no NetworkIdentity component"); + return; } - else + + if (identity.assetId != Guid.Empty && identity.assetId != newAssetId) { - Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); + logger.LogError($"Could not register '{prefab.name}' to {newAssetId} because it already had an AssetId, Existing assetId {identity.assetId}"); + return; } + + identity.assetId = newAssetId; + + RegisterPrefabIdentity(identity); } /// @@ -276,23 +325,43 @@ public static void RegisterPrefab(GameObject prefab, Guid newAssetId) /// A Prefab that will be spawned. public static void RegisterPrefab(GameObject prefab) { - NetworkIdentity identity = prefab.GetComponent(); - if (identity) + if (prefab == null) { - if (LogFilter.Debug) Debug.Log("Registering prefab '" + prefab.name + "' as asset:" + identity.assetId); - prefabs[identity.assetId] = prefab; + logger.LogError("Could not register prefab because it was null"); + return; + } - NetworkIdentity[] identities = prefab.GetComponentsInChildren(); - if (identities.Length > 1) - { - Debug.LogWarning("The prefab '" + prefab.name + - "' has multiple NetworkIdentity components. There can only be one NetworkIdentity on a prefab, and it must be on the root object."); - } + NetworkIdentity identity = prefab.GetComponent(); + if (identity == null) + { + logger.LogError($"Could not register '{prefab.name}' since it contains no NetworkIdentity component"); + return; } - else + + RegisterPrefabIdentity(identity); + } + + /// + /// Registers a prefab with the spawning system. + /// When a NetworkIdentity object is spawned on a server with NetworkServer.SpawnObject(), and the prefab that the object was created from was registered with RegisterPrefab(), the client will use that prefab to instantiate a corresponding client object with the same netId. + /// The NetworkManager has a list of spawnable prefabs, it uses this function to register those prefabs with the ClientScene. + /// The set of current spawnable object is available in the ClientScene static member variable ClientScene.prefabs, which is a dictionary of NetworkAssetIds and prefab references. + /// NOTE: newAssetId can not be set on GameObjects that already have an assetId + /// + /// A GameObject that will be spawned. + /// An assetId to be assigned to this GameObject. This allows a dynamically created game object to be registered for an already known asset Id. + /// A method to use as a custom spawnhandler on clients. + /// A method to use as a custom un-spawnhandler on clients. + public static void RegisterPrefab(GameObject prefab, Guid newAssetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + { + // We need this check here because we don't want a null handler in the lambda expression below + if (spawnHandler == null) { - Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); + logger.LogError($"Can not Register null SpawnHandler for {newAssetId}"); + return; } + + RegisterPrefab(prefab, newAssetId, msg => spawnHandler(msg.position, msg.assetId), unspawnHandler); } /// @@ -306,29 +375,196 @@ public static void RegisterPrefab(GameObject prefab) /// A method to use as a custom un-spawnhandler on clients. public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { + if (prefab == null) + { + logger.LogError("Could not register handler for prefab because the prefab was null"); + return; + } + NetworkIdentity identity = prefab.GetComponent(); if (identity == null) { - Debug.LogError("Could not register '" + prefab.name + "' since it contains no NetworkIdentity component"); + logger.LogError("Could not register handler for '" + prefab.name + "' since it contains no NetworkIdentity component"); return; } - if (spawnHandler == null || unspawnHandler == null) + if (identity.sceneId != 0) { - Debug.LogError("RegisterPrefab custom spawn function null for " + identity.assetId); + logger.LogError($"Can not Register '{prefab.name}' because it has a sceneId, make sure you are passing in the original prefab and not an instance in the scene."); return; } - if (identity.assetId == Guid.Empty) + Guid assetId = identity.assetId; + + if (assetId == Guid.Empty) { - Debug.LogError("RegisterPrefab game object " + prefab.name + " has no prefab. Use RegisterSpawnHandler() instead?"); + logger.LogError($"Can not Register handler for '{prefab.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead"); return; } - if (LogFilter.Debug) Debug.Log("Registering custom prefab '" + prefab.name + "' as asset:" + identity.assetId + " " + spawnHandler.GetMethodName() + "/" + unspawnHandler.GetMethodName()); + // We need this check here because we don't want a null handler in the lambda expression below + if (spawnHandler == null) + { + logger.LogError($"Can not Register null SpawnHandler for {assetId}"); + return; + } - spawnHandlers[identity.assetId] = spawnHandler; - unspawnHandlers[identity.assetId] = unspawnHandler; + RegisterPrefab(prefab, msg => spawnHandler(msg.position, msg.assetId), unspawnHandler); + } + + /// + /// Registers a prefab with the spawning system. + /// When a NetworkIdentity object is spawned on a server with NetworkServer.SpawnObject(), and the prefab that the object was created from was registered with RegisterPrefab(), the client will use that prefab to instantiate a corresponding client object with the same netId. + /// The NetworkManager has a list of spawnable prefabs, it uses this function to register those prefabs with the ClientScene. + /// The set of current spawnable object is available in the ClientScene static member variable ClientScene.prefabs, which is a dictionary of NetworkAssetIds and prefab references. + /// NOTE: newAssetId can not be set on GameObjects that already have an assetId + /// + /// A GameObject that will be spawned. + /// An assetId to be assigned to this GameObject. This allows a dynamically created game object to be registered for an already known asset Id. + /// A method to use as a custom spawnhandler on clients. + /// A method to use as a custom un-spawnhandler on clients. + public static void RegisterPrefab(GameObject prefab, Guid newAssetId, SpawnHandlerDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + { + if (newAssetId == Guid.Empty) + { + logger.LogError($"Could not register handler for '{prefab.name}' with new assetId because the new assetId was empty"); + return; + } + + if (prefab == null) + { + logger.LogError("Could not register handler for prefab because the prefab was null"); + return; + } + + NetworkIdentity identity = prefab.GetComponent(); + if (identity == null) + { + logger.LogError("Could not register handler for '" + prefab.name + "' since it contains no NetworkIdentity component"); + return; + } + + if (identity.assetId != Guid.Empty && identity.assetId != newAssetId) + { + logger.LogError($"Could not register Handler for '{prefab.name}' to {newAssetId} because it already had an AssetId, Existing assetId {identity.assetId}"); + return; + } + + if (identity.sceneId != 0) + { + logger.LogError($"Can not Register '{prefab.name}' because it has a sceneId, make sure you are passing in the original prefab and not an instance in the scene."); + return; + } + + identity.assetId = newAssetId; + Guid assetId = identity.assetId; + + if (spawnHandler == null) + { + logger.LogError($"Can not Register null SpawnHandler for {assetId}"); + return; + } + + if (unspawnHandler == null) + { + logger.LogError($"Can not Register null UnSpawnHandler for {assetId}"); + return; + } + + if (spawnHandlers.ContainsKey(assetId) || unspawnHandlers.ContainsKey(assetId)) + { + logger.LogWarning($"Replacing existing spawnHandlers for prefab '{prefab.name}' with assetId '{assetId}'"); + } + + if (prefabs.ContainsKey(assetId)) + { + // this is error because SpawnPrefab checks prefabs before handler + logger.LogError($"assetId '{assetId}' is already used by prefab '{prefabs[assetId].name}', unregister the prefab first before trying to add handler"); + } + + NetworkIdentity[] identities = prefab.GetComponentsInChildren(); + if (identities.Length > 1) + { + logger.LogWarning($"Prefab '{prefab.name}' has multiple NetworkIdentity components. There should only be one NetworkIdentity on a prefab, and it must be on the root object."); + } + + if (logger.LogEnabled()) logger.Log("Registering custom prefab '" + prefab.name + "' as asset:" + assetId + " " + spawnHandler.GetMethodName() + "/" + unspawnHandler.GetMethodName()); + + spawnHandlers[assetId] = spawnHandler; + unspawnHandlers[assetId] = unspawnHandler; + } + + /// + /// Registers a prefab with the spawning system. + /// When a NetworkIdentity object is spawned on a server with NetworkServer.SpawnObject(), and the prefab that the object was created from was registered with RegisterPrefab(), the client will use that prefab to instantiate a corresponding client object with the same netId. + /// The NetworkManager has a list of spawnable prefabs, it uses this function to register those prefabs with the ClientScene. + /// The set of current spawnable object is available in the ClientScene static member variable ClientScene.prefabs, which is a dictionary of NetworkAssetIds and prefab references. + /// + /// A Prefab that will be spawned. + /// A method to use as a custom spawnhandler on clients. + /// A method to use as a custom un-spawnhandler on clients. + public static void RegisterPrefab(GameObject prefab, SpawnHandlerDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + { + if (prefab == null) + { + logger.LogError("Could not register handler for prefab because the prefab was null"); + return; + } + + NetworkIdentity identity = prefab.GetComponent(); + if (identity == null) + { + logger.LogError("Could not register handler for '" + prefab.name + "' since it contains no NetworkIdentity component"); + return; + } + + if (identity.sceneId != 0) + { + logger.LogError($"Can not Register '{prefab.name}' because it has a sceneId, make sure you are passing in the original prefab and not an instance in the scene."); + return; + } + + Guid assetId = identity.assetId; + + if (assetId == Guid.Empty) + { + logger.LogError($"Can not Register handler for '{prefab.name}' because it had empty assetid. If this is a scene Object use RegisterSpawnHandler instead"); + return; + } + + if (spawnHandler == null) + { + logger.LogError($"Can not Register null SpawnHandler for {assetId}"); + return; + } + + if (unspawnHandler == null) + { + logger.LogError($"Can not Register null UnSpawnHandler for {assetId}"); + return; + } + + if (spawnHandlers.ContainsKey(assetId) || unspawnHandlers.ContainsKey(assetId)) + { + logger.LogWarning($"Replacing existing spawnHandlers for prefab '{prefab.name}' with assetId '{assetId}'"); + } + + if (prefabs.ContainsKey(assetId)) + { + // this is error because SpawnPrefab checks prefabs before handler + logger.LogError($"assetId '{assetId}' is already used by prefab '{prefabs[assetId].name}', unregister the prefab first before trying to add handler"); + } + + NetworkIdentity[] identities = prefab.GetComponentsInChildren(); + if (identities.Length > 1) + { + logger.LogWarning($"Prefab '{prefab.name}' has multiple NetworkIdentity components. There should only be one NetworkIdentity on a prefab, and it must be on the root object."); + } + + if (logger.LogEnabled()) logger.Log("Registering custom prefab '" + prefab.name + "' as asset:" + assetId + " " + spawnHandler.GetMethodName() + "/" + unspawnHandler.GetMethodName()); + + spawnHandlers[assetId] = spawnHandler; + unspawnHandlers[assetId] = unspawnHandler; } /// @@ -337,14 +573,24 @@ public static void RegisterPrefab(GameObject prefab, SpawnDelegate spawnHandler, /// The prefab to be removed from registration. public static void UnregisterPrefab(GameObject prefab) { + if (prefab == null) + { + logger.LogError("Could not unregister prefab because it was null"); + return; + } + NetworkIdentity identity = prefab.GetComponent(); if (identity == null) { - Debug.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component"); + logger.LogError("Could not unregister '" + prefab.name + "' since it contains no NetworkIdentity component"); return; } - spawnHandlers.Remove(identity.assetId); - unspawnHandlers.Remove(identity.assetId); + + Guid assetId = identity.assetId; + + prefabs.Remove(assetId); + spawnHandlers.Remove(assetId); + unspawnHandlers.Remove(assetId); } /// @@ -356,13 +602,55 @@ public static void UnregisterPrefab(GameObject prefab) /// A method to use as a custom un-spawnhandler on clients. public static void RegisterSpawnHandler(Guid assetId, SpawnDelegate spawnHandler, UnSpawnDelegate unspawnHandler) { - if (spawnHandler == null || unspawnHandler == null) + // We need this check here because we don't want a null handler in the lambda expression below + if (spawnHandler == null) { - Debug.LogError("RegisterSpawnHandler custom spawn function null for " + assetId); + logger.LogError($"Can not Register null SpawnHandler for {assetId}"); return; } - if (LogFilter.Debug) Debug.Log("RegisterSpawnHandler asset '" + assetId + "' " + spawnHandler.GetMethodName() + "/" + unspawnHandler.GetMethodName()); + RegisterSpawnHandler(assetId, msg => spawnHandler(msg.position, msg.assetId), unspawnHandler); + } + + /// + /// This is an advanced spawning function that registers a custom assetId with the UNET spawning system. + /// This can be used to register custom spawning methods for an assetId - instead of the usual method of registering spawning methods for a prefab. This should be used when no prefab exists for the spawned objects - such as when they are constructed dynamically at runtime from configuration data. + /// + /// Custom assetId string. + /// A method to use as a custom spawnhandler on clients. + /// A method to use as a custom un-spawnhandler on clients. + public static void RegisterSpawnHandler(Guid assetId, SpawnHandlerDelegate spawnHandler, UnSpawnDelegate unspawnHandler) + { + if (spawnHandler == null) + { + logger.LogError($"Can not Register null SpawnHandler for {assetId}"); + return; + } + + if (unspawnHandler == null) + { + logger.LogError($"Can not Register null UnSpawnHandler for {assetId}"); + return; + } + + if (assetId == Guid.Empty) + { + logger.LogError("Can not Register SpawnHandler for empty Guid"); + return; + } + + if (spawnHandlers.ContainsKey(assetId) || unspawnHandlers.ContainsKey(assetId)) + { + logger.LogWarning($"Replacing existing spawnHandlers for {assetId}"); + } + + if (prefabs.ContainsKey(assetId)) + { + // this is error because SpawnPrefab checks prefabs before handler + logger.LogError($"assetId '{assetId}' is already used by prefab '{prefabs[assetId].name}'"); + } + + if (logger.LogEnabled()) logger.Log("RegisterSpawnHandler asset '" + assetId + "' " + spawnHandler.GetMethodName() + "/" + unspawnHandler.GetMethodName()); spawnHandlers[assetId] = spawnHandler; unspawnHandlers[assetId] = unspawnHandler; @@ -404,221 +692,209 @@ static bool InvokeUnSpawnHandler(Guid assetId, GameObject obj) /// public static void DestroyAllClientObjects() { - foreach (NetworkIdentity identity in NetworkIdentity.spawned.Values) + // user can modify spawned lists which causes InvalidOperationException + // list can modified either in UnSpawnHandler or in OnDisable/OnDestroy + // we need the Try/Catch so that the rest of the shutdown does not get stopped + try { - if (identity != null && identity.gameObject != null) + foreach (NetworkIdentity identity in NetworkIdentity.spawned.Values) { - if (!InvokeUnSpawnHandler(identity.assetId, identity.gameObject)) + if (identity != null && identity.gameObject != null) { - if (identity.sceneId == 0) - { - Object.Destroy(identity.gameObject); - } - else + bool wasUnspawned = InvokeUnSpawnHandler(identity.assetId, identity.gameObject); + if (!wasUnspawned) { - identity.MarkForReset(); - identity.gameObject.SetActive(false); + if (identity.sceneId == 0) + { + Object.Destroy(identity.gameObject); + } + else + { + identity.Reset(); + identity.gameObject.SetActive(false); + } } } } + NetworkIdentity.spawned.Clear(); } - NetworkIdentity.spawned.Clear(); - } - - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkIdentity.spawned[netId] instead.")] - public static GameObject FindLocalObject(uint netId) - { - if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity)) + catch (InvalidOperationException e) { - return identity.gameObject; + logger.LogException(e); + logger.LogError("Could not DestroyAllClientObjects because spawned list was modified during loop, make sure you are not modifying NetworkIdentity.spawned by calling NetworkServer.Destroy or NetworkServer.Spawn in OnDestroy or OnDisable."); } - return null; } - static void ApplySpawnPayload(NetworkIdentity identity, Vector3 position, Quaternion rotation, Vector3 scale, ArraySegment payload, uint netId) + static void ApplySpawnPayload(NetworkIdentity identity, SpawnMessage msg) { + if (msg.assetId != Guid.Empty) + identity.assetId = msg.assetId; + if (!identity.gameObject.activeSelf) { identity.gameObject.SetActive(true); } // apply local values for VR support - identity.transform.localPosition = position; - identity.transform.localRotation = rotation; - identity.transform.localScale = scale; + identity.transform.localPosition = msg.position; + identity.transform.localRotation = msg.rotation; + identity.transform.localScale = msg.scale; + identity.hasAuthority = msg.isOwner; + identity.netId = msg.netId; + + if (msg.isLocalPlayer) + InternalAddPlayer(identity); // deserialize components if any payload // (Count is 0 if there were no components) - if (payload.Count > 0) + if (msg.payload.Count > 0) { - NetworkReader payloadReader = NetworkReaderPool.GetReader(payload); - identity.OnUpdateVars(payloadReader, true); - NetworkReaderPool.Recycle(payloadReader); + using (PooledNetworkReader payloadReader = NetworkReaderPool.GetReader(msg.payload)) + { + identity.OnDeserializeAllSafely(payloadReader, true); + } } - identity.netId = netId; - NetworkIdentity.spawned[netId] = identity; + NetworkIdentity.spawned[msg.netId] = identity; // objects spawned as part of initial state are started on a second pass if (isSpawnFinished) { + identity.NotifyAuthority(); identity.OnStartClient(); - CheckForOwner(identity); + CheckForLocalPlayer(identity); } } - internal static void OnSpawnPrefab(NetworkConnection _, SpawnPrefabMessage msg) + internal static void OnSpawn(SpawnMessage msg) { - if (msg.assetId == Guid.Empty) + if (msg.assetId == Guid.Empty && msg.sceneId == 0) { - Debug.LogError("OnObjSpawn netId: " + msg.netId + " has invalid asset Id"); + logger.LogError("OnObjSpawn netId: " + msg.netId + " has invalid asset Id"); return; } - if (LogFilter.Debug) Debug.Log("Client spawn handler instantiating [netId:" + msg.netId + " asset ID:" + msg.assetId + " pos:" + msg.position + "]"); + if (logger.LogEnabled()) logger.Log($"Client spawn handler instantiating netId={msg.netId} assetID={msg.assetId} sceneId={msg.sceneId} pos={msg.position}"); + + // was the object already spawned? + NetworkIdentity identity = GetExistingObject(msg.netId); - // owner? - if (msg.owner) + if (identity == null) { - OnSpawnMessageForOwner(msg.netId); + identity = msg.sceneId == 0 ? SpawnPrefab(msg) : SpawnSceneObject(msg); } - if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity localObject) && localObject != null) + if (identity == null) { - // this object already exists (was in the scene), just apply the update to existing object - localObject.Reset(); - ApplySpawnPayload(localObject, msg.position, msg.rotation, msg.scale, msg.payload, msg.netId); + logger.LogError($"Could not spawn assetId={msg.assetId} scene={msg.sceneId} netId={msg.netId}"); return; } + ApplySpawnPayload(identity, msg); + } + + static NetworkIdentity GetExistingObject(uint netid) + { + NetworkIdentity.spawned.TryGetValue(netid, out NetworkIdentity localObject); + return localObject; + } + + static NetworkIdentity SpawnPrefab(SpawnMessage msg) + { if (GetPrefab(msg.assetId, out GameObject prefab)) { GameObject obj = Object.Instantiate(prefab, msg.position, msg.rotation); - if (LogFilter.Debug) + if (logger.LogEnabled()) { - Debug.Log("Client spawn handler instantiating [netId:" + msg.netId + " asset ID:" + msg.assetId + " pos:" + msg.position + " rotation: " + msg.rotation + "]"); + logger.Log("Client spawn handler instantiating [netId:" + msg.netId + " asset ID:" + msg.assetId + " pos:" + msg.position + " rotation: " + msg.rotation + "]"); } - localObject = obj.GetComponent(); - if (localObject == null) - { - Debug.LogError("Client object spawned for " + msg.assetId + " does not have a NetworkIdentity"); - return; - } - localObject.Reset(); - localObject.pendingOwner = msg.owner; - ApplySpawnPayload(localObject, msg.position, msg.rotation, msg.scale, msg.payload, msg.netId); + return obj.GetComponent(); } - // lookup registered factory for type: - else if (spawnHandlers.TryGetValue(msg.assetId, out SpawnDelegate handler)) + if (spawnHandlers.TryGetValue(msg.assetId, out SpawnHandlerDelegate handler)) { - GameObject obj = handler(msg.position, msg.assetId); + GameObject obj = handler(msg); if (obj == null) { - Debug.LogWarning("Client spawn handler for " + msg.assetId + " returned null"); - return; - } - localObject = obj.GetComponent(); - if (localObject == null) - { - Debug.LogError("Client object spawned for " + msg.assetId + " does not have a network identity"); - return; + logger.LogWarning("Client spawn handler for " + msg.assetId + " returned null"); + return null; } - localObject.Reset(); - localObject.pendingOwner = msg.owner; - localObject.assetId = msg.assetId; - ApplySpawnPayload(localObject, msg.position, msg.rotation, msg.scale, msg.payload, msg.netId); - } - else - { - Debug.LogError("Failed to spawn server object, did you forget to add it to the NetworkManager? assetId=" + msg.assetId + " netId=" + msg.netId); + return obj.GetComponent(); } + logger.LogError("Failed to spawn server object, did you forget to add it to the NetworkManager? assetId=" + msg.assetId + " netId=" + msg.netId); + return null; } - internal static void OnSpawnSceneObject(NetworkConnection _, SpawnSceneObjectMessage msg) + static NetworkIdentity SpawnSceneObject(SpawnMessage msg) { - if (LogFilter.Debug) Debug.Log("Client spawn scene handler instantiating [netId:" + msg.netId + " sceneId:" + msg.sceneId + " pos:" + msg.position); - - // owner? - if (msg.owner) - { - OnSpawnMessageForOwner(msg.netId); - } - - if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity localObject) && localObject != null) - { - // this object already exists (was in the scene) - localObject.Reset(); - ApplySpawnPayload(localObject, msg.position, msg.rotation, msg.scale, msg.payload, msg.netId); - return; - } - NetworkIdentity spawnedId = SpawnSceneObject(msg.sceneId); if (spawnedId == null) { - Debug.LogError("Spawn scene object not found for " + msg.sceneId.ToString("X") + " SpawnableObjects.Count=" + spawnableObjects.Count); + logger.LogError("Spawn scene object not found for " + msg.sceneId.ToString("X") + " SpawnableObjects.Count=" + spawnableObjects.Count); // dump the whole spawnable objects dict for easier debugging - if (LogFilter.Debug) + if (logger.LogEnabled()) { foreach (KeyValuePair kvp in spawnableObjects) - Debug.Log("Spawnable: SceneId=" + kvp.Key + " name=" + kvp.Value.name); + logger.Log("Spawnable: SceneId=" + kvp.Key + " name=" + kvp.Value.name); } - - return; } - if (LogFilter.Debug) Debug.Log("Client spawn for [netId:" + msg.netId + "] [sceneId:" + msg.sceneId + "] obj:" + spawnedId.gameObject.name); - spawnedId.Reset(); - spawnedId.pendingOwner = msg.owner; - ApplySpawnPayload(spawnedId, msg.position, msg.rotation, msg.scale, msg.payload, msg.netId); + if (logger.LogEnabled()) logger.Log("Client spawn for [netId:" + msg.netId + "] [sceneId:" + msg.sceneId + "] obj:" + spawnedId); + return spawnedId; + } + + static NetworkIdentity SpawnSceneObject(ulong sceneId) + { + if (spawnableObjects.TryGetValue(sceneId, out NetworkIdentity identity)) + { + spawnableObjects.Remove(sceneId); + return identity; + } + logger.LogWarning("Could not find scene object with sceneid:" + sceneId.ToString("X")); + return null; } - internal static void OnObjectSpawnStarted(NetworkConnection _, ObjectSpawnStartedMessage msg) + internal static void OnObjectSpawnStarted(ObjectSpawnStartedMessage _) { - if (LogFilter.Debug) Debug.Log("SpawnStarted"); + if (logger.LogEnabled()) logger.Log("SpawnStarted"); PrepareToSpawnSceneObjects(); isSpawnFinished = false; } - internal static void OnObjectSpawnFinished(NetworkConnection _, ObjectSpawnFinishedMessage msg) + internal static void OnObjectSpawnFinished(ObjectSpawnFinishedMessage _) { - if (LogFilter.Debug) Debug.Log("SpawnFinished"); + logger.Log("SpawnFinished"); // paul: Initialize the objects in the same order as they were initialized // in the server. This is important if spawned objects // use data from scene objects foreach (NetworkIdentity identity in NetworkIdentity.spawned.Values.OrderBy(uv => uv.netId)) { - if (!identity.isClient) - { - identity.OnStartClient(); - CheckForOwner(identity); - } + identity.NotifyAuthority(); + identity.OnStartClient(); + CheckForLocalPlayer(identity); } isSpawnFinished = true; } - internal static void OnObjectHide(NetworkConnection _, ObjectHideMessage msg) + internal static void OnObjectHide(ObjectHideMessage msg) { DestroyObject(msg.netId); } - internal static void OnObjectDestroy(NetworkConnection _, ObjectDestroyMessage msg) + internal static void OnObjectDestroy(ObjectDestroyMessage msg) { DestroyObject(msg.netId); } static void DestroyObject(uint netId) { - if (LogFilter.Debug) Debug.Log("ClientScene.OnObjDestroy netId:" + netId); + if (logger.LogEnabled()) logger.Log("ClientScene.OnObjDestroy netId:" + netId); if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity localObject) && localObject != null) { - localObject.OnNetworkDestroy(); + localObject.OnStopClient(); if (!InvokeUnSpawnHandler(localObject.assetId, localObject.gameObject)) { @@ -635,140 +911,96 @@ static void DestroyObject(uint netId) } } NetworkIdentity.spawned.Remove(netId); - localObject.MarkForReset(); + localObject.Reset(); } else { - if (LogFilter.Debug) Debug.LogWarning("Did not find target for destroy message for " + netId); + if (logger.LogEnabled()) logger.LogWarning("Did not find target for destroy message for " + netId); } } - internal static void OnLocalClientObjectDestroy(NetworkConnection _, ObjectDestroyMessage msg) + internal static void OnHostClientObjectDestroy(ObjectDestroyMessage msg) { - if (LogFilter.Debug) Debug.Log("ClientScene.OnLocalObjectObjDestroy netId:" + msg.netId); + if (logger.LogEnabled()) logger.Log("ClientScene.OnLocalObjectObjDestroy netId:" + msg.netId); NetworkIdentity.spawned.Remove(msg.netId); } - internal static void OnLocalClientObjectHide(NetworkConnection _, ObjectHideMessage msg) + internal static void OnHostClientObjectHide(ObjectHideMessage msg) { - if (LogFilter.Debug) Debug.Log("ClientScene::OnLocalObjectObjHide netId:" + msg.netId); + if (logger.LogEnabled()) logger.Log("ClientScene::OnLocalObjectObjHide netId:" + msg.netId); if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity localObject) && localObject != null) { - localObject.OnSetLocalVisibility(false); + localObject.OnSetHostVisibility(false); } } - internal static void OnLocalClientSpawnPrefab(NetworkConnection _, SpawnPrefabMessage msg) + internal static void OnHostClientSpawn(SpawnMessage msg) { if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity localObject) && localObject != null) { - localObject.OnSetLocalVisibility(true); - } - } + if (msg.isLocalPlayer) + InternalAddPlayer(localObject); - internal static void OnLocalClientSpawnSceneObject(NetworkConnection _, SpawnSceneObjectMessage msg) - { - if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity localObject) && localObject != null) - { - localObject.OnSetLocalVisibility(true); + localObject.hasAuthority = msg.isOwner; + localObject.NotifyAuthority(); + localObject.OnStartClient(); + localObject.OnSetHostVisibility(true); + CheckForLocalPlayer(localObject); } } - internal static void OnUpdateVarsMessage(NetworkConnection _, UpdateVarsMessage msg) + internal static void OnUpdateVarsMessage(UpdateVarsMessage msg) { - if (LogFilter.Debug) Debug.Log("ClientScene.OnUpdateVarsMessage " + msg.netId); + if (logger.LogEnabled()) logger.Log("ClientScene.OnUpdateVarsMessage " + msg.netId); if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity localObject) && localObject != null) { - NetworkReader reader = NetworkReaderPool.GetReader(msg.payload); - localObject.OnUpdateVars(reader, false); - NetworkReaderPool.Recycle(reader); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(msg.payload)) + localObject.OnDeserializeAllSafely(networkReader, false); } else { - Debug.LogWarning("Did not find target for sync message for " + msg.netId + " . Note: this can be completely normal because UDP messages may arrive out of order, so this message might have arrived after a Destroy message."); + logger.LogWarning("Did not find target for sync message for " + msg.netId + " . Note: this can be completely normal because UDP messages may arrive out of order, so this message might have arrived after a Destroy message."); } } - internal static void OnRPCMessage(NetworkConnection _, RpcMessage msg) + internal static void OnRPCMessage(RpcMessage msg) { - if (LogFilter.Debug) Debug.Log("ClientScene.OnRPCMessage hash:" + msg.functionHash + " netId:" + msg.netId); + if (logger.LogEnabled()) logger.Log("ClientScene.OnRPCMessage hash:" + msg.functionHash + " netId:" + msg.netId); if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity identity)) { - NetworkReader reader = NetworkReaderPool.GetReader(msg.payload); - identity.HandleRPC(msg.componentIndex, msg.functionHash, reader); - NetworkReaderPool.Recycle(reader); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(msg.payload)) + identity.HandleRPC(msg.componentIndex, msg.functionHash, networkReader); } } - internal static void OnSyncEventMessage(NetworkConnection _, SyncEventMessage msg) + internal static void OnSyncEventMessage(SyncEventMessage msg) { - if (LogFilter.Debug) Debug.Log("ClientScene.OnSyncEventMessage " + msg.netId); + if (logger.LogEnabled()) logger.Log("ClientScene.OnSyncEventMessage " + msg.netId); if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity identity)) { - NetworkReader reader = NetworkReaderPool.GetReader(msg.payload); - identity.HandleSyncEvent(msg.componentIndex, msg.functionHash, reader); - NetworkReaderPool.Recycle(reader); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(msg.payload)) + identity.HandleSyncEvent(msg.componentIndex, msg.functionHash, networkReader); } else { - Debug.LogWarning("Did not find target for SyncEvent message for " + msg.netId); + logger.LogWarning("Did not find target for SyncEvent message for " + msg.netId); } } - internal static void OnClientAuthority(NetworkConnection _, ClientAuthorityMessage msg) + static void CheckForLocalPlayer(NetworkIdentity identity) { - if (LogFilter.Debug) Debug.Log("ClientScene.OnClientAuthority for netId: " + msg.netId); - - if (NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity identity)) + if (identity == localPlayer) { - identity.HandleClientAuthority(msg.authority); - } - } - - // called for the one object in the spawn message which is the owner! - internal static void OnSpawnMessageForOwner(uint netId) - { - if (LogFilter.Debug) Debug.Log("ClientScene.OnOwnerMessage - connectionId=" + readyConnection.connectionId + " netId: " + netId); - - // is there already an owner that is a different object?? - if (readyConnection.identity != null) - { - readyConnection.identity.SetNotLocalPlayer(); - } - - if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity localObject) && localObject != null) - { - // this object already exists - localObject.connectionToServer = readyConnection; - localObject.SetLocalPlayer(); - InternalAddPlayer(localObject); - } - } - - static void CheckForOwner(NetworkIdentity identity) - { - if (identity.pendingOwner) - { - // found owner, turn into a local player - // Set isLocalPlayer to true on this NetworkIdentity and trigger OnStartLocalPlayer in all scripts on the same GO identity.connectionToServer = readyConnection; - identity.SetLocalPlayer(); - - if (LogFilter.Debug) Debug.Log("ClientScene.OnOwnerMessage - player=" + identity.name); - if (readyConnection.connectionId < 0) - { - Debug.LogError("Owner message received on a local client."); - return; - } - InternalAddPlayer(identity); + identity.OnStartLocalPlayer(); - identity.pendingOwner = false; + if (logger.LogEnabled()) logger.Log("ClientScene.OnOwnerMessage - player=" + identity.name); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/CustomAttributes.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/CustomAttributes.cs index 530f98b..65a3885 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/CustomAttributes.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/CustomAttributes.cs @@ -1,22 +1,14 @@ using System; -using System.ComponentModel; using UnityEngine; namespace Mirror { - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkBehaviour.syncInterval field instead. Can be modified in the Inspector too.")] - [AttributeUsage(AttributeTargets.Class)] - public class NetworkSettingsAttribute : Attribute - { - public float sendInterval = 0.1f; - } - /// /// SyncVars are used to synchronize a variable from the server to all clients automatically. /// Value must be changed on server, not directly by clients. Hook parameter allows you to define a client-side method to be invoked when the client gets an update from the server. /// [AttributeUsage(AttributeTargets.Field)] - public class SyncVarAttribute : Attribute + public class SyncVarAttribute : PropertyAttribute { public string hook; } @@ -28,7 +20,9 @@ public class SyncVarAttribute : Attribute [AttributeUsage(AttributeTargets.Method)] public class CommandAttribute : Attribute { - public int channel = Channels.DefaultReliable; // this is zero + // this is zero + public int channel = Channels.DefaultReliable; + public bool ignoreAuthority = false; } /// @@ -37,7 +31,9 @@ public class CommandAttribute : Attribute [AttributeUsage(AttributeTargets.Method)] public class ClientRpcAttribute : Attribute { - public int channel = Channels.DefaultReliable; // this is zero + // this is zero + public int channel = Channels.DefaultReliable; + public bool excludeOwner = false; } /// @@ -46,7 +42,8 @@ public class ClientRpcAttribute : Attribute [AttributeUsage(AttributeTargets.Method)] public class TargetRpcAttribute : Attribute { - public int channel = Channels.DefaultReliable; // this is zero + // this is zero + public int channel = Channels.DefaultReliable; } /// @@ -55,7 +52,8 @@ public class TargetRpcAttribute : Attribute [AttributeUsage(AttributeTargets.Event)] public class SyncEventAttribute : Attribute { - public int channel = Channels.DefaultReliable; // this is zero + // this is zero + public int channel = Channels.DefaultReliable; } /// @@ -90,4 +88,11 @@ public class ClientCallbackAttribute : Attribute { } /// Converts a string property into a Scene property in the inspector /// public class SceneAttribute : PropertyAttribute { } + + /// + /// Used to show private SyncList in the inspector, + /// Use instead of SerializeField for non Serializable types + /// + [AttributeUsage(AttributeTargets.Field)] + public class ShowInInspectorAttribute : Attribute { } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/FloatBytePacker.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/FloatBytePacker.cs index 2293d21..26d1cc0 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/FloatBytePacker.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/FloatBytePacker.cs @@ -1,60 +1,2 @@ -using UnityEngine; - -namespace Mirror -{ - public static class FloatBytePacker - { - // ScaleFloatToByte( -1f, -1f, 1f, byte.MinValue, byte.MaxValue) => 0 - // ScaleFloatToByte( 0f, -1f, 1f, byte.MinValue, byte.MaxValue) => 127 - // ScaleFloatToByte(0.5f, -1f, 1f, byte.MinValue, byte.MaxValue) => 191 - // ScaleFloatToByte( 1f, -1f, 1f, byte.MinValue, byte.MaxValue) => 255 - public static byte ScaleFloatToByte(float value, float minValue, float maxValue, byte minTarget, byte maxTarget) - { - // note: C# byte - byte => int, hence so many casts - int targetRange = maxTarget - minTarget; // max byte - min byte only fits into something bigger - float valueRange = maxValue - minValue; - float valueRelative = value - minValue; - return (byte)(minTarget + (byte)(valueRelative/valueRange * targetRange)); - } - - // ScaleByteToFloat( 0, byte.MinValue, byte.MaxValue, -1, 1) => -1 - // ScaleByteToFloat(127, byte.MinValue, byte.MaxValue, -1, 1) => -0.003921569 - // ScaleByteToFloat(191, byte.MinValue, byte.MaxValue, -1, 1) => 0.4980392 - // ScaleByteToFloat(255, byte.MinValue, byte.MaxValue, -1, 1) => 1 - public static float ScaleByteToFloat(byte value, byte minValue, byte maxValue, float minTarget, float maxTarget) - { - // note: C# byte - byte => int, hence so many casts - float targetRange = maxTarget - minTarget; - byte valueRange = (byte)(maxValue - minValue); - byte valueRelative = (byte)(value - minValue); - return minTarget + (valueRelative / (float)valueRange * targetRange); - } - - // eulerAngles have 3 floats, putting them into 2 bytes of [x,y],[z,0] - // would be a waste. instead we compress into 5 bits each => 15 bits. - // so a ushort. - public static ushort PackThreeFloatsIntoUShort(float u, float v, float w, float minValue, float maxValue) - { - // 5 bits max value = 1+2+4+8+16 = 31 = 0x1F - byte lower = ScaleFloatToByte(u, minValue, maxValue, 0x00, 0x1F); - byte middle = ScaleFloatToByte(v, minValue, maxValue, 0x00, 0x1F); - byte upper = ScaleFloatToByte(w, minValue, maxValue, 0x00, 0x1F); - ushort combined = (ushort)(upper << 10 | middle << 5 | lower); - return combined; - } - - // see PackThreeFloatsIntoUShort for explanation - public static Vector3 UnpackUShortIntoThreeFloats(ushort combined, float minTarget, float maxTarget) - { - byte lower = (byte)(combined & 0x1F); - byte middle = (byte)((combined >> 5) & 0x1F); - byte upper = (byte)(combined >> 10); // nothing on the left, no & needed - - // note: we have to use 4 bits per float, so between 0x00 and 0x0F - float u = ScaleByteToFloat(lower, 0x00, 0x1F, minTarget, maxTarget); - float v = ScaleByteToFloat(middle, 0x00, 0x1F, minTarget, maxTarget); - float w = ScaleByteToFloat(upper, 0x00, 0x1F, minTarget, maxTarget); - return new Vector3(u, v, w); - } - } -} +// File Removed 24-Mar-20 - keeping it in here so AssetStore updates overwrite +// the old one. diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs deleted file mode 100644 index 20db50b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs +++ /dev/null @@ -1,5 +0,0 @@ -// This file was removed in Mirror 3.4.9 -// The purpose of this file is to get the old file overwritten -// when users update from the asset store to prevent a flood of errors -// from having the old file still in the project as a straggler. -// This file will be dropped from the Asset Store package in May 2019 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs.meta deleted file mode 100644 index 6c073e6..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalClient.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 5c4d04450e91c438385de7300abef1b6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalConnections.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalConnections.cs index 1529085..76607e5 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalConnections.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LocalConnections.cs @@ -5,47 +5,135 @@ namespace Mirror { // a server's connection TO a LocalClient. // sending messages on this connection causes the client's handler function to be invoked directly - class ULocalConnectionToClient : NetworkConnection + class ULocalConnectionToClient : NetworkConnectionToClient { - public ULocalConnectionToClient() : base ("localClient") - { - // local player always has connectionId == 0 - connectionId = 0; - } + internal ULocalConnectionToServer connectionToServer; + + public ULocalConnectionToClient() : base(LocalConnectionId) { } + + public override string address => "localhost"; internal override bool Send(ArraySegment segment, int channelId = Channels.DefaultReliable) { - // LocalConnection doesn't support allocation-free sends yet. - // previously we allocated in Mirror. now we do it here. - NetworkWriter writer = NetworkWriterPool.GetWriter(); - writer.WriteBytes(segment.Array, segment.Offset, segment.Count); - NetworkClient.localClientPacketQueue.Enqueue(writer); + connectionToServer.buffer.Write(segment); + return true; } + + // override for host client: always return true. + internal override bool IsClientAlive() => true; + + internal void DisconnectInternal() + { + // set not ready and handle clientscene disconnect in any case + // (might be client or host mode here) + isReady = false; + RemoveObservers(); + } + + /// + /// Disconnects this connection. + /// + public override void Disconnect() + { + DisconnectInternal(); + connectionToServer.DisconnectInternal(); + } } - // a localClient's connection TO a server. - // send messages on this connection causes the server's handler function to be invoked directly. - internal class ULocalConnectionToServer : NetworkConnection + internal class LocalConnectionBuffer { - public ULocalConnectionToServer() : base("localServer") + readonly NetworkWriter writer = new NetworkWriter(); + readonly NetworkReader reader = new NetworkReader(default(ArraySegment)); + // The buffer is atleast 1500 bytes long. So need to keep track of + // packet count to know how many ArraySegments are in the buffer + int packetCount; + + public void Write(ArraySegment segment) { - // local player always has connectionId == 0 - connectionId = 0; + writer.WriteBytesAndSizeSegment(segment); + packetCount++; + + // update buffer incase writer's length has changed + reader.buffer = writer.ToArraySegment(); } + public bool HasPackets() + { + return packetCount > 0; + } + public ArraySegment GetNextPacket() + { + ArraySegment packet = reader.ReadBytesAndSizeSegment(); + packetCount--; + + return packet; + } + + public void ResetBuffer() + { + writer.Reset(); + reader.Position = 0; + } + } + + // a localClient's connection TO a server. + // send messages on this connection causes the server's handler function to be invoked directly. + internal class ULocalConnectionToServer : NetworkConnectionToServer + { + static readonly ILogger logger = LogFactory.GetLogger(typeof(ULocalConnectionToClient)); + + internal ULocalConnectionToClient connectionToClient; + internal readonly LocalConnectionBuffer buffer = new LocalConnectionBuffer(); + + public override string address => "localhost"; + internal override bool Send(ArraySegment segment, int channelId = Channels.DefaultReliable) { if (segment.Count == 0) { - Debug.LogError("LocalConnection.SendBytes cannot send zero bytes"); + logger.LogError("LocalConnection.SendBytes cannot send zero bytes"); return false; } // handle the server's message directly - // TODO any way to do this without NetworkServer.localConnection? - NetworkServer.localConnection.TransportReceive(segment, channelId); + connectionToClient.TransportReceive(segment, channelId); return true; } + + internal void Update() + { + // process internal messages so they are applied at the correct time + while (buffer.HasPackets()) + { + ArraySegment packet = buffer.GetNextPacket(); + + // Treat host player messages exactly like connected client + // to avoid deceptive / misleading behavior differences + TransportReceive(packet, Channels.DefaultReliable); + } + + buffer.ResetBuffer(); + } + + /// + /// Disconnects this connection. + /// + internal void DisconnectInternal() + { + // set not ready and handle clientscene disconnect in any case + // (might be client or host mode here) + isReady = false; + ClientScene.HandleClientDisconnect(this); + } + + /// + /// Disconnects this connection. + /// + public override void Disconnect() + { + connectionToClient.DisconnectInternal(); + DisconnectInternal(); + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs new file mode 100644 index 0000000..433d09b --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs @@ -0,0 +1 @@ +// File moved to Mirror/Runtime/Logging/LogFactory.cs \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs.meta new file mode 100644 index 0000000..0715501 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/LogFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 353c7c9e14e82f349b1679112050b196 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging.meta new file mode 100644 index 0000000..867da74 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 63d647500ca1bfa4a845bc1f4cff9dcc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs new file mode 100644 index 0000000..a1b7d22 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs @@ -0,0 +1,44 @@ +using System; +using UnityEngine; + +namespace Mirror.Logging +{ + public class ConsoleColorLogHandler : ILogHandler + { + readonly bool showExceptionStackTrace; + + public ConsoleColorLogHandler(bool showExceptionStackTrace) + { + this.showExceptionStackTrace = showExceptionStackTrace; + } + + public void LogException(Exception exception, UnityEngine.Object context) + { + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine($"Exception: {exception.Message}"); + if (showExceptionStackTrace) + { + Console.WriteLine($" {exception.StackTrace}"); + } + Console.ResetColor(); + } + + public void LogFormat(LogType logType, UnityEngine.Object context, string format, params object[] args) + { + switch (logType) + { + case LogType.Exception: + case LogType.Error: + case LogType.Assert: + Console.ForegroundColor = ConsoleColor.Red; + break; + case LogType.Warning: + Console.ForegroundColor = ConsoleColor.Yellow; + break; + } + + Console.WriteLine(string.Format(format, args)); + Console.ResetColor(); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs.meta new file mode 100644 index 0000000..329c6eb --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/ConsoleColorLogHandler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a9618569c20a504aa86feb5913c70e9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs new file mode 100644 index 0000000..8f5c4e4 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs @@ -0,0 +1,50 @@ +using UnityEditor; +using UnityEngine; + +namespace Mirror.Logging +{ +#if UNITY_EDITOR + public static class EditorLogSettingsLoader + { + [InitializeOnLoadMethod] + static void Init() + { + // load settings first time LogFactory is used in the editor + LoadLogSettingsIntoDictionary(); + } + + public static void LoadLogSettingsIntoDictionary() + { + LogSettings settings = FindLogSettings(); + if (settings != null) + { + settings.LoadIntoDictionary(LogFactory.loggers); + } + } + + static LogSettings cache; + public static LogSettings FindLogSettings() + { + if (cache != null) + return cache; + + string[] assetGuids = AssetDatabase.FindAssets("t:" + nameof(LogSettings)); + if (assetGuids.Length == 0) + return null; + + string firstGuid = assetGuids[0]; + + string path = AssetDatabase.GUIDToAssetPath(firstGuid); + cache = AssetDatabase.LoadAssetAtPath(path); + + if (assetGuids.Length > 2) + { + Debug.LogWarning("Found more than one LogSettings, Delete extra settings. Using first asset found: " + path); + } + Debug.Assert(cache != null, "Failed to load asset at: " + path); + + return cache; + } + } +#endif +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs.meta new file mode 100644 index 0000000..81b33e9 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/EditorLogSettingsLoader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a39aa1e48aa54eb4e964f0191c1dcdce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs new file mode 100644 index 0000000..24c2b2f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs @@ -0,0 +1,100 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror +{ + public static class LogFactory + { + internal static readonly SortedDictionary loggers = new SortedDictionary(); + + public static SortedDictionary.ValueCollection AllLoggers => loggers.Values; + + /// + /// logHandler used for new loggers + /// + static ILogHandler defaultLogHandler = Debug.unityLogger; + + /// + /// if true sets all log level to LogType.Log + /// + static bool debugMode = false; + + public static ILogger GetLogger(LogType defaultLogLevel = LogType.Warning) + { + return GetLogger(typeof(T).Name, defaultLogLevel); + } + + public static ILogger GetLogger(System.Type type, LogType defaultLogLevel = LogType.Warning) + { + return GetLogger(type.Name, defaultLogLevel); + } + + public static ILogger GetLogger(string loggerName, LogType defaultLogLevel = LogType.Warning) + { + if (loggers.TryGetValue(loggerName, out ILogger logger)) + { + return logger; + } + + logger = new Logger(defaultLogHandler) + { + // by default, log warnings and up + filterLogType = debugMode ? LogType.Log : defaultLogLevel + }; + + loggers[loggerName] = logger; + return logger; + } + + /// + /// Makes all log levels LogType.Log, this is so that NetworkManger.showDebugMessages can still be used + /// + internal static void EnableDebugMode() + { + debugMode = true; + + foreach (ILogger logger in loggers.Values) + { + logger.filterLogType = LogType.Log; + } + } + + /// + /// Replacing log handler for all existing loggers and sets defaultLogHandler for new loggers + /// + /// + public static void ReplaceLogHandler(ILogHandler logHandler) + { + defaultLogHandler = logHandler; + + foreach (ILogger logger in loggers.Values) + { + logger.logHandler = logHandler; + } + } + } + + + public static class ILoggerExtensions + { + public static void LogError(this ILogger logger, object message) + { + logger.Log(LogType.Error, message); + } + + public static void Assert(this ILogger logger, bool condition, string message) + { + if (!condition) + logger.Log(LogType.Assert, message); + } + + public static void LogWarning(this ILogger logger, object message) + { + logger.Log(LogType.Warning, message); + } + + public static bool LogEnabled(this ILogger logger) => logger.IsLogTypeAllowed(LogType.Log); + public static bool WarnEnabled(this ILogger logger) => logger.IsLogTypeAllowed(LogType.Warning); + public static bool ErrorEnabled(this ILogger logger) => logger.IsLogTypeAllowed(LogType.Error); + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs.meta new file mode 100644 index 0000000..acf3b63 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d06522432d5a44e1587967a4731cd279 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs new file mode 100644 index 0000000..abd91c1 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror.Logging +{ + public class LogSettings : ScriptableObject + { + public List loglevels = new List(); + + [Serializable] + public struct LoggerSettings + { + public string name; + public LogType logLevel; + } + } + + public static class LogSettingsExt + { + public static void SaveFromDictionary(this LogSettings settings, SortedDictionary dictionary) + { + if (settings == null) + { + Debug.LogWarning("Could not SaveFromDictionary because LogSettings were null"); + return; + } + + settings.loglevels.Clear(); + + foreach (KeyValuePair kvp in dictionary) + { + settings.loglevels.Add(new LogSettings.LoggerSettings { name = kvp.Key, logLevel = kvp.Value.filterLogType }); + } + +#if UNITY_EDITOR + UnityEditor.EditorUtility.SetDirty(settings); +#endif + } + + public static void LoadIntoDictionary(this LogSettings settings, SortedDictionary dictionary) + { + if (settings == null) + { + Debug.LogWarning("Could not LoadIntoDictionary because LogSettings were null"); + return; + } + + foreach (LogSettings.LoggerSettings logLevel in settings.loglevels) + { + if (dictionary.TryGetValue(logLevel.name, out ILogger logger)) + { + logger.filterLogType = logLevel.logLevel; + } + else + { + logger = new Logger(Debug.unityLogger) + { + filterLogType = logLevel.logLevel + }; + + dictionary[logLevel.name] = logger; + } + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs.meta new file mode 100644 index 0000000..90c4e4d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/LogSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 633889a39717fde4fa28dd6b948dfac7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs new file mode 100644 index 0000000..d41bc2e --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs @@ -0,0 +1,23 @@ +using UnityEngine; + +namespace Mirror.Logging +{ + /// + /// Used to replace log hanlder with Console Color LogHandler + /// + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkHeadlessLogger")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkHeadlessLogger.html")] + public class NetworkHeadlessLogger : MonoBehaviour + { + [SerializeField] bool showExceptionStackTrace = false; + + void Awake() + { + if (NetworkManager.isHeadless) + { + LogFactory.ReplaceLogHandler(new ConsoleColorLogHandler(showExceptionStackTrace)); + } + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs.meta new file mode 100644 index 0000000..221a61b --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkHeadlessLogger.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c7627623f2b9fad4484082517cd73e67 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs new file mode 100644 index 0000000..cfa6f1c --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs @@ -0,0 +1,46 @@ +using UnityEngine; + +namespace Mirror.Logging +{ + /// + /// Used to load LogSettings in build + /// + [DisallowMultipleComponent] + [AddComponentMenu("Network/NetworkLogSettings")] + [HelpURL("https://mirror-networking.com/docs/Components/NetworkLogSettings.html")] + public class NetworkLogSettings : MonoBehaviour + { + [Header("Log Settings Asset")] + [SerializeField] internal LogSettings settings; + +#if UNITY_EDITOR + // called when component is added to GameObject + void Reset() + { + LogSettings existingSettings = EditorLogSettingsLoader.FindLogSettings(); + if (existingSettings != null) + { + settings = existingSettings; + + UnityEditor.EditorUtility.SetDirty(this); + } + } +#endif + + void Awake() + { + RefreshDictionary(); + } + + void OnValidate() + { + // if settings field is changed + RefreshDictionary(); + } + + void RefreshDictionary() + { + settings.LoadIntoDictionary(LogFactory.loggers); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs.meta new file mode 100644 index 0000000..2f7ecdf --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Logging/NetworkLogSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac6e8eccf4b6f4dc7b24c276ef47fde8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/MessagePacker.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/MessagePacker.cs index 3200f72..40ba073 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/MessagePacker.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/MessagePacker.cs @@ -17,6 +17,8 @@ namespace Mirror // (probably even shorter) public static class MessagePacker { + static readonly ILogger logger = LogFactory.GetLogger(typeof(MessagePacker)); + public static int GetId() where T : IMessageBase { // paul: 16 bits is enough to avoid collisions @@ -30,37 +32,16 @@ public static int GetId(Type type) return type.FullName.GetStableHashCode() & 0xFFFF; } - // pack message before sending - // -> NetworkWriter passed as arg so that we can use .ToArraySegment - // and do an allocation free send before recycling it. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use Pack instead")] - public static byte[] PackMessage(int msgType, MessageBase msg) - { - NetworkWriter writer = NetworkWriterPool.GetWriter(); - try - { - // write message type - writer.WriteInt16((short)msgType); - - // serialize message into writer - msg.Serialize(writer); - - // return byte[] - return writer.ToArray(); - } - finally - { - NetworkWriterPool.Recycle(writer); - } - } - // pack message before sending // -> NetworkWriter passed as arg so that we can use .ToArraySegment // and do an allocation free send before recycling it. public static void Pack(T message, NetworkWriter writer) where T : IMessageBase { - // write message type - int msgType = GetId(typeof(T)); + // if it is a value type, just use typeof(T) to avoid boxing + // this works because value types cannot be derived + // if it is a reference type (for example IMessageBase), + // ask the message for the real type + int msgType = GetId(default(T) != null ? typeof(T) : message.GetType()); writer.WriteUInt16((ushort)msgType); // serialize message into writer @@ -73,31 +54,31 @@ public static void Pack(T message, NetworkWriter writer) where T : IMessageBa [EditorBrowsable(EditorBrowsableState.Never)] public static byte[] Pack(T message) where T : IMessageBase { - NetworkWriter writer = NetworkWriterPool.GetWriter(); - - Pack(message, writer); - byte[] data = writer.ToArray(); - - NetworkWriterPool.Recycle(writer); + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + Pack(message, writer); + byte[] data = writer.ToArray(); - return data; + return data; + } } // unpack a message we received public static T Unpack(byte[] data) where T : IMessageBase, new() { - NetworkReader reader = NetworkReaderPool.GetReader(data); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(data)) + { + int msgType = GetId(); - int msgType = GetId(); + int id = networkReader.ReadUInt16(); + if (id != msgType) + throw new FormatException("Invalid message, could not unpack " + typeof(T).FullName); - int id = reader.ReadUInt16(); - if (id != msgType) - throw new FormatException("Invalid message, could not unpack " + typeof(T).FullName); + T message = new T(); + message.Deserialize(networkReader); - T message = typeof(T).IsValueType ? default : new T(); - message.Deserialize(reader); - NetworkReaderPool.Recycle(reader); - return message; + return message; + } } // unpack message after receiving @@ -119,7 +100,10 @@ public static bool UnpackMessage(NetworkReader messageReader, out int msgType) } } - internal static NetworkMessageDelegate MessageHandler(Action handler, bool requireAuthenication) where T : IMessageBase, new() => networkMessage => + internal static NetworkMessageDelegate MessageHandler(Action handler, bool requireAuthenication) + where T : IMessageBase, new() + where C : NetworkConnection + => (conn, reader, channelId) => { // protect against DOS attacks if attackers try to send invalid // data packets to crash the server/client. there are a thousand @@ -136,29 +120,32 @@ public static bool UnpackMessage(NetworkReader messageReader, out int msgType) T message = default; try { - if (requireAuthenication && !networkMessage.conn.isAuthenticated) + if (requireAuthenication && !conn.isAuthenticated) { // message requires authentication, but the connection was not authenticated - Debug.LogWarning($"Closing connection: {networkMessage.conn.connectionId}. Received message {typeof(T)} that required authentication, but the user has not authenticated yet"); - networkMessage.conn.Disconnect(); + logger.LogWarning($"Closing connection: {conn}. Received message {typeof(T)} that required authentication, but the user has not authenticated yet"); + conn.Disconnect(); return; } - message = networkMessage.ReadMessage(); + // if it is a value type, just use defult(T) + // otherwise allocate a new instance + message = default(T) != null ? default(T) : new T(); + message.Deserialize(reader); } catch (Exception exception) { - Debug.LogError("Closed connection: " + networkMessage.conn.connectionId + ". This can happen if the other side accidentally (or an attacker intentionally) sent invalid data. Reason: " + exception); - networkMessage.conn.Disconnect(); + logger.LogError("Closed connection: " + conn + ". This can happen if the other side accidentally (or an attacker intentionally) sent invalid data. Reason: " + exception); + conn.Disconnect(); return; } finally { // TODO: Figure out the correct channel - NetworkDiagnostics.OnReceive(message, networkMessage.channelId, networkMessage.reader.Length); + NetworkDiagnostics.OnReceive(message, channelId, reader.Length); } - handler(networkMessage.conn, message); + handler((C)conn, message); }; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Messages.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Messages.cs index 6d2478c..57fef86 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Messages.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Messages.cs @@ -1,6 +1,5 @@ using System; using UnityEngine; -using UnityEngine.SceneManagement; namespace Mirror { @@ -20,144 +19,24 @@ public virtual void Deserialize(NetworkReader reader) { } public virtual void Serialize(NetworkWriter writer) { } } - #region General Typed Messages - public class StringMessage : MessageBase - { - public string value; - - public StringMessage() { } - - public StringMessage(string v) - { - value = v; - } - - public override void Deserialize(NetworkReader reader) - { - value = reader.ReadString(); - } - - public override void Serialize(NetworkWriter writer) - { - writer.WriteString(value); - } - } - - public class ByteMessage : MessageBase - { - public byte value; - - public ByteMessage() { } - - public ByteMessage(byte v) - { - value = v; - } - - public override void Deserialize(NetworkReader reader) - { - value = reader.ReadByte(); - } - - public override void Serialize(NetworkWriter writer) - { - writer.WriteByte(value); - } - } - - public class BytesMessage : MessageBase - { - public byte[] value; - - public BytesMessage() { } - - public BytesMessage(byte[] v) - { - value = v; - } - - public override void Deserialize(NetworkReader reader) - { - value = reader.ReadBytesAndSize(); - } - - public override void Serialize(NetworkWriter writer) - { - writer.WriteBytesAndSize(value); - } - } - - public class IntegerMessage : MessageBase - { - public int value; - - public IntegerMessage() { } - - public IntegerMessage(int v) - { - value = v; - } - - public override void Deserialize(NetworkReader reader) - { - value = reader.ReadPackedInt32(); - } - - public override void Serialize(NetworkWriter writer) - { - writer.WritePackedInt32(value); - } - } - - public class DoubleMessage : MessageBase - { - public double value; - - public DoubleMessage() { } - - public DoubleMessage(double v) - { - value = v; - } - - public override void Deserialize(NetworkReader reader) - { - value = reader.ReadDouble(); - } - - public override void Serialize(NetworkWriter writer) - { - writer.WriteDouble(value); - } - } - - public class EmptyMessage : MessageBase - { - public override void Deserialize(NetworkReader reader) { } - - public override void Serialize(NetworkWriter writer) { } - } - #endregion - #region Public System Messages - public struct ErrorMessage : IMessageBase { - public byte error; + public byte value; public ErrorMessage(byte v) { - error = v; + value = v; } public void Deserialize(NetworkReader reader) { - error = reader.ReadByte(); + value = reader.ReadByte(); } public void Serialize(NetworkWriter writer) { - writer.WriteByte(error); + writer.WriteByte(value); } } @@ -177,31 +56,16 @@ public void Serialize(NetworkWriter writer) { } public struct AddPlayerMessage : IMessageBase { - /// - /// Obsolete: Create your own message instead. See Custom Players - /// - [Obsolete("Create your own message instead. See https://mirror-networking.com/docs/Guides/GameObjects/SpawnPlayerCustom.html")] - public byte[] value; - - /// - /// Obsolete: Create your own message instead. See Custom Players - /// - [Obsolete("Create your own message instead. See https://mirror-networking.com/docs/Guides/GameObjects/SpawnPlayerCustom.html")] - public void Deserialize(NetworkReader reader) - { - value = reader.ReadBytesAndSize(); - } + public void Deserialize(NetworkReader reader) { } - /// - /// Obsolete: Create your own message instead. See Custom Players - /// - [Obsolete("Create your own message instead. See https://mirror-networking.com/docs/Guides/GameObjects/SpawnPlayerCustom.html")] - public void Serialize(NetworkWriter writer) - { - writer.WriteBytesAndSize(value); - } + public void Serialize(NetworkWriter writer) { } } + // Deprecated 5/2/2020 + /// + /// Obsolete: Removed as a security risk. Use NetworkServer.RemovePlayerForConnection instead. + /// + [Obsolete("Removed as a security risk. Use NetworkServer.RemovePlayerForConnection(NetworkConnection conn, bool keepAuthority = false) instead")] public struct RemovePlayerMessage : IMessageBase { public void Deserialize(NetworkReader reader) { } @@ -226,18 +90,22 @@ public void Serialize(NetworkWriter writer) { } public struct SceneMessage : IMessageBase { public string sceneName; - public SceneOperation sceneOperation; // Normal = 0, LoadAdditive = 1, UnloadAdditive = 2 + // Normal = 0, LoadAdditive = 1, UnloadAdditive = 2 + public SceneOperation sceneOperation; + public bool customHandling; public void Deserialize(NetworkReader reader) { sceneName = reader.ReadString(); sceneOperation = (SceneOperation)reader.ReadByte(); + customHandling = reader.ReadBoolean(); } public void Serialize(NetworkWriter writer) { writer.WriteString(sceneName); writer.WriteByte((byte)sceneOperation); + writer.WriteBoolean(customHandling); } } @@ -264,7 +132,8 @@ public void Deserialize(NetworkReader reader) { netId = reader.ReadPackedUInt32(); componentIndex = (int)reader.ReadPackedUInt32(); - functionHash = reader.ReadInt32(); // hash is always 4 full bytes, WritePackedInt would send 1 extra byte here + // hash is always 4 full bytes, WritePackedInt would send 1 extra byte here + functionHash = reader.ReadInt32(); payload = reader.ReadBytesAndSizeSegment(); } @@ -290,7 +159,8 @@ public void Deserialize(NetworkReader reader) { netId = reader.ReadPackedUInt32(); componentIndex = (int)reader.ReadPackedUInt32(); - functionHash = reader.ReadInt32(); // hash is always 4 full bytes, WritePackedInt would send 1 extra byte here + // hash is always 4 full bytes, WritePackedInt would send 1 extra byte here + functionHash = reader.ReadInt32(); payload = reader.ReadBytesAndSizeSegment(); } @@ -316,7 +186,8 @@ public void Deserialize(NetworkReader reader) { netId = reader.ReadPackedUInt32(); componentIndex = (int)reader.ReadPackedUInt32(); - functionHash = reader.ReadInt32(); // hash is always 4 full bytes, WritePackedInt would send 1 extra byte here + // hash is always 4 full bytes, WritePackedInt would send 1 extra byte here + functionHash = reader.ReadInt32(); payload = reader.ReadBytesAndSizeSegment(); } @@ -331,58 +202,57 @@ public void Serialize(NetworkWriter writer) #endregion #region Internal System Messages - public struct SpawnPrefabMessage : IMessageBase - { - public uint netId; - public bool owner; - public Guid assetId; - public Vector3 position; - public Quaternion rotation; - public Vector3 scale; - // the serialized component data - // -> ArraySegment to avoid unnecessary allocations - public ArraySegment payload; - - public void Deserialize(NetworkReader reader) - { - netId = reader.ReadPackedUInt32(); - owner = reader.ReadBoolean(); - assetId = reader.ReadGuid(); - position = reader.ReadVector3(); - rotation = reader.ReadQuaternion(); - scale = reader.ReadVector3(); - payload = reader.ReadBytesAndSizeSegment(); - } - - public void Serialize(NetworkWriter writer) - { - writer.WritePackedUInt32(netId); - writer.WriteBoolean(owner); - writer.WriteGuid(assetId); - writer.WriteVector3(position); - writer.WriteQuaternion(rotation); - writer.WriteVector3(scale); - writer.WriteBytesAndSizeSegment(payload); - } - } - - public struct SpawnSceneObjectMessage : IMessageBase + public struct SpawnMessage : IMessageBase { + /// + /// netId of new or existing object + /// public uint netId; - public bool owner; + /// + /// Is the spawning object the local player. Sets ClientScene.localPlayer + /// + public bool isLocalPlayer; + /// + /// Sets hasAuthority on the spawned object + /// + public bool isOwner; + /// + /// The id of the scene object to spawn + /// public ulong sceneId; + /// + /// The id of the prefab to spawn + /// If sceneId != 0 then it is used instead of assetId + /// + public Guid assetId; + /// + /// Local position + /// public Vector3 position; + /// + /// Local rotation + /// public Quaternion rotation; + /// + /// Local scale + /// public Vector3 scale; - // the serialized component data - // -> ArraySegment to avoid unnecessary allocations + /// + /// The serialized component data + /// ArraySegment to avoid unnecessary allocations + /// public ArraySegment payload; public void Deserialize(NetworkReader reader) { netId = reader.ReadPackedUInt32(); - owner = reader.ReadBoolean(); - sceneId = reader.ReadUInt64(); + isLocalPlayer = reader.ReadBoolean(); + isOwner = reader.ReadBoolean(); + sceneId = reader.ReadPackedUInt64(); + if (sceneId == 0) + { + assetId = reader.ReadGuid(); + } position = reader.ReadVector3(); rotation = reader.ReadQuaternion(); scale = reader.ReadVector3(); @@ -392,8 +262,13 @@ public void Deserialize(NetworkReader reader) public void Serialize(NetworkWriter writer) { writer.WritePackedUInt32(netId); - writer.WriteBoolean(owner); - writer.WriteUInt64(sceneId); + writer.WriteBoolean(isLocalPlayer); + writer.WriteBoolean(isOwner); + writer.WritePackedUInt64(sceneId); + if (sceneId == 0) + { + writer.WriteGuid(assetId); + } writer.WriteVector3(position); writer.WriteQuaternion(rotation); writer.WriteVector3(scale); @@ -445,24 +320,6 @@ public void Serialize(NetworkWriter writer) } } - public struct ClientAuthorityMessage : IMessageBase - { - public uint netId; - public bool authority; - - public void Deserialize(NetworkReader reader) - { - netId = reader.ReadPackedUInt32(); - authority = reader.ReadBoolean(); - } - - public void Serialize(NetworkWriter writer) - { - writer.WritePackedUInt32(netId); - writer.WriteBoolean(authority); - } - } - public struct UpdateVarsMessage : IMessageBase { public uint netId; diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Mirror.asmdef b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Mirror.asmdef index 4f3dbbd..c616ae7 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Mirror.asmdef +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Mirror.asmdef @@ -1,8 +1,15 @@ { "name": "Mirror", - "references": [], + "references": [ + "Mirror.CompilerSymbols", + "Ninja.WebSockets" + ], "optionalUnityReferences": [], "includePlatforms": [], "excludePlatforms": [], - "allowUnsafeCode": false + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] } \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkAuthenticator.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkAuthenticator.cs index 2c673ff..f35d7fe 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkAuthenticator.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkAuthenticator.cs @@ -35,7 +35,7 @@ public abstract class NetworkAuthenticator : MonoBehaviour /// Called on server from StartServer to initialize the Authenticator /// Server message handlers should be registered in this method. /// - public virtual void OnStartServer() {} + public virtual void OnStartServer() { } // This will get more code in the near future internal void OnServerAuthenticateInternal(NetworkConnection conn) @@ -57,7 +57,7 @@ internal void OnServerAuthenticateInternal(NetworkConnection conn) /// Called on client from StartClient to initialize the Authenticator /// Client message handlers should be registered in this method. /// - public virtual void OnStartClient() {} + public virtual void OnStartClient() { } // This will get more code in the near future internal void OnClientAuthenticateInternal(NetworkConnection conn) @@ -76,7 +76,7 @@ internal void OnClientAuthenticateInternal(NetworkConnection conn) void OnValidate() { #if UNITY_EDITOR - // automatically assign NetworkManager field if we add this to NetworkManager + // automatically assign authenticator field if we add this to NetworkManager NetworkManager manager = GetComponent(); if (manager != null && manager.authenticator == null) { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkBehaviour.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkBehaviour.cs index c56b8eb..22f1fae 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkBehaviour.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkBehaviour.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using Mirror.RemoteCalls; using UnityEngine; namespace Mirror @@ -18,10 +19,13 @@ public enum SyncMode { Observers, Owner } /// The NetworkBehaviour component requires a NetworkIdentity on the game object. There can be multiple NetworkBehaviours on a single game object. For an object with sub-components in a hierarchy, the NetworkIdentity must be on the root object, and NetworkBehaviour scripts must also be on the root object. /// Some of the built-in components of the networking system are derived from NetworkBehaviour, including NetworkTransport, NetworkAnimator and NetworkProximityChecker. /// - [RequireComponent(typeof(NetworkIdentity))] [AddComponentMenu("")] - public class NetworkBehaviour : MonoBehaviour + [RequireComponent(typeof(NetworkIdentity))] + [HelpURL("https://mirror-networking.com/docs/Guides/NetworkBehaviour.html")] + public abstract class NetworkBehaviour : MonoBehaviour { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkBehaviour)); + internal float lastSyncTime; // hidden because NetworkBehaviourInspector shows it only if has OnSerialize. @@ -34,13 +38,11 @@ public class NetworkBehaviour : MonoBehaviour /// /// sync interval for OnSerialize (in seconds) /// + [Tooltip("Time in seconds until next change is synchronized to the client. '0' means send immediately if changed. '0.5' means only send changes every 500ms.\n(This is for state synchronization like SyncVars, SyncLists, OnSerialize. Not for Cmds, Rpcs, etc.)")] + // [0,2] should be enough. anything >2s is too laggy anyway. + [Range(0, 2)] [HideInInspector] public float syncInterval = 0.1f; - /// - /// This value is set on the NetworkIdentity and is accessible here for convenient access for scripts. - /// - public bool localPlayerAuthority => netIdentity.localPlayerAuthority; - /// /// Returns true if this object is active on an active server. /// This is only true if the object has been spawned. This is different from NetworkServer.active, which is true if the server itself is active rather than this object being active. @@ -70,7 +72,7 @@ public class NetworkBehaviour : MonoBehaviour /// /// This returns true if this object is the authoritative version of the object in the distributed network application. - /// The localPlayerAuthority value on the NetworkIdentity determines how authority is determined. For most objects, authority is held by the server / host. For objects with localPlayerAuthority set, authority is held by the client of that player. + /// The NetworkIdentity.hasAuthority value on the NetworkIdentity determines how authority is determined. For most objects, authority is held by the server. For objects with NetworkIdentity.hasAuthority set, authority is held by the client of that player. /// public bool hasAuthority => netIdentity.hasAuthority; @@ -81,7 +83,7 @@ public class NetworkBehaviour : MonoBehaviour public uint netId => netIdentity.netId; /// - /// The NetworkConnection associated with this NetworkIdentity. This is only valid for player objects on the server. + /// The NetworkConnection associated with this NetworkIdentity. This is only valid for player objects on the client. /// public NetworkConnection connectionToServer => netIdentity.connectionToServer; @@ -106,12 +108,6 @@ protected void setSyncVarHookGuard(ulong dirtyBit, bool value) syncVarHookGuard &= ~dirtyBit; } - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use syncObjects instead.")] - protected List m_SyncObjects => syncObjects; - /// /// objects that can synchronize themselves, such as synclists /// @@ -135,7 +131,7 @@ public NetworkIdentity netIdentity } if (netIdentityCache == null) { - Debug.LogError("There is no NetworkIdentity on " + name + ". Please add one."); + logger.LogError("There is no NetworkIdentity on " + name + ". Please add one."); } return netIdentityCache; } @@ -157,7 +153,7 @@ public int ComponentIndex } // this should never happen - Debug.LogError("Could not find component in GameObject. You should not add/remove components in networked objects dynamically", this); + logger.LogError("Could not find component in GameObject. You should not add/remove components in networked objects dynamically", this); return -1; } @@ -172,39 +168,27 @@ protected void InitSyncObject(SyncObject syncObject) } #region Commands - - static int GetMethodHash(Type invokeClass, string methodName) - { - // (invokeClass + ":" + cmdName).GetStableHashCode() would cause allocations. - // so hash1 + hash2 is better. - unchecked - { - int hash = invokeClass.FullName.GetStableHashCode(); - return hash * 503 + methodName.GetStableHashCode(); - } - } - [EditorBrowsable(EditorBrowsableState.Never)] - protected void SendCommandInternal(Type invokeClass, string cmdName, NetworkWriter writer, int channelId) + protected void SendCommandInternal(Type invokeClass, string cmdName, NetworkWriter writer, int channelId, bool ignoreAuthority = false) { // this was in Weaver before // NOTE: we could remove this later to allow calling Cmds on Server // to avoid Wrapper functions. a lot of people requested this. if (!NetworkClient.active) { - Debug.LogError("Command Function " + cmdName + " called on server without an active client."); + logger.LogError("Command Function " + cmdName + " called on server without an active client."); return; } // local players can always send commands, regardless of authority, other objects must have authority. - if (!(isLocalPlayer || hasAuthority)) + if (!(ignoreAuthority || isLocalPlayer || hasAuthority)) { - Debug.LogWarning("Trying to send command for object without authority."); + logger.LogWarning($"Trying to send command for object without authority. {invokeClass.ToString()}.{cmdName}"); return; } if (ClientScene.readyConnection == null) { - Debug.LogError("Send command attempted with no client running [client=" + connectionToServer + "]."); + logger.LogError("Send command attempted with no client running [client=" + connectionToServer + "]."); return; } @@ -213,8 +197,10 @@ protected void SendCommandInternal(Type invokeClass, string cmdName, NetworkWrit { netId = netId, componentIndex = ComponentIndex, - functionHash = GetMethodHash(invokeClass, cmdName), // type+func so Inventory.RpcUse != Equipment.RpcUse - payload = writer.ToArraySegment() // segment to avoid reader allocations + // type+func so Inventory.RpcUse != Equipment.RpcUse + functionHash = RemoteCallHelper.GetMethodHash(invokeClass, cmdName), + // segment to avoid reader allocations + payload = writer.ToArraySegment() }; ClientScene.readyConnection.Send(message, channelId); @@ -229,24 +215,24 @@ protected void SendCommandInternal(Type invokeClass, string cmdName, NetworkWrit [EditorBrowsable(EditorBrowsableState.Never)] public virtual bool InvokeCommand(int cmdHash, NetworkReader reader) { - return InvokeHandlerDelegate(cmdHash, MirrorInvokeType.Command, reader); + return RemoteCallHelper.InvokeHandlerDelegate(cmdHash, MirrorInvokeType.Command, reader, this); } #endregion #region Client RPCs [EditorBrowsable(EditorBrowsableState.Never)] - protected void SendRPCInternal(Type invokeClass, string rpcName, NetworkWriter writer, int channelId) + protected void SendRPCInternal(Type invokeClass, string rpcName, NetworkWriter writer, int channelId, bool excludeOwner) { // this was in Weaver before if (!NetworkServer.active) { - Debug.LogError("RPC Function " + rpcName + " called on Client."); + logger.LogError("RPC Function " + rpcName + " called on Client."); return; } // This cannot use NetworkServer.active, as that is not specific to this object. if (!isServer) { - Debug.LogWarning("ClientRpc " + rpcName + " called on un-spawned object: " + name); + logger.LogWarning("ClientRpc " + rpcName + " called on un-spawned object: " + name); return; } @@ -255,11 +241,16 @@ protected void SendRPCInternal(Type invokeClass, string rpcName, NetworkWriter w { netId = netId, componentIndex = ComponentIndex, - functionHash = GetMethodHash(invokeClass, rpcName), // type+func so Inventory.RpcUse != Equipment.RpcUse - payload = writer.ToArraySegment() // segment to avoid reader allocations + // type+func so Inventory.RpcUse != Equipment.RpcUse + functionHash = RemoteCallHelper.GetMethodHash(invokeClass, rpcName), + // segment to avoid reader allocations + payload = writer.ToArraySegment() }; - NetworkServer.SendToReady(netIdentity, message, channelId); + // The public facing parameter is excludeOwner in [ClientRpc] + // so we negate it here to logically align with SendToReady. + bool includeOwner = !excludeOwner; + NetworkServer.SendToReady(netIdentity, message, includeOwner, channelId); } [EditorBrowsable(EditorBrowsableState.Never)] @@ -268,7 +259,7 @@ protected void SendTargetRPCInternal(NetworkConnection conn, Type invokeClass, s // this was in Weaver before if (!NetworkServer.active) { - Debug.LogError("TargetRPC Function " + rpcName + " called on client."); + logger.LogError("TargetRPC Function " + rpcName + " called on client."); return; } // connection parameter is optional. assign if null. @@ -277,15 +268,15 @@ protected void SendTargetRPCInternal(NetworkConnection conn, Type invokeClass, s conn = connectionToClient; } // this was in Weaver before - if (conn is ULocalConnectionToServer) + if (conn is NetworkConnectionToServer) { - Debug.LogError("TargetRPC Function " + rpcName + " called on connection to server"); + logger.LogError("TargetRPC Function " + rpcName + " called on connection to server"); return; } // This cannot use NetworkServer.active, as that is not specific to this object. if (!isServer) { - Debug.LogWarning("TargetRpc " + rpcName + " called on un-spawned object: " + name); + logger.LogWarning("TargetRpc " + rpcName + " called on un-spawned object: " + name); return; } @@ -294,8 +285,10 @@ protected void SendTargetRPCInternal(NetworkConnection conn, Type invokeClass, s { netId = netId, componentIndex = ComponentIndex, - functionHash = GetMethodHash(invokeClass, rpcName), // type+func so Inventory.RpcUse != Equipment.RpcUse - payload = writer.ToArraySegment() // segment to avoid reader allocations + // type+func so Inventory.RpcUse != Equipment.RpcUse + functionHash = RemoteCallHelper.GetMethodHash(invokeClass, rpcName), + // segment to avoid reader allocations + payload = writer.ToArraySegment() }; conn.Send(message, channelId); @@ -310,7 +303,7 @@ protected void SendTargetRPCInternal(NetworkConnection conn, Type invokeClass, s [EditorBrowsable(EditorBrowsableState.Never)] public virtual bool InvokeRPC(int rpcHash, NetworkReader reader) { - return InvokeHandlerDelegate(rpcHash, MirrorInvokeType.ClientRpc, reader); + return RemoteCallHelper.InvokeHandlerDelegate(rpcHash, MirrorInvokeType.ClientRpc, reader, this); } #endregion @@ -320,7 +313,7 @@ protected void SendEventInternal(Type invokeClass, string eventName, NetworkWrit { if (!NetworkServer.active) { - Debug.LogWarning("SendEvent no server?"); + logger.LogWarning("SendEvent no server?"); return; } @@ -329,8 +322,10 @@ protected void SendEventInternal(Type invokeClass, string eventName, NetworkWrit { netId = netId, componentIndex = ComponentIndex, - functionHash = GetMethodHash(invokeClass, eventName), // type+func so Inventory.RpcUse != Equipment.RpcUse - payload = writer.ToArraySegment() // segment to avoid reader allocations + // type+func so Inventory.RpcUse != Equipment.RpcUse + functionHash = RemoteCallHelper.GetMethodHash(invokeClass, eventName), + // segment to avoid reader allocations + payload = writer.ToArraySegment() }; NetworkServer.SendToReady(netIdentity, message, channelId); @@ -345,119 +340,35 @@ protected void SendEventInternal(Type invokeClass, string eventName, NetworkWrit [EditorBrowsable(EditorBrowsableState.Never)] public virtual bool InvokeSyncEvent(int eventHash, NetworkReader reader) { - return InvokeHandlerDelegate(eventHash, MirrorInvokeType.SyncEvent, reader); + return RemoteCallHelper.InvokeHandlerDelegate(eventHash, MirrorInvokeType.SyncEvent, reader, this); } #endregion - #region Code Gen Path Helpers - /// - /// Delegate for Command functions. - /// - /// - /// - public delegate void CmdDelegate(NetworkBehaviour obj, NetworkReader reader); - - protected class Invoker - { - public MirrorInvokeType invokeType; - public Type invokeClass; - public CmdDelegate invokeFunction; - } - - static readonly Dictionary cmdHandlerDelegates = new Dictionary(); + #region Helpers - // helper function register a Command/Rpc/SyncEvent delegate + // helper function for [SyncVar] GameObjects. + // IMPORTANT: keep as 'protected', not 'internal', otherwise Weaver + // can't resolve it [EditorBrowsable(EditorBrowsableState.Never)] - protected static void RegisterDelegate(Type invokeClass, string cmdName, MirrorInvokeType invokerType, CmdDelegate func) + protected bool SyncVarGameObjectEqual(GameObject newGameObject, uint netIdField) { - int cmdHash = GetMethodHash(invokeClass, cmdName); // type+func so Inventory.RpcUse != Equipment.RpcUse - - if (cmdHandlerDelegates.ContainsKey(cmdHash)) + uint newNetId = 0; + if (newGameObject != null) { - // something already registered this hash - Invoker oldInvoker = cmdHandlerDelegates[cmdHash]; - if (oldInvoker.invokeClass == invokeClass && oldInvoker.invokeType == invokerType && oldInvoker.invokeFunction == func) + NetworkIdentity identity = newGameObject.GetComponent(); + if (identity != null) { - // it's all right, it was the same function - return; + newNetId = identity.netId; + if (newNetId == 0) + { + logger.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?"); + } } - - Debug.LogError($"Function {oldInvoker.invokeClass}.{oldInvoker.invokeFunction.GetMethodName()} and {invokeClass}.{oldInvoker.invokeFunction.GetMethodName()} have the same hash. Please rename one of them"); } - Invoker invoker = new Invoker - { - invokeType = invokerType, - invokeClass = invokeClass, - invokeFunction = func - }; - cmdHandlerDelegates[cmdHash] = invoker; - if (LogFilter.Debug) Debug.Log("RegisterDelegate hash:" + cmdHash + " invokerType: " + invokerType + " method:" + func.GetMethodName()); - } - - [EditorBrowsable(EditorBrowsableState.Never)] - protected static void RegisterCommandDelegate(Type invokeClass, string cmdName, CmdDelegate func) - { - RegisterDelegate(invokeClass, cmdName, MirrorInvokeType.Command, func); - } - - [EditorBrowsable(EditorBrowsableState.Never)] - protected static void RegisterRpcDelegate(Type invokeClass, string rpcName, CmdDelegate func) - { - RegisterDelegate(invokeClass, rpcName, MirrorInvokeType.ClientRpc, func); - } - - [EditorBrowsable(EditorBrowsableState.Never)] - protected static void RegisterEventDelegate(Type invokeClass, string eventName, CmdDelegate func) - { - RegisterDelegate(invokeClass, eventName, MirrorInvokeType.SyncEvent, func); - } - - static bool GetInvokerForHash(int cmdHash, MirrorInvokeType invokeType, out Invoker invoker) - { - if (cmdHandlerDelegates.TryGetValue(cmdHash, out invoker) && - invoker != null && - invoker.invokeType == invokeType) - { - return true; - } - - // debug message if not found, or null, or mismatched type - // (no need to throw an error, an attacker might just be trying to - // call an cmd with an rpc's hash) - if (LogFilter.Debug) Debug.Log("GetInvokerForHash hash:" + cmdHash + " not found"); - return false; - } - // InvokeCmd/Rpc/SyncEventDelegate can all use the same function here - internal bool InvokeHandlerDelegate(int cmdHash, MirrorInvokeType invokeType, NetworkReader reader) - { - if (GetInvokerForHash(cmdHash, invokeType, out Invoker invoker) && - invoker.invokeClass.IsInstanceOfType(this)) - { - invoker.invokeFunction(this, reader); - return true; - } - return false; - } - - /// - /// Gets the handler function for a given hash - /// Can be used by profilers and debuggers - /// - /// rpc function hash - /// The function delegate that will handle the command - public static CmdDelegate GetRpcHandler(int cmdHash) - { - if (cmdHandlerDelegates.TryGetValue(cmdHash, out Invoker invoker)) - { - return invoker.invokeFunction; - } - return null; + return newNetId == netIdField; } - #endregion - - #region Helpers // helper function for [SyncVar] GameObjects. [EditorBrowsable(EditorBrowsableState.Never)] protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gameObjectField, ulong dirtyBit, ref uint netIdField) @@ -474,19 +385,16 @@ protected void SetSyncVarGameObject(GameObject newGameObject, ref GameObject gam newNetId = identity.netId; if (newNetId == 0) { - Debug.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?"); + logger.LogWarning("SetSyncVarGameObject GameObject " + newGameObject + " has a zero netId. Maybe it is not spawned yet?"); } } } - // netId changed? - if (newNetId != netIdField) - { - if (LogFilter.Debug) Debug.Log("SetSyncVar GameObject " + GetType().Name + " bit [" + dirtyBit + "] netfieldId:" + netIdField + "->" + newNetId); - SetDirtyBit(dirtyBit); - gameObjectField = newGameObject; // assign new one on the server, and in case we ever need it on client too - netIdField = newNetId; - } + if (logger.LogEnabled()) logger.Log("SetSyncVar GameObject " + GetType().Name + " bit [" + dirtyBit + "] netfieldId:" + netIdField + "->" + newNetId); + SetDirtyBit(dirtyBit); + // assign new one on the server, and in case we ever need it on client too + gameObjectField = newGameObject; + netIdField = newNetId; } // helper function for [SyncVar] GameObjects. @@ -503,10 +411,30 @@ protected GameObject GetSyncVarGameObject(uint netId, ref GameObject gameObjectF // client always looks up based on netId because objects might get in and out of range // over and over again, which shouldn't null them forever if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity) && identity != null) - return identity.gameObject; + return gameObjectField = identity.gameObject; return null; } + // helper function for [SyncVar] NetworkIdentities. + // IMPORTANT: keep as 'protected', not 'internal', otherwise Weaver + // can't resolve it + [EditorBrowsable(EditorBrowsableState.Never)] + protected bool SyncVarNetworkIdentityEqual(NetworkIdentity newIdentity, uint netIdField) + { + uint newNetId = 0; + if (newIdentity != null) + { + newNetId = newIdentity.netId; + if (newNetId == 0) + { + logger.LogWarning("SetSyncVarNetworkIdentity NetworkIdentity " + newIdentity + " has a zero netId. Maybe it is not spawned yet?"); + } + } + + // netId changed? + return newNetId == netIdField; + } + // helper function for [SyncVar] NetworkIdentities. [EditorBrowsable(EditorBrowsableState.Never)] protected void SetSyncVarNetworkIdentity(NetworkIdentity newIdentity, ref NetworkIdentity identityField, ulong dirtyBit, ref uint netIdField) @@ -520,18 +448,15 @@ protected void SetSyncVarNetworkIdentity(NetworkIdentity newIdentity, ref Networ newNetId = newIdentity.netId; if (newNetId == 0) { - Debug.LogWarning("SetSyncVarNetworkIdentity NetworkIdentity " + newIdentity + " has a zero netId. Maybe it is not spawned yet?"); + logger.LogWarning("SetSyncVarNetworkIdentity NetworkIdentity " + newIdentity + " has a zero netId. Maybe it is not spawned yet?"); } } - // netId changed? - if (newNetId != netIdField) - { - if (LogFilter.Debug) Debug.Log("SetSyncVarNetworkIdentity NetworkIdentity " + GetType().Name + " bit [" + dirtyBit + "] netIdField:" + netIdField + "->" + newNetId); - SetDirtyBit(dirtyBit); - netIdField = newNetId; - identityField = newIdentity; // assign new one on the server, and in case we ever need it on client too - } + if (logger.LogEnabled()) logger.Log("SetSyncVarNetworkIdentity NetworkIdentity " + GetType().Name + " bit [" + dirtyBit + "] netIdField:" + netIdField + "->" + newNetId); + SetDirtyBit(dirtyBit); + netIdField = newNetId; + // assign new one on the server, and in case we ever need it on client too + identityField = newIdentity; } // helper function for [SyncVar] NetworkIdentities. @@ -547,20 +472,23 @@ protected NetworkIdentity GetSyncVarNetworkIdentity(uint netId, ref NetworkIdent // client always looks up based on netId because objects might get in and out of range // over and over again, which shouldn't null them forever - NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity); - return identity; + NetworkIdentity.spawned.TryGetValue(netId, out identityField); + return identityField; } [EditorBrowsable(EditorBrowsableState.Never)] - protected void SetSyncVar(T value, ref T fieldValue, ulong dirtyBit) + protected bool SyncVarEqual(T value, ref T fieldValue) { // newly initialized or changed value? - if (!EqualityComparer.Default.Equals(value, fieldValue)) - { - if (LogFilter.Debug) Debug.Log("SetSyncVar " + GetType().Name + " bit [" + dirtyBit + "] " + fieldValue + "->" + value); - SetDirtyBit(dirtyBit); - fieldValue = value; - } + return EqualityComparer.Default.Equals(value, fieldValue); + } + + [EditorBrowsable(EditorBrowsableState.Never)] + protected void SetSyncVar(T value, ref T fieldValue, ulong dirtyBit) + { + if (logger.LogEnabled()) logger.Log("SetSyncVar " + GetType().Name + " bit [" + dirtyBit + "] " + fieldValue + "->" + value); + SetDirtyBit(dirtyBit); + fieldValue = value; } #endregion @@ -630,13 +558,24 @@ internal bool IsDirty() /// True if data was written. public virtual bool OnSerialize(NetworkWriter writer, bool initialState) { + bool objectWritten = false; + // if initialState: write all SyncVars. + // otherwise write dirtyBits+dirty SyncVars if (initialState) { - return SerializeObjectsAll(writer); + objectWritten = SerializeObjectsAll(writer); } - return SerializeObjectsDelta(writer); + else + { + objectWritten = SerializeObjectsDelta(writer); + } + + bool syncVarWritten = SerializeSyncVars(writer, initialState); + + return objectWritten || syncVarWritten; } + /// /// Virtual function to override to receive custom serialization data. The corresponding function to send serialization data is OnSerialize(). /// @@ -652,9 +591,37 @@ public virtual void OnDeserialize(NetworkReader reader, bool initialState) { DeSerializeObjectsDelta(reader); } + + DeserializeSyncVars(reader, initialState); } - ulong DirtyObjectBits() + // Don't rename. Weaver uses this exact function name. + public virtual bool SerializeSyncVars(NetworkWriter writer, bool initialState) + { + return false; + + // SyncVar are writen here in subclass + + // if initialState + // write all SyncVars + // else + // write syncVarDirtyBits + // write dirty SyncVars + } + + // Don't rename. Weaver uses this exact function name. + public virtual void DeserializeSyncVars(NetworkReader reader, bool initialState) + { + // SyncVars are read here in subclass + + // if initialState + // read all SyncVars + // else + // read syncVarDirtyBits + // read dirty SyncVars + } + + internal ulong DirtyObjectBits() { ulong dirtyObjects = 0; for (int i = 0; i < syncObjects.Count; i++) @@ -698,7 +665,7 @@ public bool SerializeObjectsDelta(NetworkWriter writer) return dirty; } - void DeSerializeObjectsAll(NetworkReader reader) + internal void DeSerializeObjectsAll(NetworkReader reader) { for (int i = 0; i < syncObjects.Count; i++) { @@ -707,7 +674,7 @@ void DeSerializeObjectsAll(NetworkReader reader) } } - void DeSerializeObjectsDelta(NetworkReader reader) + internal void DeSerializeObjectsDelta(NetworkReader reader) { ulong dirty = reader.ReadPackedUInt64(); for (int i = 0; i < syncObjects.Count; i++) @@ -720,73 +687,69 @@ void DeSerializeObjectsDelta(NetworkReader reader) } } + internal void ResetSyncObjects() + { + foreach (SyncObject syncObject in syncObjects) + { + syncObject.Reset(); + } + } + + // Deprecated 04/20/2020 + /// + /// Obsolete: Use OnStopClient() instead + /// + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Override OnStopClient() instead")] + public virtual void OnNetworkDestroy() { } + /// /// This is invoked on clients when the server has caused this object to be destroyed. /// This can be used as a hook to invoke effects or do client specific cleanup. /// - [EditorBrowsable(EditorBrowsableState.Never)] - public virtual void OnNetworkDestroy() {} + public virtual void OnStopClient() + { +#pragma warning disable CS0618 // Type or member is obsolete + // backwards compatibility + OnNetworkDestroy(); +#pragma warning restore CS0618 // Type or member is obsolete + } /// /// This is invoked for NetworkBehaviour objects when they become active on the server. /// This could be triggered by NetworkServer.Listen() for objects in the scene, or by NetworkServer.Spawn() for objects that are dynamically created. /// This will be called for objects on a "host" as well as for object on a dedicated server. /// - public virtual void OnStartServer() {} + public virtual void OnStartServer() { } + + /// + /// Invoked on the server when the object is unspawned + /// Useful for saving object data in persistant storage + /// + public virtual void OnStopServer() { } /// /// Called on every NetworkBehaviour when it is activated on a client. /// Objects on the host have this function called, as there is a local client on the host. The values of SyncVars on object are guaranteed to be initialized correctly with the latest state from the server when this function is called on the client. /// - public virtual void OnStartClient() {} + public virtual void OnStartClient() { } /// /// Called when the local player object has been set up. /// This happens after OnStartClient(), as it is triggered by an ownership message from the server. This is an appropriate place to activate components or functionality that should only be active for the local player, such as cameras and input. /// - public virtual void OnStartLocalPlayer() {} + public virtual void OnStartLocalPlayer() { } /// - /// This is invoked on behaviours that have authority, based on context and 'NetworkIdentity.localPlayerAuthority.' - /// This is called after OnStartServer and OnStartClient. - /// When is called on the server, this will be called on the client that owns the object. When an object is spawned with NetworkServer.SpawnWithClientAuthority, this will be called on the client that owns the object. + /// This is invoked on behaviours that have authority, based on context and NetworkIdentity.hasAuthority. + /// This is called after OnStartServer and before OnStartClient. + /// When AssignClientAuthority is called on the server, this will be called on the client that owns the object. When an object is spawned with NetworkServer.Spawn with a NetworkConnection parameter included, this will be called on the client that owns the object. /// - public virtual void OnStartAuthority() {} + public virtual void OnStartAuthority() { } /// /// This is invoked on behaviours when authority is removed. /// When NetworkIdentity.RemoveClientAuthority is called on the server, this will be called on the client that owns the object. /// - public virtual void OnStopAuthority() {} - - /// - /// Callback used by the visibility system to (re)construct the set of observers that can see this object. - /// Implementations of this callback should add network connections of players that can see this object to the observers set. - /// - /// The new set of observers for this object. - /// True if the set of observers is being built for the first time. - /// true when overwriting so that Mirror knows that we wanted to rebuild observers ourselves. otherwise it uses built in rebuild. - public virtual bool OnRebuildObservers(HashSet observers, bool initialize) - { - return false; - } - - /// - /// Callback used by the visibility system for objects on a host. - /// Objects on a host (with a local client) cannot be disabled or destroyed when they are not visibile to the local client. So this function is called to allow custom code to hide these objects. A typical implementation will disable renderer components on the object. This is only called on local clients on a host. - /// - /// New visibility state. - public virtual void OnSetLocalVisibility(bool vis) {} - - /// - /// Callback used by the visibility system to determine if an observer (player) can see this object. - /// If this function returns true, the network connection will be added as an observer. - /// - /// Network connection of a player. - /// True if the player can see this object. - public virtual bool OnCheckObserver(NetworkConnection conn) - { - return true; - } + public virtual void OnStopAuthority() { } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkClient.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkClient.cs index 7c8c1c9..7ffd904 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkClient.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkClient.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using UnityEngine; namespace Mirror @@ -13,33 +12,20 @@ public enum ConnectState Disconnected } - // TODO make fully static after removing obsoleted singleton! /// /// This is a network client class used by the networking system. It contains a NetworkConnection that is used to connect to a network server. /// The NetworkClient handle connection state, messages handlers, and connection configuration. There can be many NetworkClient instances in a process at a time, but only one that is connected to a game server (NetworkServer) that uses spawned objects. /// NetworkClient has an internal update function where it handles events from the transport layer. This includes asynchronous connect events, disconnect events and incoming data from a server. /// The NetworkManager has a NetworkClient instance that it uses for games that it starts, but the NetworkClient may be used by itself. /// - public class NetworkClient + public static class NetworkClient { - /// - /// Obsolete: Use directly. - /// Singleton isn't needed anymore, all functions are static now. For example: NetworkClient.Send(message) instead of NetworkClient.singleton.Send(message). - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkClient directly. Singleton isn't needed anymore, all functions are static now. For example: NetworkClient.Send(message) instead of NetworkClient.singleton.Send(message).")] - public static NetworkClient singleton = new NetworkClient(); - - /// - /// A list of all the active network clients in the current process. - /// This is NOT a list of all clients that are connected to the remote server, it is client instances on the local game. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkClient directly instead. There is always exactly one client.")] - public static List allClients => new List { singleton }; + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkClient)); /// /// The registered network message handlers. /// - public static readonly Dictionary handlers = new Dictionary(); + static readonly Dictionary handlers = new Dictionary(); /// /// The NetworkConnection object this client is using. @@ -70,18 +56,13 @@ public class NetworkClient /// public static bool isLocalClient => connection is ULocalConnectionToServer; - // local client in host mode might call Cmds/Rpcs during Update, but we - // want to apply them in LateUpdate like all other Transport messages - // to avoid race conditions. keep packets in Queue until LateUpdate. - internal static Queue localClientPacketQueue = new Queue(); - /// /// Connect client to a NetworkServer instance. /// /// public static void Connect(string address) { - if (LogFilter.Debug) Debug.Log("Client Connect: " + address); + if (logger.LogEnabled()) logger.Log("Client Connect: " + address); RegisterSystemHandlers(false); Transport.activeTransport.enabled = true; @@ -91,48 +72,75 @@ public static void Connect(string address) Transport.activeTransport.ClientConnect(address); // setup all the handlers - connection = new NetworkConnection(address, 0); + connection = new NetworkConnectionToServer(); connection.SetHandlers(handlers); } /// - /// connect host mode + /// Connect client to a NetworkServer instance. /// - internal static void ConnectLocalServer() + /// Address of the server to connect to + public static void Connect(Uri uri) { - if (LogFilter.Debug) Debug.Log("Client Connect Local Server"); + if (logger.LogEnabled()) logger.Log("Client Connect: " + uri); + + RegisterSystemHandlers(false); + Transport.activeTransport.enabled = true; + InitializeTransportHandlers(); + + connectState = ConnectState.Connecting; + Transport.activeTransport.ClientConnect(uri); + + // setup all the handlers + connection = new NetworkConnectionToServer(); + connection.SetHandlers(handlers); + } + + public static void ConnectHost() + { + logger.Log("Client Connect Host to Server"); RegisterSystemHandlers(true); connectState = ConnectState.Connected; - // create local connection to server - connection = new ULocalConnectionToServer(); + // create local connection objects and connect them + ULocalConnectionToServer connectionToServer = new ULocalConnectionToServer(); + ULocalConnectionToClient connectionToClient = new ULocalConnectionToClient(); + connectionToServer.connectionToClient = connectionToClient; + connectionToClient.connectionToServer = connectionToServer; + + connection = connectionToServer; connection.SetHandlers(handlers); // create server connection to local client - ULocalConnectionToClient connectionToClient = new ULocalConnectionToClient(); NetworkServer.SetLocalConnection(connectionToClient); - connectionToClient.Send(new ConnectMessage()); } /// - /// Called by the server to set the LocalClient's LocalPlayer object during NetworkServer.AddPlayer() + /// connect host mode + /// + public static void ConnectLocalServer() + { + NetworkServer.OnConnected(NetworkServer.localConnection); + NetworkServer.localConnection.Send(new ConnectMessage()); + } + + /// + /// disconnect host mode. this is needed to call DisconnectMessage for + /// the host client too. /// - /// - internal static void AddLocalPlayer(NetworkIdentity localPlayer) + public static void DisconnectLocalServer() { - if (LogFilter.Debug) Debug.Log("Local client AddLocalPlayer " + localPlayer.gameObject.name + " conn=" + connection.connectionId); - connection.isReady = true; - connection.identity = localPlayer; - if (localPlayer != null) + // only if host connection is running + if (NetworkServer.localConnection != null) { - localPlayer.isClient = true; - NetworkIdentity.spawned[localPlayer.netId] = localPlayer; - localPlayer.connectionToServer = connection; + // TODO ConnectLocalServer manually sends a ConnectMessage to the + // local connection. should we send a DisconnectMessage here too? + // (if we do then we get an Unknown Message ID log) + //NetworkServer.localConnection.Send(new DisconnectMessage()); + NetworkServer.OnDisconnected(NetworkServer.localConnection.connectionId); } - // there is no SystemOwnerMessage for local client. add to ClientScene here instead - ClientScene.InternalAddPlayer(localPlayer); } static void InitializeTransportHandlers() @@ -145,7 +153,7 @@ static void InitializeTransportHandlers() static void OnError(Exception exception) { - Debug.LogException(exception); + logger.LogException(exception); } static void OnDisconnected() @@ -163,7 +171,7 @@ internal static void OnDataReceived(ArraySegment data, int channelId) { connection.TransportReceive(data, channelId); } - else Debug.LogError("Skipped Data message handling because connection is null."); + else logger.LogError("Skipped Data message handling because connection is null."); } static void OnConnected() @@ -179,7 +187,7 @@ static void OnConnected() NetworkTime.UpdateClient(); connection.InvokeHandler(new ConnectMessage(), -1); } - else Debug.LogError("Skipped Connect message handling because connection is null."); + else logger.LogError("Skipped Connect message handling because connection is null."); } /// @@ -221,25 +229,6 @@ static void RemoveTransportHandlers() Transport.activeTransport.OnClientError.RemoveListener(OnError); } - /// - /// Obsolete: Use instead with no message id instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use SendMessage instead with no message id instead")] - public static bool Send(short msgType, MessageBase msg) - { - if (connection != null) - { - if (connectState != ConnectState.Connected) - { - Debug.LogError("NetworkClient Send when not connected to a server"); - return false; - } - return connection.Send(msgType, msg); - } - Debug.LogError("NetworkClient Send with no connection"); - return false; - } - /// /// This sends a network message with a message Id to the server. This message is sent on channel zero, which by default is the reliable channel. /// The message must be an instance of a class derived from MessageBase. @@ -255,30 +244,23 @@ public static bool Send(T message, int channelId = Channels.DefaultReliable) { if (connectState != ConnectState.Connected) { - Debug.LogError("NetworkClient Send when not connected to a server"); + logger.LogError("NetworkClient Send when not connected to a server"); return false; } return connection.Send(message, channelId); } - Debug.LogError("NetworkClient Send with no connection"); + logger.LogError("NetworkClient Send with no connection"); return false; } - internal static void Update() + public static void Update() { - // local or remote connection? - if (isLocalClient) + // local connection? + if (connection is ULocalConnectionToServer localConnection) { - // process internal messages so they are applied at the correct time - while (localClientPacketQueue.Count > 0) - { - NetworkWriter writer = localClientPacketQueue.Dequeue(); - // TODO avoid serializing and deserializng the message - // just pass it as is - OnDataReceived(writer.ToArraySegment(), Channels.DefaultReliable); - NetworkWriterPool.Recycle(writer); - } + localConnection.Update(); } + // remote connection? else { // only update things while connected @@ -289,75 +271,21 @@ internal static void Update() } } - /* TODO use or remove - void GenerateConnectError(byte error) - { - Debug.LogError("Mirror Client Error Connect Error: " + error); - GenerateError(error); - } - - void GenerateDataError(byte error) - { - NetworkError dataError = (NetworkError)error; - Debug.LogError("Mirror Client Data Error: " + dataError); - GenerateError(error); - } - - void GenerateDisconnectError(byte error) - { - NetworkError disconnectError = (NetworkError)error; - Debug.LogError("Mirror Client Disconnect Error: " + disconnectError); - GenerateError(error); - } - - void GenerateError(byte error) + internal static void RegisterSystemHandlers(bool hostMode) { - int msgId = MessageBase.GetId(); - if (handlers.TryGetValue(msgId, out NetworkMessageDelegate msgDelegate)) - { - ErrorMessage msg = new ErrorMessage - { - value = error - }; - - // write the message to a local buffer - NetworkWriter writer = new NetworkWriter(); - msg.Serialize(writer); - - NetworkMessage netMsg = new NetworkMessage - { - msgType = msgId, - reader = new NetworkReader(writer.ToArray()), - conn = connection - }; - msgDelegate(netMsg); - } - } - */ - - /// - /// Obsolete: Use instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkTime.rtt instead")] - public static float GetRTT() - { - return (float)NetworkTime.rtt; - } - - internal static void RegisterSystemHandlers(bool localClient) - { - // local client / regular client react to some messages differently. + // host mode client / regular client react to some messages differently. // but we still need to add handlers for all of them to avoid // 'message id not found' errors. - if (localClient) + if (hostMode) { - RegisterHandler(ClientScene.OnLocalClientObjectDestroy); - RegisterHandler(ClientScene.OnLocalClientObjectHide); + RegisterHandler(ClientScene.OnHostClientObjectDestroy); + RegisterHandler(ClientScene.OnHostClientObjectHide); RegisterHandler((conn, msg) => { }, false); - RegisterHandler(ClientScene.OnLocalClientSpawnPrefab); - RegisterHandler(ClientScene.OnLocalClientSpawnSceneObject); - RegisterHandler((conn, msg) => { }); // host mode doesn't need spawning - RegisterHandler((conn, msg) => { }); // host mode doesn't need spawning + RegisterHandler(ClientScene.OnHostClientSpawn); + // host mode doesn't need spawning + RegisterHandler((conn, msg) => { }); + // host mode doesn't need spawning + RegisterHandler((conn, msg) => { }); RegisterHandler((conn, msg) => { }); } else @@ -365,83 +293,78 @@ internal static void RegisterSystemHandlers(bool localClient) RegisterHandler(ClientScene.OnObjectDestroy); RegisterHandler(ClientScene.OnObjectHide); RegisterHandler(NetworkTime.OnClientPong, false); - RegisterHandler(ClientScene.OnSpawnPrefab); - RegisterHandler(ClientScene.OnSpawnSceneObject); + RegisterHandler(ClientScene.OnSpawn); RegisterHandler(ClientScene.OnObjectSpawnStarted); RegisterHandler(ClientScene.OnObjectSpawnFinished); RegisterHandler(ClientScene.OnUpdateVarsMessage); } - RegisterHandler(ClientScene.OnClientAuthority); RegisterHandler(ClientScene.OnRPCMessage); RegisterHandler(ClientScene.OnSyncEventMessage); } /// - /// Obsolete: Use instead + /// Register a handler for a particular message type. + /// There are several system message types which you can add handlers for. You can also add your own message types. /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use RegisterHandler instead")] - public static void RegisterHandler(int msgType, NetworkMessageDelegate handler) + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void RegisterHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { + int msgType = MessagePacker.GetId(); if (handlers.ContainsKey(msgType)) { - if (LogFilter.Debug) Debug.Log("NetworkClient.RegisterHandler replacing " + handler + " - " + msgType); + logger.LogWarning($"NetworkClient.RegisterHandler replacing handler for {typeof(T).FullName}, id={msgType}. If replacement is intentional, use ReplaceHandler instead to avoid this warning."); } - handlers[msgType] = handler; - } - - /// - /// Obsolete: Use instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use RegisterHandler instead")] - public static void RegisterHandler(MsgType msgType, NetworkMessageDelegate handler) - { - RegisterHandler((int)msgType, handler); + handlers[msgType] = MessagePacker.MessageHandler(handler, requireAuthentication); } /// /// Register a handler for a particular message type. /// There are several system message types which you can add handlers for. You can also add your own message types. /// - /// The message type to unregister. - /// - /// true if the message requires an authenticated connection - public static void RegisterHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void RegisterHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { - int msgType = MessagePacker.GetId(); - if (handlers.ContainsKey(msgType)) - { - if (LogFilter.Debug) Debug.Log("NetworkClient.RegisterHandler replacing " + handler + " - " + msgType); - } - handlers[msgType] = MessagePacker.MessageHandler(handler, requireAuthentication); + RegisterHandler((NetworkConnection _, T value) => { handler(value); }, requireAuthentication); } /// - /// Obsolete: Use instead + /// Replaces a handler for a particular message type. + /// See also RegisterHandler(T)(Action(NetworkConnection, T), bool) /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use UnregisterHandler instead")] - public static void UnregisterHandler(int msgType) + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void ReplaceHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { - handlers.Remove(msgType); + int msgType = MessagePacker.GetId(); + handlers[msgType] = MessagePacker.MessageHandler(handler, requireAuthentication); } /// - /// Obsolete: Use instead + /// Replaces a handler for a particular message type. + /// See also RegisterHandler(T)(Action(NetworkConnection, T), bool) /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use UnregisterHandler instead")] - public static void UnregisterHandler(MsgType msgType) + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void ReplaceHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { - UnregisterHandler((int)msgType); + ReplaceHandler((NetworkConnection _, T value) => { handler(value); }, requireAuthentication); } /// /// Unregisters a network message handler. /// /// The message type to unregister. - public static void UnregisterHandler() where T : IMessageBase + public static bool UnregisterHandler() where T : IMessageBase { // use int to minimize collisions int msgType = MessagePacker.GetId(); - handlers.Remove(msgType); + return handlers.Remove(msgType); } /// @@ -450,19 +373,15 @@ public static void UnregisterHandler() where T : IMessageBase /// public static void Shutdown() { - if (LogFilter.Debug) Debug.Log("Shutting down client."); + logger.Log("Shutting down client."); ClientScene.Shutdown(); connectState = ConnectState.None; handlers.Clear(); - } - - /// - /// Obsolete: Call instead. There is only one client. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Call NetworkClient.Shutdown() instead. There is only one client.")] - public static void ShutdownAll() - { - Shutdown(); + // disconnect the client connection. + // we do NOT call Transport.Shutdown, because someone only called + // NetworkClient.Shutdown. we can't assume that the server is + // supposed to be shut down too! + Transport.activeTransport.ClientDisconnect(); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnection.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnection.cs index 5ef0689..df8d385 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnection.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnection.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.ComponentModel; using UnityEngine; namespace Mirror @@ -13,12 +12,15 @@ namespace Mirror /// A NetworkClient has one NetworkConnection. A NetworkServerSimple manages multiple NetworkConnections. The NetworkServer has multiple "remote" connections and a "local" connection for the local client. /// The NetworkConnection class provides message sending and handling facilities. For sending data over a network, there are methods to send message objects, byte arrays, and NetworkWriter objects. To handle data arriving from the network, handler functions can be registered for message Ids, byte arrays can be processed by HandleBytes(), and NetworkReader object can be processed by HandleReader(). /// NetworkConnection objects also act as observers for networked objects. When a connection is an observer of a networked object with a NetworkIdentity, then the object will be visible to corresponding client for the connection, and incremental state changes will be sent to the client. - /// NetworkConnection objects can "own" networked game objects. Owned objects will be destroyed on the server by default when the connection is destroyed. A connection owns the player objects created by its client, and other objects with client-authority assigned to the corresponding client. /// There are many virtual functions on NetworkConnection that allow its behaviour to be customized. NetworkClient and NetworkServer can both be made to instantiate custom classes derived from NetworkConnection by setting their networkConnectionClass member variable. /// - public class NetworkConnection : IDisposable + public abstract class NetworkConnection : IDisposable { - public readonly HashSet visList = new HashSet(); + public const int LocalConnectionId = 0; + static readonly ILogger logger = LogFactory.GetLogger(); + + // internal so it can be tested + internal readonly HashSet visList = new HashSet(); Dictionary messageHandlers; @@ -30,7 +32,7 @@ public class NetworkConnection : IDisposable /// Transport layers connections begin at one. So on a client with a single connection to a server, the connectionId of that connection will be one. In NetworkServer, the connectionId of the local connection is zero. /// Clients do not know their connectionId on the server, and do not know the connectionId of other clients on the server. /// - public int connectionId = -1; + public readonly int connectionId; /// /// Flag that indicates the client has been authenticated. @@ -52,8 +54,9 @@ public class NetworkConnection : IDisposable /// /// The IP address / URL / FQDN associated with the connection. + /// Can be useful for a game master to do IP Bans etc. /// - public string address; + public abstract string address { get; } /// /// The last time that a message was received on this connection. @@ -61,22 +64,6 @@ public class NetworkConnection : IDisposable /// public float lastMessageTime; - /// - /// Obsolete: use instead - /// - [Obsolete("Use NetworkConnection.identity instead")] - public NetworkIdentity playerController - { - get - { - return identity; - } - internal set - { - identity = value; - } - } - /// /// The NetworkIdentity for this connection. /// @@ -87,7 +74,9 @@ internal set /// This includes the player object for the connection - if it has localPlayerAutority set, and any objects spawned with local authority or set with AssignLocalAuthority. /// This list can be used to validate messages from clients, to ensure that clients are only trying to control objects that they own. /// - public readonly HashSet clientOwnedObjects = new HashSet(); + // IMPORTANT: this needs to be , not . fixes a bug where DestroyOwnedObjects wouldn't find + // the netId anymore: https://github.com/vis2k/Mirror/issues/1380 . Works fine with NetworkIdentity pointers though. + public readonly HashSet clientOwnedObjects = new HashSet(); /// /// Setting this to true will log the contents of network message to the console. @@ -97,40 +86,25 @@ internal set /// ConnectionSend con:1 bytes:11 msgId:5 FB59D743FD120000000000 ConnectionRecv con:1 bytes:27 msgId:8 14F21000000000016800AC3FE090C240437846403CDDC0BD3B0000 /// Note that these are application-level network messages, not protocol-level packets. There will typically be multiple network messages combined in a single protocol packet. /// + [Obsolete("Set logger to Log level instead")] public bool logNetworkMessages; - // this is always true for regular connections, false for local - // connections because it's set in the constructor and never reset. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("isConnected will be removed because it's pointless. A NetworkConnection is always connected.")] - public bool isConnected { get; protected set; } - - // this is always 0 for regular connections, -1 for local - // connections because it's set in the constructor and never reset. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("hostId will be removed because it's not needed ever since we removed LLAPI as default. It's always 0 for regular connections and -1 for local connections. Use connection.GetType() == typeof(NetworkConnection) to check if it's a regular or local connection.")] - public int hostId = -1; - /// - /// Creates a new NetworkConnection with the specified address + /// Creates a new NetworkConnection /// - /// - public NetworkConnection(string networkAddress) + internal NetworkConnection() { - address = networkAddress; + // set lastTime to current time when creating connection to make sure it isn't instantly kicked for inactivity + lastMessageTime = Time.time; } /// - /// Creates a new NetworkConnection with the specified address and connectionId + /// Creates a new NetworkConnection with the specified connectionId /// - /// /// - public NetworkConnection(string networkAddress, int networkConnectionId) + internal NetworkConnection(int networkConnectionId) : this() { - address = networkAddress; connectionId = networkConnectionId; -#pragma warning disable 618 - isConnected = true; - hostId = 0; -#pragma warning restore 618 } ~NetworkConnection() @@ -152,83 +126,19 @@ public void Dispose() protected virtual void Dispose(bool disposing) { - foreach (uint netId in clientOwnedObjects) - { - if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity)) - { - identity.clientAuthorityOwner = null; - } - } clientOwnedObjects.Clear(); } /// /// Disconnects this connection. /// - public void Disconnect() - { - // don't clear address so we can still access it in NetworkManager.OnServerDisconnect - // => it's reset in Initialize anyway and there is no address empty check anywhere either - //address = ""; - - // set not ready and handle clientscene disconnect in any case - // (might be client or host mode here) - isReady = false; - ClientScene.HandleClientDisconnect(this); - - // server? then disconnect that client (not for host local player though) - if (Transport.activeTransport.ServerActive() && connectionId != 0) - { - Transport.activeTransport.ServerDisconnect(connectionId); - } - // not server and not host mode? then disconnect client - else - { - Transport.activeTransport.ClientDisconnect(); - } - - RemoveObservers(); - } + public abstract void Disconnect(); internal void SetHandlers(Dictionary handlers) { messageHandlers = handlers; } - /// - /// Obsolete: Use NetworkClient/NetworkServer.RegisterHandler{T} instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkClient/NetworkServer.RegisterHandler instead")] - public void RegisterHandler(short msgType, NetworkMessageDelegate handler) - { - if (messageHandlers.ContainsKey(msgType)) - { - if (LogFilter.Debug) Debug.Log("NetworkConnection.RegisterHandler replacing " + msgType); - } - messageHandlers[msgType] = handler; - } - - /// - /// Obsolete: Use and instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkClient/NetworkServer.UnregisterHandler instead")] - public void UnregisterHandler(short msgType) - { - messageHandlers.Remove(msgType); - } - - /// - /// Obsolete: use instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("use Send instead")] - public virtual bool Send(int msgType, MessageBase msg, int channelId = Channels.DefaultReliable) - { - // pack message and send - byte[] message = MessagePacker.PackMessage(msgType, msg); - return Send(new ArraySegment(message), channelId); - } - - /// /// This sends a network message with a message ID on the connection. This message is sent on channel zero, which by default is the reliable channel. /// @@ -236,17 +146,15 @@ public virtual bool Send(int msgType, MessageBase msg, int channelId = Channels. /// The message to send. /// The transport layer channel to send on. /// - public virtual bool Send(T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase + public bool Send(T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase { - NetworkWriter writer = NetworkWriterPool.GetWriter(); - - // pack message and send allocation free - MessagePacker.Pack(msg, writer); - NetworkDiagnostics.OnSend(msg, channelId, writer.Position, 1); - bool result = Send(writer.ToArraySegment(), channelId); - - NetworkWriterPool.Recycle(writer); - return result; + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + // pack message and send allocation free + MessagePacker.Pack(msg, writer); + NetworkDiagnostics.OnSend(msg, channelId, writer.Position, 1); + return Send(writer.ToArraySegment(), channelId); + } } // validate packet size before sending. show errors if too big/small. @@ -254,18 +162,18 @@ public virtual bool Send(T msg, int channelId = Channels.DefaultReliable) whe // would check max size and show errors internally. best to do it // in one place in hlapi. // => it's important to log errors, so the user knows what went wrong. - static bool ValidatePacketSize(ArraySegment segment, int channelId) + protected internal static bool ValidatePacketSize(ArraySegment segment, int channelId) { if (segment.Count > Transport.activeTransport.GetMaxPacketSize(channelId)) { - Debug.LogError("NetworkConnection.ValidatePacketSize: cannot send packet larger than " + Transport.activeTransport.GetMaxPacketSize(channelId) + " bytes"); + logger.LogError("NetworkConnection.ValidatePacketSize: cannot send packet larger than " + Transport.activeTransport.GetMaxPacketSize(channelId) + " bytes"); return false; } if (segment.Count == 0) { // zero length packets getting into the packet queues are bad. - Debug.LogError("NetworkConnection.ValidatePacketSize: cannot send zero bytes"); + logger.LogError("NetworkConnection.ValidatePacketSize: cannot send zero bytes"); return false; } @@ -275,47 +183,11 @@ static bool ValidatePacketSize(ArraySegment segment, int channelId) // internal because no one except Mirror should send bytes directly to // the client. they would be detected as a message. send messages instead. - List singleConnectionId = new List{-1}; - internal virtual bool Send(ArraySegment segment, int channelId = Channels.DefaultReliable) - { - if (logNetworkMessages) Debug.Log("ConnectionSend con:" + connectionId + " bytes:" + BitConverter.ToString(segment.Array, segment.Offset, segment.Count)); - - // validate packet size first. - if (ValidatePacketSize(segment, channelId)) - { - // send to client or server - if (Transport.activeTransport.ClientConnected()) - { - return Transport.activeTransport.ClientSend(channelId, segment); - } - else if (Transport.activeTransport.ServerActive()) - { - singleConnectionId[0] = connectionId; - return Transport.activeTransport.ServerSend(singleConnectionId, channelId, segment); - } - } - return false; - } - - // Send to many. basically Transport.Send(connections) + checks. - internal static bool Send(List connectionIds, ArraySegment segment, int channelId = Channels.DefaultReliable) - { - // validate packet size first. - if (ValidatePacketSize(segment, channelId)) - { - // only the server sends to many, we don't have that function on - // a client. - if (Transport.activeTransport.ServerActive()) - { - return Transport.activeTransport.ServerSend(connectionIds, channelId, segment); - } - } - return false; - } + internal abstract bool Send(ArraySegment segment, int channelId = Channels.DefaultReliable); public override string ToString() { - return $"connectionId: {connectionId} isReady: {isReady}"; + return $"connection({connectionId})"; } internal void AddToVisList(NetworkIdentity identity) @@ -346,30 +218,14 @@ internal void RemoveObservers() visList.Clear(); } - /// - /// Obsolete: Use instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use InvokeHandler instead")] - public bool InvokeHandlerNoData(int msgType) - { - return InvokeHandler(msgType, null, -1); - } - internal bool InvokeHandler(int msgType, NetworkReader reader, int channelId) { if (messageHandlers.TryGetValue(msgType, out NetworkMessageDelegate msgDelegate)) { - NetworkMessage message = new NetworkMessage - { - reader = reader, - conn = this, - channelId = channelId - }; - - msgDelegate(message); + msgDelegate(this, reader, channelId); return true; } - Debug.LogError("Unknown message ID " + msgType + " connId:" + connectionId); + if (logger.LogEnabled()) logger.Log("Unknown message ID " + msgType + " " + this + ". May be due to no existing RegisterHandler for this message."); return false; } @@ -379,23 +235,23 @@ internal bool InvokeHandler(int msgType, NetworkReader reader, int channelId) /// /// The message type to unregister. /// The message object to process. - /// + /// Returns true if the handler was successfully invoked public bool InvokeHandler(T msg, int channelId) where T : IMessageBase { // get writer from pool - NetworkWriter writer = NetworkWriterPool.GetWriter(); - - // pack and invoke - int msgType = MessagePacker.GetId(msg.GetType()); - MessagePacker.Pack(msg, writer); - ArraySegment segment = writer.ToArraySegment(); - NetworkReader reader = NetworkReaderPool.GetReader(segment); - bool result = InvokeHandler(msgType, reader, channelId); - NetworkReaderPool.Recycle(reader); - - // recycle writer and return - NetworkWriterPool.Recycle(writer); - return result; + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + // if it is a value type, just use typeof(T) to avoid boxing + // this works because value types cannot be derived + // if it is a reference type (for example IMessageBase), + // ask the message for the real type + int msgType = MessagePacker.GetId(default(T) != null ? typeof(T) : msg.GetType()); + + MessagePacker.Pack(msg, writer); + ArraySegment segment = writer.ToArraySegment(); + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(segment)) + return InvokeHandler(msgType, networkReader, channelId); + } } // note: original HLAPI HandleBytes function handled >1 message in a while loop, but this wasn't necessary @@ -405,40 +261,68 @@ public bool InvokeHandler(T msg, int channelId) where T : IMessageBase // -> can be tested easily with a 1000ms send delay and then logging amount received in while loops here // and in NetworkServer/Client Update. HandleBytes already takes exactly one. /// - /// This virtual function allows custom network connection classes to process data from the network before it is passed to the application. + /// This function allows custom network connection classes to process data from the network before it is passed to the application. /// - /// The data recieved. - public virtual void TransportReceive(ArraySegment buffer, int channelId) + /// The data received. + internal void TransportReceive(ArraySegment buffer, int channelId) { // unpack message - NetworkReader reader = NetworkReaderPool.GetReader(buffer); - if (MessagePacker.UnpackMessage(reader, out int msgType)) + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(buffer)) { - // logging - if (logNetworkMessages) Debug.Log("ConnectionRecv con:" + connectionId + " msgType:" + msgType + " content:" + BitConverter.ToString(buffer.Array, buffer.Offset, buffer.Count)); - - // try to invoke the handler for that message - if (InvokeHandler(msgType, reader, channelId)) + if (MessagePacker.UnpackMessage(networkReader, out int msgType)) { - lastMessageTime = Time.time; + // logging + if (logger.LogEnabled()) logger.Log("ConnectionRecv " + this + " msgType:" + msgType + " content:" + BitConverter.ToString(buffer.Array, buffer.Offset, buffer.Count)); + + // try to invoke the handler for that message + if (InvokeHandler(msgType, networkReader, channelId)) + { + lastMessageTime = Time.time; + } + } + else + { + logger.LogError("Closed connection: " + this + ". Invalid message header."); + Disconnect(); } } - else - { - Debug.LogError("Closed connection: " + connectionId + ". Invalid message header."); - Disconnect(); - } - NetworkReaderPool.Recycle(reader); + } + + // Failsafe to kick clients that have stopped sending anything to the server. + // Clients Ping the server every 2 seconds but transports are unreliable + // when it comes to properly generating Disconnect messages to the server. + // This cannot be abstract because then NetworkConnectionToServer + // would require and override that would never be called + // This is overriden in NetworkConnectionToClient. + internal virtual bool IsClientAlive() + { + return true; } internal void AddOwnedObject(NetworkIdentity obj) { - clientOwnedObjects.Add(obj.netId); + clientOwnedObjects.Add(obj); } internal void RemoveOwnedObject(NetworkIdentity obj) { - clientOwnedObjects.Remove(obj.netId); + clientOwnedObjects.Remove(obj); + } + + internal void DestroyOwnedObjects() + { + // create a copy because the list might be modified when destroying + HashSet tmp = new HashSet(clientOwnedObjects); + foreach (NetworkIdentity netIdentity in tmp) + { + if (netIdentity != null) + { + NetworkServer.Destroy(netIdentity.gameObject); + } + } + + // clear the hashset because we destroyed them all + clientOwnedObjects.Clear(); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs new file mode 100644 index 0000000..8f20279 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror +{ + public class NetworkConnectionToClient : NetworkConnection + { + static readonly ILogger logger = LogFactory.GetLogger(); + + public NetworkConnectionToClient(int networkConnectionId) : base(networkConnectionId) { } + + public override string address => Transport.activeTransport.ServerGetClientAddress(connectionId); + + // internal because no one except Mirror should send bytes directly to + // the client. they would be detected as a message. send messages instead. + readonly List singleConnectionId = new List { -1 }; + + // Failsafe to kick clients that have stopped sending anything to the server. + // Clients ping the server every 2 seconds but transports are unreliable + // when it comes to properly generating Disconnect messages to the server. + internal override bool IsClientAlive() => Time.time - lastMessageTime < NetworkServer.disconnectInactiveTimeout; + + internal override bool Send(ArraySegment segment, int channelId = Channels.DefaultReliable) + { + if (logger.LogEnabled()) logger.Log("ConnectionSend " + this + " bytes:" + BitConverter.ToString(segment.Array, segment.Offset, segment.Count)); + + // validate packet size first. + if (ValidatePacketSize(segment, channelId)) + { + singleConnectionId[0] = connectionId; + return Transport.activeTransport.ServerSend(singleConnectionId, channelId, segment); + } + return false; + } + + // Send to many. basically Transport.Send(connections) + checks. + internal static bool Send(List connectionIds, ArraySegment segment, int channelId = Channels.DefaultReliable) + { + // validate packet size first. + if (ValidatePacketSize(segment, channelId)) + { + // only the server sends to many, we don't have that function on + // a client. + if (Transport.activeTransport.ServerActive()) + { + return Transport.activeTransport.ServerSend(connectionIds, channelId, segment); + } + } + return false; + } + + /// + /// Disconnects this connection. + /// + public override void Disconnect() + { + // set not ready and handle clientscene disconnect in any case + // (might be client or host mode here) + isReady = false; + Transport.activeTransport.ServerDisconnect(connectionId); + RemoveObservers(); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs.meta new file mode 100644 index 0000000..75bb702 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToClient.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bb2195f8b29d24f0680a57fde2e9fd09 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs new file mode 100644 index 0000000..3e2f22f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs @@ -0,0 +1,36 @@ +using System; +using UnityEngine; + +namespace Mirror +{ + public class NetworkConnectionToServer : NetworkConnection + { + static readonly ILogger logger = LogFactory.GetLogger(); + + public override string address => ""; + + internal override bool Send(ArraySegment segment, int channelId = Channels.DefaultReliable) + { + if (logger.LogEnabled()) logger.Log("ConnectionSend " + this + " bytes:" + BitConverter.ToString(segment.Array, segment.Offset, segment.Count)); + + // validate packet size first. + if (ValidatePacketSize(segment, channelId)) + { + return Transport.activeTransport.ClientSend(channelId, segment); + } + return false; + } + + /// + /// Disconnects this connection. + /// + public override void Disconnect() + { + // set not ready and handle clientscene disconnect in any case + // (might be client or host mode here) + isReady = false; + ClientScene.HandleClientDisconnect(this); + Transport.activeTransport.ClientDisconnect(); + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs.meta new file mode 100644 index 0000000..7e4a710 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkConnectionToServer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 761977cbf38a34ded9dd89de45445675 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkDiagnostics.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkDiagnostics.cs index 5661153..1a785c9 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkDiagnostics.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkDiagnostics.cs @@ -1,6 +1,4 @@ using System; -using System.Diagnostics; -using UnityEngine.Events; namespace Mirror { @@ -67,7 +65,7 @@ internal static void OnSend(T message, int channel, int bytes, int count) whe /// Subscribe to this if you want to profile the network /// public static event Action InMessageEvent; - + internal static void OnReceive(T message, int channel, int bytes) where T : IMessageBase { if (InMessageEvent != null) diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs index 580af38..f0d74e8 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs @@ -2,8 +2,11 @@ using System.Collections.Generic; using System.ComponentModel; using System.Security.Cryptography; +using Mirror.RemoteCalls; using UnityEngine; using UnityEngine.Serialization; + + #if UNITY_EDITOR using UnityEditor; #if UNITY_2018_3_OR_NEWER @@ -41,48 +44,50 @@ namespace Mirror /// * If the dirty mask is non-zero value, then the OnDeserialize function reads the values for the SyncVars that correspond to the dirty bits that are set /// * If there are SyncVar hook functions, those are invoked with the value read from the stream. /// - [ExecuteInEditMode] [DisallowMultipleComponent] [AddComponentMenu("Network/NetworkIdentity")] [HelpURL("https://mirror-networking.com/docs/Components/NetworkIdentity.html")] public sealed class NetworkIdentity : MonoBehaviour { + static readonly ILogger logger = LogFactory.GetLogger(); + // configuration - bool m_IsServer; NetworkBehaviour[] networkBehavioursCache; - // member used to mark a identity for future reset - // check MarkForReset for more information. - bool m_Reset; - /// /// Returns true if running as a client and this object was spawned by a server. /// + // + // IMPORTANT: checking NetworkClient.active means that isClient is false in OnDestroy: + // public bool isClient => NetworkClient.active && netId != 0 && !serverOnly; + // but we need it in OnDestroy, e.g. when saving skillbars on quit. this + // works fine if we keep the UNET way of setting isClient manually. + // => fixes https://github.com/vis2k/Mirror/issues/1475 public bool isClient { get; internal set; } /// /// Returns true if NetworkServer.active and server is not stopped. /// - public bool isServer - { - get => m_IsServer && NetworkServer.active && netId != 0; - internal set => m_IsServer = value; - } + // + // IMPORTANT: checking NetworkServer.active means that isServer is false in OnDestroy: + // public bool isServer => NetworkServer.active && netId != 0; + // but we need it in OnDestroy, e.g. when saving players on quit. this + // works fine if we keep the UNET way of setting isServer manually. + // => fixes https://github.com/vis2k/Mirror/issues/1484 + public bool isServer { get; internal set; } /// /// This returns true if this object is the one that represents the player on the local machine. /// This is set when the server has spawned an object for this particular client. /// - public bool isLocalPlayer { get; private set; } - - internal bool pendingOwner { get; set; } + public bool isLocalPlayer => ClientScene.localPlayer == this; /// - /// This returns true if this object is the authoritative version of the object in the distributed network application. - /// This value is determined at runtime, as opposed to localPlayerAuthority which is set on the prefab. For most objects, authority is held by the server / host. For objects with localPlayerAuthority set, authority is held by the client of that player. + /// This returns true if this object is the authoritative player object on the client. + /// This value is determined at runtime. For most objects, authority is held by the server. /// For objects that had their authority set by AssignClientAuthority on the server, this will be true on the client that owns the object. NOT on other clients. /// - public bool hasAuthority { get; private set; } + public bool hasAuthority { get; internal set; } /// /// The set of network connections (players) that can see this object. @@ -100,7 +105,9 @@ public bool isServer /// A unique identifier for NetworkIdentity objects within a scene. /// This is used for spawning scene objects on clients. /// - public ulong sceneId => m_SceneId; + // persistent scene id (see AssignSceneID comments) + [FormerlySerializedAs("m_SceneId"), HideInInspector] + public ulong sceneId; /// /// Flag to make this object only exist when the game is running as a server (or host). @@ -108,38 +115,75 @@ public bool isServer [FormerlySerializedAs("m_ServerOnly")] public bool serverOnly; - /// - /// localPlayerAuthority means that the client of the "owning" player has authority over their own player object. - /// Authority for this object will be on the player's client. So hasAuthority will be true on that client - and false on the server and on other clients. - /// - [FormerlySerializedAs("m_LocalPlayerAuthority")] - public bool localPlayerAuthority; - - /// - /// The client that has authority for this object. This will be null if no client has authority. - /// This is set for player objects with localPlayerAuthority, and for objects set with AssignClientAuthority, and spawned with SpawnWithClientAuthority. - /// - public NetworkConnection clientAuthorityOwner { get; internal set; } - /// /// The NetworkConnection associated with this NetworkIdentity. This is only valid for player objects on a local client. /// public NetworkConnection connectionToServer { get; internal set; } + NetworkConnectionToClient _connectionToClient; + /// - /// The NetworkConnection associated with this NetworkIdentity. This is only valid for player objects on the server. + /// The NetworkConnection associated with this NetworkIdentity. This is valid for player and other owned objects in the server. /// Use it to return details such as the connection's identity, IP address and ready status. /// - public NetworkConnection connectionToClient { get; internal set; } + public NetworkConnectionToClient connectionToClient + { + get => _connectionToClient; + + internal set + { + if (_connectionToClient != null) + _connectionToClient.RemoveOwnedObject(this); + + _connectionToClient = value; + _connectionToClient?.AddOwnedObject(this); + } + } /// /// All spawned NetworkIdentities by netId. Available on server and client. /// public static readonly Dictionary spawned = new Dictionary(); - public NetworkBehaviour[] NetworkBehaviours => networkBehavioursCache = networkBehavioursCache ?? GetComponents(); + public NetworkBehaviour[] NetworkBehaviours + { + get + { + if (networkBehavioursCache == null) + { + CreateNetworkBehavioursCache(); + } + return networkBehavioursCache; + } + } - [SerializeField] string m_AssetId; + void CreateNetworkBehavioursCache() + { + networkBehavioursCache = GetComponents(); + if (NetworkBehaviours.Length > 64) + { + logger.LogError($"Only 64 NetworkBehaviour components are allowed for NetworkIdentity: {name} because of the dirtyComponentMask", this); + // Log error once then resize array so that NetworkIdentity does not throw exceptions later + Array.Resize(ref networkBehavioursCache, 64); + } + } + + + // NetworkProximityChecker caching + NetworkVisibility visibilityCache; + public NetworkVisibility visibility + { + get + { + if (visibilityCache == null) + { + visibilityCache = GetComponent(); + } + return visibilityCache; + } + } + + [SerializeField, HideInInspector] string m_AssetId; // the AssetId trick: // - ideally we would have a serialized 'Guid m_AssetId' but Unity can't @@ -168,55 +212,58 @@ public Guid assetId } internal set { - string newAssetIdString = value.ToString("N"); - if (string.IsNullOrEmpty(m_AssetId) || m_AssetId == newAssetIdString) + string newAssetIdString = value == Guid.Empty ? string.Empty : value.ToString("N"); + string oldAssetIdSrting = m_AssetId; + + // they are the same, do nothing + if (oldAssetIdSrting == newAssetIdString) { - m_AssetId = newAssetIdString; + return; } - else Debug.LogWarning("SetDynamicAssetId object already has an assetId <" + m_AssetId + ">"); + + // new is empty + if (string.IsNullOrEmpty(newAssetIdString)) + { + logger.LogError($"Can not set AssetId to empty guid on NetworkIdentity '{name}', old assetId '{oldAssetIdSrting}'"); + return; + } + + // old not empty + if (!string.IsNullOrEmpty(oldAssetIdSrting)) + { + logger.LogError($"Can not Set AssetId on NetworkIdentity '{name}' becasue it already had an assetId, current assetId '{oldAssetIdSrting}', attempted new assetId '{newAssetIdString}'"); + return; + } + + // old is empty + m_AssetId = newAssetIdString; + + if (logger.LogEnabled()) logger.Log($"Settings AssetId on NetworkIdentity '{name}', new assetId '{newAssetIdString}'"); } } - // persistent scene id - // (see AssignSceneID comments) - // suppress "Field 'NetworkIdentity.m_SceneId' is never assigned to, and will always have its default value 0" - // when building standalone -#pragma warning disable CS0649 - [SerializeField] ulong m_SceneId; -#pragma warning restore CS0649 - // keep track of all sceneIds to detect scene duplicates static readonly Dictionary sceneIds = new Dictionary(); - public NetworkIdentity GetSceneIdenity(ulong id) => sceneIds[id]; + /// + /// Gets the NetworkIdentity from the sceneIds dictionary with the corresponding id + /// + /// + /// NetworkIdentity from the sceneIds dictionary + public static NetworkIdentity GetSceneIdentity(ulong id) => sceneIds[id]; // used when adding players internal void SetClientOwner(NetworkConnection conn) { - if (clientAuthorityOwner != null) - { - Debug.LogError("SetClientOwner m_ClientAuthorityOwner already set!"); - } - clientAuthorityOwner = conn; - clientAuthorityOwner.AddOwnedObject(this); - } - - internal void ForceAuthority(bool authority) - { - if (hasAuthority == authority) + // do nothing if it already has an owner + if (connectionToClient != null && conn != connectionToClient) { + logger.LogError($"Object {this} netId={netId} already has an owner. Use RemoveClientAuthority() first", this); return; } - hasAuthority = authority; - if (authority) - { - OnStartAuthority(); - } - else - { - OnStopAuthority(); - } + // otherwise set the owner connection + connectionToClient = (NetworkConnectionToClient)conn; } static uint nextNetworkId = 1; @@ -228,78 +275,50 @@ internal void ForceAuthority(bool authority) public static void ResetNextNetworkId() => nextNetworkId = 1; /// - /// Obsolete: Host Migration was removed + /// The delegate type for the clientAuthorityCallback. /// /// The network connection that is gaining or losing authority. /// The object whose client authority status is being changed. /// The new state of client authority of the object for the connection. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Host Migration was removed")] public delegate void ClientAuthorityCallback(NetworkConnection conn, NetworkIdentity identity, bool authorityState); /// - /// Obsolete: Host Migration was removed - /// Whenever an object is spawned using SpawnWithClientAuthority, or the client authority status of an object is changed with AssignClientAuthority or RemoveClientAuthority, then this callback will be invoked. - /// This callback is used by the NetworkMigrationManager to distribute client authority state to peers for host migration. If the NetworkMigrationManager is not being used, this callback does not need to be populated. + /// A callback that can be populated to be notified when the client-authority state of objects changes. + /// Whenever an object is spawned with client authority, or the client authority status of an object is changed with AssignClientAuthority or RemoveClientAuthority, then this callback will be invoked. + /// This callback is only invoked on the server. /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Host Migration was removed")] public static ClientAuthorityCallback clientAuthorityCallback; - // used when the player object for a connection changes - internal void SetNotLocalPlayer() - { - isLocalPlayer = false; - - if (NetworkServer.active && NetworkServer.localClientActive) - { - // dont change authority for objects on the host - return; - } - hasAuthority = false; - } - // this is used when a connection is destroyed, since the "observers" property is read-only internal void RemoveObserverInternal(NetworkConnection conn) { observers?.Remove(conn.connectionId); } + // hasSpawned should always be false before runtime + [SerializeField, HideInInspector] bool hasSpawned; + public bool SpawnedFromInstantiate { get; private set; } + void Awake() { - // detect runtime sceneId duplicates, e.g. if a user tries to - // Instantiate a sceneId object at runtime. if we don't detect it, - // then the client won't know which of the two objects to use for a - // SpawnSceneObject message, and it's likely going to be the wrong - // object. - // - // This might happen if for example we have a Dungeon GameObject - // which contains a Skeleton monster as child, and when a player - // runs into the Dungeon we create a Dungeon Instance of that - // Dungeon, which would duplicate a scene object. - // - // see also: https://github.com/vis2k/Mirror/issues/384 - if (Application.isPlaying && sceneId != 0) + if (hasSpawned) { - if (sceneIds.TryGetValue(sceneId, out NetworkIdentity existing) && existing != this) - { - Debug.LogError(name + "'s sceneId: " + sceneId.ToString("X") + " is already taken by: " + existing.name + ". Don't call Instantiate for NetworkIdentities that were in the scene since the beginning (aka scene objects). Otherwise the client won't know which object to use for a SpawnSceneObject message."); - Destroy(gameObject); - } - else - { - sceneIds[sceneId] = this; - } + logger.LogError($"{name} has already spawned. Don't call Instantiate for NetworkIdentities that were in the scene since the beginning (aka scene objects). Otherwise the client won't know which object to use for a SpawnSceneObject message."); + + SpawnedFromInstantiate = true; + Destroy(gameObject); } + + hasSpawned = true; } void OnValidate() { -#if UNITY_EDITOR - if (serverOnly && localPlayerAuthority) - { - Debug.LogWarning("Disabling Local Player Authority for " + gameObject + " because it is server-only."); - localPlayerAuthority = false; - } + // OnValidate is not called when using Instantiate, so we can use + // it to make sure that hasSpawned is false + hasSpawned = false; +#if UNITY_EDITOR SetupIDs(); #endif } @@ -322,7 +341,7 @@ bool ThisIsASceneObjectWithPrefabParent(out GameObject prefab) if (prefab == null) { - Debug.LogError("Failed to find prefab parent for scene object [name:" + gameObject.name + "]"); + logger.LogError("Failed to find prefab parent for scene object [name:" + gameObject.name + "]"); return false; } return true; @@ -392,11 +411,11 @@ void AssignSceneID() return; // no valid sceneId yet, or duplicate? - bool duplicate = sceneIds.TryGetValue(m_SceneId, out NetworkIdentity existing) && existing != null && existing != this; - if (m_SceneId == 0 || duplicate) + bool duplicate = sceneIds.TryGetValue(sceneId, out NetworkIdentity existing) && existing != null && existing != this; + if (sceneId == 0 || duplicate) { // clear in any case, because it might have been a duplicate - m_SceneId = 0; + sceneId = 0; // if a scene was never opened and we are building it, then a // sceneId would be assigned to build but not saved in editor, @@ -406,7 +425,7 @@ void AssignSceneID() // => throw an exception to cancel the build and let the user // know how to fix it! if (BuildPipeline.isBuildingPlayer) - throw new Exception("Scene " + gameObject.scene.path + " needs to be opened and resaved before building, because the scene object " + name + " has no valid sceneId yet."); + throw new InvalidOperationException("Scene " + gameObject.scene.path + " needs to be opened and resaved before building, because the scene object " + name + " has no valid sceneId yet."); // if we generate the sceneId then we MUST be sure to set dirty // in order to save the scene object properly. otherwise it @@ -424,15 +443,15 @@ void AssignSceneID() duplicate = sceneIds.TryGetValue(randomId, out existing) && existing != null && existing != this; if (!duplicate) { - m_SceneId = randomId; - //Debug.Log(name + " in scene=" + gameObject.scene.name + " sceneId assigned to: " + m_SceneId.ToString("X")); + sceneId = randomId; + //logger.Log(name + " in scene=" + gameObject.scene.name + " sceneId assigned to: " + m_SceneId.ToString("X")); } } // add to sceneIds dict no matter what // -> even if we didn't generate anything new, because we still need // existing sceneIds in there to check duplicates - sceneIds[m_SceneId] = this; + sceneIds[sceneId] = this; } // copy scene path hash into sceneId for scene objects. @@ -456,26 +475,48 @@ public void SetSceneIdSceneHashPartInternal() ulong shiftedHash = (ulong)pathHash << 32; // OR into scene id - m_SceneId = (m_SceneId & 0xFFFFFFFF) | shiftedHash; + sceneId = (sceneId & 0xFFFFFFFF) | shiftedHash; // log it. this is incredibly useful to debug sceneId issues. - if (LogFilter.Debug) Debug.Log(name + " in scene=" + gameObject.scene.name + " scene index hash(" + pathHash.ToString("X") + ") copied into sceneId: " + m_SceneId.ToString("X")); + if (logger.LogEnabled()) logger.Log(name + " in scene=" + gameObject.scene.name + " scene index hash(" + pathHash.ToString("X") + ") copied into sceneId: " + sceneId.ToString("X")); } void SetupIDs() { if (ThisIsAPrefab()) { - m_SceneId = 0; // force 0 for prefabs + // force 0 for prefabs + sceneId = 0; AssignAssetID(gameObject); } - // check prefabstage BEFORE SceneObjectWithPrefabParent - // (fixes https://github.com/vis2k/Mirror/issues/976) + // are we currently in prefab editing mode? aka prefab stage + // => check prefabstage BEFORE SceneObjectWithPrefabParent + // (fixes https://github.com/vis2k/Mirror/issues/976) + // => if we don't check GetCurrentPrefabStage and only check + // GetPrefabStage(gameObject), then the 'else' case where we + // assign a sceneId and clear the assetId would still be + // triggered for prefabs. in other words: if we are in prefab + // stage, do not bother with anything else ever! else if (PrefabStageUtility.GetCurrentPrefabStage() != null) { - m_SceneId = 0; // force 0 for prefabs - string path = PrefabStageUtility.GetCurrentPrefabStage().prefabAssetPath; - AssignAssetID(path); + // when modifying a prefab in prefab stage, Unity calls + // OnValidate for that prefab and for all scene objects based on + // that prefab. + // + // is this GameObject the prefab that we modify, and not just a + // scene object based on the prefab? + // * GetCurrentPrefabStage = 'are we editing ANY prefab?' + // * GetPrefabStage(go) = 'are we editing THIS prefab?' + if (PrefabStageUtility.GetPrefabStage(gameObject) != null) + { + // force 0 for prefabs + sceneId = 0; + //logger.Log(name + " @ scene: " + gameObject.scene.name + " sceneid reset to 0 because CurrentPrefabStage=" + PrefabStageUtility.GetCurrentPrefabStage() + " PrefabStage=" + PrefabStageUtility.GetPrefabStage(gameObject)); + // NOTE: might make sense to use GetPrefabStage for asset + // path, but let's not touch it while it works. + string path = PrefabStageUtility.GetCurrentPrefabStage().prefabAssetPath; + AssignAssetID(path); + } } else if (ThisIsASceneObjectWithPrefabParent(out GameObject prefab)) { @@ -490,161 +531,260 @@ void SetupIDs() } #endif + // Unity will Destroy all networked objects on Scene Change, so we have to handle that here silently. + // That means we cannot have any warning or logging in this method. void OnDestroy() { - // remove from sceneIds - // -> remove with (0xFFFFFFFFFFFFFFFF) and without (0x00000000FFFFFFFF) - // sceneHash to be 100% safe. - sceneIds.Remove(sceneId); - sceneIds.Remove(sceneId & 0x00000000FFFFFFFF); + // Objects spawned from Instantiate are not allowed so are destroyed right away + // we don't want to call NetworkServer.Destroy if this is the case + if (SpawnedFromInstantiate) + return; - if (m_IsServer && NetworkServer.active) + // If false the object has already been unspawned + // if it is still true, then we need to unspawn it + if (isServer) { + // Do not add logging to this (see above) NetworkServer.Destroy(gameObject); } } - internal void OnStartServer(bool allowNonZeroNetId) + internal void OnStartServer() { - if (m_IsServer) - { + // do nothing if already spawned + if (isServer) return; - } - m_IsServer = true; - hasAuthority = !localPlayerAuthority; - observers = new Dictionary(); + // set isServer flag + isServer = true; // If the instance/net ID is invalid here then this is an object instantiated from a prefab and the server should assign a valid ID - if (netId == 0) - { - netId = GetNextNetworkId(); - } - else - { - if (!allowNonZeroNetId) - { - Debug.LogError("Object has non-zero netId " + netId + " for " + gameObject); - return; - } + // NOTE: this might not be necessary because the above m_IsServer + // check already checks netId. BUT this case here checks only + // netId, so it would still check cases where isServer=false + // but netId!=0. + if (netId != 0) + { + // This object has already been spawned, this method might be called again + // if we try to respawn all objects. This can happen when we add a scene + // in that case there is nothing else to do. + return; } - if (LogFilter.Debug) Debug.Log("OnStartServer " + this + " NetId:" + netId + " SceneId:" + sceneId); + netId = GetNextNetworkId(); + observers = new Dictionary(); + + if (logger.LogEnabled()) logger.Log("OnStartServer " + this + " NetId:" + netId + " SceneId:" + sceneId); // add to spawned (note: the original EnableIsServer isn't needed // because we already set m_isServer=true above) spawned[netId] = this; + // in host mode we set isClient true before calling OnStartServer, + // otherwise isClient is false in OnStartServer. + if (NetworkClient.active) + { + isClient = true; + } + foreach (NetworkBehaviour comp in NetworkBehaviours) { + // an exception in OnStartServer should be caught, so that one + // component's exception doesn't stop all other components from + // being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! try { comp.OnStartServer(); } catch (Exception e) { - Debug.LogError("Exception in OnStartServer:" + e.Message + " " + e.StackTrace); + logger.LogError("Exception in OnStartServer:" + e.Message + " " + e.StackTrace); } } + } - if (NetworkClient.active && NetworkServer.localClientActive) - { - // there will be no spawn message, so start the client here too - OnStartClient(); - } - - if (hasAuthority) + internal void OnStopServer() + { + foreach (NetworkBehaviour comp in NetworkBehaviours) { - OnStartAuthority(); + // an exception in OnStartServer should be caught, so that one + // component's exception doesn't stop all other components from + // being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! + try + { + comp.OnStopServer(); + } + catch (Exception e) + { + logger.LogError("Exception in OnStopServer:" + e.Message + " " + e.StackTrace); + } } } + bool clientStarted; internal void OnStartClient() { + if (clientStarted) + return; + clientStarted = true; + isClient = true; - if (LogFilter.Debug) Debug.Log("OnStartClient " + gameObject + " netId:" + netId + " localPlayerAuthority:" + localPlayerAuthority); + if (logger.LogEnabled()) logger.Log("OnStartClient " + gameObject + " netId:" + netId); foreach (NetworkBehaviour comp in NetworkBehaviours) { + // an exception in OnStartClient should be caught, so that one + // component's exception doesn't stop all other components from + // being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! try { - comp.OnStartClient(); // user implemented startup + // user implemented startup + comp.OnStartClient(); } catch (Exception e) { - Debug.LogError("Exception in OnStartClient:" + e.Message + " " + e.StackTrace); + logger.LogError("Exception in OnStartClient:" + e.Message + " " + e.StackTrace); } } } - void OnStartAuthority() + static NetworkIdentity previousLocalPlayer = null; + internal void OnStartLocalPlayer() { - if (networkBehavioursCache == null) - { - Debug.LogError("Network object " + name + " not initialized properly. Do you have more than one NetworkIdentity in the same object? Did you forget to spawn this object with NetworkServer?", this); + if (previousLocalPlayer == this) return; + previousLocalPlayer = this; + + foreach (NetworkBehaviour comp in NetworkBehaviours) + { + // an exception in OnStartLocalPlayer should be caught, so that + // one component's exception doesn't stop all other components + // from being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! + try + { + comp.OnStartLocalPlayer(); + } + catch (Exception e) + { + logger.LogError("Exception in OnStartLocalPlayer:" + e.Message + " " + e.StackTrace); + } } + } + + bool hadAuthority; + internal void NotifyAuthority() + { + if (!hadAuthority && hasAuthority) + OnStartAuthority(); + if (hadAuthority && !hasAuthority) + OnStopAuthority(); + hadAuthority = hasAuthority; + } + internal void OnStartAuthority() + { foreach (NetworkBehaviour comp in NetworkBehaviours) { + // an exception in OnStartAuthority should be caught, so that one + // component's exception doesn't stop all other components from + // being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! try { comp.OnStartAuthority(); } catch (Exception e) { - Debug.LogError("Exception in OnStartAuthority:" + e.Message + " " + e.StackTrace); + logger.LogError("Exception in OnStartAuthority:" + e.Message + " " + e.StackTrace); } } } - void OnStopAuthority() + internal void OnStopAuthority() { foreach (NetworkBehaviour comp in NetworkBehaviours) { + // an exception in OnStopAuthority should be caught, so that one + // component's exception doesn't stop all other components from + // being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! try { comp.OnStopAuthority(); } catch (Exception e) { - Debug.LogError("Exception in OnStopAuthority:" + e.Message + " " + e.StackTrace); + logger.LogError("Exception in OnStopAuthority:" + e.Message + " " + e.StackTrace); } } } - internal void OnSetLocalVisibility(bool vis) + internal void OnSetHostVisibility(bool visible) { - foreach (NetworkBehaviour comp in NetworkBehaviours) + if (visibility != null) { try { - comp.OnSetLocalVisibility(vis); + visibility.OnSetHostVisibility(visible); } catch (Exception e) { - Debug.LogError("Exception in OnSetLocalVisibility:" + e.Message + " " + e.StackTrace); + logger.LogError("Exception in OnSetLocalVisibility:" + e.Message + " " + e.StackTrace); } } } + // check if observer can be seen by connection. + // * returns true if seen. + // * returns true if we have no proximity checker, so by default all are + // seen. internal bool OnCheckObserver(NetworkConnection conn) { - foreach (NetworkBehaviour comp in NetworkBehaviours) + if (visibility != null) { try { - if (!comp.OnCheckObserver(conn)) - return false; + return visibility.OnCheckObserver(conn); } catch (Exception e) { - Debug.LogError("Exception in OnCheckObserver:" + e.Message + " " + e.StackTrace); + logger.LogError("Exception in OnCheckObserver:" + e.Message + " " + e.StackTrace); } } return true; } + internal void OnStopClient() + { + foreach (NetworkBehaviour comp in NetworkBehaviours) + { + // an exception in OnNetworkDestroy should be caught, so that + // one component's exception doesn't stop all other components + // from being initialized + // => this is what Unity does for Start() etc. too. + // one exception doesn't stop all the other Start() calls! + try + { + comp.OnStopClient(); + } + catch (Exception e) + { + logger.LogError("Exception in OnNetworkDestroy:" + e.Message + " " + e.StackTrace); + } + isServer = false; + } + } + // vis2k: readstring bug prevention: https://issuetracker.unity3d.com/issues/unet-networkwriter-dot-write-causing-readstring-slash-readbytes-out-of-range-errors-in-clients // -> OnSerialize writes length,componentData,length,componentData,... // -> OnDeserialize carefully extracts each data, then deserializes each component with separate readers @@ -668,7 +808,7 @@ bool OnSerializeSafely(NetworkBehaviour comp, NetworkWriter writer, bool initial catch (Exception e) { // show a detailed error and let the user know what went wrong - Debug.LogError("OnSerialize failed for: object=" + name + " component=" + comp.GetType() + " sceneId=" + m_SceneId.ToString("X") + "\n\n" + e); + logger.LogError("OnSerialize failed for: object=" + name + " component=" + comp.GetType() + " sceneId=" + sceneId.ToString("X") + "\n\n" + e); } int endPosition = writer.Position; @@ -677,27 +817,21 @@ bool OnSerializeSafely(NetworkBehaviour comp, NetworkWriter writer, bool initial writer.WriteInt32(endPosition - contentPosition); writer.Position = endPosition; - if (LogFilter.Debug) Debug.Log("OnSerializeSafely written for object=" + comp.name + " component=" + comp.GetType() + " sceneId=" + m_SceneId.ToString("X") + "header@" + headerPosition + " content@" + contentPosition + " end@" + endPosition + " contentSize=" + (endPosition - contentPosition)); + if (logger.LogEnabled()) logger.Log("OnSerializeSafely written for object=" + comp.name + " component=" + comp.GetType() + " sceneId=" + sceneId.ToString("X") + "header@" + headerPosition + " content@" + contentPosition + " end@" + endPosition + " contentSize=" + (endPosition - contentPosition)); return result; } - // serialize all components (or only dirty ones if not initial state) + // serialize all components using dirtyComponentsMask // -> check ownerWritten/observersWritten to know if anything was written - internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter, out int ownerWritten, NetworkWriter observersWriter, out int observersWritten) + // We pass dirtyComponentsMask into this function so that we can check if any Components are dirty before creating writers + internal void OnSerializeAllSafely(bool initialState, ulong dirtyComponentsMask, NetworkWriter ownerWriter, out int ownerWritten, NetworkWriter observersWriter, out int observersWritten) { // clear 'written' variables ownerWritten = observersWritten = 0; - if (NetworkBehaviours.Length > 64) - { - Debug.LogError("Only 64 NetworkBehaviour components are allowed for NetworkIdentity: " + name + " because of the dirtyComponentMask"); - return; - } - ulong dirtyComponentsMask = GetDirtyMask(initialState); - - if (dirtyComponentsMask == 0L) - return; + // dirtyComponentsMask should be changed before tyhis function is called + Debug.Assert(dirtyComponentsMask != 0UL, "OnSerializeAllSafely Should not be given a zero dirtyComponentsMask", this); // calculate syncMode mask at runtime. this allows users to change // component.syncMode while the game is running, which can be a huge @@ -723,7 +857,7 @@ internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter, // -> note: IsDirty() is false if the component isn't dirty or sendInterval isn't elapsed yet if (initialState || comp.IsDirty()) { - if (LogFilter.Debug) Debug.Log("OnSerializeAllSafely: " + name + " -> " + comp.GetType() + " initial=" + initialState); + if (logger.LogEnabled()) logger.Log("OnSerializeAllSafely: " + name + " -> " + comp.GetType() + " initial=" + initialState); // serialize into ownerWriter first // (owner always gets everything!) @@ -751,7 +885,7 @@ internal void OnSerializeAllSafely(bool initialState, NetworkWriter ownerWriter, } } - internal ulong GetDirtyMask(bool initialState) + internal ulong GetDirtyComponentsMask() { // loop through all components only once and then write dirty+payload into the writer afterwards ulong dirtyComponentsMask = 0L; @@ -759,14 +893,26 @@ internal ulong GetDirtyMask(bool initialState) for (int i = 0; i < components.Length; ++i) { NetworkBehaviour comp = components[i]; - if (initialState || comp.IsDirty()) + if (comp.IsDirty()) { - dirtyComponentsMask |= (ulong)(1L << i); + dirtyComponentsMask |= 1UL << i; } } return dirtyComponentsMask; } + internal ulong GetInitialComponentsMask() + { + // loop through all components only once and then write dirty+payload into the writer afterwards + ulong dirtyComponentsMask = 0UL; + for (int i = 0; i < NetworkBehaviours.Length; ++i) + { + dirtyComponentsMask |= 1UL << i; + } + + return dirtyComponentsMask; + } + // a mask that contains all the components with SyncMode.Observers internal ulong GetSyncModeObserversMask() @@ -797,13 +943,18 @@ void OnDeserializeSafely(NetworkBehaviour comp, NetworkReader reader, bool initi // way to mess up another component's deserialization try { - if (LogFilter.Debug) Debug.Log("OnDeserializeSafely: " + comp.name + " component=" + comp.GetType() + " sceneId=" + m_SceneId.ToString("X") + " length=" + contentSize); + if (logger.LogEnabled()) logger.Log("OnDeserializeSafely: " + comp.name + " component=" + comp.GetType() + " sceneId=" + sceneId.ToString("X") + " length=" + contentSize); comp.OnDeserialize(reader, initialState); } catch (Exception e) { // show a detailed error and let the user know what went wrong - Debug.LogError("OnDeserialize failed for: object=" + name + " component=" + comp.GetType() + " sceneId=" + m_SceneId.ToString("X") + " length=" + contentSize + ". Possible Reasons:\n * Do " + comp.GetType() + "'s OnSerialize and OnDeserialize calls write the same amount of data(" + contentSize + " bytes)? \n * Was there an exception in " + comp.GetType() + "'s OnSerialize/OnDeserialize code?\n * Are the server and client the exact same project?\n * Maybe this OnDeserialize call was meant for another GameObject? The sceneIds can easily get out of sync if the Hierarchy was modified only in the client OR the server. Try rebuilding both.\n\n" + e); + logger.LogError($"OnDeserialize failed for: object={name} component={comp.GetType()} sceneId={sceneId.ToString("X")} length={contentSize}. Possible Reasons:\n" + + $" * Do {comp.GetType()}'s OnSerialize and OnDeserialize calls write the same amount of data({contentSize} bytes)? \n" + + $" * Was there an exception in {comp.GetType()}'s OnSerialize/OnDeserialize code?\n" + + $" * Are the server and client the exact same project?\n" + + $" * Maybe this OnDeserialize call was meant for another GameObject? The sceneIds can easily get out of sync if the Hierarchy was modified only in the client OR the server. Try rebuilding both.\n\n" + + $"Exeption {e}"); } // now the reader should be EXACTLY at 'before + size'. @@ -812,7 +963,7 @@ void OnDeserializeSafely(NetworkBehaviour comp, NetworkReader reader, bool initi { // warn the user int bytesRead = reader.Position - chunkStart; - Debug.LogWarning("OnDeserialize was expected to read " + contentSize + " instead of " + bytesRead + " bytes for object:" + name + " component=" + comp.GetType() + " sceneId=" + m_SceneId.ToString("X") + ". Make sure that OnSerialize and OnDeserialize write/read the same amount of data in all cases."); + logger.LogWarning("OnDeserialize was expected to read " + contentSize + " instead of " + bytesRead + " bytes for object:" + name + " component=" + comp.GetType() + " sceneId=" + sceneId.ToString("X") + ". Make sure that OnSerialize and OnDeserialize write/read the same amount of data in all cases."); // fix the position, so the following components don't all fail reader.Position = chunkEnd; @@ -829,7 +980,7 @@ internal void OnDeserializeAllSafely(NetworkReader reader, bool initialState) for (int i = 0; i < components.Length; ++i) { // is the dirty bit at position 'i' set to 1? - ulong dirtyBit = (ulong)(1L << i); + ulong dirtyBit = 1UL << i; if ((dirtyComponentsMask & dirtyBit) != 0L) { OnDeserializeSafely(components[i], reader, initialState); @@ -837,39 +988,28 @@ internal void OnDeserializeAllSafely(NetworkReader reader, bool initialState) } } - // happens on client - internal void HandleClientAuthority(bool authority) - { - if (!localPlayerAuthority) - { - Debug.LogError("HandleClientAuthority " + gameObject + " does not have localPlayerAuthority"); - return; - } - - ForceAuthority(authority); - } - // helper function to handle SyncEvent/Command/Rpc - void HandleRemoteCall(int componentIndex, int functionHash, MirrorInvokeType invokeType, NetworkReader reader) + void HandleRemoteCall(int componentIndex, int functionHash, MirrorInvokeType invokeType, NetworkReader reader, NetworkConnectionToClient senderConnection = null) { - if (gameObject == null) + // check if unity object has been destroyed + if (this == null) { - Debug.LogWarning(invokeType + " [" + functionHash + "] received for deleted object [netId=" + netId + "]"); + logger.LogWarning(invokeType + " [" + functionHash + "] received for deleted object [netId=" + netId + "]"); return; } // find the right component to invoke the function on - if (0 <= componentIndex && componentIndex < networkBehavioursCache.Length) + if (0 <= componentIndex && componentIndex < NetworkBehaviours.Length) { - NetworkBehaviour invokeComponent = networkBehavioursCache[componentIndex]; - if (!invokeComponent.InvokeHandlerDelegate(functionHash, invokeType, reader)) + NetworkBehaviour invokeComponent = NetworkBehaviours[componentIndex]; + if (!RemoteCallHelper.InvokeHandlerDelegate(functionHash, invokeType, reader, invokeComponent, senderConnection)) { - Debug.LogError("Found no receiver for incoming " + invokeType + " [" + functionHash + "] on " + gameObject + ", the server and client should have the same NetworkBehaviour instances [netId=" + netId + "]."); + logger.LogError("Found no receiver for incoming " + invokeType + " [" + functionHash + "] on " + gameObject + ", the server and client should have the same NetworkBehaviour instances [netId=" + netId + "]."); } } else { - Debug.LogWarning("Component [" + componentIndex + "] not found for [netId=" + netId + "]"); + logger.LogWarning("Component [" + componentIndex + "] not found for [netId=" + netId + "]"); } } @@ -880,55 +1020,38 @@ internal void HandleSyncEvent(int componentIndex, int eventHash, NetworkReader r } // happens on server - internal void HandleCommand(int componentIndex, int cmdHash, NetworkReader reader) + internal void HandleCommand(int componentIndex, int cmdHash, NetworkReader reader, NetworkConnectionToClient senderConnection) { - HandleRemoteCall(componentIndex, cmdHash, MirrorInvokeType.Command, reader); + HandleRemoteCall(componentIndex, cmdHash, MirrorInvokeType.Command, reader, senderConnection); } - // happens on client - internal void HandleRPC(int componentIndex, int rpcHash, NetworkReader reader) - { - HandleRemoteCall(componentIndex, rpcHash, MirrorInvokeType.ClientRpc, reader); - } - - internal void OnUpdateVars(NetworkReader reader, bool initialState) - { - OnDeserializeAllSafely(reader, initialState); - } - - internal void SetLocalPlayer() + // happens on server + internal CommandInfo GetCommandInfo(int componentIndex, int cmdHash) { - isLocalPlayer = true; - - // There is an ordering issue here that originAuthority solves: - // OnStartAuthority should only be called if hasAuthority was false when this function began, - // or it will be called twice for this object, but that state is lost by the time OnStartAuthority - // is called below, so the original value is cached here to be checked below. - bool originAuthority = hasAuthority; - if (localPlayerAuthority) + // check if unity object has been destroyed + if (this == null) { - hasAuthority = true; + // error can be logged later + return default; } - foreach (NetworkBehaviour comp in networkBehavioursCache) + // find the right component to invoke the function on + if (0 <= componentIndex && componentIndex < NetworkBehaviours.Length) { - comp.OnStartLocalPlayer(); - - if (localPlayerAuthority && !originAuthority) - { - comp.OnStartAuthority(); - } + NetworkBehaviour invokeComponent = NetworkBehaviours[componentIndex]; + return RemoteCallHelper.GetCommandInfo(cmdHash, invokeComponent); + } + else + { + // error can be logged later + return default; } } - internal void OnNetworkDestroy() + // happens on client + internal void HandleRPC(int componentIndex, int rpcHash, NetworkReader reader) { - for (int i = 0; networkBehavioursCache != null && i < networkBehavioursCache.Length; i++) - { - NetworkBehaviour comp = networkBehavioursCache[i]; - comp.OnNetworkDestroy(); - } - m_IsServer = false; + HandleRemoteCall(componentIndex, rpcHash, MirrorInvokeType.ClientRpc, reader); } internal void ClearObservers() @@ -947,7 +1070,7 @@ internal void AddObserver(NetworkConnection conn) { if (observers == null) { - Debug.LogError("AddObserver for " + gameObject + " observer list is null"); + logger.LogError("AddObserver for " + gameObject + " observer list is null"); return; } @@ -958,12 +1081,50 @@ internal void AddObserver(NetworkConnection conn) return; } - if (LogFilter.Debug) Debug.Log("Added observer " + conn.address + " added for " + gameObject); + if (logger.LogEnabled()) logger.Log("Added observer " + conn.address + " added for " + gameObject); observers[conn.connectionId] = conn; conn.AddToVisList(this); } + // helper function to call OnRebuildObservers in all components + // -> HashSet is passed in so we can cache it! + // -> returns true if we have a proxchecker, false otherwise + // -> initialize is true on first rebuild, false on consecutive rebuilds + internal bool GetNewObservers(HashSet observersSet, bool initialize) + { + observersSet.Clear(); + + if (visibility != null) + { + visibility.OnRebuildObservers(observersSet, initialize); + return true; + } + + // we have no proximity checker. return false to indicate that we + // should use the default implementation. + return false; + } + + // helper function to add all server connections as observers. + // this is used if none of the components provides their own + // OnRebuildObservers function. + internal void AddAllReadyServerConnectionsToObservers() + { + // add all server connections + foreach (NetworkConnection conn in NetworkServer.connections.Values) + { + if (conn.isReady) + AddObserver(conn); + } + + // add local host connection (if any) + if (NetworkServer.localConnection != null && NetworkServer.localConnection.isReady) + { + AddObserver(NetworkServer.localConnection); + } + } + static readonly HashSet newObservers = new HashSet(); /// @@ -972,19 +1133,14 @@ internal void AddObserver(NetworkConnection conn) /// True if this is the first time. public void RebuildObservers(bool initialize) { + // observers are null until OnStartServer creates them if (observers == null) return; bool changed = false; - bool result = false; - newObservers.Clear(); - - // call OnRebuildObservers function in components - foreach (NetworkBehaviour comp in NetworkBehaviours) - { - result |= comp.OnRebuildObservers(newObservers, initialize); - } + // call OnRebuildObservers function + bool rebuildOverwritten = GetNewObservers(newObservers, initialize); // if player connection: ensure player always see himself no matter what. // -> fixes https://github.com/vis2k/Mirror/issues/692 where a @@ -996,229 +1152,217 @@ public void RebuildObservers(bool initialize) } // if no component implemented OnRebuildObservers, then add all - // connections. - if (!result) + // server connections. + if (!rebuildOverwritten) { + // only add all connections when rebuilding the first time. + // second time we just keep them without rebuilding anything. if (initialize) { - foreach (NetworkConnection conn in NetworkServer.connections.Values) - { - if (conn.isReady) - AddObserver(conn); - } - - if (NetworkServer.localConnection != null && NetworkServer.localConnection.isReady) - { - AddObserver(NetworkServer.localConnection); - } + AddAllReadyServerConnectionsToObservers(); } return; } - // apply changes from rebuild + // add all newObservers that aren't in .observers yet foreach (NetworkConnection conn in newObservers) { - if (conn == null) - { - continue; - } - - if (!conn.isReady) - { - if (LogFilter.Debug) Debug.Log("Observer is not ready for " + gameObject + " " + conn); - continue; - } - - if (initialize || !observers.ContainsKey(conn.connectionId)) + // only add ready connections. + // otherwise the player might not be in the world yet or anymore + if (conn != null && conn.isReady) { - // new observer - conn.AddToVisList(this); - if (LogFilter.Debug) Debug.Log("New Observer for " + gameObject + " " + conn); - changed = true; + if (initialize || !observers.ContainsKey(conn.connectionId)) + { + // new observer + conn.AddToVisList(this); + if (logger.LogEnabled()) logger.Log("New Observer for " + gameObject + " " + conn); + changed = true; + } } } + // remove all old .observers that aren't in newObservers anymore foreach (NetworkConnection conn in observers.Values) { if (!newObservers.Contains(conn)) { // removed observer conn.RemoveFromVisList(this, false); - if (LogFilter.Debug) Debug.Log("Removed Observer for " + gameObject + " " + conn); + if (logger.LogEnabled()) logger.Log("Removed Observer for " + gameObject + " " + conn); changed = true; } } - // special case for local client. - if (initialize) - { - if (!newObservers.Contains(NetworkServer.localConnection)) - { - OnSetLocalVisibility(false); - } - } - if (changed) { observers.Clear(); foreach (NetworkConnection conn in newObservers) { - if (conn.isReady) + if (conn != null && conn.isReady) observers.Add(conn.connectionId, conn); } } - } - /// - /// Obsolete: Use instead - /// - /// The connection of the client to remove authority for. - /// True if authority is removed. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("NetworkConnection parameter is no longer needed and nothing is returned")] - public bool RemoveClientAuthority(NetworkConnection conn) - { - RemoveClientAuthority(); - return true; + // special case for host mode: we use SetHostVisibility to hide + // NetworkIdentities that aren't in observer range from host. + // this is what games like Dota/Counter-Strike do too, where a host + // does NOT see all players by default. they are in memory, but + // hidden to the host player. + // + // this code is from UNET, it's a bit strange but it works: + // * it hides newly connected identities in host mode + // => that part was the intended behaviour + // * it hides ALL NetworkIdentities in host mode when the host + // connects but hasn't selected a character yet + // => this only works because we have no .localConnection != null + // check. at this stage, localConnection is null because + // StartHost starts the server first, then calls this code, + // then starts the client and sets .localConnection. so we can + // NOT add a null check without breaking host visibility here. + // * it hides ALL NetworkIdentities in server-only mode because + // observers never contain the 'null' .localConnection + // => that was not intended, but let's keep it as it is so we + // don't break anything in host mode. it's way easier than + // iterating all identities in a special function in StartHost. + if (initialize) + { + if (!newObservers.Contains(NetworkServer.localConnection)) + { + OnSetHostVisibility(false); + } + } } /// - /// Removes ownership for an object. - /// This applies to objects that had authority set by AssignClientAuthority, or NetworkServer.SpawnWithClientAuthority. - /// Authority cannot be removed for player objects. + /// Assign control of an object to a client via the client's NetworkConnection. + /// This causes hasAuthority to be set on the client that owns the object, and NetworkBehaviour.OnStartAuthority will be called on that client. This object then will be in the NetworkConnection.clientOwnedObjects list for the connection. + /// Authority can be removed with RemoveClientAuthority. Only one client can own an object at any time. This does not need to be called for player objects, as their authority is setup automatically. /// - public void RemoveClientAuthority() + /// The connection of the client to assign authority to. + /// True if authority was assigned. + public bool AssignClientAuthority(NetworkConnection conn) { if (!isServer) { - Debug.LogError("RemoveClientAuthority can only be call on the server for spawned objects."); - return; + logger.LogError("AssignClientAuthority can only be called on the server for spawned objects."); + return false; } - if (connectionToClient != null) + if (conn == null) { - Debug.LogError("RemoveClientAuthority cannot remove authority for a player object"); - return; + logger.LogError("AssignClientAuthority for " + gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); + return false; } - if (clientAuthorityOwner != null) + if (connectionToClient != null && conn != connectionToClient) { - // send msg to that client - ClientAuthorityMessage msg = new ClientAuthorityMessage - { - netId = netId, - authority = false - }; - - clientAuthorityOwner.Send(msg); -#pragma warning disable CS0618 // Type or member is obsolete - clientAuthorityCallback?.Invoke(clientAuthorityOwner, this, false); -#pragma warning restore CS0618 // Type or member is obsolete + logger.LogError("AssignClientAuthority for " + gameObject + " already has an owner. Use RemoveClientAuthority() first."); + return false; } - clientAuthorityOwner.RemoveOwnedObject(this); - clientAuthorityOwner = null; + SetClientOwner(conn); + + // The client will match to the existing object + // update all variables and assign authority + NetworkServer.SendSpawnMessage(this, conn); + + clientAuthorityCallback?.Invoke(conn, this, true); - // server now has authority (this is only called on server) - ForceAuthority(true); + return true; } /// - /// Assign control of an object to a client via the client's NetworkConnection. - /// This causes hasAuthority to be set on the client that owns the object, and NetworkBehaviour.OnStartAuthority will be called on that client. This object then will be in the NetworkConnection.clientOwnedObjects list for the connection. - /// Authority can be removed with RemoveClientAuthority. Only one client can own an object at any time. Only NetworkIdentities with localPlayerAuthority set can have client authority assigned. This does not need to be called for player objects, as their authority is setup automatically. + /// Removes ownership for an object. + /// This applies to objects that had authority set by AssignClientAuthority, or NetworkServer.Spawn with a NetworkConnection parameter included. + /// Authority cannot be removed for player objects. /// - /// The connection of the client to assign authority to. - /// True if authority was assigned. - public bool AssignClientAuthority(NetworkConnection conn) + public void RemoveClientAuthority() { if (!isServer) { - Debug.LogError("AssignClientAuthority can only be called on the server for spawned objects."); - return false; - } - if (!localPlayerAuthority) - { - Debug.LogError("AssignClientAuthority can only be used for NetworkIdentity components with LocalPlayerAuthority set."); - return false; + logger.LogError("RemoveClientAuthority can only be called on the server for spawned objects."); + return; } - if (clientAuthorityOwner != null && conn != clientAuthorityOwner) + if (connectionToClient?.identity == this) { - Debug.LogError("AssignClientAuthority for " + gameObject + " already has an owner. Use RemoveClientAuthority() first."); - return false; + logger.LogError("RemoveClientAuthority cannot remove authority for a player object"); + return; } - if (conn == null) + if (connectionToClient != null) { - Debug.LogError("AssignClientAuthority for " + gameObject + " owner cannot be null. Use RemoveClientAuthority() instead."); - return false; - } + clientAuthorityCallback?.Invoke(connectionToClient, this, false); - clientAuthorityOwner = conn; - clientAuthorityOwner.AddOwnedObject(this); + NetworkConnectionToClient previousOwner = connectionToClient; - // server no longer has authority (this is called on server). Note that local client could re-acquire authority below - ForceAuthority(false); + connectionToClient = null; - // send msg to that client - ClientAuthorityMessage msg = new ClientAuthorityMessage - { - netId = netId, - authority = true - }; - conn.Send(msg); + // we need to resynchronize the entire object + // so just spawn it again, + // the client will not create a new instance, it will simply + // reset all variables and remove authority + NetworkServer.SendSpawnMessage(this, previousOwner); -#pragma warning disable CS0618 // Type or member is obsolete - clientAuthorityCallback?.Invoke(conn, this, true); -#pragma warning restore CS0618 // Type or member is obsolete - return true; + connectionToClient = null; + } } // marks the identity for future reset, this is because we cant reset the identity during destroy // as people might want to be able to read the members inside OnDestroy(), and we have no way // of invoking reset after OnDestroy is called. - internal void MarkForReset() => m_Reset = true; - - // if we have marked an identity for reset we do the actual reset. internal void Reset() { - if (!m_Reset) - return; + // make sure to call this before networkBehavioursCache is cleared below + ResetSyncObjects(); - m_Reset = false; - m_IsServer = false; + hasSpawned = false; + clientStarted = false; isClient = false; - hasAuthority = false; + isServer = false; netId = 0; - isLocalPlayer = false; connectionToServer = null; connectionToClient = null; networkBehavioursCache = null; ClearObservers(); - clientAuthorityOwner = null; } - // MirrorUpdate is a hot path. Caching the vars msg is really worth it to - // avoid large amounts of allocations. - static UpdateVarsMessage varsMessage = new UpdateVarsMessage(); - // invoked by NetworkServer during Update() - internal void MirrorUpdate() + internal void ServerUpdate() { if (observers != null && observers.Count > 0) { - // one writer for owner, one for observers - NetworkWriter ownerWriter = NetworkWriterPool.GetWriter(); - NetworkWriter observersWriter = NetworkWriterPool.GetWriter(); + ulong dirtyComponentsMask = GetDirtyComponentsMask(); - // serialize all the dirty components and send (if any were dirty) - OnSerializeAllSafely(false, ownerWriter, out int ownerWritten, observersWriter, out int observersWritten); + // AnyComponentsDirty + if (dirtyComponentsMask != 0UL) + { + SendUpdateVarsMessage(dirtyComponentsMask); + } + } + else + { + // clear all component's dirty bits. + // it would be spawned on new observers anyway. + ClearAllComponentsDirtyBits(); + } + } + + void SendUpdateVarsMessage(ulong dirtyComponentsMask) + { + // one writer for owner, one for observers + using (PooledNetworkWriter ownerWriter = NetworkWriterPool.GetWriter(), observersWriter = NetworkWriterPool.GetWriter()) + { + // serialize all the dirty components and send + OnSerializeAllSafely(false, dirtyComponentsMask, ownerWriter, out int ownerWritten, observersWriter, out int observersWritten); if (ownerWritten > 0 || observersWritten > 0) { - // populate cached UpdateVarsMessage and send - varsMessage.netId = netId; + UpdateVarsMessage varsMessage = new UpdateVarsMessage + { + netId = netId + }; // send ownerWriter to owner // (only if we serialized anything for owner) @@ -1249,16 +1393,10 @@ internal void MirrorUpdate() // them if initialState. clearing the dirty ones is enough.) ClearDirtyComponentsDirtyBits(); } - NetworkWriterPool.Recycle(ownerWriter); - NetworkWriterPool.Recycle(observersWriter); - } - else - { - // clear all component's dirty bits - ClearAllComponentsDirtyBits(); } } + // clear all component's dirty bits no matter what internal void ClearAllComponentsDirtyBits() { @@ -1280,5 +1418,13 @@ internal void ClearDirtyComponentsDirtyBits() } } } + + void ResetSyncObjects() + { + foreach (NetworkBehaviour comp in NetworkBehaviours) + { + comp.ResetSyncObjects(); + } + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs.meta index 85a8007..7b96521 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkIdentity.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs index 6d54ffb..78bd5e6 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs @@ -12,22 +12,27 @@ namespace Mirror /// /// Enumeration of methods of where to spawn player objects in multiplayer games. /// - public enum PlayerSpawnMethod - { - Random, - RoundRobin - } + public enum PlayerSpawnMethod { Random, RoundRobin } + + /// + /// Enumeration of methods of current Network Manager state at runtime. + /// + public enum NetworkManagerMode { Offline, ServerOnly, ClientOnly, Host } + [DisallowMultipleComponent] [AddComponentMenu("Network/NetworkManager")] [HelpURL("https://mirror-networking.com/docs/Components/NetworkManager.html")] public class NetworkManager : MonoBehaviour { + static readonly ILogger logger = LogFactory.GetLogger(); + /// /// A flag to control whether the NetworkManager object is destroyed when the scene changes. /// This should be set if your game has a single NetworkManager that exists for the lifetime of the process. If there is a NetworkManager in each scene, then this should not be set. /// [Header("Configuration")] [FormerlySerializedAs("m_DontDestroyOnLoad")] + [Tooltip("Should the Network Manager object be persisted through scene changes?")] public bool dontDestroyOnLoad = true; /// @@ -35,32 +40,37 @@ public class NetworkManager : MonoBehaviour /// This is required when multiple instances of a program using networking are running on the same machine, such as when testing using localhost. But this is not recommended when deploying to mobile platforms. /// [FormerlySerializedAs("m_RunInBackground")] + [Tooltip("Should the server or client keep running in the background?")] public bool runInBackground = true; /// /// Automatically invoke StartServer() /// If the application is a Server Build or run with the -batchMode command line arguement, StartServer is automatically invoked. /// + [Tooltip("Should the server auto-start when the game is started in a headless build?")] public bool startOnHeadless = true; - /// - /// Server Update frequency, per second. Use around 60Hz for fast paced games like Counter-Strike to minimize latency. Use around 30Hz for games like WoW to minimize computations. Use around 1-10Hz for slow paced games like EVE. - /// - [Tooltip("Server Update frequency, per second. Use around 60Hz for fast paced games like Counter-Strike to minimize latency. Use around 30Hz for games like WoW to minimize computations. Use around 1-10Hz for slow paced games like EVE.")] - public int serverTickRate = 30; - /// /// Enables verbose debug messages in the console /// [FormerlySerializedAs("m_ShowDebugMessages")] + [Tooltip("This will enable verbose debug messages in the Unity Editor console")] public bool showDebugMessages; + /// + /// Server Update frequency, per second. Use around 60Hz for fast paced games like Counter-Strike to minimize latency. Use around 30Hz for games like WoW to minimize computations. Use around 1-10Hz for slow paced games like EVE. + /// + [Tooltip("Server Update frequency, per second. Use around 60Hz for fast paced games like Counter-Strike to minimize latency. Use around 30Hz for games like WoW to minimize computations. Use around 1-10Hz for slow paced games like EVE.")] + public int serverTickRate = 30; + /// /// The scene to switch to when offline. /// Setting this makes the NetworkManager do scene management. This scene will be switched to when a network session is completed - such as a client disconnect, or a server shutdown. /// + [Header("Scene Management")] [Scene] [FormerlySerializedAs("m_OfflineScene")] + [Tooltip("Scene that Mirror will switch to when the client or server is stopped")] public string offlineScene = ""; /// @@ -69,11 +79,12 @@ public class NetworkManager : MonoBehaviour /// [Scene] [FormerlySerializedAs("m_OnlineScene")] + [Tooltip("Scene that Mirror will switch to when the server is started. Clients will recieve a Scene Message to load the server's current scene when they connect.")] public string onlineScene = ""; - [Header("Network Info")] - // transport layer + [Header("Network Info")] + [Tooltip("Transport component attached to this object that server and client will use to connect")] [SerializeField] protected Transport transport; @@ -82,6 +93,7 @@ public class NetworkManager : MonoBehaviour /// For clients, this is the address of the server that is connected to. For servers, this is the local address. /// [FormerlySerializedAs("m_NetworkAddress")] + [Tooltip("Network Address where the client should connect to the server. Server does not use this for anything.")] public string networkAddress = "localhost"; /// @@ -89,41 +101,56 @@ public class NetworkManager : MonoBehaviour /// This effects the memory usage of the network layer. /// [FormerlySerializedAs("m_MaxConnections")] + [Tooltip("Maximum number of concurrent connections.")] public int maxConnections = 4; + // This value is passed to NetworkServer in SetupServer /// - /// Number of active player objects across all connections on the server. - /// This is only valid on the host / server. + /// Should the server disconnect remote connections that have gone silent for more than Server Idle Timeout? /// - public int numPlayers => NetworkServer.connections.Count(kv => kv.Value.identity != null); + [Tooltip("Server Only - Disconnects remote connections that have been silent for more than Server Idle Timeout")] + public bool disconnectInactiveConnections; - [Header("Authentication")] + // This value is passed to NetworkServer in SetupServer + /// + /// Timeout in seconds since last message from a client after which server will auto-disconnect. + /// By default, clients send at least a Ping message every 2 seconds. + /// The Host client is immune from idle timeout disconnection. + /// Default value is 60 seconds. + /// + [Tooltip("Timeout in seconds since last message from a client after which server will auto-disconnect if Disconnect Inactive Connections is enabled.")] + public float disconnectInactiveTimeout = 60f; + [Header("Authentication")] + [Tooltip("Authentication component attached to this object")] public NetworkAuthenticator authenticator; /// /// The default prefab to be used to create player objects on the server. /// Player objects are created in the default handler for AddPlayer() on the server. Implementing OnServerAddPlayer overrides this behaviour. /// - [Header("Spawn Info")] + [Header("Player Object")] [FormerlySerializedAs("m_PlayerPrefab")] + [Tooltip("Prefab of the player object. Prefab must have a Network Identity component. May be an empty game object or a full avatar.")] public GameObject playerPrefab; /// /// A flag to control whether or not player objects are automatically created on connect, and on scene change. /// [FormerlySerializedAs("m_AutoCreatePlayer")] + [Tooltip("Should Mirror automatically spawn the player after scene change?")] public bool autoCreatePlayer = true; /// /// The current method of spawning players used by the NetworkManager. /// [FormerlySerializedAs("m_PlayerSpawnMethod")] + [Tooltip("Round Robin or Random order of Start Position selection")] public PlayerSpawnMethod playerSpawnMethod; /// /// List of prefabs that will be registered with the spawning system. - /// For each of these prefabs, ClientManager.RegisterPrefab() will be automatically invoke. + /// For each of these prefabs, ClientScene.RegisterPrefab() will be automatically invoked. /// [FormerlySerializedAs("m_SpawnPrefabs"), HideInInspector] public List spawnPrefabs = new List(); @@ -131,7 +158,13 @@ public class NetworkManager : MonoBehaviour /// /// NetworkManager singleton /// - public static NetworkManager singleton; + public static NetworkManager singleton { get; private set; } + + /// + /// Number of active player objects across all connections on the server. + /// This is only valid on the host / server. + /// + public int numPlayers => NetworkServer.connections.Count(kv => kv.Value.identity != null); /// /// True if the server or client is started and running @@ -149,38 +182,18 @@ public class NetworkManager : MonoBehaviour [NonSerialized] public bool clientLoadedScene; - /// - /// Obsolete: Use instead - /// - /// Returns True if NetworkClient.isConnected - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkClient.isConnected instead")] - public bool IsClientConnected() - { - return NetworkClient.isConnected; - } - - /// - /// Obsolete: Use instead. - /// This is a static property now. This method will be removed by summer 2019. - /// - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use isHeadless instead of IsHeadless()")] - public static bool IsHeadless() - { - return isHeadless; - } - /// /// headless mode detection /// public static bool isHeadless => SystemInfo.graphicsDeviceType == GraphicsDeviceType.Null; - /// - /// Obsolete: Use directly - /// For example, use NetworkClient.Send(message) instead of NetworkManager.client.Send(message) - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkClient directly, it will be made static soon. For example, use NetworkClient.Send(message) instead of NetworkManager.client.Send(message)")] - public NetworkClient client => NetworkClient.singleton; + // helper enum to know if we started the networkmanager as server/client/host. + // -> this is necessary because when StartHost changes server scene to + // online scene, FinishLoadScene is called and the host client isn't + // connected yet (no need to connect it before server was fully set up). + // in other words, we need this to know which mode we are running in + // during FinishLoadScene. + public NetworkManagerMode mode { get; private set; } #region Unity Callbacks @@ -197,18 +210,19 @@ public virtual void OnValidate() if (transport == null) { transport = gameObject.AddComponent(); - Debug.Log("NetworkManager: added default Transport because there was none yet."); + logger.Log("NetworkManager: added default Transport because there was none yet."); } #if UNITY_EDITOR UnityEditor.Undo.RecordObject(gameObject, "Added default Transport"); #endif } - maxConnections = Mathf.Max(maxConnections, 0); // always >= 0 + // always >= 0 + maxConnections = Mathf.Max(maxConnections, 0); if (playerPrefab != null && playerPrefab.GetComponent() == null) { - Debug.LogError("NetworkManager - playerPrefab must have a NetworkIdentity."); + logger.LogError("NetworkManager - playerPrefab must have a NetworkIdentity."); playerPrefab = null; } } @@ -218,14 +232,15 @@ public virtual void OnValidate() /// public virtual void Awake() { - Debug.Log("Thank you for using Mirror! https://mirror-networking.com"); + // Don't allow collision-destroyed second instance to continue. + if (!InitializeSingleton()) return; + + logger.Log("Thank you for using Mirror! https://mirror-networking.com"); // Set the networkSceneName to prevent a scene reload // if client connection to server fails. networkSceneName = offlineScene; - InitializeSingleton(); - // setup OnSceneLoaded callback SceneManager.sceneLoaded += OnSceneLoaded; } @@ -265,13 +280,23 @@ public virtual void LateUpdate() #region Start & Stop - /// - /// This starts a new server. - /// This uses the networkPort property as the listen port. - /// - /// - public bool StartServer() + // keep the online scene change check in a separate function + bool IsServerOnlineSceneChangeNeeded() + { + // Only change scene if the requested online scene is not blank, and is not already loaded + return !string.IsNullOrEmpty(onlineScene) && !IsSceneActive(onlineScene) && onlineScene != offlineScene; + } + + public static bool IsSceneActive(string scene) + { + Scene activeScene = SceneManager.GetActiveScene(); + return activeScene.path == scene || activeScene.name == scene; + } + + // full server setup code, without spawning objects yet + void SetupServer() { + if (logger.LogEnabled()) logger.Log("NetworkManager SetupServer"); InitializeSingleton(); if (runInBackground) @@ -285,11 +310,12 @@ public bool StartServer() ConfigureServerFrameRate(); - if (!NetworkServer.Listen(maxConnections)) - { - Debug.LogError("StartServer listen failed."); - return false; - } + // Copy auto-disconnect settings to NetworkServer + NetworkServer.disconnectInactiveTimeout = disconnectInactiveTimeout; + NetworkServer.disconnectInactiveConnections = disconnectInactiveConnections; + + // start listening to network connections + NetworkServer.Listen(maxConnections); // call OnStartServer AFTER Listen, so that NetworkServer.active is // true and we can call NetworkServer.Spawn in OnStartServer @@ -304,28 +330,54 @@ public bool StartServer() // this must be after Listen(), since that registers the default message handlers RegisterServerMessages(); - if (LogFilter.Debug) Debug.Log("NetworkManager StartServer"); isNetworkActive = true; + } - // Only change scene if the requested online scene is not blank, and is not already loaded - string loadedSceneName = SceneManager.GetActiveScene().name; - if (!string.IsNullOrEmpty(onlineScene) && onlineScene != loadedSceneName && onlineScene != offlineScene) + /// + /// This starts a new server. + /// + public void StartServer() + { + mode = NetworkManagerMode.ServerOnly; + + // StartServer is inherently ASYNCHRONOUS (=doesn't finish immediately) + // + // Here is what it does: + // Listen + // if onlineScene: + // LoadSceneAsync + // ... + // FinishLoadSceneServerOnly + // SpawnObjects + // else: + // SpawnObjects + // + // there is NO WAY to make it synchronous because both LoadSceneAsync + // and LoadScene do not finish loading immediately. as long as we + // have the onlineScene feature, it will be asynchronous! + + SetupServer(); + + // scene change needed? then change scene and spawn afterwards. + if (IsServerOnlineSceneChangeNeeded()) { ServerChangeScene(onlineScene); } + // otherwise spawn directly else { NetworkServer.SpawnObjects(); } - return true; } /// - /// This starts a network client. It uses the networkAddress and networkPort properties as the address to connect to. + /// This starts a network client. It uses the networkAddress property as the address to connect to. /// This makes the newly created client connect to the server immediately. /// public void StartClient() { + mode = NetworkManagerMode.ClientOnly; + InitializeSingleton(); if (authenticator != null) @@ -343,30 +395,175 @@ public void StartClient() if (string.IsNullOrEmpty(networkAddress)) { - Debug.LogError("Must set the Network Address field in the manager"); + logger.LogError("Must set the Network Address field in the manager"); return; } - if (LogFilter.Debug) Debug.Log("NetworkManager StartClient address:" + networkAddress); + if (logger.LogEnabled()) logger.Log("NetworkManager StartClient address:" + networkAddress); NetworkClient.Connect(networkAddress); OnStartClient(); } + /// + /// This starts a network client. It uses the Uri parameter as the address to connect to. + /// This makes the newly created client connect to the server immediately. + /// + /// location of the server to connect to + public void StartClient(Uri uri) + { + mode = NetworkManagerMode.ClientOnly; + + InitializeSingleton(); + + if (authenticator != null) + { + authenticator.OnStartClient(); + authenticator.OnClientAuthenticated.AddListener(OnClientAuthenticated); + } + + if (runInBackground) + { + Application.runInBackground = true; + } + + isNetworkActive = true; + + RegisterClientMessages(); + + if (logger.LogEnabled()) logger.Log("NetworkManager StartClient address:" + uri); + networkAddress = uri.Host; + + NetworkClient.Connect(uri); + + OnStartClient(); + } + /// /// This starts a network "host" - a server and client in the same application. /// The client returned from StartHost() is a special "local" client that communicates to the in-process server using a message queue instead of the real network. But in almost all other cases, it can be treated as a normal client. /// - public virtual void StartHost() + public void StartHost() { + mode = NetworkManagerMode.Host; + + // StartHost is inherently ASYNCHRONOUS (=doesn't finish immediately) + // + // Here is what it does: + // Listen + // ConnectHost + // if onlineScene: + // LoadSceneAsync + // ... + // FinishLoadSceneHost + // FinishStartHost + // SpawnObjects + // StartHostClient <= not guaranteed to happen after SpawnObjects if onlineScene is set! + // ClientAuth + // success: server sends changescene msg to client + // else: + // FinishStartHost + // + // there is NO WAY to make it synchronous because both LoadSceneAsync + // and LoadScene do not finish loading immediately. as long as we + // have the onlineScene feature, it will be asynchronous! + + // setup server first + SetupServer(); + + // call OnStartHost AFTER SetupServer. this way we can use + // NetworkServer.Spawn etc. in there too. just like OnStartServer + // is called after the server is actually properly started. OnStartHost(); - if (StartServer()) + + // scene change needed? then change scene and spawn afterwards. + // => BEFORE host client connects. if client auth succeeds then the + // server tells it to load 'onlineScene'. we can't do that if + // server is still in 'offlineScene'. so load on server first. + if (IsServerOnlineSceneChangeNeeded()) + { + // call FinishStartHost after changing scene. + finishStartHostPending = true; + ServerChangeScene(onlineScene); + } + // otherwise call FinishStartHost directly + else { - ConnectLocalClient(); - OnStartClient(); + FinishStartHost(); } } + // This may be set true in StartHost and is evaluated in FinishStartHost + bool finishStartHostPending; + + // FinishStartHost is guaranteed to be called after the host server was + // fully started and all the asynchronous StartHost magic is finished + // (= scene loading), or immediately if there was no asynchronous magic. + // + // note: we don't really need FinishStartClient/FinishStartServer. the + // host version is enough. + void FinishStartHost() + { + // ConnectHost needs to be called BEFORE SpawnObjects: + // https://github.com/vis2k/Mirror/pull/1249/ + // -> this sets NetworkServer.localConnection. + // -> localConnection needs to be set before SpawnObjects because: + // -> SpawnObjects calls OnStartServer in all NetworkBehaviours + // -> OnStartServer might spawn an object and set [SyncVar(hook="OnColorChanged")] object.color = green; + // -> this calls SyncVar.set (generated by Weaver), which has + // a custom case for host mode (because host mode doesn't + // get OnDeserialize calls, where SyncVar hooks are usually + // called): + // + // if (!SyncVarEqual(value, ref color)) + // { + // if (NetworkServer.localClientActive && !getSyncVarHookGuard(1uL)) + // { + // setSyncVarHookGuard(1uL, value: true); + // OnColorChangedHook(value); + // setSyncVarHookGuard(1uL, value: false); + // } + // SetSyncVar(value, ref color, 1uL); + // } + // + // -> localClientActive needs to be true, otherwise the hook + // isn't called in host mode! + // + // TODO call this after spawnobjects and worry about the syncvar hook fix later? + NetworkClient.ConnectHost(); + + // server scene was loaded. now spawn all the objects + NetworkServer.SpawnObjects(); + + // connect client and call OnStartClient AFTER server scene was + // loaded and all objects were spawned. + // DO NOT do this earlier. it would cause race conditions where a + // client will do things before the server is even fully started. + logger.Log("StartHostClient called"); + StartHostClient(); + } + + void StartHostClient() + { + logger.Log("NetworkManager ConnectLocalClient"); + + if (authenticator != null) + { + authenticator.OnStartClient(); + authenticator.OnClientAuthenticated.AddListener(OnClientAuthenticated); + } + + networkAddress = "localhost"; + NetworkServer.ActivateHostScene(); + RegisterClientMessages(); + + // ConnectLocalServer needs to be called AFTER RegisterClientMessages + // (https://github.com/vis2k/Mirror/pull/1249/) + NetworkClient.ConnectLocalServer(); + + OnStartClient(); + } + /// /// This stops both the client and the server that the manager is using. /// @@ -374,8 +571,16 @@ public void StopHost() { OnStopHost(); - StopServer(); + // TODO try to move DisconnectLocalServer into StopClient(), and + // then call StopClient() before StopServer(). needs testing!. + + // DisconnectLocalServer needs to be called so that the host client + // receives a DisconnectMessage too. + // fixes: https://github.com/vis2k/Mirror/issues/1515 + NetworkClient.DisconnectLocalServer(); + StopClient(); + StopServer(); } /// @@ -391,16 +596,22 @@ public void StopServer() OnStopServer(); - if (LogFilter.Debug) Debug.Log("NetworkManager StopServer"); + logger.Log("NetworkManager StopServer"); isNetworkActive = false; NetworkServer.Shutdown(); + + // set offline mode BEFORE changing scene so that FinishStartScene + // doesn't think we need initialize anything. + mode = NetworkManagerMode.Offline; + if (!string.IsNullOrEmpty(offlineScene)) { ServerChangeScene(offlineScene); } - CleanupNetworkIdentities(); startPositionIndex = 0; + + networkSceneName = ""; } /// @@ -413,19 +624,26 @@ public void StopClient() OnStopClient(); - if (LogFilter.Debug) Debug.Log("NetworkManager StopClient"); + logger.Log("NetworkManager StopClient"); isNetworkActive = false; // shutdown client NetworkClient.Disconnect(); NetworkClient.Shutdown(); - if (!string.IsNullOrEmpty(offlineScene) && SceneManager.GetActiveScene().name != offlineScene) + // set offline mode BEFORE changing scene so that FinishStartScene + // doesn't think we need initialize anything. + mode = NetworkManagerMode.Offline; + + // If this is the host player, StopServer will already be changing scenes. + // Check loadingSceneAsync to ensure we don't double-invoke the scene change. + // Check if NetworkServer.active because we can get here via Disconnect before server has started to change scenes. + if (!string.IsNullOrEmpty(offlineScene) && !IsSceneActive(offlineScene) && loadingSceneAsync == null && !NetworkServer.active) { ClientChangeScene(offlineScene, SceneOperation.Normal); } - CleanupNetworkIdentities(); + networkSceneName = ""; } /// @@ -449,12 +667,6 @@ public virtual void OnApplicationQuit() StopServer(); print("OnApplicationQuit: stopped server"); } - - // stop transport (e.g. to shut down threads) - // (when pressing Stop in the Editor, Unity keeps threads alive - // until we press Start again. so if Transports use threads, we - // really want them to end now and not after next start) - Transport.activeTransport.Shutdown(); } /// @@ -470,68 +682,58 @@ public virtual void ConfigureServerFrameRate() if (!NetworkClient.active && isHeadless) { Application.targetFrameRate = serverTickRate; - Debug.Log("Server Tick Rate set to: " + Application.targetFrameRate + " Hz."); + if (logger.logEnabled) logger.Log("Server Tick Rate set to: " + Application.targetFrameRate + " Hz."); } #endif } - void InitializeSingleton() + bool InitializeSingleton() { - if (singleton != null && singleton == this) - { - return; - } + if (singleton != null && singleton == this) return true; // do this early LogFilter.Debug = showDebugMessages; + if (LogFilter.Debug) + { + LogFactory.EnableDebugMode(); + } if (dontDestroyOnLoad) { if (singleton != null) { - Debug.LogWarning("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will be destroyed."); + logger.LogWarning("Multiple NetworkManagers detected in the scene. Only one NetworkManager can exist at a time. The duplicate NetworkManager will be destroyed."); Destroy(gameObject); - return; + + // Return false to not allow collision-destroyed second instance to continue. + return false; } - if (LogFilter.Debug) Debug.Log("NetworkManager created singleton (DontDestroyOnLoad)"); + logger.Log("NetworkManager created singleton (DontDestroyOnLoad)"); singleton = this; if (Application.isPlaying) DontDestroyOnLoad(gameObject); } else { - if (LogFilter.Debug) Debug.Log("NetworkManager created singleton (ForScene)"); + logger.Log("NetworkManager created singleton (ForScene)"); singleton = this; } // set active transport AFTER setting singleton. // so only if we didn't destroy ourselves. Transport.activeTransport = transport; + + return true; } void RegisterServerMessages() { NetworkServer.RegisterHandler(OnServerConnectInternal, false); NetworkServer.RegisterHandler(OnServerDisconnectInternal, false); - NetworkServer.RegisterHandler(OnServerReadyMessageInternal); NetworkServer.RegisterHandler(OnServerAddPlayerInternal); - NetworkServer.RegisterHandler(OnServerRemovePlayerMessageInternal); NetworkServer.RegisterHandler(OnServerErrorInternal, false); - } - - void ConnectLocalClient() - { - if (LogFilter.Debug) Debug.Log("NetworkManager StartHost"); - - if (authenticator != null) - { - authenticator.OnStartClient(); - authenticator.OnClientAuthenticated.AddListener(OnClientAuthenticated); - } - networkAddress = "localhost"; - NetworkServer.ActivateLocalClientScene(); - NetworkClient.ConnectLocalServer(); - RegisterClientMessages(); + // Network Server initially registers its own handler for this, so we replace it here. + NetworkServer.ReplaceHandler(OnServerReadyMessageInternal); } void RegisterClientMessages() @@ -556,14 +758,6 @@ void RegisterClientMessages() } } - void CleanupNetworkIdentities() - { - foreach (NetworkIdentity identity in Resources.FindObjectsOfTypeAll()) - { - identity.MarkForReset(); - } - } - /// /// This is the only way to clear the singleton, so another instance can be created. /// @@ -585,7 +779,7 @@ public static void Shutdown() /// public virtual void OnDestroy() { - if (LogFilter.Debug) Debug.Log("NetworkManager destroyed"); + logger.Log("NetworkManager destroyed"); } #endregion @@ -596,13 +790,13 @@ public virtual void OnDestroy() /// The name of the current network scene. /// /// - /// This is populated if the NetworkManager is doing scene management. This should not be changed directly. Calls to ServerChangeScene() cause this to change. New clients that connect to a server will automatically load this scene. + /// This is populated if the NetworkManager is doing scene management. Calls to ServerChangeScene() cause this to change. New clients that connect to a server will automatically load this scene. /// This is used to make sure that all scene changes are initialized by Mirror. /// Loading a scene manually wont set networkSceneName, so Mirror would still load it again on start. /// - public static string networkSceneName = ""; + public static string networkSceneName { get; protected set; } = ""; - static UnityEngine.AsyncOperation loadingSceneAsync; + public static UnityEngine.AsyncOperation loadingSceneAsync; /// /// This causes the server to switch scenes and sets the networkSceneName. @@ -610,63 +804,71 @@ public virtual void OnDestroy() /// /// public virtual void ServerChangeScene(string newSceneName) - { - ServerChangeScene(newSceneName, LoadSceneMode.Single, LocalPhysicsMode.None); - } - - /// - /// This causes the server to switch scenes and sets the networkSceneName. - /// Clients that connect to this server will automatically switch to this scene. This is called autmatically if onlineScene or offlineScene are set, but it can be called from user code to switch scenes again while the game is in progress. This automatically sets clients to be not-ready. The clients must call NetworkClient.Ready() again to participate in the new scene. - /// - /// - /// - /// - public virtual void ServerChangeScene(string newSceneName, LoadSceneMode sceneMode, LocalPhysicsMode physicsMode) { if (string.IsNullOrEmpty(newSceneName)) { - Debug.LogError("ServerChangeScene empty scene name"); + logger.LogError("ServerChangeScene empty scene name"); return; } - if (LogFilter.Debug) Debug.Log("ServerChangeScene " + newSceneName); + if (logger.logEnabled) logger.Log("ServerChangeScene " + newSceneName); NetworkServer.SetAllClientsNotReady(); networkSceneName = newSceneName; // Let server prepare for scene change OnServerChangeScene(newSceneName); + // Suspend the server's transport while changing scenes + // It will be re-enabled in FinishScene. + Transport.activeTransport.enabled = false; + loadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); - SceneMessage msg = new SceneMessage() + // ServerChangeScene can be called when stopping the server + // when this happens the server is not active so does not need to tell clients about the change + if (NetworkServer.active) { - sceneName = newSceneName, - }; - - NetworkServer.SendToAll(msg); + // notify all clients about the new scene + NetworkServer.SendToAll(new SceneMessage { sceneName = newSceneName }); + } startPositionIndex = 0; startPositions.Clear(); } - internal void ClientChangeScene(string newSceneName, SceneOperation sceneOperation = SceneOperation.Normal) + // This is only set in ClientChangeScene below...never on server. + // We need to check this in OnClientSceneChanged called from FinishLoadSceneClientOnly + // to prevent AddPlayer message after loading/unloading additive scenes + SceneOperation clientSceneOperation = SceneOperation.Normal; + + internal void ClientChangeScene(string newSceneName, SceneOperation sceneOperation = SceneOperation.Normal, bool customHandling = false) { if (string.IsNullOrEmpty(newSceneName)) { - Debug.LogError("ClientChangeScene empty scene name"); + logger.LogError("ClientChangeScene empty scene name"); return; } - if (LogFilter.Debug) Debug.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); + if (logger.LogEnabled()) logger.Log("ClientChangeScene newSceneName:" + newSceneName + " networkSceneName:" + networkSceneName); // vis2k: pause message handling while loading scene. otherwise we will process messages and then lose all // the state as soon as the load is finishing, causing all kinds of bugs because of missing state. // (client may be null after StopClient etc.) - if (LogFilter.Debug) Debug.Log("ClientChangeScene: pausing handlers while scene is loading to avoid data loss after scene was loaded."); + if (logger.LogEnabled()) logger.Log("ClientChangeScene: pausing handlers while scene is loading to avoid data loss after scene was loaded."); Transport.activeTransport.enabled = false; // Let client prepare for scene change - OnClientChangeScene(newSceneName, sceneOperation); + OnClientChangeScene(newSceneName, sceneOperation, customHandling); + + // scene handling will happen in overrides of OnClientChangeScene and/or OnClientSceneChanged + if (customHandling) + { + FinishLoadScene(); + return; + } + + // cache sceneOperation so we know what was done in OnClientSceneChanged called from FinishLoadSceneClientOnly + clientSceneOperation = sceneOperation; switch (sceneOperation) { @@ -674,19 +876,30 @@ internal void ClientChangeScene(string newSceneName, SceneOperation sceneOperati loadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName); break; case SceneOperation.LoadAdditive: - if (!SceneManager.GetSceneByName(newSceneName).IsValid()) + // Ensure additive scene is not already loaded on client by name or path + // since we don't know which was passed in the Scene message + if (!SceneManager.GetSceneByName(newSceneName).IsValid() && !SceneManager.GetSceneByPath(newSceneName).IsValid()) loadingSceneAsync = SceneManager.LoadSceneAsync(newSceneName, LoadSceneMode.Additive); else - Debug.LogWarningFormat("Scene {0} is already loaded", newSceneName); + { + logger.LogWarning($"Scene {newSceneName} is already loaded"); + + // Re-enable the transport that we disabled before entering this switch + Transport.activeTransport.enabled = true; + } break; case SceneOperation.UnloadAdditive: - if (SceneManager.GetSceneByName(newSceneName).IsValid()) + // Ensure additive scene is actually loaded on client by name or path + // since we don't know which was passed in the Scene message + if (SceneManager.GetSceneByName(newSceneName).IsValid() || SceneManager.GetSceneByPath(newSceneName).IsValid()) + loadingSceneAsync = SceneManager.UnloadSceneAsync(newSceneName, UnloadSceneOptions.UnloadAllEmbeddedSceneObjects); + else { - if (SceneManager.GetSceneByName(newSceneName) != null) - loadingSceneAsync = SceneManager.UnloadSceneAsync(newSceneName, UnloadSceneOptions.UnloadAllEmbeddedSceneObjects); + logger.LogWarning($"Cannot unload {newSceneName} with UnloadAdditive operation"); + + // Re-enable the transport that we disabled before entering this switch + Transport.activeTransport.enabled = true; } - else - Debug.LogWarning("Cannot unload the active scene with UnloadAdditive operation"); break; } @@ -712,12 +925,12 @@ void OnSceneLoaded(Scene scene, LoadSceneMode mode) { // TODO only respawn the server objects from that scene later! NetworkServer.SpawnObjects(); - Debug.Log("Respawned Server objects after additive scene load: " + scene.name); + if (logger.LogEnabled()) logger.Log("Respawned Server objects after additive scene load: " + scene.name); } if (NetworkClient.active) { ClientScene.PrepareToSpawnSceneObjects(); - Debug.Log("Rebuild Client spawnableObjects after additive scene load: " + scene.name); + if (logger.LogEnabled()) logger.Log("Rebuild Client spawnableObjects after additive scene load: " + scene.name); } } } @@ -726,7 +939,7 @@ static void UpdateScene() { if (singleton != null && loadingSceneAsync != null && loadingSceneAsync.isDone) { - if (LogFilter.Debug) Debug.Log("ClientChangeScene done readyCon:" + clientReadyConnection); + if (logger.LogEnabled()) logger.Log("ClientChangeScene done readyCon:" + clientReadyConnection); singleton.FinishLoadScene(); loadingSceneAsync.allowSceneActivation = true; loadingSceneAsync = null; @@ -738,25 +951,109 @@ void FinishLoadScene() // NOTE: this cannot use NetworkClient.allClients[0] - that client may be for a completely different purpose. // process queued messages that we received while loading the scene - if (LogFilter.Debug) Debug.Log("FinishLoadScene: resuming handlers after scene was loading."); + logger.Log("FinishLoadScene: resuming handlers after scene was loading."); Transport.activeTransport.enabled = true; + // host mode? + if (mode == NetworkManagerMode.Host) + { + FinishLoadSceneHost(); + } + // server-only mode? + else if (mode == NetworkManagerMode.ServerOnly) + { + FinishLoadSceneServerOnly(); + } + // client-only mode? + else if (mode == NetworkManagerMode.ClientOnly) + { + FinishLoadSceneClientOnly(); + } + // otherwise we called it after stopping when loading offline scene. + // do nothing then. + } + + // finish load scene part for host mode. makes code easier and is + // necessary for FinishStartHost later. + // (the 3 things have to happen in that exact order) + void FinishLoadSceneHost() + { + // debug message is very important. if we ever break anything then + // it's very obvious to notice. + logger.Log("Finished loading scene in host mode."); + if (clientReadyConnection != null) { - clientLoadedScene = true; OnClientConnect(clientReadyConnection); + clientLoadedScene = true; clientReadyConnection = null; } - if (NetworkServer.active) + // do we need to finish a StartHost() call? + // then call FinishStartHost and let it take care of spawning etc. + if (finishStartHostPending) + { + finishStartHostPending = false; + FinishStartHost(); + + // call OnServerSceneChanged + OnServerSceneChanged(networkSceneName); + + // DO NOT call OnClientSceneChanged here. + // the scene change happened because StartHost loaded the + // server's online scene. it has nothing to do with the client. + // this was not meant as a client scene load, so don't call it. + // + // otherwise AddPlayer would be called twice: + // -> once for client OnConnected + // -> once in OnClientSceneChanged + } + // otherwise we just changed a scene in host mode + else { + // spawn server objects NetworkServer.SpawnObjects(); + + // call OnServerSceneChanged OnServerSceneChanged(networkSceneName); + + if (NetworkClient.isConnected) + { + // let client know that we changed scene + OnClientSceneChanged(NetworkClient.connection); + } + } + } + + // finish load scene part for server-only. . makes code easier and is + // necessary for FinishStartServer later. + void FinishLoadSceneServerOnly() + { + // debug message is very important. if we ever break anything then + // it's very obvious to notice. + logger.Log("Finished loading scene in server-only mode."); + + NetworkServer.SpawnObjects(); + OnServerSceneChanged(networkSceneName); + } + + // finish load scene part for client-only. makes code easier and is + // necessary for FinishStartClient later. + void FinishLoadSceneClientOnly() + { + // debug message is very important. if we ever break anything then + // it's very obvious to notice. + logger.Log("Finished loading scene in client-only mode."); + + if (clientReadyConnection != null) + { + OnClientConnect(clientReadyConnection); + clientLoadedScene = true; + clientReadyConnection = null; } if (NetworkClient.isConnected) { - RegisterClientMessages(); OnClientSceneChanged(NetworkClient.connection); } } @@ -765,7 +1062,7 @@ void FinishLoadScene() #region Start Positions - static int startPositionIndex; + public static int startPositionIndex; /// /// List of transforms populted by NetworkStartPosition components found in the scene. @@ -779,7 +1076,7 @@ void FinishLoadScene() /// Transform to register. public static void RegisterStartPosition(Transform start) { - if (LogFilter.Debug) Debug.Log("RegisterStartPosition: (" + start.gameObject.name + ") " + start.position); + if (logger.LogEnabled()) logger.Log("RegisterStartPosition: (" + start.gameObject.name + ") " + start.position); startPositions.Add(start); // reorder the list so that round-robin spawning uses the start positions @@ -796,17 +1093,42 @@ public static void RegisterStartPosition(Transform start) /// Transform to unregister. public static void UnRegisterStartPosition(Transform start) { - if (LogFilter.Debug) Debug.Log("UnRegisterStartPosition: (" + start.gameObject.name + ") " + start.position); + if (logger.LogEnabled()) logger.Log("UnRegisterStartPosition: (" + start.gameObject.name + ") " + start.position); startPositions.Remove(start); } + /// + /// This finds a spawn position based on NetworkStartPosition objects in the scene. + /// This is used by the default implementation of OnServerAddPlayer. + /// + /// Returns the transform to spawn a player at, or null. + public Transform GetStartPosition() + { + // first remove any dead transforms + startPositions.RemoveAll(t => t == null); + + if (startPositions.Count == 0) + return null; + + if (playerSpawnMethod == PlayerSpawnMethod.Random) + { + return startPositions[UnityEngine.Random.Range(0, startPositions.Count)]; + } + else + { + Transform startPosition = startPositions[startPositionIndex]; + startPositionIndex = (startPositionIndex + 1) % startPositions.Count; + return startPosition; + } + } + #endregion #region Server Internal Message Handlers void OnServerConnectInternal(NetworkConnection conn, ConnectMessage connectMsg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerConnectInternal"); + logger.Log("NetworkManager.OnServerConnectInternal"); if (authenticator != null) { @@ -823,7 +1145,7 @@ void OnServerConnectInternal(NetworkConnection conn, ConnectMessage connectMsg) // called after successful authentication void OnServerAuthenticated(NetworkConnection conn) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerAuthenticated"); + logger.Log("NetworkManager.OnServerAuthenticated"); // set connection to authenticated conn.isAuthenticated = true; @@ -840,58 +1162,52 @@ void OnServerAuthenticated(NetworkConnection conn) void OnServerDisconnectInternal(NetworkConnection conn, DisconnectMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerDisconnectInternal"); + logger.Log("NetworkManager.OnServerDisconnectInternal"); OnServerDisconnect(conn); } void OnServerReadyMessageInternal(NetworkConnection conn, ReadyMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerReadyMessageInternal"); + logger.Log("NetworkManager.OnServerReadyMessageInternal"); OnServerReady(conn); } - void OnServerAddPlayerInternal(NetworkConnection conn, AddPlayerMessage extraMessage) + void OnServerAddPlayerInternal(NetworkConnection conn, AddPlayerMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerAddPlayer"); + logger.Log("NetworkManager.OnServerAddPlayer"); if (autoCreatePlayer && playerPrefab == null) { - Debug.LogError("The PlayerPrefab is empty on the NetworkManager. Please setup a PlayerPrefab object."); + logger.LogError("The PlayerPrefab is empty on the NetworkManager. Please setup a PlayerPrefab object."); return; } if (autoCreatePlayer && playerPrefab.GetComponent() == null) { - Debug.LogError("The PlayerPrefab does not have a NetworkIdentity. Please add a NetworkIdentity to the player prefab."); + logger.LogError("The PlayerPrefab does not have a NetworkIdentity. Please add a NetworkIdentity to the player prefab."); return; } if (conn.identity != null) { - Debug.LogError("There is already a player for this connection."); + logger.LogError("There is already a player for this connection."); return; } -#pragma warning disable CS0618 // Type or member is obsolete - OnServerAddPlayer(conn, extraMessage); -#pragma warning restore CS0618 // Type or member is obsolete + OnServerAddPlayer(conn); } - void OnServerRemovePlayerMessageInternal(NetworkConnection conn, RemovePlayerMessage msg) - { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerRemovePlayerMessageInternal"); - - if (conn.identity != null) - { - OnServerRemovePlayer(conn, conn.identity); - conn.identity = null; - } - } + // Deprecated 5/2/2020 + /// + /// Obsolete: Removed as a security risk. Use NetworkServer.RemovePlayerForConnection instead. + /// + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Removed as a security risk. Use NetworkServer.RemovePlayerForConnection(NetworkConnection conn, bool keepAuthority = false) instead", true)] + void OnServerRemovePlayerMessageInternal(NetworkConnection conn, RemovePlayerMessage msg) { } void OnServerErrorInternal(NetworkConnection conn, ErrorMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnServerErrorInternal"); - OnServerError(conn, msg.error); + logger.Log("NetworkManager.OnServerErrorInternal"); + OnServerError(conn, msg.value); } #endregion @@ -900,7 +1216,7 @@ void OnServerErrorInternal(NetworkConnection conn, ErrorMessage msg) void OnClientConnectInternal(NetworkConnection conn, ConnectMessage message) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnClientConnectInternal"); + logger.Log("NetworkManager.OnClientConnectInternal"); if (authenticator != null) { @@ -917,14 +1233,13 @@ void OnClientConnectInternal(NetworkConnection conn, ConnectMessage message) // called after successful authentication void OnClientAuthenticated(NetworkConnection conn) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnClientAuthenticated"); + logger.Log("NetworkManager.OnClientAuthenticated"); // set connection to authenticated conn.isAuthenticated = true; // proceed with the login handshake by calling OnClientConnect - string loadedSceneName = SceneManager.GetActiveScene().name; - if (string.IsNullOrEmpty(onlineScene) || onlineScene == offlineScene || loadedSceneName == onlineScene) + if (string.IsNullOrEmpty(onlineScene) || onlineScene == offlineScene || IsSceneActive(onlineScene)) { clientLoadedScene = false; OnClientConnect(conn); @@ -932,19 +1247,20 @@ void OnClientAuthenticated(NetworkConnection conn) else { // will wait for scene id to come from the server. + clientLoadedScene = true; clientReadyConnection = conn; } } void OnClientDisconnectInternal(NetworkConnection conn, DisconnectMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnClientDisconnectInternal"); + logger.Log("NetworkManager.OnClientDisconnectInternal"); OnClientDisconnect(conn); } void OnClientNotReadyMessageInternal(NetworkConnection conn, NotReadyMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnClientNotReadyMessageInternal"); + logger.Log("NetworkManager.OnClientNotReadyMessageInternal"); ClientScene.ready = false; OnClientNotReady(conn); @@ -954,17 +1270,17 @@ void OnClientNotReadyMessageInternal(NetworkConnection conn, NotReadyMessage msg void OnClientErrorInternal(NetworkConnection conn, ErrorMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager:OnClientErrorInternal"); - OnClientError(conn, msg.error); + logger.Log("NetworkManager:OnClientErrorInternal"); + OnClientError(conn, msg.value); } void OnClientSceneInternal(NetworkConnection conn, SceneMessage msg) { - if (LogFilter.Debug) Debug.Log("NetworkManager.OnClientSceneInternal"); + logger.Log("NetworkManager.OnClientSceneInternal"); if (NetworkClient.isConnected && !NetworkServer.active) { - ClientChangeScene(msg.sceneName, msg.sceneOperation); + ClientChangeScene(msg.sceneName, msg.sceneOperation, msg.customHandling); } } @@ -987,7 +1303,7 @@ public virtual void OnServerConnect(NetworkConnection conn) { } public virtual void OnServerDisconnect(NetworkConnection conn) { NetworkServer.DestroyPlayerForConnection(conn); - if (LogFilter.Debug) Debug.Log("OnServerDisconnect: Client disconnected."); + logger.Log("OnServerDisconnect: Client disconnected."); } /// @@ -1000,23 +1316,11 @@ public virtual void OnServerReady(NetworkConnection conn) if (conn.identity == null) { // this is now allowed (was not for a while) - if (LogFilter.Debug) Debug.Log("Ready with no player object"); + logger.Log("Ready with no player object"); } NetworkServer.SetClientReady(conn); } - /// - /// Obsolete: Override instead. - /// See Custom Players for details. - /// - /// Connection from client. - /// An extra message object passed for the new player. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Override OnServerAddPlayer(NetworkConnection conn) instead. See https://mirror-networking.com/docs/Guides/GameObjects/SpawnPlayerCustom.html for details.")] - public virtual void OnServerAddPlayer(NetworkConnection conn, AddPlayerMessage extraMessage) - { - OnServerAddPlayer(conn); - } - /// /// Called on the server when a client adds a new player with ClientScene.AddPlayer. /// The default implementation for this function creates a new player object from the playerPrefab. @@ -1032,44 +1336,12 @@ public virtual void OnServerAddPlayer(NetworkConnection conn) NetworkServer.AddPlayerForConnection(conn, player); } + // Deprecated 5/2/2020 /// - /// This finds a spawn position based on NetworkStartPosition objects in the scene. - /// This is used by the default implementation of OnServerAddPlayer. - /// - /// Returns the transform to spawn a player at, or null. - public Transform GetStartPosition() - { - // first remove any dead transforms - startPositions.RemoveAll(t => t == null); - - if (startPositions.Count == 0) - return null; - - if (playerSpawnMethod == PlayerSpawnMethod.Random) - { - return startPositions[UnityEngine.Random.Range(0, startPositions.Count)]; - } - else - { - Transform startPosition = startPositions[startPositionIndex]; - startPositionIndex = (startPositionIndex + 1) % startPositions.Count; - return startPosition; - } - } - - /// - /// Called on the server when a client removes a player. - /// The default implementation of this function destroys the corresponding player object. + /// Obsolete: Removed as a security risk. Use NetworkServer.RemovePlayerForConnection instead. /// - /// The connection to remove the player from. - /// The player controller to remove. - public virtual void OnServerRemovePlayer(NetworkConnection conn, NetworkIdentity player) - { - if (player.gameObject != null) - { - NetworkServer.Destroy(player.gameObject); - } - } + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Removed as a security risk. Use NetworkServer.RemovePlayerForConnection(NetworkConnection conn, bool keepAuthority = false) instead", true)] + public virtual void OnServerRemovePlayer(NetworkConnection conn, NetworkIdentity player) { } /// /// Called on the server when a network error occurs for a client connection. @@ -1102,13 +1374,16 @@ public virtual void OnServerSceneChanged(string sceneName) { } /// Connection to the server. public virtual void OnClientConnect(NetworkConnection conn) { + // OnClientConnect by default calls AddPlayer but it should not do + // that when we have online/offline scenes. so we need the + // clientLoadedScene flag to prevent it. if (!clientLoadedScene) { // Ready/AddPlayer is usually triggered by a scene load completing. if no scene was loaded, then Ready/AddPlayer it here instead. if (!ClientScene.ready) ClientScene.Ready(conn); if (autoCreatePlayer) { - ClientScene.AddPlayer(); + ClientScene.AddPlayer(conn); } } } @@ -1137,14 +1412,14 @@ public virtual void OnClientError(NetworkConnection conn, int errorCode) { } /// Connection to the server. public virtual void OnClientNotReady(NetworkConnection conn) { } + // Deprecated 12/22/2019 /// - /// Obsolete: Use instead.). + /// Obsolete: Use OnClientChangeScene(string, SceneOperation, bool) instead. /// - /// Name of the scene that's about to be loaded - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Override OnClientChangeScene(string newSceneName, SceneOperation sceneOperation) instead")] - public virtual void OnClientChangeScene(string newSceneName) + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Override OnClientChangeScene(string newSceneName, SceneOperation sceneOperation, bool customHandling) instead", true)] + public virtual void OnClientChangeScene(string newSceneName, SceneOperation sceneOperation) { - OnClientChangeScene(newSceneName, SceneOperation.Normal); + OnClientChangeScene(newSceneName, sceneOperation, false); } /// @@ -1153,7 +1428,8 @@ public virtual void OnClientChangeScene(string newSceneName) /// /// Name of the scene that's about to be loaded /// Scene operation that's about to happen - public virtual void OnClientChangeScene(string newSceneName, SceneOperation sceneOperation) { } + /// true to indicate that scene loading will be handled through overrides + public virtual void OnClientChangeScene(string newSceneName, SceneOperation sceneOperation, bool customHandling) { } /// /// Called on clients when a scene has completed loaded, when the scene load was initiated by the server. @@ -1165,10 +1441,11 @@ public virtual void OnClientSceneChanged(NetworkConnection conn) // always become ready. if (!ClientScene.ready) ClientScene.Ready(conn); - if (autoCreatePlayer && ClientScene.localPlayer == null) + // Only call AddPlayer for normal scene changes, not additive load/unload + if (clientSceneOperation == SceneOperation.Normal && autoCreatePlayer && ClientScene.localPlayer == null) { // add player if existing one is null - ClientScene.AddPlayer(); + ClientScene.AddPlayer(conn); } } @@ -1192,23 +1469,10 @@ public virtual void OnStartHost() { } /// public virtual void OnStartServer() { } - /// - /// Obsolete: Use instead of OnStartClient(NetworkClient client). - /// All NetworkClient functions are static now, so you can use NetworkClient.Send(message) instead of client.Send(message) directly now. - /// - /// The NetworkClient object that was started. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use OnStartClient() instead of OnStartClient(NetworkClient client). All NetworkClient functions are static now, so you can use NetworkClient.Send(message) instead of client.Send(message) directly now.")] - public virtual void OnStartClient(NetworkClient client) { } - /// /// This is invoked when the client is started. /// - public virtual void OnStartClient() - { -#pragma warning disable CS0618 // Type or member is obsolete - OnStartClient(NetworkClient.singleton); -#pragma warning restore CS0618 // Type or member is obsolete - } + public virtual void OnStartClient() { } /// /// This is called when a server is stopped - including when a host is stopped. diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs.meta index 3ca7c55..0a7564a 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManager.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs index 76fb6fa..8131e30 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs @@ -9,6 +9,7 @@ namespace Mirror /// An extension for the NetworkManager that displays a default HUD for controlling the network state of the game. /// This component also shows useful internal state for the networking system in the inspector window of the editor. It allows users to view connections, networked objects, message handlers, and packet statistics. This information can be helpful when debugging networked games. /// + [DisallowMultipleComponent] [AddComponentMenu("Network/NetworkManagerHUD")] [RequireComponent(typeof(NetworkManager))] [EditorBrowsable(EditorBrowsableState.Never)] @@ -45,84 +46,115 @@ void OnGUI() GUILayout.BeginArea(new Rect(10 + offsetX, 40 + offsetY, 215, 9999)); if (!NetworkClient.isConnected && !NetworkServer.active) { - if (!NetworkClient.active) + StartButtons(); + } + else + { + StatusLabels(); + } + + // client ready + if (NetworkClient.isConnected && !ClientScene.ready) + { + if (GUILayout.Button("Client Ready")) { - // LAN Host - if (Application.platform != RuntimePlatform.WebGLPlayer) - { - if (GUILayout.Button("LAN Host")) - { - manager.StartHost(); - } - } + ClientScene.Ready(NetworkClient.connection); - // LAN Client + IP - GUILayout.BeginHorizontal(); - if (GUILayout.Button("LAN Client")) + if (ClientScene.localPlayer == null) { - manager.StartClient(); + ClientScene.AddPlayer(NetworkClient.connection); } - manager.networkAddress = GUILayout.TextField(manager.networkAddress); - GUILayout.EndHorizontal(); + } + } - // LAN Server Only - if (Application.platform == RuntimePlatform.WebGLPlayer) - { - // cant be a server in webgl build - GUILayout.Box("( WebGL cannot be server )"); - } - else + StopButtons(); + + GUILayout.EndArea(); + } + + void StartButtons() + { + if (!NetworkClient.active) + { + // Server + Client + if (Application.platform != RuntimePlatform.WebGLPlayer) + { + if (GUILayout.Button("Host (Server + Client)")) { - if (GUILayout.Button("LAN Server Only")) manager.StartServer(); + manager.StartHost(); } } + + // Client + IP + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Client")) + { + manager.StartClient(); + } + manager.networkAddress = GUILayout.TextField(manager.networkAddress); + GUILayout.EndHorizontal(); + + // Server Only + if (Application.platform == RuntimePlatform.WebGLPlayer) + { + // cant be a server in webgl build + GUILayout.Box("( WebGL cannot be server )"); + } else { - // Connecting - GUILayout.Label("Connecting to " + manager.networkAddress + ".."); - if (GUILayout.Button("Cancel Connection Attempt")) - { - manager.StopClient(); - } + if (GUILayout.Button("Server Only")) manager.StartServer(); } } else { - // server / client status message - if (NetworkServer.active) + // Connecting + GUILayout.Label("Connecting to " + manager.networkAddress + ".."); + if (GUILayout.Button("Cancel Connection Attempt")) { - GUILayout.Label("Server: active. Transport: " + Transport.activeTransport); + manager.StopClient(); } - if (NetworkClient.isConnected) + } + } + + void StatusLabels() + { + // server / client status message + if (NetworkServer.active) + { + GUILayout.Label("Server: active. Transport: " + Transport.activeTransport); + } + if (NetworkClient.isConnected) + { + GUILayout.Label("Client: address=" + manager.networkAddress); + } + } + + void StopButtons() + { + // stop host if host mode + if (NetworkServer.active && NetworkClient.isConnected) + { + if (GUILayout.Button("Stop Host")) { - GUILayout.Label("Client: address=" + manager.networkAddress); + manager.StopHost(); } } - - // client ready - if (NetworkClient.isConnected && !ClientScene.ready) + // stop client if client-only + else if (NetworkClient.isConnected) { - if (GUILayout.Button("Client Ready")) + if (GUILayout.Button("Stop Client")) { - ClientScene.Ready(NetworkClient.connection); - - if (ClientScene.localPlayer == null) - { - ClientScene.AddPlayer(); - } + manager.StopClient(); } } - - // stop - if (NetworkServer.active || NetworkClient.isConnected) + // stop server if server-only + else if (NetworkServer.active) { - if (GUILayout.Button("Stop")) + if (GUILayout.Button("Stop Server")) { - manager.StopHost(); + manager.StopServer(); } } - - GUILayout.EndArea(); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs.meta index fa08c3d..a720b9c 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkManagerHUD.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkMessage.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkMessage.cs index c41c45b..300b10e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkMessage.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkMessage.cs @@ -1,25 +1 @@ -namespace Mirror -{ - public struct NetworkMessage - { - public NetworkConnection conn; - public NetworkReader reader; - public int channelId; - - public TMsg ReadMessage() where TMsg : IMessageBase, new() - { - // Normally I would just do: - // TMsg msg = new TMsg(); - // but mono calls an expensive method Activator.CreateInstance - // For value types this is unnecesary, just use the default value - TMsg msg = typeof(TMsg).IsValueType ? default(TMsg) : new TMsg(); - msg.Deserialize(reader); - return msg; - } - - public void ReadMessage(TMsg msg) where TMsg : IMessageBase - { - msg.Deserialize(reader); - } - } -} +// file removed 03/17/2020 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReader.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReader.cs index 0466984..37f9014 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReader.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReader.cs @@ -16,44 +16,30 @@ namespace Mirror // Note: This class is intended to be extremely pedantic, and // throw exceptions whenever stuff is going slightly wrong. // The exceptions will be handled in NetworkServer/NetworkClient. + /// + /// Binary stream Reader. Supports simple types, buffers, arrays, structs, and nested types + /// Use NetworkReaderPool.GetReader to reduce memory allocation + /// public class NetworkReader { // internal buffer // byte[] pointer would work, but we use ArraySegment to also support // the ArraySegment constructor - ArraySegment buffer; + internal ArraySegment buffer; // 'int' is the best type for .Position. 'short' is too small if we send >32kb which would result in negative .Position // -> converting long to int is fine until 2GB of data (MAX_INT), so we don't have to worry about overflows here public int Position; public int Length => buffer.Count; - internal bool pooled; - internal readonly bool reusable; - public NetworkReader(byte[] bytes, bool reusable = false) + public NetworkReader(byte[] bytes) { buffer = new ArraySegment(bytes); - Position = 0; - this.reusable = reusable; } - public NetworkReader(ArraySegment segment, bool reusable = false) + public NetworkReader(ArraySegment segment) { buffer = segment; - Position = 0; - this.reusable = reusable; - } - - internal void SetBuffer(byte[] bytes) - { - buffer = new ArraySegment(bytes); - Position = 0; - } - - internal void SetBuffer(ArraySegment segment) - { - buffer = segment; - Position = 0; } public byte ReadByte() @@ -67,7 +53,8 @@ public byte ReadByte() public int ReadInt32() => (int)ReadUInt32(); public uint ReadUInt32() { - uint value = ReadByte(); + uint value = 0; + value |= ReadByte(); value |= (uint)(ReadByte() << 8); value |= (uint)(ReadByte() << 16); value |= (uint)(ReadByte() << 24); @@ -76,7 +63,8 @@ public uint ReadUInt32() public long ReadInt64() => (long)ReadUInt64(); public ulong ReadUInt64() { - ulong value = ReadByte(); + ulong value = 0; + value |= ReadByte(); value |= ((ulong)ReadByte()) << 8; value |= ((ulong)ReadByte()) << 16; value |= ((ulong)ReadByte()) << 24; @@ -126,6 +114,8 @@ public override string ToString() // but they do all need to be extensions. public static class NetworkReaderExtensions { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkReaderExtensions)); + // cache encoding instead of creating it each time // 1000 readers before: 1MB GC, 30ms // 1000 readers after: 0.8MB GC, 18ms @@ -138,14 +128,16 @@ public static class NetworkReaderExtensions public static short ReadInt16(this NetworkReader reader) => (short)reader.ReadUInt16(); public static ushort ReadUInt16(this NetworkReader reader) { - ushort value = reader.ReadByte(); + ushort value = 0; + value |= reader.ReadByte(); value |= (ushort)(reader.ReadByte() << 8); return value; } public static int ReadInt32(this NetworkReader reader) => (int)reader.ReadUInt32(); public static uint ReadUInt32(this NetworkReader reader) { - uint value = reader.ReadByte(); + uint value = 0; + value |= reader.ReadByte(); value |= (uint)(reader.ReadByte() << 8); value |= (uint)(reader.ReadByte() << 16); value |= (uint)(reader.ReadByte() << 24); @@ -154,7 +146,8 @@ public static uint ReadUInt32(this NetworkReader reader) public static long ReadInt64(this NetworkReader reader) => (long)reader.ReadUInt64(); public static ulong ReadUInt64(this NetworkReader reader) { - ulong value = reader.ReadByte(); + ulong value = 0; + value |= reader.ReadByte(); value |= ((ulong)reader.ReadByte()) << 8; value |= ((ulong)reader.ReadByte()) << 16; value |= ((ulong)reader.ReadByte()) << 24; @@ -166,17 +159,21 @@ public static ulong ReadUInt64(this NetworkReader reader) } public static float ReadSingle(this NetworkReader reader) { - UIntFloat converter = new UIntFloat {intValue = reader.ReadUInt32()}; + UIntFloat converter = new UIntFloat(); + converter.intValue = reader.ReadUInt32(); return converter.floatValue; } public static double ReadDouble(this NetworkReader reader) { - UIntDouble converter = new UIntDouble {longValue = reader.ReadUInt64()}; + UIntDouble converter = new UIntDouble(); + converter.longValue = reader.ReadUInt64(); return converter.doubleValue; } public static decimal ReadDecimal(this NetworkReader reader) { - UIntDecimal converter = new UIntDecimal {longValue1 = reader.ReadUInt64(), longValue2 = reader.ReadUInt64()}; + UIntDecimal converter = new UIntDecimal(); + converter.longValue1 = reader.ReadUInt64(); + converter.longValue2 = reader.ReadUInt64(); return converter.decimalValue; } @@ -187,13 +184,8 @@ public static string ReadString(this NetworkReader reader) // read number of bytes ushort size = reader.ReadUInt16(); - switch (size) - { - case 0: - return null; - case 1: - return ""; - } + if (size == 0) + return null; int realSize = size - 1; @@ -214,7 +206,7 @@ public static string ReadString(this NetworkReader reader) public static byte[] ReadBytesAndSize(this NetworkReader reader) { // count = 0 means the array was null - // otherwise count -1 is the length of the array + // otherwise count -1 is the length of the array uint count = reader.ReadPackedUInt32(); return count == 0 ? null : reader.ReadBytes(checked((int)(count - 1u))); } @@ -348,21 +340,43 @@ public static byte[] ReadBytes(this NetworkReader reader, int count) } public static Guid ReadGuid(this NetworkReader reader) => new Guid(reader.ReadBytes(16)); - public static Transform ReadTransform(this NetworkReader reader) => reader.ReadNetworkIdentity()?.transform; - public static GameObject ReadGameObject(this NetworkReader reader) => reader.ReadNetworkIdentity()?.gameObject; + public static Transform ReadTransform(this NetworkReader reader) + { + // Dont use null propagation here as it could lead to MissingReferenceException + NetworkIdentity networkIdentity = reader.ReadNetworkIdentity(); + return networkIdentity != null ? networkIdentity.transform : null; + } + + public static GameObject ReadGameObject(this NetworkReader reader) + { + // Dont use null propagation here as it could lead to MissingReferenceException + NetworkIdentity networkIdentity = reader.ReadNetworkIdentity(); + return networkIdentity != null ? networkIdentity.gameObject : null; + } public static NetworkIdentity ReadNetworkIdentity(this NetworkReader reader) { uint netId = reader.ReadPackedUInt32(); - if (netId == 0) return null; + if (netId == 0) + return null; if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity)) { return identity; } - if (LogFilter.Debug) Debug.Log("ReadNetworkIdentity netId:" + netId + " not found in spawned"); + if (logger.WarnEnabled()) logger.LogFormat(LogType.Warning, "ReadNetworkIdentity netId:{0} not found in spawned", netId); return null; } + + public static Uri ReadUri(this NetworkReader reader) + { + return new Uri(reader.ReadString()); + } + + public static void ReadMessage(this NetworkReader reader, T msg) where T : IMessageBase + { + msg.Deserialize(reader); + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs index 3fe6cbf..4c80a6a 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs @@ -1,56 +1,135 @@ using System; -using System.Collections.Generic; using UnityEngine; namespace Mirror { + /// + /// NetworkReader to be used with NetworkReaderPool + /// + public class PooledNetworkReader : NetworkReader, IDisposable + { + internal PooledNetworkReader(byte[] bytes) : base(bytes) { } + + internal PooledNetworkReader(ArraySegment segment) : base(segment) { } + + public void Dispose() + { + NetworkReaderPool.Recycle(this); + } + } + + /// + /// Pool of NetworkReaders + /// Use this pool instead of NetworkReader to reduce memory allocation + /// Use Capacity to change size of pool + /// public static class NetworkReaderPool { - // reuse all readers, saves tons of memory allocations in hotpath - static readonly Stack readerPool = new Stack(); + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkReaderPool), LogType.Error); - public static NetworkReader GetReader(byte[] data) + /// + /// Size of the pool + /// If pool is too small getting readers will causes memory allocation + /// Default value: 100 + /// + public static int Capacity { - if (readerPool.Count != 0) + get => pool.Length; + set { - NetworkReader reader = readerPool.Pop(); - reader.pooled = false; - // reset cached writer length and position - reader.SetBuffer(data); - return reader; - } + // resize the array + Array.Resize(ref pool, value); - return new NetworkReader(data, true); + // if capacity is smaller than before, then we need to adjust + // 'next' so it doesn't point to an index out of range + // -> if we set '0' then next = min(_, 0-1) => -1 + // -> if we set '2' then next = min(_, 2-1) => 1 + next = Mathf.Min(next, pool.Length - 1); + } } - public static NetworkReader GetReader(ArraySegment data) + /// + /// Mirror usually only uses up to 4 readers in nested usings, + /// 100 is a good margin for edge cases when users need a lot readers at + /// the same time. + /// + /// keep in mind, most entries of the pool will be null in most cases + /// + /// + /// Note: we use an Array instead of a Stack because it's significantly + /// faster: https://github.com/vis2k/Mirror/issues/1614 + static PooledNetworkReader[] pool = new PooledNetworkReader[100]; + + static int next = -1; + + /// + /// Get the next reader in the pool + /// If pool is empty, creates a new Reader + /// + public static PooledNetworkReader GetReader(byte[] bytes) { - if (readerPool.Count != 0) + if (next == -1) { - NetworkReader reader = readerPool.Pop(); - reader.pooled = false; - // reset cached writer length and position - reader.SetBuffer(data); - return reader; + return new PooledNetworkReader(bytes); } - return new NetworkReader(data, true); + PooledNetworkReader reader = pool[next]; + pool[next] = null; + next--; + + // reset buffer + SetBuffer(reader, bytes); + return reader; } - public static void Recycle(NetworkReader reader) + /// + /// Get the next reader in the pool + /// If pool is empty, creates a new Reader + /// + public static PooledNetworkReader GetReader(ArraySegment segment) { - if (reader == null) + if (next == -1) { - Debug.LogWarning("Recycling null readers is not allowed, please check your code!"); - return; + return new PooledNetworkReader(segment); } - if (reader.reusable && !reader.pooled) + PooledNetworkReader reader = pool[next]; + pool[next] = null; + next--; + + // reset buffer + SetBuffer(reader, segment); + return reader; + } + + /// + /// Puts reader back into pool + /// When pool is full, the extra reader is left for the GC + /// + public static void Recycle(PooledNetworkReader reader) + { + if (next < pool.Length - 1) + { + next++; + pool[next] = reader; + } + else { - reader.pooled = true; - reader.SetBuffer(default(ArraySegment)); - readerPool.Push(reader); + logger.LogWarning("NetworkReaderPool.Recycle, Pool was full leaving extra reader for GC"); } } + + // SetBuffer methods mirror constructor for ReaderPool + static void SetBuffer(NetworkReader reader, byte[] bytes) + { + reader.buffer = new ArraySegment(bytes); + reader.Position = 0; + } + + static void SetBuffer(NetworkReader reader, ArraySegment segment) + { + reader.buffer = segment; + reader.Position = 0; + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs.meta index 451cd45..a1ef25e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkReaderPool.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b7f586ce6f07b6f47926a5ef00431198 +guid: 2bacff63613ad634a98f9e4d15d29dbf MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkServer.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkServer.cs index 9c68ab0..974aa61 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkServer.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkServer.cs @@ -1,12 +1,13 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using Mirror.RemoteCalls; using UnityEngine; namespace Mirror { /// - /// The NetworkServer uses a NetworkServerSimple for basic network functionality and adds more game-like functionality. + /// The NetworkServer. /// /// /// NetworkServer handles remote connections from remote clients via a NetworkServerSimple instance, and also has a local connection for a local client. @@ -17,24 +18,35 @@ namespace Mirror /// public static class NetworkServer { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkServer)); + static bool initialized; static int maxConnections; + /// + /// The connection to the host mode client (if any). + /// // original HLAPI has .localConnections list with only m_LocalConnection in it // (for backwards compatibility because they removed the real localConnections list a while ago) // => removed it for easier code. use .localConnection now! - public static NetworkConnection localConnection { get; private set; } + public static NetworkConnectionToClient localConnection { get; private set; } + + /// + /// True is a local client is currently active on the server. + /// This will be true for "Hosts" on hosted server games. + /// + public static bool localClientActive => localConnection != null; /// /// A list of local connections on the server. /// - public static Dictionary connections = new Dictionary(); + public static Dictionary connections = new Dictionary(); /// /// Dictionary of the message handlers registered with the server. /// The key to the dictionary is the message Id. /// - public static Dictionary handlers = new Dictionary(); + static Dictionary handlers = new Dictionary(); /// /// If you enable this, the server will not listen for incoming connections on the regular network port. @@ -49,17 +61,28 @@ public static class NetworkServer public static bool active { get; private set; } /// - /// True is a local client is currently active on the server. - /// This will be true for "Hosts" on hosted server games. + /// Should the server disconnect remote connections that have gone silent for more than Server Idle Timeout? + /// This value is initially set from NetworkManager in SetupServer and can be changed at runtime + /// + public static bool disconnectInactiveConnections; + + /// + /// Timeout in seconds since last message from a client after which server will auto-disconnect. + /// This value is initially set from NetworkManager in SetupServer and can be changed at runtime + /// By default, clients send at least a Ping message every 2 seconds. + /// The Host client is immune from idle timeout disconnection. + /// Default value is 60 seconds. /// - public static bool localClientActive { get; private set; } + public static float disconnectInactiveTimeout = 60f; // cache the Send(connectionIds) list to avoid allocating each time - static List connectionIdsCache = new List(); + static readonly List connectionIdsCache = new List(); + // Deprecated 02/23/2020 /// /// Reset the NetworkServer singleton. /// + [Obsolete("NetworkServer.Reset was used to reset the singleton, but all it does is set active to false ever since we made NetworkServer static. Use StopServer to stop the server, or Shutdown to fully reset the server.")] public static void Reset() { active = false; @@ -74,12 +97,12 @@ public static void Shutdown() { DisconnectAll(); - if (dontListen) - { - // was never started, so dont stop - } - else + if (!dontListen) { + // stop the server. + // we do NOT call Transport.Shutdown, because someone only + // called NetworkServer.Shutdown. we can't assume that the + // client is supposed to be shut down too! Transport.activeTransport.ServerStop(); } @@ -92,17 +115,40 @@ public static void Shutdown() } dontListen = false; active = false; + handlers.Clear(); + CleanupNetworkIdentities(); NetworkIdentity.ResetNextNetworkId(); } + static void CleanupNetworkIdentities() + { + foreach (NetworkIdentity identity in NetworkIdentity.spawned.Values) + { + if (identity != null) + { + if (identity.sceneId != 0) + { + identity.Reset(); + identity.gameObject.SetActive(false); + } + else + { + GameObject.Destroy(identity.gameObject); + } + } + } + + NetworkIdentity.spawned.Clear(); + } + static void Initialize() { if (initialized) return; initialized = true; - if (LogFilter.Debug) Debug.Log("NetworkServer Created version " + Version.Current); + if (logger.LogEnabled()) logger.Log("NetworkServer Created version " + Version.Current); //Make sure connections are cleared in case any old connections references exist from previous sessions connections.Clear(); @@ -116,7 +162,6 @@ internal static void RegisterMessageHandlers() { RegisterHandler(OnClientReadyMessage); RegisterHandler(OnCommandMessage); - RegisterHandler(OnRemovePlayerMessage); RegisterHandler(NetworkTime.OnServerPing, false); } @@ -124,8 +169,7 @@ internal static void RegisterMessageHandlers() /// Start the server, setting the maximum number of connections. /// /// Maximum number of allowed connections - /// - public static bool Listen(int maxConns) + public static void Listen(int maxConns) { Initialize(); maxConnections = maxConns; @@ -134,12 +178,11 @@ public static bool Listen(int maxConns) if (!dontListen) { Transport.activeTransport.ServerStart(); - if (LogFilter.Debug) Debug.Log("Server started listening"); + logger.Log("Server started listening"); } active = true; RegisterMessageHandlers(); - return true; } /// @@ -148,7 +191,7 @@ public static bool Listen(int maxConns) /// /// Network connection to add. /// True if added. - public static bool AddConnection(NetworkConnection conn) + public static bool AddConnection(NetworkConnectionToClient conn) { if (!connections.ContainsKey(conn.connectionId)) { @@ -177,12 +220,11 @@ internal static void SetLocalConnection(ULocalConnectionToClient conn) { if (localConnection != null) { - Debug.LogError("Local Connection already exists"); + logger.LogError("Local Connection already exists"); return; } localConnection = conn; - OnConnected(localConnection); } internal static void RemoveLocalConnection() @@ -193,22 +235,16 @@ internal static void RemoveLocalConnection() localConnection.Dispose(); localConnection = null; } - localClientActive = false; RemoveConnection(0); } - internal static void ActivateLocalClientScene() + public static void ActivateHostScene() { - if (localClientActive) - return; - - // ClientScene for a local connection is becoming active. any spawned objects need to be started as client objects - localClientActive = true; foreach (NetworkIdentity identity in NetworkIdentity.spawned.Values) { if (!identity.isClient) { - if (LogFilter.Debug) Debug.Log("ActivateClientScene " + identity.netId + " " + identity); + if (logger.LogEnabled()) logger.Log("ActivateHostScene " + identity.netId + " " + identity); identity.OnStartClient(); } @@ -217,39 +253,67 @@ internal static void ActivateLocalClientScene() // this is like SendToReady - but it doesn't check the ready flag on the connection. // this is used for ObjectDestroy messages. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("use SendToObservers instead")] - static bool SendToObservers(NetworkIdentity identity, short msgType, MessageBase msg) + static void SendToObservers(NetworkIdentity identity, T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase { - if (LogFilter.Debug) Debug.Log("Server.SendToObservers id:" + msgType); + if (logger.LogEnabled()) logger.Log("Server.SendToObservers id:" + typeof(T)); if (identity != null && identity.observers != null) { - // pack message into byte[] once - byte[] bytes = MessagePacker.PackMessage((ushort)msgType, msg); - - // send to all observers - bool result = true; - foreach (KeyValuePair kvp in identity.observers) + // get writer from pool + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) { - result &= kvp.Value.Send(new ArraySegment(bytes)); + // pack message into byte[] once + MessagePacker.Pack(msg, writer); + ArraySegment segment = writer.ToArraySegment(); + + // filter and then send to all internet connections at once + // -> makes code more complicated, but is HIGHLY worth it to + // avoid allocations, allow for multicast, etc. + connectionIdsCache.Clear(); + foreach (KeyValuePair kvp in identity.observers) + { + // use local connection directly because it doesn't send via transport + if (kvp.Value is ULocalConnectionToClient) + kvp.Value.Send(segment); + // gather all internet connections + else + connectionIdsCache.Add(kvp.Key); + } + + // send to all internet connections at once + if (connectionIdsCache.Count > 0) + { + NetworkConnectionToClient.Send(connectionIdsCache, segment, channelId); + } + + NetworkDiagnostics.OnSend(msg, channelId, segment.Count, identity.observers.Count); } - return result; } - return false; } - // this is like SendToReady - but it doesn't check the ready flag on the connection. - // this is used for ObjectDestroy messages. - static bool SendToObservers(NetworkIdentity identity, T msg) where T: IMessageBase + /// + /// Send a message to all connected clients, both ready and not-ready. + /// See NetworkConnection.isReady + /// + /// Message type + /// Message + /// Transport channel to use + /// Indicates if only ready clients should receive the message + /// + public static bool SendToAll(T msg, int channelId = Channels.DefaultReliable, bool sendToReadyOnly = false) where T : IMessageBase { - if (LogFilter.Debug) Debug.Log("Server.SendToObservers id:" + typeof(T)); - - if (identity != null && identity.observers != null) + if (!active) { - // get writer from pool - NetworkWriter writer = NetworkWriterPool.GetWriter(); + logger.LogWarning("Can not send using NetworkServer.SendToAll(T msg) because NetworkServer is not active"); + return false; + } + + if (logger.LogEnabled()) logger.Log("Server.SendToAll id:" + typeof(T)); - // pack message into byte[] once + // get writer from pool + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) + { + // pack message only once MessagePacker.Pack(msg, writer); ArraySegment segment = writer.ToArraySegment(); @@ -258,11 +322,17 @@ static bool SendToObservers(NetworkIdentity identity, T msg) where T: IMessag // avoid allocations, allow for multicast, etc. connectionIdsCache.Clear(); bool result = true; - foreach (KeyValuePair kvp in identity.observers) + int count = 0; + foreach (KeyValuePair kvp in connections) { + if (sendToReadyOnly && !kvp.Value.isReady) + continue; + + count++; + // use local connection directly because it doesn't send via transport if (kvp.Value is ULocalConnectionToClient) - result &= localConnection.Send(segment); + result &= kvp.Value.Send(segment); // gather all internet connections else connectionIdsCache.Add(kvp.Key); @@ -270,176 +340,104 @@ static bool SendToObservers(NetworkIdentity identity, T msg) where T: IMessag // send to all internet connections at once if (connectionIdsCache.Count > 0) - result &= NetworkConnection.Send(connectionIdsCache, segment); - NetworkDiagnostics.OnSend(msg, Channels.DefaultReliable, segment.Count, identity.observers.Count); - - // recycle writer and return - NetworkWriterPool.Recycle(writer); - return result; - } - return false; - } - - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use SendToAll instead.")] - public static bool SendToAll(int msgType, MessageBase msg, int channelId = Channels.DefaultReliable) - { - if (LogFilter.Debug) Debug.Log("Server.SendToAll id:" + msgType); + { + result &= NetworkConnectionToClient.Send(connectionIdsCache, segment, channelId); + } - // pack message into byte[] once - byte[] bytes = MessagePacker.PackMessage((ushort)msgType, msg); + NetworkDiagnostics.OnSend(msg, channelId, segment.Count, count); - // send to all - bool result = true; - foreach (KeyValuePair kvp in connections) - { - result &= kvp.Value.Send(new ArraySegment(bytes), channelId); + return result; } - return result; } /// - /// Send a message structure with the given type number to all connected clients. - /// This applies to clients that are ready and not-ready. + /// Send a message to only clients which are ready. + /// See NetworkConnection.isReady /// /// Message type. - /// Message structure. + /// Message /// Transport channel to use /// - public static bool SendToAll(T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase - { - if (LogFilter.Debug) Debug.Log("Server.SendToAll id:" + typeof(T)); - - - // get writer from pool - NetworkWriter writer = NetworkWriterPool.GetWriter(); - - // pack message only once - MessagePacker.Pack(msg, writer); - ArraySegment segment = writer.ToArraySegment(); - - // filter and then send to all internet connections at once - // -> makes code more complicated, but is HIGHLY worth it to - // avoid allocations, allow for multicast, etc. - connectionIdsCache.Clear(); - bool result = true; - foreach (KeyValuePair kvp in connections) - { - // use local connection directly because it doesn't send via transport - if (kvp.Value is ULocalConnectionToClient) - result &= localConnection.Send(segment); - // gather all internet connections - else - connectionIdsCache.Add(kvp.Key); - } - - // send to all internet connections at once - if (connectionIdsCache.Count > 0) - result &= NetworkConnection.Send(connectionIdsCache, segment); - NetworkDiagnostics.OnSend(msg, channelId, segment.Count, connections.Count); - - // recycle writer and return - NetworkWriterPool.Recycle(writer); - return result; - } - - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use SendToReady instead.")] - public static bool SendToReady(NetworkIdentity identity, short msgType, MessageBase msg, int channelId = Channels.DefaultReliable) + public static bool SendToReady(T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase { - if (LogFilter.Debug) Debug.Log("Server.SendToReady msgType:" + msgType); - - if (identity != null && identity.observers != null) + if (!active) { - // pack message into byte[] once - byte[] bytes = MessagePacker.PackMessage((ushort)msgType, msg); - - // send to all ready observers - bool result = true; - foreach (KeyValuePair kvp in identity.observers) - { - if (kvp.Value.isReady) - { - result &= kvp.Value.Send(new ArraySegment(bytes), channelId); - } - } - return result; + logger.LogWarning("Can not send using NetworkServer.SendToReady(T msg) because NetworkServer is not active"); + return false; } - return false; + + return SendToAll(msg, channelId, true); } /// - /// Send a message structure with the given type number to only clients which are ready. - /// See Networking.NetworkClient.Ready. + /// Send a message to only clients which are ready with option to include the owner of the object identity. + /// See NetworkConnection.isReady /// /// Message type. - /// - /// Message structure. - /// Send to observers including self.. + /// Identity of the owner + /// Message + /// Should the owner of the object be included /// Transport channel to use /// - public static bool SendToReady(NetworkIdentity identity, T msg, bool includeSelf = true, int channelId = Channels.DefaultReliable) where T : IMessageBase + public static bool SendToReady(NetworkIdentity identity, T msg, bool includeOwner = true, int channelId = Channels.DefaultReliable) where T : IMessageBase { - if (LogFilter.Debug) Debug.Log("Server.SendToReady msgType:" + typeof(T)); + if (logger.LogEnabled()) logger.Log("Server.SendToReady msgType:" + typeof(T)); if (identity != null && identity.observers != null) { // get writer from pool - NetworkWriter writer = NetworkWriterPool.GetWriter(); - - // pack message only once - MessagePacker.Pack(msg, writer); - ArraySegment segment = writer.ToArraySegment(); - - // filter and then send to all internet connections at once - // -> makes code more complicated, but is HIGHLY worth it to - // avoid allocations, allow for multicast, etc. - connectionIdsCache.Clear(); - bool result = true; - int count = 0; - foreach (KeyValuePair kvp in identity.observers) + using (PooledNetworkWriter writer = NetworkWriterPool.GetWriter()) { - bool isSelf = kvp.Value == identity.connectionToClient; - if ((!isSelf || includeSelf) && - kvp.Value.isReady) + // pack message only once + MessagePacker.Pack(msg, writer); + ArraySegment segment = writer.ToArraySegment(); + + // filter and then send to all internet connections at once + // -> makes code more complicated, but is HIGHLY worth it to + // avoid allocations, allow for multicast, etc. + connectionIdsCache.Clear(); + bool result = true; + int count = 0; + foreach (KeyValuePair kvp in identity.observers) { - count++; + bool isOwner = kvp.Value == identity.connectionToClient; + if ((!isOwner || includeOwner) && kvp.Value.isReady) + { + count++; + + // use local connection directly because it doesn't send via transport + if (kvp.Value is ULocalConnectionToClient) + result &= kvp.Value.Send(segment); + // gather all internet connections + else + connectionIdsCache.Add(kvp.Key); + } + } - // use local connection directly because it doesn't send via transport - if (kvp.Value is ULocalConnectionToClient) - result &= localConnection.Send(segment); - // gather all internet connections - else - connectionIdsCache.Add(kvp.Key); + // send to all internet connections at once + if (connectionIdsCache.Count > 0) + { + result &= NetworkConnectionToClient.Send(connectionIdsCache, segment, channelId); } - } - // send to all internet connections at once - if (connectionIdsCache.Count > 0) - result &= NetworkConnection.Send(connectionIdsCache, segment); - NetworkDiagnostics.OnSend(msg, channelId, segment.Count, count); + NetworkDiagnostics.OnSend(msg, channelId, segment.Count, count); - // recycle writer and return - NetworkWriterPool.Recycle(writer); - return result; + return result; + } } return false; } /// - /// Send a message structure with the given type number to only clients which are ready. - /// See Networking.NetworkClient.Ready. + /// Send a message to only clients which are ready including the owner of the object identity. + /// See NetworkConnection.isReady /// - /// Message type. - /// - /// Message structure. + /// Message type + /// identity of the object + /// Message /// Transport channel to use /// - public static bool SendToReady(NetworkIdentity identity, T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase + public static bool SendToReady(NetworkIdentity identity, T msg, int channelId) where T : IMessageBase { return SendToReady(identity, msg, true, channelId); } @@ -454,7 +452,6 @@ public static void DisconnectAll() localConnection = null; active = false; - localClientActive = false; } /// @@ -467,7 +464,7 @@ public static void DisconnectAllConnections() { conn.Disconnect(); // call OnDisconnected unless local player in host mode - if (conn.connectionId != 0) + if (conn.connectionId != NetworkConnection.LocalConnectionId) OnDisconnected(conn); conn.Dispose(); } @@ -475,35 +472,49 @@ public static void DisconnectAllConnections() } // The user should never need to pump the update loop manually - internal static void Update() + public static void Update() { if (!active) return; + // Check for dead clients but exclude the host client because it + // doesn't ping itself and therefore may appear inactive. + if (disconnectInactiveConnections) + { + foreach (NetworkConnectionToClient conn in connections.Values) + { + if (!conn.IsClientAlive()) + { + logger.LogWarning($"Disconnecting {conn} for inactivity!"); + conn.Disconnect(); + } + } + } + // update all server objects foreach (KeyValuePair kvp in NetworkIdentity.spawned) { if (kvp.Value != null && kvp.Value.gameObject != null) { - kvp.Value.MirrorUpdate(); + kvp.Value.ServerUpdate(); } else { // spawned list should have no null entries because we // always call Remove in OnObjectDestroy everywhere. - Debug.LogWarning("Found 'null' entry in spawned list for netId=" + kvp.Key + ". Please call NetworkServer.Destroy to destroy networked objects. Don't use GameObject.Destroy."); + logger.LogWarning("Found 'null' entry in spawned list for netId=" + kvp.Key + ". Please call NetworkServer.Destroy to destroy networked objects. Don't use GameObject.Destroy."); } } } static void OnConnected(int connectionId) { - if (LogFilter.Debug) Debug.Log("Server accepted client:" + connectionId); + if (logger.LogEnabled()) logger.Log("Server accepted client:" + connectionId); // connectionId needs to be > 0 because 0 is reserved for local player if (connectionId <= 0) { - Debug.LogError("Server.HandleConnect: invalid connectionId: " + connectionId + " . Needs to be >0, because 0 is reserved for local player."); + logger.LogError("Server.HandleConnect: invalid connectionId: " + connectionId + " . Needs to be >0, because 0 is reserved for local player."); Transport.activeTransport.ServerDisconnect(connectionId); return; } @@ -512,7 +523,7 @@ static void OnConnected(int connectionId) if (connections.ContainsKey(connectionId)) { Transport.activeTransport.ServerDisconnect(connectionId); - if (LogFilter.Debug) Debug.Log("Server connectionId " + connectionId + " already in use. kicked client:" + connectionId); + if (logger.LogEnabled()) logger.Log("Server connectionId " + connectionId + " already in use. kicked client:" + connectionId); return; } @@ -523,39 +534,36 @@ static void OnConnected(int connectionId) // Transport can't do that) if (connections.Count < maxConnections) { - // get ip address from connection - string address = Transport.activeTransport.ServerGetClientAddress(connectionId); - // add connection - NetworkConnection conn = new NetworkConnection(address, connectionId); + NetworkConnectionToClient conn = new NetworkConnectionToClient(connectionId); OnConnected(conn); } else { // kick Transport.activeTransport.ServerDisconnect(connectionId); - if (LogFilter.Debug) Debug.Log("Server full, kicked client:" + connectionId); + if (logger.LogEnabled()) logger.Log("Server full, kicked client:" + connectionId); } } - static void OnConnected(NetworkConnection conn) + internal static void OnConnected(NetworkConnectionToClient conn) { - if (LogFilter.Debug) Debug.Log("Server accepted client:" + conn.connectionId); + if (logger.LogEnabled()) logger.Log("Server accepted client:" + conn); // add connection and invoke connected event AddConnection(conn); conn.InvokeHandler(new ConnectMessage(), -1); } - static void OnDisconnected(int connectionId) + internal static void OnDisconnected(int connectionId) { - if (LogFilter.Debug) Debug.Log("Server disconnect client:" + connectionId); + if (logger.LogEnabled()) logger.Log("Server disconnect client:" + connectionId); - if (connections.TryGetValue(connectionId, out NetworkConnection conn)) + if (connections.TryGetValue(connectionId, out NetworkConnectionToClient conn)) { conn.Disconnect(); RemoveConnection(connectionId); - if (LogFilter.Debug) Debug.Log("Server lost client:" + connectionId); + if (logger.LogEnabled()) logger.Log("Server lost client:" + connectionId); OnDisconnected(conn); } @@ -564,47 +572,42 @@ static void OnDisconnected(int connectionId) static void OnDisconnected(NetworkConnection conn) { conn.InvokeHandler(new DisconnectMessage(), -1); - if (LogFilter.Debug) Debug.Log("Server lost client:" + conn.connectionId); + if (logger.LogEnabled()) logger.Log("Server lost client:" + conn); } static void OnDataReceived(int connectionId, ArraySegment data, int channelId) { - if (connections.TryGetValue(connectionId, out NetworkConnection conn)) + if (connections.TryGetValue(connectionId, out NetworkConnectionToClient conn)) { conn.TransportReceive(data, channelId); } else { - Debug.LogError("HandleData Unknown connectionId:" + connectionId); + logger.LogError("HandleData Unknown connectionId:" + connectionId); } } static void OnError(int connectionId, Exception exception) { // TODO Let's discuss how we will handle errors - Debug.LogException(exception); + logger.LogException(exception); } /// - /// Obsolete: Use instead. + /// Register a handler for a particular message type. + /// There are several system message types which you can add handlers for. You can also add your own message types. /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use RegisterHandler(Action, bool) instead.")] - public static void RegisterHandler(int msgType, NetworkMessageDelegate handler) + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void RegisterHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { + int msgType = MessagePacker.GetId(); if (handlers.ContainsKey(msgType)) { - if (LogFilter.Debug) Debug.Log("NetworkServer.RegisterHandler replacing " + msgType); + logger.LogWarning($"NetworkServer.RegisterHandler replacing handler for {typeof(T).FullName}, id={msgType}. If replacement is intentional, use ReplaceHandler instead to avoid this warning."); } - handlers[msgType] = handler; - } - - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use RegisterHandler(Action, bool) instead.")] - public static void RegisterHandler(MsgType msgType, NetworkMessageDelegate handler) - { - RegisterHandler((int)msgType, handler); + handlers[msgType] = MessagePacker.MessageHandler(handler, requireAuthentication); } /// @@ -612,34 +615,36 @@ public static void RegisterHandler(MsgType msgType, NetworkMessageDelegate handl /// There are several system message types which you can add handlers for. You can also add your own message types. /// /// Message type - /// Function handler which will be invoked for when this message type is received. + /// Function handler which will be invoked when this message type is received. /// True if the message requires an authenticated connection - public static void RegisterHandler(Action handler, bool requireAuthentication = true) where T: IMessageBase, new() + public static void RegisterHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { - int msgType = MessagePacker.GetId(); - if (handlers.ContainsKey(msgType)) - { - if (LogFilter.Debug) Debug.Log("NetworkServer.RegisterHandler replacing " + msgType); - } - handlers[msgType] = MessagePacker.MessageHandler(handler, requireAuthentication); + RegisterHandler((_, value) => { handler(value); }, requireAuthentication); } /// - /// Obsolete: Use instead. + /// Replaces a handler for a particular message type. + /// See also RegisterHandler(T)(Action(NetworkConnection, T), bool) /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use UnregisterHandler instead.")] - public static void UnregisterHandler(int msgType) + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void ReplaceHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { - handlers.Remove(msgType); + int msgType = MessagePacker.GetId(); + handlers[msgType] = MessagePacker.MessageHandler(handler, requireAuthentication); } /// - /// Obsolete: Use instead. + /// Replaces a handler for a particular message type. + /// See also RegisterHandler(T)(Action(NetworkConnection, T), bool) /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use UnregisterHandler instead.")] - public static void UnregisterHandler(MsgType msgType) + /// Message type + /// Function handler which will be invoked when this message type is received. + /// True if the message requires an authenticated connection + public static void ReplaceHandler(Action handler, bool requireAuthentication = true) where T : IMessageBase, new() { - UnregisterHandler((int)msgType); + ReplaceHandler((_, value) => { handler(value); }, requireAuthentication); } /// @@ -660,68 +665,21 @@ public static void ClearHandlers() handlers.Clear(); } - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use SendToClient instead.")] - public static void SendToClient(int connectionId, int msgType, MessageBase msg) - { - if (connections.TryGetValue(connectionId, out NetworkConnection conn)) - { - conn.Send(msgType, msg); - return; - } - Debug.LogError("Failed to send message to connection ID '" + connectionId + ", not found in connection list"); - } - - /// - /// Send a message to the client which owns the given connection ID. - /// It accepts the connection ID as a parameter as well as a message and MsgType. Remember to set the client up for receiving the messages by using NetworkClient.RegisterHandler. Also, for user messages you must use a MsgType with a higher ID number than MsgType.Highest. - /// - /// Message type - /// Client connection ID. - /// Message struct to send - public static void SendToClient(int connectionId, T msg) where T : IMessageBase - { - if (connections.TryGetValue(connectionId, out NetworkConnection conn)) - { - conn.Send(msg); - return; - } - Debug.LogError("Failed to send message to connection ID '" + connectionId + ", not found in connection list"); - } - - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use SendToClientOfPlayer instead.")] - public static void SendToClientOfPlayer(NetworkIdentity identity, int msgType, MessageBase msg) - { - if (identity != null) - { - identity.connectionToClient.Send(msgType, msg); - } - else - { - Debug.LogError("SendToClientOfPlayer: player has no NetworkIdentity: " + identity.name); - } - } - /// /// send this message to the player only /// /// Message type /// /// - public static void SendToClientOfPlayer(NetworkIdentity identity, T msg) where T: IMessageBase + public static void SendToClientOfPlayer(NetworkIdentity identity, T msg, int channelId = Channels.DefaultReliable) where T : IMessageBase { if (identity != null) { - identity.connectionToClient.Send(msg); + identity.connectionToClient.Send(msg, channelId); } else { - Debug.LogError("SendToClientOfPlayer: player has no NetworkIdentity: " + identity.name); + logger.LogError("SendToClientOfPlayer: player has no NetworkIdentity: " + identity); } } @@ -732,14 +690,15 @@ public static void SendToClientOfPlayer(NetworkIdentity identity, T msg) wher /// Connection which is adding the player. /// Player object spawned for the player. /// - /// - public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, Guid assetId) + /// Does the previous player remain attached to this connection? + /// True if connection was successfully replaced for player. + public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, Guid assetId, bool keepAuthority = false) { if (GetNetworkIdentity(player, out NetworkIdentity identity)) { identity.assetId = assetId; } - return InternalReplacePlayerForConnection(conn, player); + return InternalReplacePlayerForConnection(conn, player, keepAuthority); } /// @@ -748,10 +707,11 @@ public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject /// /// Connection which is adding the player. /// Player object spawned for the player. - /// - public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player) + /// Does the previous player remain attached to this connection? + /// True if connection was successfully replaced for player. + public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject player, bool keepAuthority = false) { - return InternalReplacePlayerForConnection(conn, player); + return InternalReplacePlayerForConnection(conn, player, keepAuthority); } /// @@ -761,7 +721,7 @@ public static bool ReplacePlayerForConnection(NetworkConnection conn, GameObject /// Connection which is adding the player. /// Player object spawned for the player. /// - /// + /// True if connection was sucessfully added for a connection. public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player, Guid assetId) { if (GetNetworkIdentity(player, out NetworkIdentity identity)) @@ -773,7 +733,7 @@ public static bool AddPlayerForConnection(NetworkConnection conn, GameObject pla static void SpawnObserversForConnection(NetworkConnection conn) { - if (LogFilter.Debug) Debug.Log("Spawning " + NetworkIdentity.spawned.Count + " objects for conn " + conn.connectionId); + if (logger.LogEnabled()) logger.Log("Spawning " + NetworkIdentity.spawned.Count + " objects for conn " + conn); if (!conn.isReady) { @@ -789,9 +749,10 @@ static void SpawnObserversForConnection(NetworkConnection conn) // internally sends a spawn message for each one to the connection. foreach (NetworkIdentity identity in NetworkIdentity.spawned.Values) { - if (identity.gameObject.activeSelf) //TODO this is different // try with far away ones in ummorpg! + // try with far away ones in ummorpg! + if (identity.gameObject.activeSelf) //TODO this is different { - if (LogFilter.Debug) Debug.Log("Sending spawn message for current server objects name='" + identity.name + "' netId=" + identity.netId + " sceneId=" + identity.sceneId); + if (logger.LogEnabled()) logger.Log("Sending spawn message for current server objects name='" + identity.name + "' netId=" + identity.netId + " sceneId=" + identity.sceneId); bool visible = identity.OnCheckObserver(conn); if (visible) @@ -813,21 +774,20 @@ static void SpawnObserversForConnection(NetworkConnection conn) /// /// Connection which is adding the player. /// Player object spawned for the player. - /// + /// True if connection was successfully added for a connection. public static bool AddPlayerForConnection(NetworkConnection conn, GameObject player) { NetworkIdentity identity = player.GetComponent(); if (identity == null) { - Debug.Log("AddPlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + player); + logger.LogWarning("AddPlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + player); return false; } - identity.Reset(); // cannot have a player object in "Add" version if (conn.identity != null) { - Debug.Log("AddPlayer: player object already exists"); + logger.Log("AddPlayer: player object already exists"); return false; } @@ -836,93 +796,69 @@ public static bool AddPlayerForConnection(NetworkConnection conn, GameObject pla conn.identity = identity; // Set the connection on the NetworkIdentity on the server, NetworkIdentity.SetLocalPlayer is not called on the server (it is on clients) - identity.connectionToClient = conn; - - // set ready if not set yet - SetClientReady(conn); + identity.SetClientOwner(conn); - if (SetupLocalPlayerForConnection(conn, identity)) + // special case, we are in host mode, set hasAuthority to true so that all overrides see it + if (conn is ULocalConnectionToClient) { - return true; + identity.hasAuthority = true; + ClientScene.InternalAddPlayer(identity); } - if (LogFilter.Debug) Debug.Log("Adding new playerGameObject object netId: " + identity.netId + " asset ID " + identity.assetId); + // set ready if not set yet + SetClientReady(conn); - FinishPlayerForConnection(identity, player); - if (identity.localPlayerAuthority) - { - identity.SetClientOwner(conn); - } + if (logger.LogEnabled()) logger.Log("Adding new playerGameObject object netId: " + identity.netId + " asset ID " + identity.assetId); + + Respawn(identity); return true; } - static bool SetupLocalPlayerForConnection(NetworkConnection conn, NetworkIdentity identity) + static void Respawn(NetworkIdentity identity) { - if (LogFilter.Debug) Debug.Log("NetworkServer SetupLocalPlayerForConnection netID:" + identity.netId); - - if (conn is ULocalConnectionToClient) + if (identity.netId == 0) { - if (LogFilter.Debug) Debug.Log("NetworkServer AddPlayer handling ULocalConnectionToClient"); - - // Spawn this player for other players, instead of SpawnObject: - if (identity.netId == 0) - { - // it is allowed to provide an already spawned object as the new player object. - // so dont spawn it again. - identity.OnStartServer(true); - } - identity.RebuildObservers(true); - SendSpawnMessage(identity, null); - - // Set up local player instance on the client instance and update local object map - NetworkClient.AddLocalPlayer(identity); - identity.SetClientOwner(conn); - - // Trigger OnAuthority - identity.ForceAuthority(true); - - // Trigger OnStartLocalPlayer - identity.SetLocalPlayer(); - return true; + // If the object has not been spawned, then do a full spawn and update observers + Spawn(identity.gameObject, identity.connectionToClient); } - return false; - } - - static void FinishPlayerForConnection(NetworkIdentity identity, GameObject playerGameObject) - { - if (identity.netId == 0) + else { - // it is allowed to provide an already spawned object as the new player object. - // so dont spawn it again. - Spawn(playerGameObject); + // otherwise just replace his data + SendSpawnMessage(identity, identity.connectionToClient); } } - internal static bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObject player) + internal static bool InternalReplacePlayerForConnection(NetworkConnection conn, GameObject player, bool keepAuthority) { NetworkIdentity identity = player.GetComponent(); if (identity == null) { - Debug.LogError("ReplacePlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + player); + logger.LogError("ReplacePlayer: playerGameObject has no NetworkIdentity. Please add a NetworkIdentity to " + player); return false; } - //NOTE: there can be an existing player - if (LogFilter.Debug) Debug.Log("NetworkServer ReplacePlayer"); - - // is there already an owner that is a different object?? - if (conn.identity != null) + if (identity.connectionToClient != null && identity.connectionToClient != conn) { - conn.identity.SetNotLocalPlayer(); - conn.identity.clientAuthorityOwner = null; + logger.LogError("Cannot replace player for connection. New player is already owned by a different connection" + player); + return false; } + //NOTE: there can be an existing player + logger.Log("NetworkServer ReplacePlayer"); + + NetworkIdentity previousPlayer = conn.identity; + conn.identity = identity; // Set the connection on the NetworkIdentity on the server, NetworkIdentity.SetLocalPlayer is not called on the server (it is on clients) - identity.connectionToClient = conn; + identity.SetClientOwner(conn); - //NOTE: DONT set connection ready. + // special case, we are in host mode, set hasAuthority to true so that all overrides see it + if (conn is ULocalConnectionToClient) + { + identity.hasAuthority = true; + ClientScene.InternalAddPlayer(identity); + } // add connection to observers AFTER the playerController was set. // by definition, there is nothing to observe if there is no player @@ -931,29 +867,22 @@ internal static bool InternalReplacePlayerForConnection(NetworkConnection conn, // IMPORTANT: do this in AddPlayerForConnection & ReplacePlayerForConnection! SpawnObserversForConnection(conn); - if (LogFilter.Debug) Debug.Log("NetworkServer ReplacePlayer setup local"); + if (logger.LogEnabled()) logger.Log("Replacing playerGameObject object netId: " + player.GetComponent().netId + " asset ID " + player.GetComponent().assetId); - if (SetupLocalPlayerForConnection(conn, identity)) - { - return true; - } + Respawn(identity); - if (LogFilter.Debug) Debug.Log("Replacing playerGameObject object netId: " + player.GetComponent().netId + " asset ID " + player.GetComponent().assetId); + if (!keepAuthority) + previousPlayer.RemoveClientAuthority(); - FinishPlayerForConnection(identity, player); - if (identity.localPlayerAuthority) - { - identity.SetClientOwner(conn); - } return true; } - static bool GetNetworkIdentity(GameObject go, out NetworkIdentity identity) + internal static bool GetNetworkIdentity(GameObject go, out NetworkIdentity identity) { identity = go.GetComponent(); if (identity == null) { - Debug.LogError("GameObject " + go.name + " doesn't have NetworkIdentity."); + logger.LogError("GameObject " + go.name + " doesn't have NetworkIdentity."); return false; } return true; @@ -966,7 +895,7 @@ static bool GetNetworkIdentity(GameObject go, out NetworkIdentity identity) /// The connection of the client to make ready. public static void SetClientReady(NetworkConnection conn) { - if (LogFilter.Debug) Debug.Log("SetClientReadyInternal for conn:" + conn.connectionId); + if (logger.LogEnabled()) logger.Log("SetClientReadyInternal for conn:" + conn); // set ready conn.isReady = true; @@ -1012,7 +941,7 @@ public static void SetClientNotReady(NetworkConnection conn) { if (conn.isReady) { - if (LogFilter.Debug) Debug.Log("PlayerNotReady " + conn); + if (logger.LogEnabled()) logger.Log("PlayerNotReady " + conn); conn.isReady = false; conn.RemoveObservers(); @@ -1023,21 +952,36 @@ public static void SetClientNotReady(NetworkConnection conn) // default ready handler. static void OnClientReadyMessage(NetworkConnection conn, ReadyMessage msg) { - if (LogFilter.Debug) Debug.Log("Default handler for ready message from " + conn); + if (logger.LogEnabled()) logger.Log("Default handler for ready message from " + conn); SetClientReady(conn); } - // default remove player handler - static void OnRemovePlayerMessage(NetworkConnection conn, RemovePlayerMessage msg) + // Deprecated 5/2/2020 + /// + /// Obsolete: Removed as a security risk. Use NetworkServer.RemovePlayerForConnection instead. + /// + [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Removed as a security risk. Use NetworkServer.RemovePlayerForConnection(NetworkConnection conn, bool keepAuthority = false) instead", true)] + static void OnRemovePlayerMessage(NetworkConnection conn, RemovePlayerMessage msg) { } + + /// + /// Removes the player object from the connection + /// + /// The connection of the client to remove from + /// Indicates whether the server object should be destroyed + public static void RemovePlayerForConnection(NetworkConnection conn, bool destroyServerObject) { if (conn.identity != null) { - Destroy(conn.identity.gameObject); + if (destroyServerObject) + Destroy(conn.identity.gameObject); + else + UnSpawn(conn.identity.gameObject); + conn.identity = null; } else { - Debug.LogError("Received remove player message but connection has no player"); + if (logger.LogEnabled()) logger.Log($"Connection {conn} has no identity"); } } @@ -1046,50 +990,62 @@ static void OnCommandMessage(NetworkConnection conn, CommandMessage msg) { if (!NetworkIdentity.spawned.TryGetValue(msg.netId, out NetworkIdentity identity)) { - Debug.LogWarning("Spawned object not found when handling Command message [netId=" + msg.netId + "]"); + logger.LogWarning("Spawned object not found when handling Command message [netId=" + msg.netId + "]"); return; } + CommandInfo commandInfo = identity.GetCommandInfo(msg.componentIndex, msg.functionHash); + // Commands can be for player objects, OR other objects with client-authority // -> so if this connection's controller has a different netId then // only allow the command if clientAuthorityOwner - if (conn.identity != null && conn.identity.netId != identity.netId) + bool needAuthority = !commandInfo.ignoreAuthority; + if (needAuthority && identity.connectionToClient != conn) { - if (identity.clientAuthorityOwner != conn) - { - Debug.LogWarning("Command for object without authority [netId=" + msg.netId + "]"); - return; - } + logger.LogWarning("Command for object without authority [netId=" + msg.netId + "]"); + return; } - if (LogFilter.Debug) Debug.Log("OnCommandMessage for netId=" + msg.netId + " conn=" + conn); - NetworkReader reader = NetworkReaderPool.GetReader(msg.payload); - identity.HandleCommand(msg.componentIndex, msg.functionHash, reader); - NetworkReaderPool.Recycle(reader); + if (logger.LogEnabled()) logger.Log("OnCommandMessage for netId=" + msg.netId + " conn=" + conn); + + using (PooledNetworkReader networkReader = NetworkReaderPool.GetReader(msg.payload)) + identity.HandleCommand(msg.componentIndex, msg.functionHash, networkReader, conn as NetworkConnectionToClient); } - internal static void SpawnObject(GameObject obj) + internal static void SpawnObject(GameObject obj, NetworkConnection ownerConnection) { if (!active) { - Debug.LogError("SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); + logger.LogError("SpawnObject for " + obj + ", NetworkServer is not active. Cannot spawn objects without an active server."); return; } NetworkIdentity identity = obj.GetComponent(); if (identity == null) { - Debug.LogError("SpawnObject " + obj + " has no NetworkIdentity. Please add a NetworkIdentity to " + obj); + logger.LogError("SpawnObject " + obj + " has no NetworkIdentity. Please add a NetworkIdentity to " + obj); return; } - identity.Reset(); - identity.OnStartServer(false); + if (identity.SpawnedFromInstantiate) + { + // Using Instantiate on SceneObject is not allowed, so stop spawning here + // NetworkIdentity.Awake already logs error, no need to log a second error here + return; + } + + identity.connectionToClient = (NetworkConnectionToClient)ownerConnection; + + // special case to make sure hasAuthority is set + // on start server in host mode + if (ownerConnection is ULocalConnectionToClient) + identity.hasAuthority = true; - if (LogFilter.Debug) Debug.Log("SpawnObject instance ID " + identity.netId + " asset ID " + identity.assetId); + identity.OnStartServer(); + + if (logger.LogEnabled()) logger.Log("SpawnObject instance ID " + identity.netId + " asset ID " + identity.assetId); identity.RebuildObservers(true); - //SendSpawnMessage(objNetworkIdentity, null); } internal static void SendSpawnMessage(NetworkIdentity identity, NetworkConnection conn) @@ -1097,109 +1053,58 @@ internal static void SendSpawnMessage(NetworkIdentity identity, NetworkConnectio if (identity.serverOnly) return; - if (LogFilter.Debug) Debug.Log("Server SendSpawnMessage: name=" + identity.name + " sceneId=" + identity.sceneId.ToString("X") + " netid=" + identity.netId); // for easier debugging + // for easier debugging + if (logger.LogEnabled()) logger.Log("Server SendSpawnMessage: name=" + identity.name + " sceneId=" + identity.sceneId.ToString("X") + " netid=" + identity.netId); // one writer for owner, one for observers - NetworkWriter ownerWriter = NetworkWriterPool.GetWriter(); - NetworkWriter observersWriter = NetworkWriterPool.GetWriter(); + using (PooledNetworkWriter ownerWriter = NetworkWriterPool.GetWriter(), observersWriter = NetworkWriterPool.GetWriter()) + { + bool isOwner = identity.connectionToClient == conn; + ArraySegment payload = CreateSpawnMessagePayload(isOwner, identity, ownerWriter, observersWriter); - // serialize all components with initialState = true - // (can be null if has none) - identity.OnSerializeAllSafely(true, ownerWriter, out int ownerWritten, observersWriter, out int observersWritten); - - // convert to ArraySegment to avoid reader allocations - // (need to handle null case too) - ArraySegment ownerSegment = ownerWritten > 0 ? ownerWriter.ToArraySegment() : default; - ArraySegment observersSegment = observersWritten > 0 ? observersWriter.ToArraySegment() : default; - - // 'identity' is a prefab that should be spawned - if (identity.sceneId == 0) - { - SpawnPrefabMessage msg = new SpawnPrefabMessage + SpawnMessage msg = new SpawnMessage { netId = identity.netId, - owner = conn?.identity == identity, + isLocalPlayer = conn.identity == identity, + isOwner = isOwner, + sceneId = identity.sceneId, assetId = identity.assetId, // use local values for VR support position = identity.transform.localPosition, rotation = identity.transform.localRotation, - scale = identity.transform.localScale - }; + scale = identity.transform.localScale, - // conn is != null when spawning it for a client - if (conn != null) - { - // use owner segment if 'conn' owns this identity, otherwise - // use observers segment - bool isOwner = identity.connectionToClient == conn; - msg.payload = isOwner ? ownerSegment : observersSegment; + payload = payload, + }; - conn.Send(msg); - } - // conn is == null when spawning it for the local player - else - { - // send ownerWriter to owner - // (spawn no matter what, even if no components were - // serialized because the spawn message contains more data. - // components might still be updated later on.) - msg.payload = ownerSegment; - SendToClientOfPlayer(identity, msg); - - // send observersWriter to everyone but owner - // (spawn no matter what, even if no components were - // serialized because the spawn message contains more data. - // components might still be updated later on.) - msg.payload = observersSegment; - SendToReady(identity, msg, false); - } + conn.Send(msg); } - // 'identity' is a scene object that should be spawned again - else + } + + static ArraySegment CreateSpawnMessagePayload(bool isOwner, NetworkIdentity identity, PooledNetworkWriter ownerWriter, PooledNetworkWriter observersWriter) + { + // Only call OnSerializeAllSafely if there are NetworkBehaviours + if (identity.NetworkBehaviours.Length == 0) { - SpawnSceneObjectMessage msg = new SpawnSceneObjectMessage - { - netId = identity.netId, - owner = conn?.identity == identity, - sceneId = identity.sceneId, - // use local values for VR support - position = identity.transform.localPosition, - rotation = identity.transform.localRotation, - scale = identity.transform.localScale - }; + return default; + } - // conn is != null when spawning it for a client - if (conn != null) - { - // use owner segment if 'conn' owns this identity, otherwise - // use observers segment - bool isOwner = identity.connectionToClient == conn; - msg.payload = isOwner ? ownerSegment : observersSegment; + // serialize all components with initialState = true + // (can be null if has none) + ulong dirtyComponentsMask = identity.GetInitialComponentsMask(); + identity.OnSerializeAllSafely(true, dirtyComponentsMask, ownerWriter, out int ownerWritten, observersWriter, out int observersWritten); - conn.Send(msg); - } - // conn is == null when spawning it for the local player - else - { - // send ownerWriter to owner - // (spawn no matter what, even if no components were - // serialized because the spawn message contains more data. - // components might still be updated later on.) - msg.payload = ownerSegment; - SendToClientOfPlayer(identity, msg); - - // send observersWriter to everyone but owner - // (spawn no matter what, even if no components were - // serialized because the spawn message contains more data. - // components might still be updated later on.) - msg.payload = observersSegment; - SendToReady(identity, msg, false); - } - } + // convert to ArraySegment to avoid reader allocations + // (need to handle null case too) + ArraySegment ownerSegment = ownerWritten > 0 ? ownerWriter.ToArraySegment() : default; + ArraySegment observersSegment = observersWritten > 0 ? observersWriter.ToArraySegment() : default; - NetworkWriterPool.Recycle(ownerWriter); - NetworkWriterPool.Recycle(observersWriter); + // use owner segment if 'conn' owns this identity, otherwise + // use observers segment + ArraySegment payload = isOwner ? ownerSegment : observersSegment; + + return payload; } /// @@ -1209,21 +1114,9 @@ internal static void SendSpawnMessage(NetworkIdentity identity, NetworkConnectio /// The connections object to clean up for. public static void DestroyPlayerForConnection(NetworkConnection conn) { - // => destroy what we can destroy. - HashSet tmp = new HashSet(conn.clientOwnedObjects); - foreach (uint netId in tmp) - { - if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity)) - { - Destroy(identity.gameObject); - } - } - - if (conn.identity != null) - { - DestroyObject(conn.identity, true); - conn.identity = null; - } + // destroy all objects owned by this connection, including the player object + conn.DestroyOwnedObjects(); + conn.identity = null; } /// @@ -1231,38 +1124,13 @@ public static void DestroyPlayerForConnection(NetworkConnection conn) /// This will cause a new object to be instantiated from the registered prefab, or from a custom spawn function. /// /// Game object with NetworkIdentity to spawn. - public static void Spawn(GameObject obj) + /// The connection that has authority over the object + public static void Spawn(GameObject obj, NetworkConnection ownerConnection = null) { if (VerifyCanSpawn(obj)) { - SpawnObject(obj); - } - } - - static bool CheckForPrefab(GameObject obj) - { -#if UNITY_EDITOR -#if UNITY_2018_3_OR_NEWER - return UnityEditor.PrefabUtility.IsPartOfPrefabAsset(obj); -#elif UNITY_2018_2_OR_NEWER - return (UnityEditor.PrefabUtility.GetCorrespondingObjectFromSource(obj) == null) && (UnityEditor.PrefabUtility.GetPrefabObject(obj) != null); -#else - return (UnityEditor.PrefabUtility.GetPrefabParent(obj) == null) && (UnityEditor.PrefabUtility.GetPrefabObject(obj) != null); -#endif -#else - return false; -#endif - } - - static bool VerifyCanSpawn(GameObject obj) - { - if (CheckForPrefab(obj)) - { - Debug.LogErrorFormat("GameObject {0} is a prefab, it can't be spawned. This will cause errors in builds.", obj.name); - return false; + SpawnObject(obj, ownerConnection); } - - return true; } /// @@ -1270,24 +1138,23 @@ static bool VerifyCanSpawn(GameObject obj) /// This is the same as calling NetworkIdentity.AssignClientAuthority on the spawned object. /// /// The object to spawn. - /// The player object to set Client Authority to. - /// - public static bool SpawnWithClientAuthority(GameObject obj, GameObject player) + /// The player object to set Client Authority to. + public static void Spawn(GameObject obj, GameObject ownerPlayer) { - NetworkIdentity identity = player.GetComponent(); + NetworkIdentity identity = ownerPlayer.GetComponent(); if (identity == null) { - Debug.LogError("SpawnWithClientAuthority player object has no NetworkIdentity"); - return false; + logger.LogError("Player object has no NetworkIdentity"); + return; } if (identity.connectionToClient == null) { - Debug.LogError("SpawnWithClientAuthority player object is not a player."); - return false; + logger.LogError("Player object is not a player."); + return; } - return SpawnWithClientAuthority(obj, identity.connectionToClient); + Spawn(obj, identity.connectionToClient); } /// @@ -1295,74 +1162,52 @@ public static bool SpawnWithClientAuthority(GameObject obj, GameObject player) /// This is the same as calling NetworkIdentity.AssignClientAuthority on the spawned object. /// /// The object to spawn. - /// The connection to set Client Authority to. - /// - public static bool SpawnWithClientAuthority(GameObject obj, NetworkConnection conn) + /// The assetId of the object to spawn. Used for custom spawn handlers. + /// The connection that has authority over the object + public static void Spawn(GameObject obj, Guid assetId, NetworkConnection ownerConnection = null) { - if (!conn.isReady) - { - Debug.LogError("SpawnWithClientAuthority NetworkConnection is not ready!"); - return false; - } - - Spawn(obj); - - NetworkIdentity identity = obj.GetComponent(); - if (identity == null || !identity.isServer) + if (VerifyCanSpawn(obj)) { - // spawning the object failed. - return false; + if (GetNetworkIdentity(obj, out NetworkIdentity identity)) + { + identity.assetId = assetId; + } + SpawnObject(obj, ownerConnection); } - - return identity.AssignClientAuthority(conn); } - /// - /// This spawns an object like NetworkServer.Spawn() but also assigns Client Authority to the specified client. - /// This is the same as calling NetworkIdentity.AssignClientAuthority on the spawned object. - /// - /// The object to spawn. - /// The assetId of the object to spawn. Used for custom spawn handlers. - /// The connection to set Client Authority to. - /// - public static bool SpawnWithClientAuthority(GameObject obj, Guid assetId, NetworkConnection conn) + static bool CheckForPrefab(GameObject obj) { - Spawn(obj, assetId); - - NetworkIdentity identity = obj.GetComponent(); - if (identity == null || !identity.isServer) - { - // spawning the object failed. - return false; - } - - return identity.AssignClientAuthority(conn); +#if UNITY_EDITOR +#if UNITY_2018_3_OR_NEWER + return UnityEditor.PrefabUtility.IsPartOfPrefabAsset(obj); +#elif UNITY_2018_2_OR_NEWER + return (UnityEditor.PrefabUtility.GetCorrespondingObjectFromSource(obj) == null) && (UnityEditor.PrefabUtility.GetPrefabObject(obj) != null); +#else + return (UnityEditor.PrefabUtility.GetPrefabParent(obj) == null) && (UnityEditor.PrefabUtility.GetPrefabObject(obj) != null); +#endif +#else + return false; +#endif } - /// - /// This spawns an object like NetworkServer.Spawn() but also assigns Client Authority to the specified client. - /// This is the same as calling NetworkIdentity.AssignClientAuthority on the spawned object. - /// - /// The object to spawn. - /// The assetId of the object to spawn. Used for custom spawn handlers. - public static void Spawn(GameObject obj, Guid assetId) + static bool VerifyCanSpawn(GameObject obj) { - if (VerifyCanSpawn(obj)) + if (CheckForPrefab(obj)) { - if (GetNetworkIdentity(obj, out NetworkIdentity identity)) - { - identity.assetId = assetId; - } - SpawnObject(obj); + logger.LogFormat(LogType.Error, "GameObject {0} is a prefab, it can't be spawned. This will cause errors in builds.", obj.name); + return false; } + + return true; } static void DestroyObject(NetworkIdentity identity, bool destroyServerObject) { - if (LogFilter.Debug) Debug.Log("DestroyObject instance:" + identity.netId); + if (logger.LogEnabled()) logger.Log("DestroyObject instance:" + identity.netId); NetworkIdentity.spawned.Remove(identity.netId); - identity.clientAuthorityOwner?.RemoveOwnedObject(identity); + identity.connectionToClient?.RemoveOwnedObject(identity); ObjectDestroyMessage msg = new ObjectDestroyMessage { @@ -1373,15 +1218,17 @@ static void DestroyObject(NetworkIdentity identity, bool destroyServerObject) identity.ClearObservers(); if (NetworkClient.active && localClientActive) { - identity.OnNetworkDestroy(); + identity.OnStopClient(); } + identity.OnStopServer(); + // when unspawning, dont destroy the server's object if (destroyServerObject) { UnityEngine.Object.Destroy(identity.gameObject); } - identity.MarkForReset(); + identity.Reset(); } /// @@ -1393,7 +1240,7 @@ public static void Destroy(GameObject obj) { if (obj == null) { - if (LogFilter.Debug) Debug.Log("NetworkServer DestroyObject is null"); + logger.Log("NetworkServer DestroyObject is null"); return; } @@ -1413,7 +1260,7 @@ public static void UnSpawn(GameObject obj) { if (obj == null) { - if (LogFilter.Debug) Debug.Log("NetworkServer UnspawnObject is null"); + logger.Log("NetworkServer UnspawnObject is null"); return; } @@ -1423,22 +1270,10 @@ public static void UnSpawn(GameObject obj) } } - /// - /// Obsolete: Use instead. - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use NetworkIdentity.spawned[netId] instead.")] - public static GameObject FindLocalObject(uint netId) - { - if (NetworkIdentity.spawned.TryGetValue(netId, out NetworkIdentity identity)) - { - return identity.gameObject; - } - return null; - } - - static bool ValidateSceneObject(NetworkIdentity identity) + internal static bool ValidateSceneObject(NetworkIdentity identity) { - if (identity.gameObject.hideFlags == HideFlags.NotEditable || identity.gameObject.hideFlags == HideFlags.HideAndDontSave) + if (identity.gameObject.hideFlags == HideFlags.NotEditable || + identity.gameObject.hideFlags == HideFlags.HideAndDontSave) return false; #if UNITY_EDITOR @@ -1457,16 +1292,16 @@ static bool ValidateSceneObject(NetworkIdentity identity) /// Success if objects where spawned. public static bool SpawnObjects() { + // only if server active if (!active) - return true; + return false; NetworkIdentity[] identities = Resources.FindObjectsOfTypeAll(); foreach (NetworkIdentity identity in identities) { if (ValidateSceneObject(identity)) { - if (LogFilter.Debug) Debug.Log("SpawnObjects sceneId:" + identity.sceneId.ToString("X") + " name:" + identity.gameObject.name); - identity.Reset(); + if (logger.LogEnabled()) logger.Log("SpawnObjects sceneId:" + identity.sceneId.ToString("X") + " name:" + identity.gameObject.name); identity.gameObject.SetActive(true); } } @@ -1474,12 +1309,7 @@ public static bool SpawnObjects() foreach (NetworkIdentity identity in identities) { if (ValidateSceneObject(identity)) - { Spawn(identity.gameObject); - - // these objects are server authority - even if "localPlayerAuthority" is set on them - identity.ForceAuthority(true); - } } return true; } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkStartPosition.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkStartPosition.cs.meta index 97f5445..ae9ab89 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkStartPosition.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkStartPosition.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkTime.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkTime.cs index 7ec21dd..7037d54 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkTime.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkTime.cs @@ -9,6 +9,8 @@ namespace Mirror /// public static class NetworkTime { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkTime)); + /// /// how often are we sending ping messages /// used to calculate network time and RTT @@ -22,7 +24,6 @@ public static class NetworkTime static double lastPingTime; - // Date and time when the application started static readonly Stopwatch stopwatch = new Stopwatch(); @@ -67,7 +68,7 @@ internal static void UpdateClient() // and time from the server internal static void OnServerPing(NetworkConnection conn, NetworkPingMessage msg) { - if (LogFilter.Debug) Debug.Log("OnPingServerMessage conn=" + conn); + if (logger.LogEnabled()) logger.Log("OnPingServerMessage conn=" + conn); NetworkPongMessage pongMsg = new NetworkPongMessage { @@ -81,7 +82,7 @@ internal static void OnServerPing(NetworkConnection conn, NetworkPingMessage msg // Executed at the client when we receive a Pong message // find out how long it took since we sent the Ping // and update time offset - internal static void OnClientPong(NetworkConnection _, NetworkPongMessage msg) + internal static void OnClientPong(NetworkPongMessage msg) { double now = LocalTime(); diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs new file mode 100644 index 0000000..6f30ae6 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs @@ -0,0 +1,42 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror +{ + // the name NetworkProximityCheck implies that it's only about objects in + // proximity to the player. But we might have room based, guild based, + // instanced based checks too, so NetworkVisibility is more fitting. + // + // note: we inherit from NetworkBehaviour so we can reuse .netIdentity, etc. + // note: unlike UNET, we only allow 1 proximity checker per NetworkIdentity. + [DisallowMultipleComponent] + public abstract class NetworkVisibility : NetworkBehaviour + { + /// + /// Callback used by the visibility system to determine if an observer (player) can see this object. + /// If this function returns true, the network connection will be added as an observer. + /// + /// Network connection of a player. + /// True if the player can see this object. + public abstract bool OnCheckObserver(NetworkConnection conn); + + /// + /// Callback used by the visibility system to (re)construct the set of observers that can see this object. + /// Implementations of this callback should add network connections of players that can see this object to the observers set. + /// + /// The new set of observers for this object. + /// True if the set of observers is being built for the first time. + public abstract void OnRebuildObservers(HashSet observers, bool initialize); + + /// + /// Callback used by the visibility system for objects on a host. + /// Objects on a host (with a local client) cannot be disabled or destroyed when they are not visible to the local client. So this function is called to allow custom code to hide these objects. A typical implementation will disable renderer components on the object. This is only called on local clients on a host. + /// + /// New visibility state. + public virtual void OnSetHostVisibility(bool visible) + { + foreach (Renderer rend in GetComponentsInChildren()) + rend.enabled = visible; + } + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs.meta new file mode 100644 index 0000000..1e66658 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkVisibility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c08f1a030234d49d391d7223a8592f15 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriter.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriter.cs index a14f66d..05814e9 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriter.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriter.cs @@ -1,40 +1,94 @@ using System; -using System.IO; +using System.Runtime.CompilerServices; using System.Text; using UnityEngine; namespace Mirror { - // Binary stream Writer. Supports simple types, buffers, arrays, structs, and nested types + /// + /// Binary stream Writer. Supports simple types, buffers, arrays, structs, and nested types + /// Use NetworkWriter.GetWriter to reduce memory allocation + /// public class NetworkWriter { public const int MaxStringLength = 1024 * 32; // create writer immediately with it's own buffer so no one can mess with it and so that we can resize it. // note: BinaryWriter allocates too much, so we only use a MemoryStream - readonly MemoryStream _stream = new MemoryStream(); - MemoryStream stream + // => 1500 bytes by default because on average, most packets will be <= MTU + byte[] buffer = new byte[1500]; + + // 'int' is the best type for .Position. 'short' is too small if we send >32kb which would result in negative .Position + // -> converting long to int is fine until 2GB of data (MAX_INT), so we don't have to worry about overflows here + int position; + int length; + + public int Length => length; + + public int Position { - get + get => position; + set { - validCache = false; - return _stream; + position = value; + EnsureLength(value); } } - internal bool validCache; - byte[] data; - - internal bool pooled; - internal readonly bool reusable; + /// + /// Reset both the position and length of the stream + /// + /// + /// Leaves the capacity the same so that we can reuse this writer without extra allocations + /// + public void Reset() + { + position = 0; + length = 0; + } - // 'int' is the best type for .Position. 'short' is too small if we send >32kb which would result in negative .Position - // -> converting long to int is fine until 2GB of data (MAX_INT), so we don't have to worry about overflows here - public int Position { get { return (int)stream.Position; } set { stream.Position = value; } } + /// + /// Sets length, moves position if it is greater than new length + /// + /// + /// + /// Zeros out any extra length created by setlength + /// + public void SetLength(int newLength) + { + int oldLength = length; + + // ensure length & capacity + EnsureLength(newLength); + + // zero out new length + if (oldLength < newLength) + { + Array.Clear(buffer, oldLength, newLength - oldLength); + } + + length = newLength; + position = Mathf.Min(position, length); + } + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + void EnsureLength(int value) + { + if (length < value) + { + length = value; + EnsureCapacity(value); + } + } - public NetworkWriter(bool reusable = false) + [MethodImpl(MethodImplOptions.AggressiveInlining)] + void EnsureCapacity(int value) { - this.reusable = reusable; + if (buffer.Length < value) + { + int capacity = Math.Max(value, buffer.Length * 2); + Array.Resize(ref buffer, capacity); + } } // MemoryStream has 3 values: Position, Length and Capacity. @@ -44,12 +98,8 @@ public NetworkWriter(bool reusable = false) // ToArray returns all the data we have written, regardless of the current position public byte[] ToArray() { - if (!validCache) - { - stream.Flush(); - data = stream.ToArray(); - validCache = true; - } + byte[] data = new byte[length]; + Array.ConstrainedCopy(buffer, 0, data, 0, length); return data; } @@ -60,151 +110,50 @@ public byte[] ToArray() // while you are using the ArraySegment public ArraySegment ToArraySegment() { - stream.Flush(); - if (stream.TryGetBuffer(out ArraySegment data)) - { - return data; - } - throw new Exception("Cannot expose contents of memory stream. Make sure that MemoryStream buffer is publicly visible (see MemoryStream source code)."); + return new ArraySegment(buffer, 0, length); } - // reset both the position and length of the stream, but leaves the capacity the same - // so that we can reuse this writer without extra allocations - public void SetLength(long value) + public void WriteByte(byte value) { - stream.SetLength(value); + EnsureLength(position + 1); + buffer[position++] = value; } - public void WriteByte(byte value) => stream.WriteByte(value); // for byte arrays with consistent size, where the reader knows how many to read // (like a packet opcode that's always the same) public void WriteBytes(byte[] buffer, int offset, int count) { - // no null check because we would need to write size info for that too (hence WriteBytesAndSize) - stream.Write(buffer, offset, count); + EnsureLength(position + count); + Array.ConstrainedCopy(buffer, offset, this.buffer, position, count); + position += count; } public void WriteUInt32(uint value) { - WriteByte((byte)(value & 0xFF)); - WriteByte((byte)((value >> 8) & 0xFF)); - WriteByte((byte)((value >> 16) & 0xFF)); - WriteByte((byte)((value >> 24) & 0xFF)); + EnsureLength(position + 4); + buffer[position++] = (byte)value; + buffer[position++] = (byte)(value >> 8); + buffer[position++] = (byte)(value >> 16); + buffer[position++] = (byte)(value >> 24); } public void WriteInt32(int value) => WriteUInt32((uint)value); public void WriteUInt64(ulong value) { - WriteByte((byte)(value & 0xFF)); - WriteByte((byte)((value >> 8) & 0xFF)); - WriteByte((byte)((value >> 16) & 0xFF)); - WriteByte((byte)((value >> 24) & 0xFF)); - WriteByte((byte)((value >> 32) & 0xFF)); - WriteByte((byte)((value >> 40) & 0xFF)); - WriteByte((byte)((value >> 48) & 0xFF)); - WriteByte((byte)((value >> 56) & 0xFF)); + EnsureLength(position + 8); + buffer[position++] = (byte)value; + buffer[position++] = (byte)(value >> 8); + buffer[position++] = (byte)(value >> 16); + buffer[position++] = (byte)(value >> 24); + buffer[position++] = (byte)(value >> 32); + buffer[position++] = (byte)(value >> 40); + buffer[position++] = (byte)(value >> 48); + buffer[position++] = (byte)(value >> 56); } public void WriteInt64(long value) => WriteUInt64((ulong)value); - - #region Obsoletes - [Obsolete("Use WriteUInt16 instead")] - public void Write(ushort value) => this.WriteUInt16(value); - - [Obsolete("Use WriteUInt32 instead")] - public void Write(uint value) => WriteUInt32(value); - - [Obsolete("Use WriteUInt64 instead")] - public void Write(ulong value) => WriteUInt64(value); - - [Obsolete("Use WriteByte instead")] - public void Write(byte value) => stream.WriteByte(value); - - [Obsolete("Use WriteSByte instead")] - public void Write(sbyte value) => WriteByte((byte)value); - - // write char the same way that NetworkReader reads it (2 bytes) - [Obsolete("Use WriteChar instead")] - public void Write(char value) => this.WriteUInt16((ushort)value); - - [Obsolete("Use WriteBoolean instead")] - public void Write(bool value) => WriteByte((byte)(value ? 1 : 0)); - - [Obsolete("Use WriteInt16 instead")] - public void Write(short value) => this.WriteUInt16((ushort)value); - - [Obsolete("Use WriteInt32 instead")] - public void Write(int value) => WriteUInt32((uint)value); - - [Obsolete("Use WriteInt64 instead")] - public void Write(long value) => WriteUInt64((ulong)value); - - [Obsolete("Use WriteSingle instead")] - public void Write(float value) => this.WriteSingle(value); - - [Obsolete("Use WriteDouble instead")] - public void Write(double value) => this.WriteDouble(value); - - [Obsolete("Use WriteDecimal instead")] - public void Write(decimal value) => this.WriteDecimal(value); - - [Obsolete("Use WriteString instead")] - public void Write(string value) => this.WriteString(value); - - [Obsolete("Use WriteBytes instead")] - public void Write(byte[] buffer, int offset, int count) => WriteBytes(buffer, offset, count); - - [Obsolete("Use WriteVector2 instead")] - public void Write(Vector2 value) => this.WriteVector2(value); - - [Obsolete("Use WriteVector3 instead")] - public void Write(Vector3 value) => this.WriteVector3(value); - - [Obsolete("Use WriteVector4 instead")] - public void Write(Vector4 value) => this.WriteVector4(value); - - [Obsolete("Use WriteVector2Int instead")] - public void Write(Vector2Int value) => this.WriteVector2Int(value); - - [Obsolete("Use WriteVector3Int instead")] - public void Write(Vector3Int value) => this.WriteVector3Int(value); - - [Obsolete("Use WriteColor instead")] - public void Write(Color value) => this.WriteColor(value); - - [Obsolete("Use WriteColor32 instead")] - public void Write(Color32 value) => this.WriteColor32(value); - - [Obsolete("Use WriteQuaternion instead")] - public void Write(Quaternion value) => this.WriteQuaternion(value); - - [Obsolete("Use WriteRect instead")] - public void Write(Rect value) => this.WriteRect(value); - - [Obsolete("Use WritePlane instead")] - public void Write(Plane value) => this.WritePlane(value); - - [Obsolete("Use WriteRay instead")] - public void Write(Ray value) => this.WriteRay(value); - - [Obsolete("Use WriteMatrix4x4 instead")] - public void Write(Matrix4x4 value) => this.WriteMatrix4x4(value); - - [Obsolete("Use WriteGuid instead")] - public void Write(Guid value) => this.WriteGuid(value); - - [Obsolete("Use WriteNetworkIdentity instead")] - public void Write(NetworkIdentity value) => this.WriteNetworkIdentity(value); - - [Obsolete("Use WriteTransform instead")] - public void Write(Transform value) => this.WriteTransform(value); - - [Obsolete("Use WriteGameObject instead")] - public void Write(GameObject value) => this.WriteGameObject(value); - - #endregion } @@ -212,6 +161,8 @@ public void WriteUInt64(ulong value) // but they do all need to be extensions. public static class NetworkWriterExtensions { + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkWriterExtensions)); + // cache encoding instead of creating it with BinaryWriter each time // 1000 readers before: 1MB GC, 30ms // 1000 readers after: 0.8MB GC, 18ms @@ -222,13 +173,13 @@ public static class NetworkWriterExtensions public static void WriteSByte(this NetworkWriter writer, sbyte value) => writer.WriteByte((byte)value); - public static void WriteChar(this NetworkWriter writer, char value) => writer.WriteUInt16((ushort)value); + public static void WriteChar(this NetworkWriter writer, char value) => writer.WriteUInt16(value); public static void WriteBoolean(this NetworkWriter writer, bool value) => writer.WriteByte((byte)(value ? 1 : 0)); public static void WriteUInt16(this NetworkWriter writer, ushort value) { - writer.WriteByte((byte)(value & 0xFF)); + writer.WriteByte((byte)value); writer.WriteByte((byte)(value >> 8)); } @@ -271,14 +222,10 @@ public static void WriteString(this NetworkWriter writer, string value) // (note: original HLAPI would write "" for null strings, but if a // string is null on the server then it should also be null // on the client) - switch (value) + if (value == null) { - case null: - writer.WriteUInt16(0); - return; - case "": - writer.WriteUInt16(1); - return; + writer.WriteUInt16(0); + return; } // write string with same method as NetworkReader @@ -357,78 +304,78 @@ public static void WritePackedUInt64(this NetworkWriter writer, ulong value) if (value <= 2287) { writer.WriteByte((byte)(((value - 240) >> 8) + 241)); - writer.WriteByte((byte)((value - 240) & 0xFF)); + writer.WriteByte((byte)(value - 240)); return; } if (value <= 67823) { - writer.WriteByte((byte)249); + writer.WriteByte(249); writer.WriteByte((byte)((value - 2288) >> 8)); - writer.WriteByte((byte)((value - 2288) & 0xFF)); + writer.WriteByte((byte)(value - 2288)); return; } if (value <= 16777215) { - writer.WriteByte((byte)250); - writer.WriteByte((byte)(value & 0xFF)); - writer.WriteByte((byte)((value >> 8) & 0xFF)); - writer.WriteByte((byte)((value >> 16) & 0xFF)); + writer.WriteByte(250); + writer.WriteByte((byte)value); + writer.WriteByte((byte)(value >> 8)); + writer.WriteByte((byte)(value >> 16)); return; } if (value <= 4294967295) { - writer.WriteByte((byte)251); - writer.WriteByte((byte)(value & 0xFF)); - writer.WriteByte((byte)((value >> 8) & 0xFF)); - writer.WriteByte((byte)((value >> 16) & 0xFF)); - writer.WriteByte((byte)((value >> 24) & 0xFF)); + writer.WriteByte(251); + writer.WriteByte((byte)value); + writer.WriteByte((byte)(value >> 8)); + writer.WriteByte((byte)(value >> 16)); + writer.WriteByte((byte)(value >> 24)); return; } if (value <= 1099511627775) { - writer.WriteByte((byte)252); - writer.WriteByte((byte)(value & 0xFF)); - writer.WriteByte((byte)((value >> 8) & 0xFF)); - writer.WriteByte((byte)((value >> 16) & 0xFF)); - writer.WriteByte((byte)((value >> 24) & 0xFF)); - writer.WriteByte((byte)((value >> 32) & 0xFF)); + writer.WriteByte(252); + writer.WriteByte((byte)value); + writer.WriteByte((byte)(value >> 8)); + writer.WriteByte((byte)(value >> 16)); + writer.WriteByte((byte)(value >> 24)); + writer.WriteByte((byte)(value >> 32)); return; } if (value <= 281474976710655) { - writer.WriteByte((byte)253); - writer.WriteByte((byte)(value & 0xFF)); - writer.WriteByte((byte)((value >> 8) & 0xFF)); - writer.WriteByte((byte)((value >> 16) & 0xFF)); - writer.WriteByte((byte)((value >> 24) & 0xFF)); - writer.WriteByte((byte)((value >> 32) & 0xFF)); - writer.WriteByte((byte)((value >> 40) & 0xFF)); + writer.WriteByte(253); + writer.WriteByte((byte)value); + writer.WriteByte((byte)(value >> 8)); + writer.WriteByte((byte)(value >> 16)); + writer.WriteByte((byte)(value >> 24)); + writer.WriteByte((byte)(value >> 32)); + writer.WriteByte((byte)(value >> 40)); return; } if (value <= 72057594037927935) { - writer.WriteByte((byte)254); - writer.WriteByte((byte)(value & 0xFF)); - writer.WriteByte((byte)((value >> 8) & 0xFF)); - writer.WriteByte((byte)((value >> 16) & 0xFF)); - writer.WriteByte((byte)((value >> 24) & 0xFF)); - writer.WriteByte((byte)((value >> 32) & 0xFF)); - writer.WriteByte((byte)((value >> 40) & 0xFF)); - writer.WriteByte((byte)((value >> 48) & 0xFF)); + writer.WriteByte(254); + writer.WriteByte((byte)value); + writer.WriteByte((byte)(value >> 8)); + writer.WriteByte((byte)(value >> 16)); + writer.WriteByte((byte)(value >> 24)); + writer.WriteByte((byte)(value >> 32)); + writer.WriteByte((byte)(value >> 40)); + writer.WriteByte((byte)(value >> 48)); return; } // all others { - writer.WriteByte((byte)255); - writer.WriteByte((byte)(value & 0xFF)); - writer.WriteByte((byte)((value >> 8) & 0xFF)); - writer.WriteByte((byte)((value >> 16) & 0xFF)); - writer.WriteByte((byte)((value >> 24) & 0xFF)); - writer.WriteByte((byte)((value >> 32) & 0xFF)); - writer.WriteByte((byte)((value >> 40) & 0xFF)); - writer.WriteByte((byte)((value >> 48) & 0xFF)); - writer.WriteByte((byte)((value >> 56) & 0xFF)); + writer.WriteByte(255); + writer.WriteByte((byte)value); + writer.WriteByte((byte)(value >> 8)); + writer.WriteByte((byte)(value >> 16)); + writer.WriteByte((byte)(value >> 24)); + writer.WriteByte((byte)(value >> 32)); + writer.WriteByte((byte)(value >> 40)); + writer.WriteByte((byte)(value >> 48)); + writer.WriteByte((byte)(value >> 56)); } } @@ -548,7 +495,7 @@ public static void WriteNetworkIdentity(this NetworkWriter writer, NetworkIdenti public static void WriteTransform(this NetworkWriter writer, Transform value) { - if (value == null || value.gameObject == null) + if (value == null) { writer.WritePackedUInt32(0); return; @@ -560,7 +507,7 @@ public static void WriteTransform(this NetworkWriter writer, Transform value) } else { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + logger.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); writer.WritePackedUInt32(0); } } @@ -579,12 +526,17 @@ public static void WriteGameObject(this NetworkWriter writer, GameObject value) } else { - Debug.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); + logger.LogWarning("NetworkWriter " + value + " has no NetworkIdentity"); writer.WritePackedUInt32(0); } } - public static void Write(this NetworkWriter writer, T msg) where T : IMessageBase + public static void WriteUri(this NetworkWriter writer, Uri uri) + { + writer.WriteString(uri.ToString()); + } + + public static void WriteMessage(this NetworkWriter writer, T msg) where T : IMessageBase { msg.Serialize(writer); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriterPool.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriterPool.cs index 97db231..79a6ab1 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriterPool.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/NetworkWriterPool.cs @@ -1,38 +1,97 @@ -using System.Collections.Generic; +using System; using UnityEngine; namespace Mirror { + /// + /// NetworkWriter to be used with NetworkWriterPool + /// + public class PooledNetworkWriter : NetworkWriter, IDisposable + { + public void Dispose() + { + NetworkWriterPool.Recycle(this); + } + } + + /// + /// Pool of NetworkWriters + /// Use this pool instead of NetworkWriter to reduce memory allocation + /// Use Capacity to change size of pool + /// public static class NetworkWriterPool { - static readonly Stack pool = new Stack(); + static readonly ILogger logger = LogFactory.GetLogger(typeof(NetworkWriterPool), LogType.Error); + + /// + /// Size of the pool + /// If pool is too small getting writers will causes memory allocation + /// Default value: 100 + /// + public static int Capacity + { + get => pool.Length; + set + { + // resize the array + Array.Resize(ref pool, value); + + // if capacity is smaller than before, then we need to adjust + // 'next' so it doesn't point to an index out of range + // -> if we set '0' then next = min(_, 0-1) => -1 + // -> if we set '2' then next = min(_, 2-1) => 1 + next = Mathf.Min(next, pool.Length - 1); + } + } - public static NetworkWriter GetWriter() + /// + /// Mirror usually only uses up to 4 writes in nested usings, + /// 100 is a good margin for edge cases when users need a lot writers at + /// the same time. + /// + /// keep in mind, most entries of the pool will be null in most cases + /// + /// + /// Note: we use an Array instead of a Stack because it's significantly + /// faster: https://github.com/vis2k/Mirror/issues/1614 + static PooledNetworkWriter[] pool = new PooledNetworkWriter[100]; + + static int next = -1; + + /// + /// Get the next writer in the pool + /// If pool is empty, creates a new Writer + /// + public static PooledNetworkWriter GetWriter() { - if (pool.Count != 0) + if (next == -1) { - NetworkWriter writer = pool.Pop(); - // reset cached writer length and position - writer.pooled = false; - writer.SetLength(0); - return writer; + return new PooledNetworkWriter(); } - return new NetworkWriter(true); + PooledNetworkWriter writer = pool[next]; + pool[next] = null; + next--; + + // reset cached writer length and position + writer.Reset(); + return writer; } - public static void Recycle(NetworkWriter writer) + /// + /// Puts writer back into pool + /// When pool is full, the extra writer is left for the GC + /// + public static void Recycle(PooledNetworkWriter writer) { - if (writer == null) + if (next < pool.Length - 1) { - Debug.LogWarning("Recycling null writers is not allowed, please check your code!"); - return; + next++; + pool[next] = writer; } - if (writer.reusable && !writer.pooled) + else { - writer.pooled = true; - writer.validCache = false; - pool.Push(writer); + logger.LogWarning("NetworkWriterPool.Recycle, Pool was full leaving extra writer for GC"); } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs new file mode 100644 index 0000000..f89f83b --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror.RemoteCalls +{ + /// + /// Delegate for Command functions. + /// + /// + /// + public delegate void CmdDelegate(NetworkBehaviour obj, NetworkReader reader, NetworkConnectionToClient senderConnection); + + class Invoker + { + public Type invokeClass; + public MirrorInvokeType invokeType; + public CmdDelegate invokeFunction; + public bool cmdIgnoreAuthority; + + public bool AreEqual(Type invokeClass, MirrorInvokeType invokeType, CmdDelegate invokeFunction) + { + return (this.invokeClass == invokeClass && + this.invokeType == invokeType && + this.invokeFunction == invokeFunction); + } + } + + public struct CommandInfo + { + public bool ignoreAuthority; + } + + /// + /// Used to help manage remote calls for NetworkBehaviours + /// + public static class RemoteCallHelper + { + static readonly ILogger logger = LogFactory.GetLogger(typeof(RemoteCallHelper)); + + static readonly Dictionary cmdHandlerDelegates = new Dictionary(); + + /// + /// Creates hash from Type and method name + /// + /// + /// + /// + internal static int GetMethodHash(Type invokeClass, string methodName) + { + // (invokeClass + ":" + cmdName).GetStableHashCode() would cause allocations. + // so hash1 + hash2 is better. + unchecked + { + int hash = invokeClass.FullName.GetStableHashCode(); + return hash * 503 + methodName.GetStableHashCode(); + } + } + + + /// + /// helper function register a Command/Rpc/SyncEvent delegate + /// + /// + /// + /// + /// + /// + /// remote function hash + internal static int RegisterDelegate(Type invokeClass, string cmdName, MirrorInvokeType invokerType, CmdDelegate func, bool cmdIgnoreAuthority = false) + { + // type+func so Inventory.RpcUse != Equipment.RpcUse + int cmdHash = GetMethodHash(invokeClass, cmdName); + + if (CheckIfDeligateExists(invokeClass, invokerType, func, cmdHash)) + return cmdHash; + + Invoker invoker = new Invoker + { + invokeType = invokerType, + invokeClass = invokeClass, + invokeFunction = func, + cmdIgnoreAuthority = cmdIgnoreAuthority, + }; + + cmdHandlerDelegates[cmdHash] = invoker; + + if (logger.LogEnabled()) + { + string ingoreAuthorityMessage = invokerType == MirrorInvokeType.Command ? $" IgnoreAuthority:{cmdIgnoreAuthority}" : ""; + logger.Log($"RegisterDelegate hash: {cmdHash} invokerType: {invokerType} method: {func.GetMethodName()}{ingoreAuthorityMessage}"); + } + + return cmdHash; + } + + static bool CheckIfDeligateExists(Type invokeClass, MirrorInvokeType invokerType, CmdDelegate func, int cmdHash) + { + if (cmdHandlerDelegates.ContainsKey(cmdHash)) + { + // something already registered this hash + Invoker oldInvoker = cmdHandlerDelegates[cmdHash]; + if (oldInvoker.AreEqual(invokeClass, invokerType, func)) + { + // it's all right, it was the same function + return true; + } + + logger.LogError($"Function {oldInvoker.invokeClass}.{oldInvoker.invokeFunction.GetMethodName()} and {invokeClass}.{func.GetMethodName()} have the same hash. Please rename one of them"); + } + + return false; + } + + public static void RegisterCommandDelegate(Type invokeClass, string cmdName, CmdDelegate func, bool ignoreAuthority) + { + RegisterDelegate(invokeClass, cmdName, MirrorInvokeType.Command, func, ignoreAuthority); + } + + public static void RegisterRpcDelegate(Type invokeClass, string rpcName, CmdDelegate func) + { + RegisterDelegate(invokeClass, rpcName, MirrorInvokeType.ClientRpc, func); + } + + public static void RegisterEventDelegate(Type invokeClass, string eventName, CmdDelegate func) + { + RegisterDelegate(invokeClass, eventName, MirrorInvokeType.SyncEvent, func); + } + + // we need a way to clean up delegates after tests + [System.Obsolete("Removing all delegates will cause problems with other tests as their hashs can not be re-added without reloading scripts", true)] + internal static void ClearDelegates() + { + cmdHandlerDelegates.Clear(); + } + + /// + /// We need this in order to clean up tests + /// + internal static void RemoveDelegate(int hash) + { + cmdHandlerDelegates.Remove(hash); + } + + static bool GetInvokerForHash(int cmdHash, MirrorInvokeType invokeType, out Invoker invoker) + { + if (cmdHandlerDelegates.TryGetValue(cmdHash, out invoker) && invoker != null && invoker.invokeType == invokeType) + { + return true; + } + + // debug message if not found, or null, or mismatched type + // (no need to throw an error, an attacker might just be trying to + // call an cmd with an rpc's hash) + if (logger.LogEnabled()) logger.Log("GetInvokerForHash hash:" + cmdHash + " not found"); + + return false; + } + + // InvokeCmd/Rpc/SyncEventDelegate can all use the same function here + internal static bool InvokeHandlerDelegate(int cmdHash, MirrorInvokeType invokeType, NetworkReader reader, NetworkBehaviour invokingType, NetworkConnectionToClient senderConnection = null) + { + if (GetInvokerForHash(cmdHash, invokeType, out Invoker invoker) && invoker.invokeClass.IsInstanceOfType(invokingType)) + { + invoker.invokeFunction(invokingType, reader, senderConnection); + + return true; + } + return false; + } + + internal static CommandInfo GetCommandInfo(int cmdHash, NetworkBehaviour invokingType) + { + if (GetInvokerForHash(cmdHash, MirrorInvokeType.Command, out Invoker invoker) && invoker.invokeClass.IsInstanceOfType(invokingType)) + { + return new CommandInfo + { + ignoreAuthority = invoker.cmdIgnoreAuthority + }; + } + return default; + } + + /// + /// Gets the handler function for a given hash + /// Can be used by profilers and debuggers + /// + /// rpc function hash + /// The function delegate that will handle the command + public static CmdDelegate GetDelegate(int cmdHash) + { + if (cmdHandlerDelegates.TryGetValue(cmdHash, out Invoker invoker)) + { + return invoker.invokeFunction; + } + return null; + } + } +} + diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs.meta new file mode 100644 index 0000000..862d6e4 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/RemoteCallHelper.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d2cdbcbd1e377d6408a91acbec31ba16 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncDictionary.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncDictionary.cs index a5a9d18..32f4639 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncDictionary.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncDictionary.cs @@ -1,15 +1,16 @@ using System.Collections; using System.Collections.Generic; using System.ComponentModel; +using JetBrains.Annotations; namespace Mirror { [EditorBrowsable(EditorBrowsableState.Never)] - public abstract class SyncDictionary : IDictionary, SyncObject + public abstract class SyncIDictionary : IDictionary, SyncObject, IReadOnlyDictionary { public delegate void SyncDictionaryChanged(Operation op, TKey key, TValue item); - readonly IDictionary objects; + protected readonly IDictionary objects; public int Count => objects.Count; public bool IsReadOnly { get; private set; } @@ -20,8 +21,7 @@ public enum Operation : byte OP_ADD, OP_CLEAR, OP_REMOVE, - OP_SET, - OP_DIRTY + OP_SET } struct Change @@ -38,6 +38,14 @@ struct Change // so we need to skip them int changesAhead; + public void Reset() + { + IsReadOnly = false; + changes.Clear(); + changesAhead = 0; + objects.Clear(); + } + protected virtual void SerializeKey(NetworkWriter writer, TKey item) { } protected virtual void SerializeItem(NetworkWriter writer, TValue item) { } protected virtual TKey DeserializeKey(NetworkReader reader) => default; @@ -49,21 +57,15 @@ protected virtual void SerializeItem(NetworkWriter writer, TValue item) { } public ICollection Values => objects.Values; + IEnumerable IReadOnlyDictionary.Keys => objects.Keys; + + IEnumerable IReadOnlyDictionary.Values => objects.Values; + // throw away all the changes // this should be called after a successfull sync public void Flush() => changes.Clear(); - protected SyncDictionary() - { - objects = new Dictionary(); - } - - protected SyncDictionary(IEqualityComparer eq) - { - objects = new Dictionary(eq); - } - - protected SyncDictionary(IDictionary objects) + protected SyncIDictionary(IDictionary objects) { this.objects = objects; } @@ -120,7 +122,6 @@ public void OnSerializeDelta(NetworkWriter writer) case Operation.OP_ADD: case Operation.OP_REMOVE: case Operation.OP_SET: - case Operation.OP_DIRTY: SerializeKey(writer, change.key); SerializeItem(writer, change.item); break; @@ -175,7 +176,6 @@ public void OnDeserializeDelta(NetworkReader reader) { case Operation.OP_ADD: case Operation.OP_SET: - case Operation.OP_DIRTY: key = DeserializeKey(reader); item = DeserializeItem(reader); if (apply) @@ -231,18 +231,21 @@ public bool Remove(TKey key) return false; } - public void Dirty(TKey index) - { - AddOperation(Operation.OP_DIRTY, index, objects[index]); - } - public TValue this[TKey i] { get => objects[i]; set { - AddOperation(ContainsKey(i) ? Operation.OP_SET : Operation.OP_ADD, i, value); - objects[i] = value; + if (ContainsKey(i)) + { + objects[i] = value; + AddOperation(Operation.OP_SET, i, value); + } + else + { + objects[i] = value; + AddOperation(Operation.OP_ADD, i, value); + } } } @@ -261,12 +264,8 @@ public bool Contains(KeyValuePair item) return TryGetValue(item.Key, out TValue val) && EqualityComparer.Default.Equals(val, item.Value); } - public void CopyTo(KeyValuePair[] array, int arrayIndex) + public void CopyTo([NotNull] KeyValuePair[] array, int arrayIndex) { - if (array == null) - { - throw new System.ArgumentNullException(nameof(array), "Array Is Null"); - } if (arrayIndex < 0 || arrayIndex > array.Length) { throw new System.ArgumentOutOfRangeException(nameof(arrayIndex), "Array Index Out of Range"); @@ -298,4 +297,22 @@ public bool Remove(KeyValuePair item) IEnumerator IEnumerable.GetEnumerator() => objects.GetEnumerator(); } + + public abstract class SyncDictionary : SyncIDictionary + { + protected SyncDictionary() : base(new Dictionary()) + { + } + + protected SyncDictionary(IEqualityComparer eq) : base(new Dictionary(eq)) + { + } + + public new Dictionary.ValueCollection Values => ((Dictionary)objects).Values; + + public new Dictionary.KeyCollection Keys => ((Dictionary)objects).Keys; + + public new Dictionary.Enumerator GetEnumerator() => ((Dictionary)objects).GetEnumerator(); + + } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncList.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncList.cs index 8692ffd..285347e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncList.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncList.cs @@ -35,36 +35,25 @@ public class SyncListBool : SyncList protected override bool DeserializeItem(NetworkReader reader) => reader.ReadBoolean(); } - // Original UNET name is SyncListStruct and original Weaver weavers anything - // that contains the name 'SyncListStruct', without considering the name- - // space. - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use SyncList instead")] - public class SyncListSTRUCT : SyncList where T : struct - { - public T GetItem(int i) => base[i]; - } - [EditorBrowsable(EditorBrowsableState.Never)] public abstract class SyncList : IList, IReadOnlyList, SyncObject { - public delegate void SyncListChanged(Operation op, int itemIndex, T item); + public delegate void SyncListChanged(Operation op, int itemIndex, T oldItem, T newItem); readonly IList objects; + readonly IEqualityComparer comparer; public int Count => objects.Count; public bool IsReadOnly { get; private set; } public event SyncListChanged Callback; - int version; public enum Operation : byte { OP_ADD, OP_CLEAR, OP_INSERT, - OP_REMOVE, OP_REMOVEAT, - OP_SET, - OP_DIRTY + OP_SET } struct Change @@ -84,14 +73,15 @@ struct Change protected virtual void SerializeItem(NetworkWriter writer, T item) { } protected virtual T DeserializeItem(NetworkReader reader) => default; - - protected SyncList() + protected SyncList(IEqualityComparer comparer = null) { + this.comparer = comparer ?? EqualityComparer.Default; objects = new List(); } - protected SyncList(IList objects) + protected SyncList(IList objects, IEqualityComparer comparer = null) { + this.comparer = comparer ?? EqualityComparer.Default; this.objects = objects; } @@ -101,7 +91,15 @@ protected SyncList(IList objects) // this should be called after a successfull sync public void Flush() => changes.Clear(); - void AddOperation(Operation op, int itemIndex, T item) + public void Reset() + { + IsReadOnly = false; + changes.Clear(); + changesAhead = 0; + objects.Clear(); + } + + void AddOperation(Operation op, int itemIndex, T oldItem, T newItem) { if (IsReadOnly) { @@ -112,16 +110,14 @@ void AddOperation(Operation op, int itemIndex, T item) { operation = op, index = itemIndex, - item = item + item = newItem }; changes.Add(change); - Callback?.Invoke(op, itemIndex, item); + Callback?.Invoke(op, itemIndex, oldItem, newItem); } - void AddOperation(Operation op, int itemIndex) => AddOperation(op, itemIndex, default); - public void OnSerializeAll(NetworkWriter writer) { // if init, write the full list content @@ -153,7 +149,6 @@ public void OnSerializeDelta(NetworkWriter writer) switch (change.operation) { case Operation.OP_ADD: - case Operation.OP_REMOVE: SerializeItem(writer, change.item); break; @@ -166,7 +161,6 @@ public void OnSerializeDelta(NetworkWriter writer) case Operation.OP_INSERT: case Operation.OP_SET: - case Operation.OP_DIRTY: writer.WritePackedUInt32((uint)change.index); SerializeItem(writer, change.item); break; @@ -212,16 +206,17 @@ public void OnDeserializeDelta(NetworkReader reader) // that we have not applied yet bool apply = changesAhead == 0; int index = 0; - T item = default; + T oldItem = default; + T newItem = default; switch (operation) { case Operation.OP_ADD: - item = DeserializeItem(reader); + newItem = DeserializeItem(reader); if (apply) { index = objects.Count; - objects.Add(item); + objects.Add(newItem); } break; @@ -234,18 +229,10 @@ public void OnDeserializeDelta(NetworkReader reader) case Operation.OP_INSERT: index = (int)reader.ReadPackedUInt32(); - item = DeserializeItem(reader); + newItem = DeserializeItem(reader); if (apply) { - objects.Insert(index, item); - } - break; - - case Operation.OP_REMOVE: - item = DeserializeItem(reader); - if (apply) - { - objects.Remove(item); + objects.Insert(index, newItem); } break; @@ -253,25 +240,25 @@ public void OnDeserializeDelta(NetworkReader reader) index = (int)reader.ReadPackedUInt32(); if (apply) { - item = objects[index]; + oldItem = objects[index]; objects.RemoveAt(index); } break; case Operation.OP_SET: - case Operation.OP_DIRTY: index = (int)reader.ReadPackedUInt32(); - item = DeserializeItem(reader); + newItem = DeserializeItem(reader); if (apply) { - objects[index] = item; + oldItem = objects[index]; + objects[index] = newItem; } break; } if (apply) { - Callback?.Invoke(operation, index, item); + Callback?.Invoke(operation, index, oldItem, newItem); } // we just skipped this change else @@ -284,22 +271,34 @@ public void OnDeserializeDelta(NetworkReader reader) public void Add(T item) { objects.Add(item); - AddOperation(Operation.OP_ADD, objects.Count - 1, item); - version++; + AddOperation(Operation.OP_ADD, objects.Count - 1, default, item); + } + + public void AddRange(IEnumerable range) + { + foreach (T entry in range) + { + Add(entry); + } } public void Clear() { objects.Clear(); - AddOperation(Operation.OP_CLEAR, 0); - version++; + AddOperation(Operation.OP_CLEAR, 0, default, default); } - public bool Contains(T item) => objects.Contains(item); + public bool Contains(T item) => IndexOf(item) >= 0; public void CopyTo(T[] array, int index) => objects.CopyTo(array, index); - public int IndexOf(T item) => objects.IndexOf(item); + public int IndexOf(T item) + { + for (int i = 0; i < objects.Count; ++i) + if (comparer.Equals(item, objects[i])) + return i; + return -1; + } public int FindIndex(Predicate match) { @@ -309,34 +308,67 @@ public int FindIndex(Predicate match) return -1; } + public T Find(Predicate match) + { + int i = FindIndex(match); + return (i != -1) ? objects[i] : default; + } + + public List FindAll(Predicate match) + { + List results = new List(); + for (int i = 0; i < objects.Count; ++i) + if (match(objects[i])) + results.Add(objects[i]); + return results; + } + public void Insert(int index, T item) { objects.Insert(index, item); - AddOperation(Operation.OP_INSERT, index, item); - version++; + AddOperation(Operation.OP_INSERT, index, default, item); + } + + public void InsertRange(int index, IEnumerable range) + { + foreach (T entry in range) + { + Insert(index, entry); + index++; + } } public bool Remove(T item) { - bool result = objects.Remove(item); + int index = IndexOf(item); + bool result = index >= 0; if (result) { - AddOperation(Operation.OP_REMOVE, 0, item); - version++; + RemoveAt(index); } return result; } public void RemoveAt(int index) { + T oldItem = objects[index]; objects.RemoveAt(index); - AddOperation(Operation.OP_REMOVEAT, index); - version++; + AddOperation(Operation.OP_REMOVEAT, index, oldItem, default); } - public void Dirty(int index) + public int RemoveAll(Predicate match) { - AddOperation(Operation.OP_DIRTY, index, objects[index]); + List toRemove = new List(); + for (int i = 0; i < objects.Count; ++i) + if (match(objects[i])) + toRemove.Add(objects[i]); + + foreach (T entry in toRemove) + { + Remove(entry); + } + + return toRemove.Count; } public T this[int i] @@ -344,53 +376,56 @@ public T this[int i] get => objects[i]; set { - if (!EqualityComparer.Default.Equals(objects[i], value)) + if (!comparer.Equals(objects[i], value)) { + T oldItem = objects[i]; objects[i] = value; - AddOperation(Operation.OP_SET, i, value); - version++; + AddOperation(Operation.OP_SET, i, oldItem, value); } } } - public SyncListEnumerator GetEnumerator() => new SyncListEnumerator(this); + public Enumerator GetEnumerator() => new Enumerator(this); + + IEnumerator IEnumerable.GetEnumerator() => new Enumerator(this); - IEnumerator IEnumerable.GetEnumerator() => new SyncListEnumerator(this); - IEnumerator IEnumerable.GetEnumerator() => new SyncListEnumerator(this); + IEnumerator IEnumerable.GetEnumerator() => new Enumerator(this); - public struct SyncListEnumerator : IEnumerator + // default Enumerator allocates. we need a custom struct Enumerator to + // not allocate on the heap. + // (System.Collections.Generic.List source code does the same) + // + // benchmark: + // uMMORPG with 800 monsters, Skills.GetHealthBonus() which runs a + // foreach on skills SyncList: + // before: 81.2KB GC per frame + // after: 0KB GC per frame + // => this is extremely important for MMO scale networking + public struct Enumerator : IEnumerator { readonly SyncList list; - int curIndex; - readonly int version; + int index; public T Current { get; private set; } - public SyncListEnumerator(SyncList list) + public Enumerator(SyncList list) { this.list = list; - curIndex = -1; - version = list.version; + index = -1; Current = default; } public bool MoveNext() { - if (version != list.version) - { - throw new InvalidOperationException("Collection was modified; enumeration operation may not execute."); - } - if (++curIndex >= list.Count) + if (++index >= list.Count) { return false; } - Current = list[curIndex]; + Current = list[index]; return true; } - public void Reset() => curIndex = -1; - + public void Reset() => index = -1; object IEnumerator.Current => Current; - public void Dispose() { } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncObject.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncObject.cs index afaa508..5730a74 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncObject.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncObject.cs @@ -22,5 +22,10 @@ public interface SyncObject // deserialize changes since last sync void OnDeserializeDelta(NetworkReader reader); + + /// + /// Resets the SyncObject so that it can be re-used + /// + void Reset(); } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncSet.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncSet.cs index 0a06352..95f1ce9 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncSet.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/SyncSet.cs @@ -5,13 +5,12 @@ namespace Mirror { - [EditorBrowsable(EditorBrowsableState.Never)] public abstract class SyncSet : ISet, SyncObject { public delegate void SyncSetChanged(Operation op, T item); - readonly ISet objects; + protected readonly ISet objects; public int Count => objects.Count; public bool IsReadOnly { get; private set; } @@ -42,6 +41,14 @@ protected SyncSet(ISet objects) this.objects = objects; } + public void Reset() + { + IsReadOnly = false; + changes.Clear(); + changesAhead = 0; + objects.Clear(); + } + protected virtual void SerializeItem(NetworkWriter writer, T item) { } protected virtual T DeserializeItem(NetworkReader reader) => default; @@ -318,13 +325,17 @@ public void UnionWith(IEnumerable other) public abstract class SyncHashSet : SyncSet { - protected SyncHashSet() : base(new HashSet()) { } + protected SyncHashSet(IEqualityComparer comparer = null) : base(new HashSet(comparer ?? EqualityComparer.Default)) { } + + // allocation free enumerator + public new HashSet.Enumerator GetEnumerator() => ((HashSet)objects).GetEnumerator(); } public abstract class SyncSortedSet : SyncSet { - protected SyncSortedSet() : base(new SortedSet()) { } + protected SyncSortedSet(IComparer comparer = null) : base(new SortedSet(comparer ?? Comparer.Default)) { } - protected SyncSortedSet(IComparer comparer) : base(new SortedSet(comparer)) { } + // allocation free enumerator + public new SortedSet.Enumerator GetEnumerator() => ((SortedSet)objects).GetEnumerator(); } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs new file mode 100644 index 0000000..bfdf1aa --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs @@ -0,0 +1,190 @@ +// uses the first available transport for server and client. +// example: to use Apathy if on Windows/Mac/Linux and fall back to Telepathy +// otherwise. +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace Mirror +{ + [HelpURL("https://mirror-networking.com/docs/Transports/Fallback.html")] + public class FallbackTransport : Transport + { + public Transport[] transports; + + // the first transport that is available on this platform + Transport available; + + public void Awake() + { + if (transports == null || transports.Length == 0) + { + throw new Exception("FallbackTransport requires at least 1 underlying transport"); + } + InitClient(); + InitServer(); + available = GetAvailableTransport(); + Debug.Log("FallbackTransport available: " + available.GetType()); + } + + void OnEnable() + { + available.enabled = true; + } + + void OnDisable() + { + available.enabled = false; + } + + // The client just uses the first transport available + Transport GetAvailableTransport() + { + foreach (Transport transport in transports) + { + if (transport.Available()) + { + return transport; + } + } + throw new Exception("No transport suitable for this platform"); + } + + public override bool Available() + { + return available.Available(); + } + + // clients always pick the first transport + void InitClient() + { + // wire all the base transports to our events + foreach (Transport transport in transports) + { + transport.OnClientConnected.AddListener(OnClientConnected.Invoke); + transport.OnClientDataReceived.AddListener(OnClientDataReceived.Invoke); + transport.OnClientError.AddListener(OnClientError.Invoke); + transport.OnClientDisconnected.AddListener(OnClientDisconnected.Invoke); + } + } + + public override void ClientConnect(string address) + { + available.ClientConnect(address); + } + + public override void ClientConnect(Uri uri) + { + foreach (Transport transport in transports) + { + if (transport.Available()) + { + try + { + transport.ClientConnect(uri); + available = transport; + } + catch (ArgumentException) + { + // transport does not support the schema, just move on to the next one + } + } + } + throw new Exception("No transport suitable for this platform"); + } + + public override bool ClientConnected() + { + return available.ClientConnected(); + } + + public override void ClientDisconnect() + { + available.ClientDisconnect(); + } + + public override bool ClientSend(int channelId, ArraySegment segment) + { + return available.ClientSend(channelId, segment); + } + + void InitServer() + { + // wire all the base transports to our events + foreach (Transport transport in transports) + { + transport.OnServerConnected.AddListener(OnServerConnected.Invoke); + transport.OnServerDataReceived.AddListener(OnServerDataReceived.Invoke); + transport.OnServerError.AddListener(OnServerError.Invoke); + transport.OnServerDisconnected.AddListener(OnServerDisconnected.Invoke); + } + } + + // right now this just returns the first available uri, + // should we return the list of all available uri? + public override Uri ServerUri() => available.ServerUri(); + + public override bool ServerActive() + { + return available.ServerActive(); + } + + public override string ServerGetClientAddress(int connectionId) + { + return available.ServerGetClientAddress(connectionId); + } + + public override bool ServerDisconnect(int connectionId) + { + return available.ServerDisconnect(connectionId); + } + + public override bool ServerSend(List connectionIds, int channelId, ArraySegment segment) + { + return available.ServerSend(connectionIds, channelId, segment); + } + + public override void ServerStart() + { + available.ServerStart(); + } + + public override void ServerStop() + { + available.ServerStop(); + } + + public override void Shutdown() + { + available.Shutdown(); + } + + public override int GetMaxPacketSize(int channelId = 0) + { + // finding the max packet size in a fallback environment has to be + // done very carefully: + // * servers and clients might run different transports depending on + // which platform they are on. + // * there should only ever be ONE true max packet size for everyone, + // otherwise a spawn message might be sent to all tcp sockets, but + // be too big for some udp sockets. that would be a debugging + // nightmare and allow for possible exploits and players on + // different platforms seeing a different game state. + // => the safest solution is to use the smallest max size for all + // transports. that will never fail. + int mininumAllowedSize = int.MaxValue; + foreach (Transport transport in transports) + { + int size = transport.GetMaxPacketSize(channelId); + mininumAllowedSize = Mathf.Min(size, mininumAllowedSize); + } + return mininumAllowedSize; + } + + public override string ToString() + { + return available.ToString(); + } + + } +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs.meta new file mode 100644 index 0000000..509a58f --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/FallbackTransport.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 330c9aab13d2d42069c6ebbe582b73ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs index b16b1d1..6ba8a43 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs @@ -9,6 +9,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Net; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Networking.Types; @@ -18,6 +19,8 @@ namespace Mirror [EditorBrowsable(EditorBrowsableState.Never), Obsolete("LLAPI is obsolete and will be removed from future versions of Unity")] public class LLAPITransport : Transport { + public const string Scheme = "unet"; + public ushort port = 7777; [Tooltip("Enable for WebGL games. Can only do either WebSockets or regular Sockets, not both (yet).")] @@ -64,7 +67,8 @@ public class LLAPITransport : Transport MaxTimerTimeout = 12000 }; - readonly int channelId; // always use first channel + // always use first channel + readonly int channelId; byte error; int clientId = -1; @@ -98,13 +102,21 @@ void Awake() serverSendBuffer = new byte[globalConfig.MaxPacketSize]; } + public override bool Available() + { + // LLAPI runs on all platforms, including webgl + return true; + } + #region client public override bool ClientConnected() { return clientConnectionId != -1; } - public override void ClientConnect(string address) + + + void ClientConnect(string address, int port) { // LLAPI can't handle 'localhost' if (address.ToLower() == "localhost") address = "127.0.0.1"; @@ -125,6 +137,21 @@ public override void ClientConnect(string address) } } + public override void ClientConnect(string address) + { + ClientConnect(address, port); + } + + public override void ClientConnect(Uri uri) + { + if (uri.Scheme != Scheme) + throw new ArgumentException($"Invalid url {uri}, use {Scheme}://host:port instead", nameof(uri)); + + int serverPort = uri.IsDefaultPort ? port : uri.Port; + + ClientConnect(uri.Host, serverPort); + } + public override bool ClientSend(int channelId, ArraySegment segment) { // Send buffer is copied internally, so we can get rid of segment @@ -142,7 +169,8 @@ public override bool ClientSend(int channelId, ArraySegment segment) public bool ProcessClientMessage() { - if (clientId == -1) return false; + if (clientId == -1) + return false; NetworkEventType networkEvent = NetworkTransport.ReceiveFromHost(clientId, out int connectionId, out int channel, clientReceiveBuffer, clientReceiveBuffer.Length, out int receivedSize, out error); @@ -196,6 +224,18 @@ public override void ClientDisconnect() #endregion #region server + + // right now this just returns the first available uri, + // should we return the list of all available uri? + public override Uri ServerUri() + { + UriBuilder builder = new UriBuilder(); + builder.Scheme = Scheme; + builder.Host = Dns.GetHostName(); + builder.Port = port; + return builder.Uri; + } + public override bool ServerActive() { return serverHostId != -1; @@ -242,7 +282,8 @@ public override bool ServerSend(List connectionIds, int channelId, ArraySeg public bool ProcessServerMessage() { - if (serverHostId == -1) return false; + if (serverHostId == -1) + return false; NetworkEventType networkEvent = NetworkTransport.ReceiveFromHost(serverHostId, out int connectionId, out int channel, serverReceiveBuffer, serverReceiveBuffer.Length, out int receivedSize, out error); @@ -316,14 +357,8 @@ public override void ServerStop() public void LateUpdate() { // process all messages - while (ProcessClientMessage()) {} - while (ProcessServerMessage()) {} - } - - public override bool Available() - { - // websocket is available in all platforms (including webgl) - return useWebsockets || base.Available(); + while (ProcessClientMessage()) { } + while (ProcessServerMessage()) { } } public override void Shutdown() diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs.meta index 2ddc7da..e2c4a04 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/LLAPITransport.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 1001 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs index e0a3cf1..f329e94 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Text; using UnityEngine; @@ -11,6 +10,8 @@ public class MultiplexTransport : Transport { public Transport[] transports; + Transport available; + // used to partition recipients for each one of the base transports // without allocating a new list every time List[] recipientsCache; @@ -25,6 +26,35 @@ public void Awake() InitServer(); } + void OnEnable() + { + foreach (Transport transport in transports) + { + transport.enabled = true; + } + } + + void OnDisable() + { + foreach (Transport transport in transports) + { + transport.enabled = false; + } + } + + public override bool Available() + { + // available if any of the transports is available + foreach (Transport transport in transports) + { + if (transport.Available()) + { + return true; + } + } + return false; + } + #region Client // clients always pick the first transport void InitClient() @@ -32,54 +62,66 @@ void InitClient() // wire all the base transports to my events foreach (Transport transport in transports) { - transport.OnClientConnected.AddListener(OnClientConnected.Invoke ); + transport.OnClientConnected.AddListener(OnClientConnected.Invoke); transport.OnClientDataReceived.AddListener(OnClientDataReceived.Invoke); - transport.OnClientError.AddListener(OnClientError.Invoke ); + transport.OnClientError.AddListener(OnClientError.Invoke); transport.OnClientDisconnected.AddListener(OnClientDisconnected.Invoke); } } - // The client just uses the first transport available - Transport GetAvailableTransport() + public override void ClientConnect(string address) { foreach (Transport transport in transports) { if (transport.Available()) { - return transport; + available = transport; + transport.ClientConnect(address); + return; } } - throw new Exception("No transport suitable for this platform"); + throw new ArgumentException("No transport suitable for this platform"); } - public override void ClientConnect(string address) + public override void ClientConnect(Uri uri) { - GetAvailableTransport().ClientConnect(address); + foreach (Transport transport in transports) + { + if (transport.Available()) + { + try + { + transport.ClientConnect(uri); + available = transport; + return; + } + catch (ArgumentException) + { + // transport does not support the schema, just move on to the next one + } + } + } + throw new ArgumentException("No transport suitable for this platform"); } public override bool ClientConnected() { - return GetAvailableTransport().ClientConnected(); + return (object)available != null && available.ClientConnected(); } public override void ClientDisconnect() { - GetAvailableTransport().ClientDisconnect(); + if ((object)available != null) + available.ClientDisconnect(); } public override bool ClientSend(int channelId, ArraySegment segment) { - return GetAvailableTransport().ClientSend(channelId, segment); - } - - public override int GetMaxPacketSize(int channelId = 0) - { - return GetAvailableTransport().GetMaxPacketSize(channelId); + return available.ClientSend(channelId, segment); } #endregion - #region Server // connection ids get mapped to base transports // if we have 3 transports, then @@ -136,9 +178,25 @@ void InitServer() } } + // for now returns the first uri, + // should we return all available uris? + public override Uri ServerUri() + { + return transports[0].ServerUri(); + } + + public override bool ServerActive() { - return transports.All(t => t.ServerActive()); + // avoid Linq.All allocations + foreach (Transport transport in transports) + { + if (!transport.ServerActive()) + { + return false; + } + } + return true; } public override string ServerGetClientAddress(int connectionId) @@ -200,6 +258,28 @@ public override void ServerStop() } #endregion + public override int GetMaxPacketSize(int channelId = 0) + { + // finding the max packet size in a multiplex environment has to be + // done very carefully: + // * servers run multiple transports at the same time + // * different clients run different transports + // * there should only ever be ONE true max packet size for everyone, + // otherwise a spawn message might be sent to all tcp sockets, but + // be too big for some udp sockets. that would be a debugging + // nightmare and allow for possible exploits and players on + // different platforms seeing a different game state. + // => the safest solution is to use the smallest max size for all + // transports. that will never fail. + int mininumAllowedSize = int.MaxValue; + foreach (Transport transport in transports) + { + int size = transport.GetMaxPacketSize(channelId); + mininumAllowedSize = Mathf.Min(size, mininumAllowedSize); + } + return mininumAllowedSize; + } + public override void Shutdown() { foreach (Transport transport in transports) diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs.meta index 40394aa..6e97b28 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/MultiplexTransport.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Client.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Client.cs index 0dbb902..08e7db4 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Client.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Client.cs @@ -1,6 +1,5 @@ -using System; +using System; using System.Collections.Concurrent; -using System.Net; using System.Net.Sockets; using System.Threading; @@ -72,16 +71,24 @@ void ReceiveThreadFunction(string ip, int port) { // this happens if (for example) the ip address is correct // but there is no server running on that ip/port - Logger.Log("Client Recv: failed to connect to ip=" + ip + " port=" + port + " reason=" + exception); + Logger.LogError($"Client Recv: failed to connect to ip={ip} port={port} reason={exception}"); // add 'Disconnected' event to message queue so that the caller // knows that the Connect failed. otherwise they will never know receiveQueue.Enqueue(new Message(0, EventType.Disconnected, null)); } + catch (ThreadInterruptedException) + { + // expected if Disconnect() aborts it + } + catch (ThreadAbortException) + { + // expected if Disconnect() aborts it + } catch (Exception exception) { // something went wrong. probably important. - Logger.LogError("Client Recv Exception: " + exception); + Logger.LogError($"Client Recv Exception: {exception}"); } // sendthread might be waiting on ManualResetEvent, @@ -105,7 +112,11 @@ void ReceiveThreadFunction(string ip, int port) public void Connect(string ip, int port) { // not if already started - if (Connecting || Connected) return; + if (Connecting || Connected) + { + Logger.LogWarning("Telepathy Client can not create connection because an existing connection is connecting or connected"); + return; + } // We are connecting from now until Connect succeeds or fails _Connecting = true; @@ -125,8 +136,10 @@ public void Connect(string ip, int port) // => the trick is to clear the internal IPv4 socket so that Connect // resolves the hostname and creates either an IPv4 or an IPv6 // socket as needed (see TcpClient source) - client = new TcpClient(); // creates IPv4 socket - client.Client = null; // clear internal IPv4 socket until Connect() + // creates IPv4 socket + client = new TcpClient(); + // clear internal IPv4 socket until Connect() + client.Client = null; // clear old messages in queue, just to be sure that the caller // doesn't receive data from last time and gets out of sync. @@ -186,10 +199,11 @@ public bool Send(byte[] data) // calling Send here would be blocking (sometimes for long times // if other side lags or wire was disconnected) sendQueue.Enqueue(data); - sendPending.Set(); // interrupt SendThread WaitOne() + // interrupt SendThread WaitOne() + sendPending.Set(); return true; } - Logger.LogError("Client.Send: message too big: " + data.Length + ". Limit: " + MaxMessageSize); + Logger.LogError($"Client.Send: message too big: {data.Length}. Limit: {MaxMessageSize}"); return false; } Logger.LogWarning("Client.Send: not connected!"); diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Common.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Common.cs index 2d68162..e41a4c8 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Common.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Common.cs @@ -8,7 +8,8 @@ namespace Telepathy { public abstract class Common { - // common code ///////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////// + // common code // incoming message queue of // (not a HashSet because one connection can have multiple new messages) protected ConcurrentQueue receiveQueue = new ConcurrentQueue(); @@ -59,7 +60,8 @@ public bool GetNextMessage(out Message message) // all threads [ThreadStatic] static byte[] payload; - // static helper functions ///////////////////////////////////////////// + ///////////////////////////////////////////// + // static helper functions // send message (via stream) with the message structure // this function is blocking sometimes! // (e.g. if someone has high latency or wire was cut off) @@ -73,7 +75,8 @@ protected static bool SendMessagesBlocking(NetworkStream stream, byte[][] messag // packet to avoid TCP overheads and improve performance. int packetSize = 0; for (int i = 0; i < messages.Length; ++i) - packetSize += sizeof(int) + messages[i].Length; // header + content + // header + content + packetSize += sizeof(int) + messages[i].Length; // create payload buffer if not created yet or previous one is // too small @@ -179,7 +182,8 @@ protected static void ReceiveLoop(int connectionId, TcpClient client, Concurrent // read the next message (blocking) or stop if stream closed byte[] content; if (!ReadMessageBlocking(stream, MaxMessageSize, out content)) - break; // break instead of return so stream close still happens! + // break instead of return so stream close still happens! + break; // queue it receiveQueue.Enqueue(new Message(connectionId, EventType.Data, content)); @@ -233,7 +237,8 @@ protected static void SendLoop(int connectionId, TcpClient client, SafeQueue otherwise Send might be called right after dequeue but // before .Reset, which would completely ignore it until // the next Send call. - sendPending.Reset(); // WaitOne() blocks until .Set() again + // WaitOne() blocks until .Set() again + sendPending.Reset(); // dequeue all // SafeQueue.TryDequeueAll is twice as fast as @@ -251,7 +257,8 @@ protected static void SendLoop(int connectionId, TcpClient client, SafeQueue LogWarning = Console.WriteLine; public static Action LogError = Console.Error.WriteLine; } -} \ No newline at end of file +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Message.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Message.cs index 529a594..c5b3b04 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Message.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Message.cs @@ -15,4 +15,4 @@ public Message(int connectionId, EventType eventType, byte[] data) this.data = data; } } -} \ No newline at end of file +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/NetworkStreamExtensions.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/NetworkStreamExtensions.cs index 9b5bd4e..a4a887e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/NetworkStreamExtensions.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/NetworkStreamExtensions.cs @@ -1,55 +1,59 @@ using System.IO; using System.Net.Sockets; -public static class NetworkStreamExtensions +namespace Telepathy { - // .Read returns '0' if remote closed the connection but throws an - // IOException if we voluntarily closed our own connection. - // - // let's add a ReadSafely method that returns '0' in both cases so we don't - // have to worry about exceptions, since a disconnect is a disconnect... - public static int ReadSafely(this NetworkStream stream, byte[] buffer, int offset, int size) + + public static class NetworkStreamExtensions { - try - { - return stream.Read(buffer, offset, size); - } - catch (IOException) + // .Read returns '0' if remote closed the connection but throws an + // IOException if we voluntarily closed our own connection. + // + // let's add a ReadSafely method that returns '0' in both cases so we don't + // have to worry about exceptions, since a disconnect is a disconnect... + public static int ReadSafely(this NetworkStream stream, byte[] buffer, int offset, int size) { - return 0; + try + { + return stream.Read(buffer, offset, size); + } + catch (IOException) + { + return 0; + } } - } - // helper function to read EXACTLY 'n' bytes - // -> default .Read reads up to 'n' bytes. this function reads exactly 'n' - // bytes - // -> this is blocking until 'n' bytes were received - // -> immediately returns false in case of disconnects - public static bool ReadExactly(this NetworkStream stream, byte[] buffer, int amount) - { - // there might not be enough bytes in the TCP buffer for .Read to read - // the whole amount at once, so we need to keep trying until we have all - // the bytes (blocking) - // - // note: this just is a faster version of reading one after another: - // for (int i = 0; i < amount; ++i) - // if (stream.Read(buffer, i, 1) == 0) - // return false; - // return true; - int bytesRead = 0; - while (bytesRead < amount) + // helper function to read EXACTLY 'n' bytes + // -> default .Read reads up to 'n' bytes. this function reads exactly 'n' + // bytes + // -> this is blocking until 'n' bytes were received + // -> immediately returns false in case of disconnects + public static bool ReadExactly(this NetworkStream stream, byte[] buffer, int amount) { - // read up to 'remaining' bytes with the 'safe' read extension - int remaining = amount - bytesRead; - int result = stream.ReadSafely(buffer, bytesRead, remaining); + // there might not be enough bytes in the TCP buffer for .Read to read + // the whole amount at once, so we need to keep trying until we have all + // the bytes (blocking) + // + // note: this just is a faster version of reading one after another: + // for (int i = 0; i < amount; ++i) + // if (stream.Read(buffer, i, 1) == 0) + // return false; + // return true; + int bytesRead = 0; + while (bytesRead < amount) + { + // read up to 'remaining' bytes with the 'safe' read extension + int remaining = amount - bytesRead; + int result = stream.ReadSafely(buffer, bytesRead, remaining); - // .Read returns 0 if disconnected - if (result == 0) - return false; + // .Read returns 0 if disconnected + if (result == 0) + return false; - // otherwise add to bytes read - bytesRead += result; + // otherwise add to bytes read + bytesRead += result; + } + return true; } - return true; } -} +} \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/SafeQueue.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/SafeQueue.cs index c39f68c..e92a875 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/SafeQueue.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/SafeQueue.cs @@ -21,7 +21,7 @@ public int Count { get { - lock(queue) + lock (queue) { return queue.Count; } @@ -30,7 +30,7 @@ public int Count public void Enqueue(T item) { - lock(queue) + lock (queue) { queue.Enqueue(item); } @@ -40,7 +40,7 @@ public void Enqueue(T item) // so we need a TryDequeue public bool TryDequeue(out T result) { - lock(queue) + lock (queue) { result = default(T); if (queue.Count > 0) @@ -56,7 +56,7 @@ public bool TryDequeue(out T result) // locking every single TryDequeue. public bool TryDequeueAll(out T[] result) { - lock(queue) + lock (queue) { result = queue.ToArray(); queue.Clear(); @@ -66,10 +66,10 @@ public bool TryDequeueAll(out T[] result) public void Clear() { - lock(queue) + lock (queue) { queue.Clear(); } } } -} \ No newline at end of file +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Server.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Server.cs index 3b7a2f2..085215a 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Server.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Server.cs @@ -180,7 +180,8 @@ void Listen(int port) public bool Start(int port) { // not if already started - if (Active) return false; + if (Active) + return false; // clear old messages in queue, just to be sure that the caller // doesn't receive data from last time and gets out of sync. @@ -202,7 +203,8 @@ public bool Start(int port) public void Stop() { // only if started - if (!Active) return; + if (!Active) + return; Logger.Log("Server: stopping..."); @@ -224,7 +226,7 @@ public void Stop() TcpClient client = kvp.Value.client; // close the stream if not closed yet. it may have been closed // by a disconnect already, so use try/catch - try { client.GetStream().Close(); } catch {} + try { client.GetStream().Close(); } catch { } client.Close(); } @@ -250,10 +252,16 @@ public bool Send(int connectionId, byte[] data) // calling Send here would be blocking (sometimes for long times // if other side lags or wire was disconnected) token.sendQueue.Enqueue(data); - token.sendPending.Set(); // interrupt SendThread WaitOne() + // interrupt SendThread WaitOne() + token.sendPending.Set(); return true; } - Logger.Log("Server.Send: invalid connectionId: " + connectionId); + // sending to an invalid connectionId is expected sometimes. + // for example, if a client disconnects, the server might still + // try to send for one frame before it calls GetNextMessages + // again and realizes that a disconnect happened. + // so let's not spam the console with log messages. + //Logger.Log("Server.Send: invalid connectionId: " + connectionId); return false; } Logger.LogError("Client.Send: message too big: " + data.Length + ". Limit: " + MaxMessageSize); diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Telepathy.dll b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Telepathy.dll deleted file mode 100644 index dc984f0972c54205d410ffd7c34d458a40b453ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeHJO>9(E6h60qv=k}?B;XG|Y!Qk2rnLnmqV{K68TxByT2zSi&GdHq@XdSUeQ%(n ziJ;L13lkOw;zD%c#>7MxBqGs`t})RS#0|oZjU>7-8pZG2_ukCVRu;w>7TlS8?)ksx zocs4iUp`6oMAU$O^Cr=GjNE!PygfJ$aoa-|+UQ)%#VzN>$i*$0dD}ON%F8ROVB{>< z^#UU+4OMat+clEoX`|rHN^|w2uvjT=}4PO*I|O}_%?rE7nFDwV|806{a`_B&n{ zG&h)w73+ywnD||E(}pm1P8~8`4~~QL;ZF3n2*)P+jlL00v`;YHL7$6z=og5ZP`-I^ zy2NR~uZZD~8kRLYrQt>`O=)}`U4>3v-AU~@^v*SSORS+51hE^qK!l%S=Cy!Lv51j6MYHrq2MMrY`{p z=o;WK-2hB$=>ZLM^anK@k1K+r=+=floux5Z3Y6tc zO5ZD~ob*R5H(#>yvM<1LW=nyjq|BD`c`NJG@cMjT7P3w`V+XbDjHU827{a|Fk9z9W zs*hNI$adtkRKD%GONA+S&Qk>|fY5UOQER|+=j?n*X}zURlG4v9yU0$e!U3;Pv>k0R zDIIG;V}4a0hc}^6o?Nh0zz!_8Top`~+`ukK%@6FX?btz$G+p)sSui6dGs*?0gEG>Q zMJt#uo3oBXp-mA5^J7-*IZRBdv{XlItX@SPFK4uR zm>Me&`FQp)rl4f0P$*Yo(Oc!u4>n&t@onqyg;eg^gBLD+PYs3;&GiO}Mj&g~GTGMr z#p?&BH}zaOffLMk9noe!6`8sX`;}E3^W4FOoYck7%q#DxFQCTo19x#pSeuH1e!40Y(PTQA-tVmTwl%(yI(Pm3S4#I?KFv2y zV#>$iNW6Abs-T=$NX*J32|UESWQQv0CMIRk^KER9a-z!gvWFqiB}lk3=-Jg(6`IA_ zET#AMJ-K5iMbnn!X*spwpXv{Mr1lP79&eR?^ptS4?=fyLwzS1hPAEAv;HjkJj9RuE zUM*7U4X&j(x5CNd5-jz2m-8Q0KxQ5I3Qs}!ZpLrYbCDx{kHTvp_DqxnD&W;31wS^v zDI|QlG)JCR>d>!P22u-LA94$4&xX{EoSbcV2TlcI3ZP|!pI^q)jMnL-_}4>O-~_l8 zwgd22z)!+Dz%2ZII6xEFuvyIKgFg$L{fAK$p|3z2I!=YLq_qq^zd=**V?&PH1+52f zZ#+j)dnlu7mY$F08TjYCSr*W|w%Vg@;)*08^(m+GD?+E5|8lmSxRgbu2Gg)ru&&y4 z;R~X((uwxq<5K9V2U^!f98OJyOXo0A4+lS@N3o)UMqroMR$R# calling .Join would sometimes wait forever + // -> calling .Interrupt only interrupts certain states. + // => Abort() is the better solution. + thread.Abort(); + + // wait until thread is TRULY finished. this is the only way + // to guarantee that everything was properly cleaned up before + // returning. + // => this means that this function may sometimes block for a while + // but there is no other way to guarantee that everything is + // cleaned up properly by the time Stop() returns. + // we have to live with the wait time. + thread.Join(); + } + } +} \ No newline at end of file diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/ThreadExtensions.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/ThreadExtensions.cs.meta new file mode 100644 index 0000000..77c885d --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/ThreadExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 64df4eaebe4ff9a43a9fb318c3e8e321 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Utils.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Utils.cs index c5b71cd..12d32b7 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Utils.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Telepathy/Utils.cs @@ -41,4 +41,4 @@ public static int BytesToIntBigEndian(byte[] bytes) bytes[3]; } } -} \ No newline at end of file +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs index d6f9ca5..5e4e84e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.ComponentModel; +using System.Net; using System.Net.Sockets; using UnityEngine; using UnityEngine.Serialization; @@ -11,11 +12,16 @@ namespace Mirror [HelpURL("https://github.com/vis2k/Telepathy/blob/master/README.md")] public class TelepathyTransport : Transport { + // scheme used by this transport + // "tcp4" means tcp with 4 bytes header, network byte order + public const string Scheme = "tcp4"; + public ushort port = 7777; [Tooltip("Nagle Algorithm can be disabled by enabling NoDelay")] public bool NoDelay = true; + // Deprecated 04/08/2019 [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use MaxMessageSizeFromClient or MaxMessageSizeFromServer instead.")] public int MaxMessageSize { @@ -23,12 +29,21 @@ public int MaxMessageSize set => serverMaxMessageSize = clientMaxMessageSize = value; } + [Header("Server")] [Tooltip("Protect against allocation attacks by keeping the max message size small. Otherwise an attacker might send multiple fake packets with 2GB headers, causing the server to run out of memory after allocating multiple large packets.")] [FormerlySerializedAs("MaxMessageSize")] public int serverMaxMessageSize = 16 * 1024; + [Tooltip("Server processes a limit amount of messages per tick to avoid a deadlock where it might end up processing forever if messages come in faster than we can process them.")] + public int serverMaxReceivesPerTick = 10000; + + [Header("Client")] [Tooltip("Protect against allocation attacks by keeping the max message size small. Otherwise an attacker host might send multiple fake packets with 2GB headers, causing the connected clients to run out of memory after allocating multiple large packets.")] [FormerlySerializedAs("MaxMessageSize")] public int clientMaxMessageSize = 16 * 1024; + [Tooltip("Client processes a limit amount of messages per tick to avoid a deadlock where it might end up processing forever if messages come in faster than we can process them.")] + public int clientMaxReceivesPerTick = 1000; + + protected Telepathy.Client client = new Telepathy.Client(); protected Telepathy.Server server = new Telepathy.Server(); @@ -48,9 +63,23 @@ void Awake() Debug.Log("TelepathyTransport initialized!"); } + public override bool Available() + { + // C#'s built in TCP sockets run everywhere except on WebGL + return Application.platform != RuntimePlatform.WebGLPlayer; + } + // client public override bool ClientConnected() => client.Connected; public override void ClientConnect(string address) => client.Connect(address, port); + public override void ClientConnect(Uri uri) + { + if (uri.Scheme != Scheme) + throw new ArgumentException($"Invalid url {uri}, use {Scheme}://host:port instead", nameof(uri)); + + int serverPort = uri.IsDefaultPort ? port : uri.Port; + client.Connect(uri.Host, serverPort); + } public override bool ClientSend(int channelId, ArraySegment segment) { // telepathy doesn't support allocation-free sends yet. @@ -97,8 +126,51 @@ public void LateUpdate() // note: we need to check enabled in case we set it to false // when LateUpdate already started. // (https://github.com/vis2k/Mirror/pull/379) - while (enabled && ProcessClientMessage()) {} - while (enabled && ProcessServerMessage()) {} + if (!enabled) + return; + + // process a maximum amount of client messages per tick + for (int i = 0; i < clientMaxReceivesPerTick; ++i) + { + // stop when there is no more message + if (!ProcessClientMessage()) + { + break; + } + + // Some messages can disable transport + // If this is disabled stop processing message in queue + if (!enabled) + { + break; + } + } + + // process a maximum amount of server messages per tick + for (int i = 0; i < serverMaxReceivesPerTick; ++i) + { + // stop when there is no more message + if (!ProcessServerMessage()) + { + break; + } + + // Some messages can disable transport + // If this is disabled stop processing message in queue + if (!enabled) + { + break; + } + } + } + + public override Uri ServerUri() + { + UriBuilder builder = new UriBuilder(); + builder.Scheme = Scheme; + builder.Host = Dns.GetHostName(); + builder.Port = port; + return builder.Uri; } // server diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs.meta index a89b0d3..99cde3e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/TelepathyTransport.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 1000 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Transport.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Transport.cs index 1a6ba8e..8fc09c3 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Transport.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Transport.cs @@ -2,18 +2,17 @@ // note: not all transports need a port, so add it to yours if needed. using System; using System.Collections.Generic; -using System.ComponentModel; using UnityEngine; using UnityEngine.Events; namespace Mirror { // UnityEvent definitions - [Serializable] public class ClientDataReceivedEvent : UnityEvent, int> {} - [Serializable] public class UnityEventException : UnityEvent {} - [Serializable] public class UnityEventInt : UnityEvent {} - [Serializable] public class ServerDataReceivedEvent : UnityEvent, int> {} - [Serializable] public class UnityEventIntException : UnityEvent {} + [Serializable] public class ClientDataReceivedEvent : UnityEvent, int> { } + [Serializable] public class UnityEventException : UnityEvent { } + [Serializable] public class UnityEventInt : UnityEvent { } + [Serializable] public class ServerDataReceivedEvent : UnityEvent, int> { } + [Serializable] public class UnityEventIntException : UnityEvent { } public abstract class Transport : MonoBehaviour { @@ -26,12 +25,10 @@ public abstract class Transport : MonoBehaviour /// Is this transport available in the current platform? /// Some transports might only be available in mobile /// Many will not work in webgl + /// Example usage: return Application.platform == RuntimePlatform.WebGLPlayer /// /// True if this transport works in the current platform - public virtual bool Available() - { - return Application.platform != RuntimePlatform.WebGLPlayer; - } + public abstract bool Available(); #region Client /// @@ -61,11 +58,22 @@ public virtual bool Available() public abstract bool ClientConnected(); /// - /// Establish a connecion to a server + /// Establish a connection to a server /// /// The IP address or FQDN of the server we are trying to connect to public abstract void ClientConnect(string address); + /// + /// Establish a connection to a server + /// + /// The address of the server we are trying to connect to + public virtual void ClientConnect(Uri uri) + { + // By default, to keep backwards compatibility, just connect to the host + // in the uri + ClientConnect(uri.Host); + } + /// /// Send data to the server /// @@ -85,6 +93,14 @@ public virtual bool Available() #region Server + + /// + /// Retrieves the address of this server. + /// Useful for network discovery + /// + /// the url at which this server can be reached + public abstract Uri ServerUri(); + /// /// Notify subscribers when a client connects to this server /// @@ -137,16 +153,6 @@ public virtual bool Available() /// true if the client was kicked public abstract bool ServerDisconnect(int connectionId); - /// - /// Deprecated: Use ServerGetClientAddress(int connectionId) instead - /// - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use ServerGetClientAddress(int connectionId) instead")] - public virtual bool GetConnectionInfo(int connectionId, out string address) - { - address = ServerGetClientAddress(connectionId); - return true; - } - /// /// Get the client address /// @@ -159,23 +165,27 @@ public virtual bool GetConnectionInfo(int connectionId, out string address) /// public abstract void ServerStop(); - #endregion - /// - /// Shut down the transport, both as client and server - /// - public abstract void Shutdown(); - /// /// The maximum packet size for a given channel. Unreliable transports - /// usually can only deliver small packets. Reliable fragmented channels + /// usually can only deliver small packets. Reliable fragmented channels /// can usually deliver large ones. + /// + /// GetMaxPacketSize needs to return a value at all times. Even if the + /// Transport isn't running, or isn't Available(). This is because + /// Fallback and Multiplex transports need to find the smallest possible + /// packet size at runtime. /// /// channel id /// the size in bytes that can be sent via the provided channel public abstract int GetMaxPacketSize(int channelId = Channels.DefaultReliable); + /// + /// Shut down the transport, both as client and server + /// + public abstract void Shutdown(); + // block Update() to force Transports to use LateUpdate to avoid race // conditions. messages should be processed after all the game state // was processed in Update. @@ -190,8 +200,21 @@ public virtual bool GetConnectionInfo(int connectionId, out string address) // e.g. in uSurvival Transport would apply Cmds before // ShoulderRotation.LateUpdate, resulting in projectile // spawns at the point before shoulder rotation. -#if UNITY_EDITOR +#pragma warning disable UNT0001 // Empty Unity message public void Update() { } -#endif +#pragma warning restore UNT0001 // Empty Unity message + + /// + /// called when quitting the application by closing the window / pressing stop in the editor + /// virtual so that inheriting classes' OnApplicationQuit() can call base.OnApplicationQuit() too + /// + public virtual void OnApplicationQuit() + { + // stop transport (e.g. to shut down threads) + // (when pressing Stop in the Editor, Unity keeps threads alive + // until we press Start again. so if Transports use threads, we + // really want them to end now and not after next start) + Shutdown(); + } } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Client.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Client.cs index f2ac635..4f8c36c 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Client.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Client.cs @@ -1,14 +1,11 @@ #if !UNITY_WEBGL || UNITY_EDITOR using System; -using System.Linq; -using System.Net; using System.Net.Sockets; using System.Net.WebSockets; using System.Threading; using System.Threading.Tasks; using Ninja.WebSockets; -using UnityEngine; namespace Mirror.Websocket { @@ -82,6 +79,8 @@ public async void Connect(Uri uri) } } + public bool enabled; + async Task ReceiveLoop(WebSocket webSocket, CancellationToken token) { byte[] buffer = new byte[MaxMessageSize]; @@ -90,6 +89,10 @@ async Task ReceiveLoop(WebSocket webSocket, CancellationToken token) { WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment(buffer), token); + if (!enabled) + { + await WaitForEnabledAsync(); + } if (result == null) break; @@ -113,6 +116,20 @@ async Task ReceiveLoop(WebSocket webSocket, CancellationToken token) } } + async Task WaitForEnabledAsync() + { + while (!enabled) + { + await Task.Delay(10); + } + } + + public bool ProcessClientMessage() + { + // message in standalone client don't use queue to process + return false; + } + // a message might come splitted in multiple frames // collect all frames async Task> ReadFrames(WebSocketReceiveResult result, WebSocket webSocket, byte[] buffer) @@ -144,7 +161,7 @@ public void Disconnect() if (webSocket != null) { // close client - webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure,"", CancellationToken.None); + webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); webSocket = null; Connecting = false; IsConnected = false; @@ -171,10 +188,9 @@ public async void Send(ArraySegment segment) } } - public override string ToString() { - if (IsConnected ) + if (IsConnected) { return $"Websocket connected to {uri}"; } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/ClientJs.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/ClientJs.cs index 91552ff..cb634c5 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/ClientJs.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/ClientJs.cs @@ -1,17 +1,11 @@ #if UNITY_WEBGL && !UNITY_EDITOR using System; +using System.Collections.Concurrent; using System.Collections.Generic; -using System.Linq; -using System.Net; -using System.Net.Sockets; -using System.Net.WebSockets; using System.Runtime.InteropServices; using System.Threading; -using System.Threading.Tasks; using AOT; -using Ninja.WebSockets; -using UnityEngine; namespace Mirror.Websocket { @@ -26,18 +20,23 @@ public class Client public event Action Connected; public event Action> ReceivedData; public event Action Disconnected; +#pragma warning disable CS0067 // The event is never used. public event Action ReceivedError; +#pragma warning restore CS0067 // The event is never used. + readonly ConcurrentQueue receivedQueue = new ConcurrentQueue(); + + public bool enabled; public bool Connecting { get; set; } public bool IsConnected { get { - return SocketState(m_NativeRef) != 0; + return SocketState(nativeRef) != 0; } } - int m_NativeRef = 0; + int nativeRef = 0; readonly int id; public Client() @@ -51,22 +50,32 @@ public void Connect(Uri uri) Connecting = true; - m_NativeRef = SocketCreate(uri.ToString(), id, OnOpen, OnData, OnClose); + nativeRef = SocketCreate(uri.ToString(), id, OnOpen, OnData, OnClose); } public void Disconnect() { - SocketClose(m_NativeRef); + SocketClose(nativeRef); } // send the data or throw exception public void Send(ArraySegment segment) { - SocketSend(m_NativeRef, segment.Array, segment.Count); + SocketSend(nativeRef, segment.Array, segment.Count); } + public bool ProcessClientMessage() + { + if (receivedQueue.TryDequeue(out byte[] data)) + { + clients[id].ReceivedData(new ArraySegment(data)); + + return true; + } + return false; + } - #region Javascript native functions +#region Javascript native functions [DllImport("__Internal")] static extern int SocketCreate( string url, @@ -84,9 +93,9 @@ static extern int SocketCreate( [DllImport("__Internal")] static extern void SocketClose(int socketInstance); - #endregion +#endregion - #region Javascript callbacks +#region Javascript callbacks [MonoPInvokeCallback(typeof(Action))] public static void OnOpen(int id) @@ -109,9 +118,9 @@ public static void OnData(int id, IntPtr ptr, int length) byte[] data = new byte[length]; Marshal.Copy(ptr, data, 0, length); - clients[id].ReceivedData(new ArraySegment(data)); + clients[id].receivedQueue.Enqueue(data); } - #endregion +#endregion } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/BufferPool.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/BufferPool.cs index 29d7746..e4e6683 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/BufferPool.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/BufferPool.cs @@ -1,8 +1,6 @@ using System; using System.Collections.Concurrent; -using System.Collections.Generic; using System.IO; -using System.Text; using System.Threading; using System.Threading.Tasks; @@ -183,7 +181,8 @@ public override int ReadByte() return _ms.ReadByte(); } - public override int ReadTimeout { + public override int ReadTimeout + { get { return _ms.ReadTimeout; } set { _ms.ReadTimeout = value; } } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/InvalidHttpResponseCodeException.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/InvalidHttpResponseCodeException.cs index 73354dd..5526272 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/InvalidHttpResponseCodeException.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/InvalidHttpResponseCodeException.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace Ninja.WebSockets.Exceptions { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/SecWebSocketKeyMissingException.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/SecWebSocketKeyMissingException.cs index 8247625..87f65c9 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/SecWebSocketKeyMissingException.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/SecWebSocketKeyMissingException.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace Ninja.WebSockets.Exceptions { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/ServerListenerSocketException.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/ServerListenerSocketException.cs index 69d5360..5db1f89 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/ServerListenerSocketException.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/ServerListenerSocketException.cs @@ -1,8 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Net.Sockets; namespace Ninja.WebSockets.Exceptions { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketBufferOverflowException.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketBufferOverflowException.cs index 682143f..d270462 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketBufferOverflowException.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketBufferOverflowException.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace Ninja.WebSockets.Exceptions { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketHandshakeFailedException.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketHandshakeFailedException.cs index 624dc77..2d1e99e 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketHandshakeFailedException.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketHandshakeFailedException.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Ninja.WebSockets.Exceptions { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketVersionNotSupportedException.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketVersionNotSupportedException.cs index f23a85a..ae6a16f 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketVersionNotSupportedException.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Exceptions/WebSocketVersionNotSupportedException.cs @@ -1,7 +1,4 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; namespace Ninja.WebSockets.Exceptions { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/HttpHelper.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/HttpHelper.cs index 88fc9a6..9b638bb 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/HttpHelper.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/HttpHelper.cs @@ -23,14 +23,13 @@ using System; using System.Collections.Generic; using System.IO; -using System.Runtime.CompilerServices; +using System.Linq; using System.Security.Cryptography; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; using Ninja.WebSockets.Exceptions; -using System.Linq; namespace Ninja.WebSockets { @@ -77,7 +76,8 @@ public static string ComputeSocketAcceptString(string secWebSocketKey) /// The HTTP header public static async Task ReadHttpHeaderAsync(Stream stream, CancellationToken token) { - int length = 1024*16; // 16KB buffer more than enough for http header + // 16KB buffer more than enough for http header + int length = 1024 * 16; byte[] buffer = new byte[length]; int offset = 0; int bytesRead = 0; diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/IBufferPool.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/IBufferPool.cs index 395a281..a014fff 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/IBufferPool.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/IBufferPool.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; using System.IO; -using System.Text; namespace Ninja.WebSockets { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/BinaryReaderWriter.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/BinaryReaderWriter.cs index e31c222..5dcef4c 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/BinaryReaderWriter.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/BinaryReaderWriter.cs @@ -72,7 +72,8 @@ public static async Task ReadUShortExactly(Stream stream, bool isLittleE if (!isLittleEndian) { - Array.Reverse(buffer.Array, buffer.Offset, 2); // big endian + // big endian + Array.Reverse(buffer.Array, buffer.Offset, 2); } return BitConverter.ToUInt16(buffer.Array, buffer.Offset); @@ -84,7 +85,8 @@ public static async Task ReadULongExactly(Stream stream, bool isLittleEnd if (!isLittleEndian) { - Array.Reverse(buffer.Array, buffer.Offset, 8); // big endian + // big endian + Array.Reverse(buffer.Array, buffer.Offset, 8); } return BitConverter.ToUInt64(buffer.Array, buffer.Offset); @@ -96,7 +98,8 @@ public static async Task ReadLongExactly(Stream stream, bool isLittleEndia if (!isLittleEndian) { - Array.Reverse(buffer.Array, buffer.Offset, 8); // big endian + // big endian + Array.Reverse(buffer.Array, buffer.Offset, 8); } return BitConverter.ToInt64(buffer.Array, buffer.Offset); @@ -116,7 +119,7 @@ public static void WriteInt(int value, Stream stream, bool isLittleEndian) public static void WriteULong(ulong value, Stream stream, bool isLittleEndian) { byte[] buffer = BitConverter.GetBytes(value); - if (BitConverter.IsLittleEndian && ! isLittleEndian) + if (BitConverter.IsLittleEndian && !isLittleEndian) { Array.Reverse(buffer); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/Events.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/Events.cs index 310092e..579f158 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/Events.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/Events.cs @@ -38,7 +38,7 @@ internal sealed class Events : EventSource [Event(1, Level = EventLevel.Informational)] public void ClientConnectingToIpAddress(Guid guid, string ipAddress, int port) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(1, guid, ipAddress, port); } @@ -47,7 +47,7 @@ public void ClientConnectingToIpAddress(Guid guid, string ipAddress, int port) [Event(2, Level = EventLevel.Informational)] public void ClientConnectingToHost(Guid guid, string host, int port) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(2, guid, host, port); } @@ -56,7 +56,7 @@ public void ClientConnectingToHost(Guid guid, string host, int port) [Event(3, Level = EventLevel.Informational)] public void AttemtingToSecureSslConnection(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(3, guid); } @@ -65,7 +65,7 @@ public void AttemtingToSecureSslConnection(Guid guid) [Event(4, Level = EventLevel.Informational)] public void ConnectionSecured(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(4, guid); } @@ -74,7 +74,7 @@ public void ConnectionSecured(Guid guid) [Event(5, Level = EventLevel.Informational)] public void ConnectionNotSecure(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(5, guid); } @@ -83,7 +83,7 @@ public void ConnectionNotSecure(Guid guid) [Event(6, Level = EventLevel.Error)] public void SslCertificateError(SslPolicyErrors sslPolicyErrors) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(6, sslPolicyErrors); } @@ -92,7 +92,7 @@ public void SslCertificateError(SslPolicyErrors sslPolicyErrors) [Event(7, Level = EventLevel.Informational)] public void HandshakeSent(Guid guid, string httpHeader) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(7, guid, httpHeader ?? string.Empty); } @@ -101,7 +101,7 @@ public void HandshakeSent(Guid guid, string httpHeader) [Event(8, Level = EventLevel.Informational)] public void ReadingHttpResponse(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(8, guid); } @@ -110,7 +110,7 @@ public void ReadingHttpResponse(Guid guid) [Event(9, Level = EventLevel.Error)] public void ReadHttpResponseError(Guid guid, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(9, guid, exception ?? string.Empty); } @@ -119,7 +119,7 @@ public void ReadHttpResponseError(Guid guid, string exception) [Event(10, Level = EventLevel.Warning)] public void InvalidHttpResponseCode(Guid guid, string response) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(10, guid, response ?? string.Empty); } @@ -128,7 +128,7 @@ public void InvalidHttpResponseCode(Guid guid, string response) [Event(11, Level = EventLevel.Error)] public void HandshakeFailure(Guid guid, string message) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(11, guid, message ?? string.Empty); } @@ -137,7 +137,7 @@ public void HandshakeFailure(Guid guid, string message) [Event(12, Level = EventLevel.Informational)] public void ClientHandshakeSuccess(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(12, guid); } @@ -146,7 +146,7 @@ public void ClientHandshakeSuccess(Guid guid) [Event(13, Level = EventLevel.Informational)] public void ServerHandshakeSuccess(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(13, guid); } @@ -155,7 +155,7 @@ public void ServerHandshakeSuccess(Guid guid) [Event(14, Level = EventLevel.Informational)] public void AcceptWebSocketStarted(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(14, guid); } @@ -164,7 +164,7 @@ public void AcceptWebSocketStarted(Guid guid) [Event(15, Level = EventLevel.Informational)] public void SendingHandshakeResponse(Guid guid, string response) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(15, guid, response ?? string.Empty); } @@ -173,7 +173,7 @@ public void SendingHandshakeResponse(Guid guid, string response) [Event(16, Level = EventLevel.Error)] public void WebSocketVersionNotSupported(Guid guid, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(16, guid, exception ?? string.Empty); } @@ -182,7 +182,7 @@ public void WebSocketVersionNotSupported(Guid guid, string exception) [Event(17, Level = EventLevel.Error)] public void BadRequest(Guid guid, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(17, guid, exception ?? string.Empty); } @@ -191,7 +191,7 @@ public void BadRequest(Guid guid, string exception) [Event(18, Level = EventLevel.Informational)] public void UsePerMessageDeflate(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(18, guid); } @@ -200,7 +200,7 @@ public void UsePerMessageDeflate(Guid guid) [Event(19, Level = EventLevel.Informational)] public void NoMessageCompression(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(19, guid); } @@ -209,7 +209,7 @@ public void NoMessageCompression(Guid guid) [Event(20, Level = EventLevel.Informational)] public void KeepAliveIntervalZero(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(20, guid); } @@ -218,7 +218,7 @@ public void KeepAliveIntervalZero(Guid guid) [Event(21, Level = EventLevel.Informational)] public void PingPongManagerStarted(Guid guid, int keepAliveIntervalSeconds) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(21, guid, keepAliveIntervalSeconds); } @@ -227,7 +227,7 @@ public void PingPongManagerStarted(Guid guid, int keepAliveIntervalSeconds) [Event(22, Level = EventLevel.Informational)] public void PingPongManagerEnded(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(22, guid); } @@ -236,7 +236,7 @@ public void PingPongManagerEnded(Guid guid) [Event(23, Level = EventLevel.Warning)] public void KeepAliveIntervalExpired(Guid guid, int keepAliveIntervalSeconds) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(23, guid, keepAliveIntervalSeconds); } @@ -245,7 +245,7 @@ public void KeepAliveIntervalExpired(Guid guid, int keepAliveIntervalSeconds) [Event(24, Level = EventLevel.Warning)] public void CloseOutputAutoTimeout(Guid guid, WebSocketCloseStatus closeStatus, string statusDescription, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(24, guid, closeStatus, statusDescription ?? string.Empty, exception ?? string.Empty); } @@ -254,7 +254,7 @@ public void CloseOutputAutoTimeout(Guid guid, WebSocketCloseStatus closeStatus, [Event(25, Level = EventLevel.Error)] public void CloseOutputAutoTimeoutCancelled(Guid guid, int timeoutSeconds, WebSocketCloseStatus closeStatus, string statusDescription, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(25, guid, timeoutSeconds, closeStatus, statusDescription ?? string.Empty, exception ?? string.Empty); } @@ -263,7 +263,7 @@ public void CloseOutputAutoTimeoutCancelled(Guid guid, int timeoutSeconds, WebSo [Event(26, Level = EventLevel.Error)] public void CloseOutputAutoTimeoutError(Guid guid, string closeException, WebSocketCloseStatus closeStatus, string statusDescription, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(26, guid, closeException ?? string.Empty, closeStatus, statusDescription ?? string.Empty, exception ?? string.Empty); } @@ -272,7 +272,7 @@ public void CloseOutputAutoTimeoutError(Guid guid, string closeException, WebSoc [Event(27, Level = EventLevel.Warning)] public void TryGetBufferNotSupported(Guid guid, string streamType) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(27, guid, streamType ?? string.Empty); } @@ -281,7 +281,7 @@ public void TryGetBufferNotSupported(Guid guid, string streamType) [Event(28, Level = EventLevel.Verbose)] public void SendingFrame(Guid guid, WebSocketOpCode webSocketOpCode, bool isFinBitSet, int numBytes, bool isPayloadCompressed) { - if (this.IsEnabled(EventLevel.Verbose, EventKeywords.None)) + if (IsEnabled(EventLevel.Verbose, EventKeywords.None)) { WriteEvent(28, guid, webSocketOpCode, isFinBitSet, numBytes, isPayloadCompressed); } @@ -290,7 +290,7 @@ public void SendingFrame(Guid guid, WebSocketOpCode webSocketOpCode, bool isFinB [Event(29, Level = EventLevel.Verbose)] public void ReceivedFrame(Guid guid, WebSocketOpCode webSocketOpCode, bool isFinBitSet, int numBytes) { - if (this.IsEnabled(EventLevel.Verbose, EventKeywords.None)) + if (IsEnabled(EventLevel.Verbose, EventKeywords.None)) { WriteEvent(29, guid, webSocketOpCode, isFinBitSet, numBytes); } @@ -299,7 +299,7 @@ public void ReceivedFrame(Guid guid, WebSocketOpCode webSocketOpCode, bool isFin [Event(30, Level = EventLevel.Informational)] public void CloseOutputNoHandshake(Guid guid, WebSocketCloseStatus? closeStatus, string statusDescription) { - if (this.IsEnabled()) + if (IsEnabled()) { string closeStatusDesc = $"{closeStatus}"; WriteEvent(30, guid, closeStatusDesc, statusDescription ?? string.Empty); @@ -309,7 +309,7 @@ public void CloseOutputNoHandshake(Guid guid, WebSocketCloseStatus? closeStatus, [Event(31, Level = EventLevel.Informational)] public void CloseHandshakeStarted(Guid guid, WebSocketCloseStatus? closeStatus, string statusDescription) { - if (this.IsEnabled()) + if (IsEnabled()) { string closeStatusDesc = $"{closeStatus}"; WriteEvent(31, guid, closeStatusDesc, statusDescription ?? string.Empty); @@ -319,7 +319,7 @@ public void CloseHandshakeStarted(Guid guid, WebSocketCloseStatus? closeStatus, [Event(32, Level = EventLevel.Informational)] public void CloseHandshakeRespond(Guid guid, WebSocketCloseStatus? closeStatus, string statusDescription) { - if (this.IsEnabled()) + if (IsEnabled()) { string closeStatusDesc = $"{closeStatus}"; WriteEvent(32, guid, closeStatusDesc, statusDescription ?? string.Empty); @@ -329,7 +329,7 @@ public void CloseHandshakeRespond(Guid guid, WebSocketCloseStatus? closeStatus, [Event(33, Level = EventLevel.Informational)] public void CloseHandshakeComplete(Guid guid) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(33, guid); } @@ -338,7 +338,7 @@ public void CloseHandshakeComplete(Guid guid) [Event(34, Level = EventLevel.Warning)] public void CloseFrameReceivedInUnexpectedState(Guid guid, WebSocketState webSocketState, WebSocketCloseStatus? closeStatus, string statusDescription) { - if (this.IsEnabled()) + if (IsEnabled()) { string closeStatusDesc = $"{closeStatus}"; WriteEvent(34, guid, webSocketState, closeStatusDesc, statusDescription ?? string.Empty); @@ -348,7 +348,7 @@ public void CloseFrameReceivedInUnexpectedState(Guid guid, WebSocketState webSoc [Event(35, Level = EventLevel.Informational)] public void WebSocketDispose(Guid guid, WebSocketState webSocketState) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(35, guid, webSocketState); } @@ -357,7 +357,7 @@ public void WebSocketDispose(Guid guid, WebSocketState webSocketState) [Event(36, Level = EventLevel.Warning)] public void WebSocketDisposeCloseTimeout(Guid guid, WebSocketState webSocketState) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(36, guid, webSocketState); } @@ -366,7 +366,7 @@ public void WebSocketDisposeCloseTimeout(Guid guid, WebSocketState webSocketStat [Event(37, Level = EventLevel.Error)] public void WebSocketDisposeError(Guid guid, WebSocketState webSocketState, string exception) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(37, guid, webSocketState, exception ?? string.Empty); } @@ -375,7 +375,7 @@ public void WebSocketDisposeError(Guid guid, WebSocketState webSocketState, stri [Event(38, Level = EventLevel.Warning)] public void InvalidStateBeforeClose(Guid guid, WebSocketState webSocketState) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(38, guid, webSocketState); } @@ -384,7 +384,7 @@ public void InvalidStateBeforeClose(Guid guid, WebSocketState webSocketState) [Event(39, Level = EventLevel.Warning)] public void InvalidStateBeforeCloseOutput(Guid guid, WebSocketState webSocketState) { - if (this.IsEnabled()) + if (IsEnabled()) { WriteEvent(39, guid, webSocketState); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameCommon.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameCommon.cs index 48022bb..d35aeea 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameCommon.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameCommon.cs @@ -53,7 +53,8 @@ public static void ToggleMask(ArraySegment maskKey, ArraySegment pay // TODO: make this faster for (int i = payloadOffset; i < payloadCount; i++) { - int payloadIndex = i - payloadOffset; // index should start at zero + // index should start at zero + int payloadIndex = i - payloadOffset; int maskKeyIndex = maskKeyOffset + (payloadIndex % MaskKeyLength); buffer[i] = (Byte)(buffer[i] ^ maskKeyArray[maskKeyIndex]); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameReader.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameReader.cs index e8ff65f..54dd96a 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameReader.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameReader.cs @@ -55,7 +55,7 @@ public static async Task ReadAsync(Stream fromStream, ArraySegme byte finBitFlag = 0x80; byte opCodeFlag = 0x0F; bool isFinBitSet = (byte1 & finBitFlag) == finBitFlag; - WebSocketOpCode opCode = (WebSocketOpCode) (byte1 & opCodeFlag); + WebSocketOpCode opCode = (WebSocketOpCode)(byte1 & opCodeFlag); // read and process second byte byte maskFlag = 0x80; @@ -105,8 +105,9 @@ static WebSocketFrame DecodeCloseFrame(bool isFinBitSet, WebSocketOpCode opCode, if (count >= 2) { - Array.Reverse(buffer.Array, buffer.Offset, 2); // network byte order - int closeStatusCode = (int)BitConverter.ToUInt16(buffer.Array, buffer.Offset); + // network byte order + Array.Reverse(buffer.Array, buffer.Offset, 2); + int closeStatusCode = BitConverter.ToUInt16(buffer.Array, buffer.Offset); if (Enum.IsDefined(typeof(WebSocketCloseStatus), closeStatusCode)) { closeStatus = (WebSocketCloseStatus)closeStatusCode; @@ -143,7 +144,7 @@ static WebSocketFrame DecodeCloseFrame(bool isFinBitSet, WebSocketOpCode opCode, static async Task ReadLength(byte byte2, ArraySegment smallBuffer, Stream fromStream, CancellationToken cancellationToken) { byte payloadLenFlag = 0x7F; - uint len = (uint) (byte2 & payloadLenFlag); + uint len = (uint)(byte2 & payloadLenFlag); // read a short length or a long length depending on the value of len if (len == 126) @@ -152,8 +153,9 @@ static async Task ReadLength(byte byte2, ArraySegment smallBuffer, S } else if (len == 127) { - len = (uint) await BinaryReaderWriter.ReadULongExactly(fromStream, false, smallBuffer, cancellationToken); - const uint maxLen = 2147483648; // 2GB - not part of the spec but just a precaution. Send large volumes of data in smaller frames. + len = (uint)await BinaryReaderWriter.ReadULongExactly(fromStream, false, smallBuffer, cancellationToken); + // 2GB - not part of the spec but just a precaution. Send large volumes of data in smaller frames. + const uint maxLen = 2147483648; // protect ourselves against bad data if (len > maxLen || len < 0) diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameWriter.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameWriter.cs index 7ecf274..ec00ce8 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameWriter.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketFrameWriter.cs @@ -20,10 +20,8 @@ // THE SOFTWARE. // --------------------------------------------------------------------- -using System.IO; using System; -using System.Net.WebSockets; -using System.Text; +using System.IO; namespace Ninja.WebSockets.Internal { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketImplementation.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketImplementation.cs index 33d85ec..83fe357 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketImplementation.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Internal/WebSocketImplementation.cs @@ -21,7 +21,6 @@ // --------------------------------------------------------------------- using System; -using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Net.Security; @@ -43,7 +42,7 @@ namespace Ninja.WebSockets.Internal /// /// Main implementation of the WebSocket abstract class /// - internal class WebSocketImplementation : WebSocket + public class WebSocketImplementation : WebSocket { readonly Guid _guid; readonly Func _recycledStreamFactory; @@ -63,11 +62,8 @@ internal class WebSocketImplementation : WebSocket public event EventHandler Pong; - Queue> _messageQueue = new Queue>(); - SemaphoreSlim _sendSemaphore = new SemaphoreSlim(1, 1); public WebSocketHttpContext Context { get; set; } - internal WebSocketImplementation(Guid guid, Func recycledStreamFactory, Stream stream, TimeSpan keepAliveInterval, string secWebSocketExtensions, bool includeExceptionInCloseResponse, bool isClient, string subProtocol) { _guid = guid; @@ -254,7 +250,8 @@ public override async Task SendAsync(ArraySegment buffer, WebSocketMessage } await WriteStreamToNetwork(stream, cancellationToken); - _isContinuationFrame = !endOfMessage; // TODO: is this correct?? + // TODO: is this correct?? + _isContinuationFrame = !endOfMessage; } } @@ -319,7 +316,8 @@ public override async Task CloseOutputAsync(WebSocketCloseStatus closeStatus, st { if (_state == WebSocketState.Open) { - _state = WebSocketState.Closed; // set this before we write to the network because the write may fail + // set this before we write to the network because the write may fail + _state = WebSocketState.Closed; using (MemoryStream stream = _recycledStreamFactory()) { @@ -391,7 +389,8 @@ protected virtual void OnPong(PongEventArgs e) ArraySegment BuildClosePayload(WebSocketCloseStatus closeStatus, string statusDescription) { byte[] statusBuffer = BitConverter.GetBytes((ushort)closeStatus); - Array.Reverse(statusBuffer); // network byte order (big endian) + // network byte order (big endian) + Array.Reverse(statusBuffer); if (statusDescription == null) { @@ -522,6 +521,8 @@ ArraySegment GetBuffer(MemoryStream stream) #endif } + Task writeTask = Task.CompletedTask; + /// /// Puts data on the wire /// @@ -529,36 +530,19 @@ ArraySegment GetBuffer(MemoryStream stream) async Task WriteStreamToNetwork(MemoryStream stream, CancellationToken cancellationToken) { ArraySegment buffer = GetBuffer(stream); - if(_stream is SslStream) + if (_stream is SslStream) { - _messageQueue.Enqueue(buffer); - await _sendSemaphore.WaitAsync(); - try + if (writeTask.IsCompleted) { - while (_messageQueue.Count > 0) - { - var _buf = _messageQueue.Dequeue(); - try - { - if (_stream != null && _stream.CanWrite) - { - await _stream.WriteAsync(_buf.Array, _buf.Offset, _buf.Count, cancellationToken).ConfigureAwait(false); - } - } - catch (IOException) - { - // do nothing, the socket is not connected - } - catch (SocketException) - { - // do nothing, the socket is not connected - } - } + writeTask = _stream.WriteAsync(buffer.Array, buffer.Offset, buffer.Count, cancellationToken); } - finally + else { - _sendSemaphore.Release(); + writeTask = writeTask.ContinueWith((prevTask) => + _stream.WriteAsync(buffer.Array, buffer.Offset, buffer.Count, cancellationToken)); } + await writeTask; + await _stream.FlushAsync(); } else { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef new file mode 100644 index 0000000..1e87ae9 --- /dev/null +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef @@ -0,0 +1,3 @@ +{ + "name": "Ninja.WebSockets" +} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef.meta similarity index 59% rename from LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab.meta rename to LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef.meta index 113674d..7f999dd 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Examples/AdditiveScenes/Prefabs/Cylinder.prefab.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/Ninja.WebSockets.asmdef.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 12a4c14e672c00b4b840f937d824b890 -PrefabImporter: +guid: f314da276aede4b96a9d5130f4833dd2 +AssemblyDefinitionImporter: externalObjects: {} userData: assetBundleName: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/PongEventArgs.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/PongEventArgs.cs index 027d06b..3136ff2 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/PongEventArgs.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/PongEventArgs.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; namespace Ninja.WebSockets { diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/WebSocketClientOptions.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/WebSocketClientOptions.cs index b6318a8..b329522 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/WebSocketClientOptions.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Ninja.WebSockets/WebSocketClientOptions.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Text; namespace Ninja.WebSockets { @@ -30,7 +29,7 @@ public class WebSocketClientOptions /// /// Add any additional http headers to this dictionary /// - public Dictionary AdditionalHttpHeaders { get; set; } + public Dictionary AdditionalHttpHeaders { get; set; } /// /// Include the full exception (with stack trace) in the close response diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Plugins/WebSocket.jslib b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Plugins/WebSocket.jslib index ff1e622..b6a6dee 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Plugins/WebSocket.jslib +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Plugins/WebSocket.jslib @@ -88,7 +88,11 @@ var LibraryWebSockets = { SocketState: function (socketInstance) { var socket = webSocketInstances[socketInstance]; - return socket.readyState; + + if(socket) + return socket.readyState; + + return false; }, SocketSend: function (socketInstance, ptr, length) diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Server.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Server.cs index af362bc..8418b08 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Server.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/Server.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.IO; -using System.Linq; using System.Net.Security; using System.Net.Sockets; using System.Net.WebSockets; @@ -92,7 +91,7 @@ public async Task Listen(int port) cancellation = new CancellationTokenSource(); listener = TcpListener.Create(port); - listener.Server.NoDelay = this.NoDelay; + listener.Server.NoDelay = NoDelay; listener.Start(); Debug.Log($"Websocket server started listening on port {port}"); while (true) @@ -132,7 +131,8 @@ async Task ProcessTcpClient(TcpClient tcpClient, CancellationToken token) WebSocketHttpContext context = await webSocketServerFactory.ReadHttpHeaderFromStreamAsync(tcpClient, stream, token); if (context.IsWebSocketRequest) { - WebSocketServerOptions options = new WebSocketServerOptions() { KeepAliveInterval = TimeSpan.FromSeconds(30), SubProtocol = "binary" }; + // Force KeepAliveInterval to Zero, otherwise the transport is unstable and causes random disconnects. + WebSocketServerOptions options = new WebSocketServerOptions() { KeepAliveInterval = TimeSpan.Zero, SubProtocol = "binary" }; WebSocket webSocket = await webSocketServerFactory.AcceptWebSocketAsync(context, options); @@ -144,7 +144,7 @@ async Task ProcessTcpClient(TcpClient tcpClient, CancellationToken token) } } - catch(IOException) + catch (IOException) { // do nothing. This will be thrown if the transport is closed } @@ -178,6 +178,8 @@ bool CertVerificationCallback(object sender, X509Certificate certificate, X509Ch return true; } + public bool enabled; + async Task ReceiveLoopAsync(WebSocket webSocket, CancellationToken token) { int connectionId = NextConnectionId(); @@ -190,11 +192,15 @@ async Task ReceiveLoopAsync(WebSocket webSocket, CancellationToken token) // someone connected, raise event Connected?.Invoke(connectionId); - while (true) { WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment(buffer), token); + if (!enabled) + { + await WaitForEnabledAsync(); + } + if (result.MessageType == WebSocketMessageType.Close) { Debug.Log($"Client initiated close. Status: {result.CloseStatus} Description: {result.CloseStatusDescription}"); @@ -229,6 +235,14 @@ async Task ReceiveLoopAsync(WebSocket webSocket, CancellationToken token) } } + async Task WaitForEnabledAsync() + { + while (!enabled) + { + await Task.Delay(10); + } + } + // a message might come splitted in multiple frames // collect all frames async Task> ReadFrames(int connectionId, WebSocketReceiveResult result, WebSocket webSocket, byte[] buffer, CancellationToken token) @@ -255,7 +269,8 @@ async Task> ReadFrames(int connectionId, WebSocketReceiveResu public void Stop() { // only if started - if (!Active) return; + if (!Active) + return; Debug.Log("Server: stopping..."); cancellation.Cancel(); @@ -279,7 +294,8 @@ public async void Send(int connectionId, ArraySegment segment) { await client.SendAsync(segment, WebSocketMessageType.Binary, true, cancellation.Token); } - catch (ObjectDisposedException) { + catch (ObjectDisposedException) + { // connection has been closed, swallow exception Disconnect(connectionId); } diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs index 6b879e9..a86026c 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs @@ -1,23 +1,37 @@ using System; using System.Collections.Generic; +using System.Net; using UnityEngine; namespace Mirror.Websocket { + [HelpURL("https://mirror-networking.com/docs/Transports/WebSockets.html")] public class WebsocketTransport : Transport { + public const string Scheme = "ws"; + public const string SecureScheme = "wss"; protected Client client = new Client(); protected Server server = new Server(); + [Header("Transport Settings")] + + [Tooltip("Connection Port.")] public int port = 7778; + [Tooltip("Nagle Algorithm can be disabled by enabling NoDelay.")] + public bool NoDelay = true; + + [Header("Secure Sockets (SSL/WSS).")] + + [Tooltip("Indicates if SSL/WSS protocol will be used with the PFX Certificate file below.")] public bool Secure; + + [Tooltip("Full path and filename to PFX Certificate file generated from web hosting environment.")] public string CertificatePath; - public string CertificatePassword; - [Tooltip("Nagle Algorithm can be disabled by enabling NoDelay")] - public bool NoDelay = true; + [Tooltip("Password for PFX Certificate file above.")] + public string CertificatePassword; public WebsocketTransport() { @@ -46,6 +60,45 @@ public override bool Available() return true; } + void OnEnable() + { + server.enabled = true; + client.enabled = true; + } + + void OnDisable() + { + server.enabled = false; + client.enabled = false; + } + + void LateUpdate() + { + // note: we need to check enabled in case we set it to false + // when LateUpdate already started. + // (https://github.com/vis2k/Mirror/pull/379) + if (!enabled) + return; + + // process a maximum amount of client messages per tick + // TODO add clientMaxReceivesPerTick same as telepathy + while (true) + { + // stop when there is no more message + if (!client.ProcessClientMessage()) + { + break; + } + + // Some messages can disable transport + // If this is disabled stop processing message in queue + if (!enabled) + { + break; + } + } + } + // client public override bool ClientConnected() => client.IsConnected; @@ -61,6 +114,21 @@ public override void ClientConnect(string host) } } + public override void ClientConnect(Uri uri) + { + if (uri.Scheme != Scheme && uri.Scheme != SecureScheme) + throw new ArgumentException($"Invalid url {uri}, use {Scheme}://host:port or {SecureScheme}://host:port instead", nameof(uri)); + + if (uri.IsDefaultPort) + { + UriBuilder uriBuilder = new UriBuilder(uri); + uriBuilder.Port = port; + uri = uriBuilder.Uri; + } + + client.Connect(uri); + } + public override bool ClientSend(int channelId, ArraySegment segment) { client.Send(segment); @@ -69,6 +137,16 @@ public override bool ClientSend(int channelId, ArraySegment segment) public override void ClientDisconnect() => client.Disconnect(); + public override Uri ServerUri() + { + UriBuilder builder = new UriBuilder(); + builder.Scheme = Secure ? SecureScheme : Scheme; + builder.Host = Dns.GetHostName(); + builder.Port = port; + return builder.Uri; + } + + // server public override bool ServerActive() => server.Active; @@ -80,9 +158,7 @@ public override void ServerStart() server._secure = Secure; server._sslConfig = new Server.SslConfiguration { - Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2( - System.IO.Path.Combine(Application.dataPath, CertificatePath), - CertificatePassword), + Certificate = new System.Security.Cryptography.X509Certificates.X509Certificate2(CertificatePath, CertificatePassword), ClientCertificateRequired = false, CheckCertificateRevocation = false, EnabledSslProtocols = System.Security.Authentication.SslProtocols.Default diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs.meta index aab9380..432cfd6 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs.meta +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/Transport/Websocket/WebsocketTransport.cs.meta @@ -5,7 +5,7 @@ MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 - icon: {instanceID: 0} + icon: {fileID: 2800000, guid: 7453abfe9e8b2c04a8a47eb536fe21eb, type: 3} userData: assetBundleName: assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/UNetwork.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/UNetwork.cs index a515c41..19350fb 100644 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/UNetwork.cs +++ b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Runtime/UNetwork.cs @@ -1,16 +1,17 @@ using System; -using System.ComponentModel; using System.Runtime.InteropServices; using UnityEngine; namespace Mirror { // Handles network messages on client and server - public delegate void NetworkMessageDelegate(NetworkMessage netMsg); + public delegate void NetworkMessageDelegate(NetworkConnection conn, NetworkReader reader, int channelId); // Handles requests to spawn objects on the client public delegate GameObject SpawnDelegate(Vector3 position, Guid assetId); + public delegate GameObject SpawnHandlerDelegate(SpawnMessage msg); + // Handles requests to unspawn objects on the client public delegate void UnSpawnDelegate(GameObject spawned); @@ -22,44 +23,6 @@ public enum MirrorInvokeType SyncEvent } - // built-in system network messages - // original HLAPI uses short, so let's keep short to not break packet header etc. - // => use .ToString() to get the field name from the field value - // => we specify the short values so it's easier to look up opcodes when debugging packets - [EditorBrowsable(EditorBrowsableState.Never), Obsolete("Use Send with no message id instead")] - public enum MsgType : short - { - // internal system messages - cannot be replaced by user code - ObjectDestroy = 1, - Rpc = 2, - Owner = 4, - Command = 5, - SyncEvent = 7, - UpdateVars = 8, - SpawnPrefab = 3, - SpawnSceneObject = 10, - SpawnStarted = 11, - SpawnFinished = 12, - ObjectHide = 13, - LocalClientAuthority = 15, - - // public system messages - can be replaced by user code - Connect = 32, - Disconnect = 33, - Error = 34, - Ready = 35, - NotReady = 36, - AddPlayer = 37, - RemovePlayer = 38, - Scene = 39, - - // time synchronization - Ping = 43, - Pong = 44, - - Highest = 47 - } - public enum Version { Current = 1 diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests.meta deleted file mode 100644 index a519cf7..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 4de157ac7e1594c758ce6dc401674f5c -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs deleted file mode 100644 index a3329d8..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs +++ /dev/null @@ -1,146 +0,0 @@ -using System; -using NUnit.Framework; - -namespace Mirror.Tests -{ - [TestFixture] - public class ArraySegmentWriterTest - { - #region ArraySegment - - // ArraySegment is a special case, optimized for no copy and no allocation - // other types are generated by the weaver - - class ByteArraySegmentMessage : MessageBase - { - public ArraySegment array; - } - - [Test] - public void TestEmptyByteArray() - { - ByteArraySegmentMessage message = new ByteArraySegmentMessage - { - array = new ArraySegment(new byte[0]) - }; - - byte[] data = MessagePacker.Pack(message); - - ByteArraySegmentMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNotNull(unpacked.array.Array); - Assert.That(unpacked.array.Count, Is.EqualTo(0)); - } - - - public static ArraySegment SampleReader(NetworkReader reader ) - { - int length = reader.ReadPackedInt32(); - int[] array = new int[length]; - - for (int i=0; i< length; i++) - { - array[i] = reader.ReadPackedInt32(); - } - - return new ArraySegment(array); - } - - [Test] - public void TestNullByteArray() - { - ByteArraySegmentMessage message = new ByteArraySegmentMessage - { - array = default - }; - - byte[] data = MessagePacker.Pack(message); - - ByteArraySegmentMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNull(unpacked.array.Array); - Assert.That(unpacked.array.Offset, Is.EqualTo(0)); - Assert.That(unpacked.array.Count, Is.EqualTo(0)); - } - - [Test] - public void TestSegmentByteArray() - { - byte[] sourcedata = { 0, 1, 2, 3, 4, 5, 6 }; - - ByteArraySegmentMessage message = new ByteArraySegmentMessage - { - array = new ArraySegment(sourcedata, 3, 2) - }; - - byte[] data = MessagePacker.Pack(message); - - ByteArraySegmentMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNotNull(unpacked.array.Array); - Assert.That(unpacked.array.Count, Is.EqualTo(2)); - Assert.That(unpacked.array, Is.EquivalentTo(new byte[] { 3, 4 })); - } - #endregion - - #region ArraySegment - - class IntArraySegmentMessage : MessageBase - { - public ArraySegment array; - } - - [Test] - public void TestEmptyIntArray() - { - IntArraySegmentMessage message = new IntArraySegmentMessage - { - array = new ArraySegment(new int[0]) - }; - - byte[] data = MessagePacker.Pack(message); - - IntArraySegmentMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNotNull(unpacked.array.Array); - Assert.That(unpacked.array.Count, Is.EqualTo(0)); - } - - [Test] - public void TestNullIntArray() - { - IntArraySegmentMessage message = new IntArraySegmentMessage - { - array = default - }; - - byte[] data = MessagePacker.Pack(message); - - IntArraySegmentMessage unpacked = MessagePacker.Unpack(data); - - Assert.That(unpacked.array.Offset, Is.EqualTo(0)); - Assert.That(unpacked.array.Count, Is.EqualTo(0)); - } - - [Test] - public void TestSegmentIntArray() - { - int[] sourcedata = { 0, 1, 2, 3, 4, 5, 6 }; - - IntArraySegmentMessage message = new IntArraySegmentMessage - { - array = new ArraySegment(sourcedata, 3, 2) - }; - - byte[] data = MessagePacker.Pack(message); - - IntArraySegmentMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNotNull(unpacked.array.Array); - Assert.That(unpacked.array.Count, Is.EqualTo(2)); - Assert.That(unpacked.array, Is.EquivalentTo(new int[] { 3, 4 })); - } - #endregion - - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs.meta deleted file mode 100644 index 7053f2c..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArraySegmentWriterTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7f4698aeeb4f71441a21cc368bd26377 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs deleted file mode 100644 index b97f1f3..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs +++ /dev/null @@ -1,111 +0,0 @@ -using NUnit.Framework; -namespace Mirror.Tests -{ - [TestFixture] - public class ArrayWriterTest - { - class ArrayByteMessage : MessageBase - { - public byte[] array; - } - - [Test] - public void TestNullByterray() - { - ArrayByteMessage intMessage = new ArrayByteMessage - { - array = null - }; - - byte[] data = MessagePacker.Pack(intMessage); - - ArrayByteMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNull(unpacked.array); - } - - [Test] - public void TestEmptyByteArray() - { - ArrayByteMessage intMessage = new ArrayByteMessage - { - array = new byte[] { } - }; - - byte[] data = MessagePacker.Pack(intMessage); - - ArrayByteMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNotNull(unpacked.array); - Assert.IsEmpty(unpacked.array); - Assert.That(unpacked.array, Is.EquivalentTo(new int[] { })); - } - - [Test] - public void TestDataByteArray() - { - ArrayByteMessage intMessage = new ArrayByteMessage - { - array = new byte[] { 3, 4, 5 } - }; - - byte[] data = MessagePacker.Pack(intMessage); - - ArrayByteMessage unpacked = MessagePacker.Unpack(data); - - Assert.IsNotNull(unpacked.array); - Assert.IsNotEmpty(unpacked.array); - Assert.That(unpacked.array, Is.EquivalentTo(new byte[] { 3, 4, 5 })); - } - - class ArrayIntMessage : MessageBase - { - public int[] array; - } - - [Test] - public void TestNullIntArray() - { - ArrayIntMessage intMessage = new ArrayIntMessage - { - array = null - }; - - byte[] data = MessagePacker.Pack(intMessage); - - ArrayIntMessage unpacked = MessagePacker.Unpack(data); - - Assert.That(unpacked.array, Is.Null); - } - - [Test] - public void TestEmptyIntArray() - { - ArrayIntMessage intMessage = new ArrayIntMessage - { - array = new int [] { } - }; - - byte[] data = MessagePacker.Pack(intMessage); - - ArrayIntMessage unpacked = MessagePacker.Unpack(data); - - Assert.That(unpacked.array, Is.EquivalentTo(new int[] {})); - } - - [Test] - public void TestDataIntArray() - { - ArrayIntMessage intMessage = new ArrayIntMessage - { - array = new[] { 3, 4, 5} - }; - - byte[] data = MessagePacker.Pack(intMessage); - - ArrayIntMessage unpacked = MessagePacker.Unpack(data); - - Assert.That(unpacked.array, Is.EquivalentTo(new int[] {3, 4, 5 })); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs.meta deleted file mode 100644 index 113db8f..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ArrayWriterTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3c0d546467b3e40fdb2b81af752a29b6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs deleted file mode 100644 index ae9c6ad..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using NUnit.Framework; -using UnityEngine; - - -namespace Mirror.Tests -{ - public class MockQuest - { - public int Id { get; set; } - - public MockQuest(int id) - { - Id = id; - } - - public MockQuest() - { - Id = 0; - } - } - - public static class MockQuestReaderWriter - { - public static void WriteQuest(this NetworkWriter writer, MockQuest quest) - { - writer.WritePackedInt32(quest.Id); - } - public static MockQuest WriteQuest(this NetworkReader reader) - { - return new MockQuest(reader.ReadPackedInt32()); - } - } - - [TestFixture] - public class CustomRWTest - { - - class QuestMessage : MessageBase - { - public MockQuest quest; - } - - [Test] - public void TestCustomRW() - { - QuestMessage message = new QuestMessage() - { - quest = new MockQuest(100) - }; - - byte[] data = MessagePacker.Pack(message); - - QuestMessage unpacked = MessagePacker.Unpack(data); - - Assert.That(unpacked.quest.Id, Is.EqualTo(100)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs.meta deleted file mode 100644 index d1adf21..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/CustomRWTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 3d74d53ca2c8c4b1195833376f9f6bb6 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs deleted file mode 100644 index 3b55264..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs +++ /dev/null @@ -1,42 +0,0 @@ -using NUnit.Framework; -namespace Mirror.Tests -{ - [TestFixture] - public class ExponentialMovingAverageTest - { - [Test] - public void TestInitial() - { - ExponentialMovingAverage ema = new ExponentialMovingAverage(10); - - ema.Add(3); - - Assert.That(ema.Value, Is.EqualTo(3)); - Assert.That(ema.Var, Is.EqualTo(0)); - } - - [Test] - public void TestMovingAverage() - { - ExponentialMovingAverage ema = new ExponentialMovingAverage(10); - - ema.Add(5); - ema.Add(6); - - Assert.That(ema.Value, Is.EqualTo(5.1818).Within(0.0001f)); - Assert.That(ema.Var, Is.EqualTo(0.1487).Within(0.0001f)); - } - - [Test] - public void TestVar() - { - ExponentialMovingAverage ema = new ExponentialMovingAverage(10); - - ema.Add(5); - ema.Add(6); - ema.Add(7); - - Assert.That(ema.Var, Is.EqualTo(0.6134).Within(0.0001f)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs.meta deleted file mode 100644 index 535f33d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/ExponentialMovingAverageTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8e3f2ecadd13149f29cd3e83ef6a4bff -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs deleted file mode 100644 index 4351a61..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs +++ /dev/null @@ -1,25 +0,0 @@ -using NUnit.Framework; -namespace Mirror.Tests -{ - [TestFixture] - public class FloatBytePackerTest - { - [Test] - public void TestScaleFloatToByte() - { - Assert.That(FloatBytePacker.ScaleFloatToByte( -1f, -1f, 1f, byte.MinValue, byte.MaxValue), Is.EqualTo(0)); - Assert.That(FloatBytePacker.ScaleFloatToByte( 0f, -1f, 1f, byte.MinValue, byte.MaxValue), Is.EqualTo(127)); - Assert.That(FloatBytePacker.ScaleFloatToByte(0.5f, -1f, 1f, byte.MinValue, byte.MaxValue), Is.EqualTo(191)); - Assert.That(FloatBytePacker.ScaleFloatToByte( 1f, -1f, 1f, byte.MinValue, byte.MaxValue), Is.EqualTo(255)); - } - - [Test] - public void ScaleByteToFloat() - { - Assert.That(FloatBytePacker.ScaleByteToFloat( 0, byte.MinValue, byte.MaxValue, -1, 1), Is.EqualTo(-1).Within(0.0001f)); - Assert.That(FloatBytePacker.ScaleByteToFloat(127, byte.MinValue, byte.MaxValue, -1, 1), Is.EqualTo(-0.003921569f).Within(0.0001f)); - Assert.That(FloatBytePacker.ScaleByteToFloat(191, byte.MinValue, byte.MaxValue, -1, 1), Is.EqualTo(0.4980392f).Within(0.0001f)); - Assert.That(FloatBytePacker.ScaleByteToFloat(255, byte.MinValue, byte.MaxValue, -1, 1), Is.EqualTo(1).Within(0.0001f)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs.meta deleted file mode 100644 index b0bff53..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/FloatBytePackerTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: bc969b77de81645489d79ad1100a72a1 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs deleted file mode 100644 index 00ad90e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs +++ /dev/null @@ -1,51 +0,0 @@ -using NUnit.Framework; - -namespace Mirror.Tests -{ - struct TestMessage : IMessageBase - { - public int IntValue; - public string StringValue; - public double DoubleValue; - - public TestMessage(int i, string s, double d) - { - IntValue = i; - StringValue = s; - DoubleValue = d; - } - - public void Deserialize(NetworkReader reader) - { - IntValue = reader.ReadInt32(); - StringValue = reader.ReadString(); - DoubleValue = reader.ReadDouble(); - } - - public void Serialize(NetworkWriter writer) - { - writer.WriteInt32(IntValue); - writer.WriteString(StringValue); - writer.WriteDouble(DoubleValue); - } - } - - [TestFixture] - public class MessageBaseTests - { - [Test] - public void Roundtrip() - { - NetworkWriter w = new NetworkWriter(); - w.Write(new TestMessage(1, "2", 3.3)); - - byte[] arr = w.ToArray(); - - NetworkReader r = new NetworkReader(arr); - TestMessage t = new TestMessage(); - t.Deserialize(r); - - Assert.AreEqual(1, t.IntValue); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs.meta deleted file mode 100644 index 1411776..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessageBaseTests.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: ecf93fcf0386fee4e85f981d5ca9259d -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs deleted file mode 100644 index 264e9cb..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs +++ /dev/null @@ -1,24 +0,0 @@ -using NUnit.Framework; -namespace Mirror.Tests -{ - [TestFixture] - public class MessagePackerTest - { - [Test] - public void TestPacking() - { - SceneMessage message = new SceneMessage() - { - sceneName = "Hello world", - sceneOperation = SceneOperation.LoadAdditive - }; - - byte[] data = MessagePacker.Pack(message); - - SceneMessage unpacked = MessagePacker.Unpack(data); - - Assert.That(unpacked.sceneName, Is.EqualTo("Hello world")); - Assert.That(unpacked.sceneOperation, Is.EqualTo(SceneOperation.LoadAdditive)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs.meta deleted file mode 100644 index 70e6240..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/MessagePackerTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 8d57c17d9ee7c49e6bacc54ddbeac751 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs deleted file mode 100644 index 3cc6157..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs +++ /dev/null @@ -1,1136 +0,0 @@ -using System; -using NUnit.Framework; -using UnityEngine; - -namespace Mirror.Tests -{ - [TestFixture] - public class NetworkWriterTest - { - [Test] - public void TestWritingSmallMessage() - { - // try serializing less than 32kb and see what happens - NetworkWriter writer = new NetworkWriter(); - for (int i = 0; i < 30000 / 4; ++i) - writer.WriteInt32(i); - Assert.That(writer.Position, Is.EqualTo(30000)); - } - - [Test] - public void TestWritingLargeMessage() - { - // try serializing more than 32kb and see what happens - NetworkWriter writer = new NetworkWriter(); - for (int i = 0; i < 40000 / 4; ++i) - writer.WriteInt32(i); - Assert.That(writer.Position, Is.EqualTo(40000)); - } - - [Test] - public void TestWritingHugeArray() - { - // try serializing array more than 64KB large and see what happens - NetworkWriter writer = new NetworkWriter(); - writer.WriteBytesAndSize(new byte[100000]); - byte[] data = writer.ToArray(); - - NetworkReader reader = new NetworkReader(data); - byte[] deserialized = reader.ReadBytesAndSize(); - Assert.That(deserialized.Length, Is.EqualTo(100000)); - } - - [Test] - public void TestWritingBytesSegment() - { - byte[] data = {1, 2, 3}; - NetworkWriter writer = new NetworkWriter(); - writer.WriteBytes(data, 0, data.Length); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - ArraySegment deserialized = reader.ReadBytesSegment(data.Length); - Assert.That(deserialized.Count, Is.EqualTo(data.Length)); - for (int i = 0; i < data.Length; ++i) - Assert.That(deserialized.Array[deserialized.Offset + i], Is.EqualTo(data[i])); - } - - // write byte[], read segment - [Test] - public void TestWritingBytesAndReadingSegment() - { - byte[] data = {1, 2, 3}; - NetworkWriter writer = new NetworkWriter(); - writer.WriteBytesAndSize(data); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - ArraySegment deserialized = reader.ReadBytesAndSizeSegment(); - Assert.That(deserialized.Count, Is.EqualTo(data.Length)); - for (int i = 0; i < data.Length; ++i) - Assert.That(deserialized.Array[deserialized.Offset + i], Is.EqualTo(data[i])); - } - - // write segment, read segment - [Test] - public void TestWritingSegmentAndReadingSegment() - { - byte[] data = {1, 2, 3, 4}; - ArraySegment segment = new ArraySegment(data, 1, 1); // [2, 3] - NetworkWriter writer = new NetworkWriter(); - writer.WriteBytesAndSizeSegment(segment); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - ArraySegment deserialized = reader.ReadBytesAndSizeSegment(); - Assert.That(deserialized.Count, Is.EqualTo(segment.Count)); - for (int i = 0; i < segment.Count; ++i) - Assert.That(deserialized.Array[deserialized.Offset + i], Is.EqualTo(segment.Array[segment.Offset + i])); - } - - [Test] - public void TestOverwritingData() - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteMatrix4x4(Matrix4x4.identity); - writer.WriteDecimal(1.23456789m); - writer.Position += 10; - writer.WriteVector3(Vector3.negativeInfinity); - writer.Position = 46; - // write right at the boundary before SetLength - writer.WriteInt64(0xfeed_babe_c0ffee); - // test that SetLength clears data beyond length - writer.SetLength(50); - // check that jumping leaves 0s between - writer.Position = 100; - writer.WriteString("no worries, m8"); - writer.Position = 64; - writer.WriteBoolean(true); - // check that clipping off the end affect ToArray()'s length - writer.SetLength(128); - byte[] output = writer.ToArray(); - //Debug.Log(BitConverter.ToString(output)); - byte[] expected = { - 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x3F, 0x00, 0x00, 0xEE, 0xFF, 0xC0, 0xBE, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0F, 0x00, 0x6E, 0x6F, 0x20, 0x77, 0x6F, 0x72, 0x72, 0x69, - 0x65, 0x73, 0x2C, 0x20, 0x6D, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - Assert.That(output, Is.EqualTo(expected)); - } - - [Test] - public void TestSetLengthZeroes() - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteString("I saw"); - writer.WriteInt64(0xA_FADED_DEAD_EEL); - writer.WriteString("and ate it"); - int position = writer.Position; - writer.SetLength(10); - // Setting length should set position too - Assert.That(writer.Position, Is.EqualTo(10)); - // lets grow it back and check there's zeroes now. - writer.SetLength(position); - byte[] data = writer.ToArray(); - for (int i = position; i < data.Length; i++) - Assert.That(data[i], Is.EqualTo(0), $"index {i} should have value 0"); - } - - [Test] - public void TestSetLengthInitialization() - { - NetworkWriter writer = new NetworkWriter(); - writer.SetLength(10); - // Setting length should leave position at 0 - Assert.That(writer.Position, Is.EqualTo(0)); - byte[] data = writer.ToArray(); - for (int i = 0; i < data.Length; i++) - Assert.That(data[i], Is.EqualTo(0), $"index {i} should have value 0"); - } - - [Test] - public void TestReadingLengthWrapAround() - { - NetworkWriter writer = new NetworkWriter(); - // This is 1.5x int.MaxValue, in the negative range of int. - writer.WritePackedUInt32(3221225472); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.Throws(() => reader.ReadBytesAndSize()); - } - - [Test] - public void TestReading0LengthBytesAndSize() - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteBytesAndSize(new byte[]{}); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.That(reader.ReadBytesAndSize().Length, Is.EqualTo(0)); - } - - [Test] - public void TestReading0LengthBytes() - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteBytes(new byte[]{}, 0, 0); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.That(reader.ReadBytes(0).Length, Is.EqualTo(0)); - } - - [Test] - public void TestWritingNegativeBytesAndSizeFailure() - { - NetworkWriter writer = new NetworkWriter(); - Assert.Throws(() => writer.WriteBytesAndSize(new byte[0], 0, -1)); - Assert.That(writer.Position, Is.EqualTo(0)); - } - - [Test] - public void TestReadingTooMuch() - { - void EnsureThrows(Action read, byte[] data = null) - { - Assert.Throws(() => read(new NetworkReader(data ?? new byte[]{}))); - } - // Try reading more than there is data to be read from - // This should throw EndOfStreamException always - EnsureThrows(r => r.ReadByte()); - EnsureThrows(r => r.ReadSByte()); - EnsureThrows(r => r.ReadChar()); - EnsureThrows(r => r.ReadBoolean()); - EnsureThrows(r => r.ReadInt16()); - EnsureThrows(r => r.ReadUInt16()); - EnsureThrows(r => r.ReadInt32()); - EnsureThrows(r => r.ReadUInt32()); - EnsureThrows(r => r.ReadInt64()); - EnsureThrows(r => r.ReadUInt64()); - EnsureThrows(r => r.ReadDecimal()); - EnsureThrows(r => r.ReadSingle()); - EnsureThrows(r => r.ReadDouble()); - EnsureThrows(r => r.ReadString()); - EnsureThrows(r => r.ReadBytes(1)); - EnsureThrows(r => r.ReadBytes(2)); - EnsureThrows(r => r.ReadBytes(3)); - EnsureThrows(r => r.ReadBytes(4)); - EnsureThrows(r => r.ReadBytes(8)); - EnsureThrows(r => r.ReadBytes(16)); - EnsureThrows(r => r.ReadBytes(32)); - EnsureThrows(r => r.ReadBytes(100)); - EnsureThrows(r => r.ReadBytes(1000)); - EnsureThrows(r => r.ReadBytes(10000)); - EnsureThrows(r => r.ReadBytes(1000000)); - EnsureThrows(r => r.ReadBytes(10000000)); - EnsureThrows(r => r.ReadBytesAndSize()); - EnsureThrows(r => r.ReadPackedInt32()); - EnsureThrows(r => r.ReadPackedUInt32()); - EnsureThrows(r => r.ReadPackedInt64()); - EnsureThrows(r => r.ReadPackedUInt64()); - EnsureThrows(r => r.ReadVector2()); - EnsureThrows(r => r.ReadVector3()); - EnsureThrows(r => r.ReadVector4()); - EnsureThrows(r => r.ReadVector2Int()); - EnsureThrows(r => r.ReadVector3Int()); - EnsureThrows(r => r.ReadColor()); - EnsureThrows(r => r.ReadColor32()); - EnsureThrows(r => r.ReadQuaternion()); - EnsureThrows(r => r.ReadRect()); - EnsureThrows(r => r.ReadPlane()); - EnsureThrows(r => r.ReadRay()); - EnsureThrows(r => r.ReadMatrix4x4()); - EnsureThrows(r => r.ReadGuid()); - } - - [Test] - public void TestVector2() - { - Vector2[] inputs = { - Vector2.right, - Vector2.up, - Vector2.zero, - Vector2.one, - Vector2.positiveInfinity, - new Vector2(0.1f,3.1f) - }; - foreach (Vector2 input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteVector2(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Vector2 output = reader.ReadVector2(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestVector3() - { - Vector3[] inputs = { - Vector3.right, - Vector3.up, - Vector3.zero, - Vector3.one, - Vector3.positiveInfinity, - Vector3.forward, - new Vector3(0.1f,3.1f,1.4f) - }; - foreach (Vector3 input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteVector3(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Vector3 output = reader.ReadVector3(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestVector4() - { - Vector4[] inputs = { - Vector3.right, - Vector3.up, - Vector4.zero, - Vector4.one, - Vector4.positiveInfinity, - new Vector4(0.1f,3.1f,1.4f,4.9f) - }; - foreach (Vector4 input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteVector4(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Vector4 output = reader.ReadVector4(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestVector2Int() - { - Vector2Int[] inputs = { - Vector2Int.down, - Vector2Int.up, - Vector2Int.left, - Vector2Int.zero, - new Vector2Int(-1023,-999999), - new Vector2Int(257,12345), - new Vector2Int(0x7fffffff,-12345), - }; - foreach (Vector2Int input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteVector2Int(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Vector2Int output = reader.ReadVector2Int(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestVector3Int() - { - Vector3Int[] inputs = { - Vector3Int.down, - Vector3Int.up, - Vector3Int.left, - Vector3Int.one, - Vector3Int.zero, - new Vector3Int(-1023,-999999,1392), - new Vector3Int(257,12345,-6132), - new Vector3Int(0x7fffffff,-12345,-1), - }; - foreach (Vector3Int input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteVector3Int(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Vector3Int output = reader.ReadVector3Int(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestColor() - { - Color[] inputs = { - Color.black, - Color.blue, - Color.cyan, - Color.yellow, - Color.magenta, - Color.white, - new Color(0.401f,0.2f,1.0f,0.123f) - }; - foreach (Color input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteColor(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Color output = reader.ReadColor(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestColor32() - { - Color32[] inputs = { - Color.black, - Color.blue, - Color.cyan, - Color.yellow, - Color.magenta, - Color.white, - new Color32(0xab,0xcd,0xef,0x12), - new Color32(125,126,0,255) - }; - foreach (Color32 input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteColor32(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Color32 output = reader.ReadColor32(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestQuaternion() - { - Quaternion[] inputs = { - Quaternion.identity, - default, - Quaternion.LookRotation(new Vector3(0.3f,0.4f,0.5f)), - Quaternion.Euler(45f,56f,Mathf.PI) - }; - foreach (Quaternion input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteQuaternion(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Quaternion output = reader.ReadQuaternion(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestRect() - { - Rect[] inputs = { - Rect.zero, - new Rect(1004.1f,2.001f,4636,400f), - new Rect(-100.622f,-200f,300f,975.6f), - new Rect(-100f,435,-30.04f,400f), - new Rect(55,-200f,-44,-123), - }; - foreach (Rect input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteRect(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Rect output = reader.ReadRect(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestPlane() - { - Plane[] inputs = { - new Plane(new Vector3(-0.24f,0.34f,0.2f), 120.2f), - new Plane(new Vector3(0.133f,0.34f,0.122f), -10.135f), - new Plane(new Vector3(0.133f,-0.0f,float.MaxValue), -13.3f), - new Plane(new Vector3(0.1f,-0.2f,0.3f), 14.5f), - }; - foreach (Plane input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WritePlane(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Plane output = reader.ReadPlane(); - // note: Plane constructor does math internally, resulting in - // floating point precision loss that causes exact comparison - // to fail the test. So we test that the difference is small. - Assert.That((output.normal - input.normal).magnitude, Is.LessThan(1e-6f)); - Assert.That(output.distance, Is.EqualTo(input.distance)); - } - } - - [Test] - public void TestRay() - { - Ray[] inputs = { - new Ray(Vector3.up,Vector3.down), - new Ray(new Vector3(0.1f,0.2f,0.3f), new Vector3(0.4f,0.5f,0.6f)), - new Ray(new Vector3(-0.3f,0.5f,0.999f), new Vector3(1f,100.1f,20f)), - }; - foreach (Ray input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteRay(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Ray output = reader.ReadRay(); - Assert.That((output.direction - input.direction).magnitude, Is.LessThan(1e-6f)); - Assert.That(output.origin, Is.EqualTo(input.origin)); - } - } - - [Test] - public void TestMatrix4x4() - { - Matrix4x4[] inputs = { - Matrix4x4.identity, - Matrix4x4.zero, - Matrix4x4.Scale(Vector3.one * 0.12345f), - Matrix4x4.LookAt(Vector2.up,Vector3.right,Vector3.forward), - Matrix4x4.Rotate(Quaternion.LookRotation(Vector3.one)), - }; - foreach (Matrix4x4 input in inputs) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteMatrix4x4(input); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Matrix4x4 output = reader.ReadMatrix4x4(); - Assert.That(output, Is.EqualTo(input)); - } - } - - [Test] - public void TestReadingInvalidString() - { - // These are all bytes which never show up in valid UTF8 encodings. - // NetworkReader should gracefully handle maliciously crafted input. - byte[] invalidUTF8bytes = { - 0xC0, 0xC1, 0xF5, 0xF6, - 0xF7, 0xF8, 0xF9, 0xFA, - 0xFB, 0xFC, 0xFD, 0xFE, - 0xFF, - }; - foreach (byte invalid in invalidUTF8bytes) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteString("an uncorrupted string"); - byte[] data = writer.ToArray(); - data[10] = invalid; - NetworkReader reader = new NetworkReader(data); - Assert.Throws(() => reader.ReadString()); - } - } - - [Test] - public void TestReadingTruncatedString() - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteString("a string longer than 10 bytes"); - writer.SetLength(10); - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.Throws(() => reader.ReadString()); - } - - [Test] - public void TestToArray() - { - // write 2 bytes - NetworkWriter writer = new NetworkWriter(); - writer.WriteByte((byte)1); - writer.WriteByte((byte)2); - - // .ToArray() length is 2? - Assert.That(writer.ToArray().Length, Is.EqualTo(2)); - - // set position back by one - writer.Position = 1; - - // Changing the position should not alter the size of the data - Assert.That(writer.ToArray().Length, Is.EqualTo(2)); - } - - [Test] - public void TestToArraySegment() - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteString("hello"); - writer.WriteString("world"); - - NetworkReader reader = new NetworkReader(writer.ToArraySegment()); - Assert.That(reader.ReadString(), Is.EqualTo("hello")); - Assert.That(reader.ReadString(), Is.EqualTo("world")); - } - - [Test] - public void TestChar() - { - char a = 'a'; - char u = 'ⓤ'; - - NetworkWriter writer = new NetworkWriter(); - writer.WriteChar(a); - writer.WriteChar(u); - NetworkReader reader = new NetworkReader(writer.ToArray()); - char a2 = reader.ReadChar(); - Assert.That(a2, Is.EqualTo(a)); - char u2 = reader.ReadChar(); - Assert.That(u2, Is.EqualTo(u)); - } - - [Test] - public void TestUnicodeString() - { - string[] weirdUnicode = { - "𝔲𝔫𝔦𝔠𝔬𝔡𝔢 𝔱𝔢𝔰𝔱", - "𝖚𝖓𝖎𝖈𝖔𝖉𝖊 𝖙𝖊𝖘𝖙", - "𝐮𝐧𝐢𝐜𝐨𝐝𝐞 𝐭𝐞𝐬𝐭", - "𝘶𝘯𝘪𝘤𝘰𝘥𝘦 𝘵𝘦𝘴𝘵", - "𝙪𝙣𝙞𝙘𝙤𝙙𝙚 𝙩𝙚𝙨𝙩", - "𝚞𝚗𝚒𝚌𝚘𝚍𝚎 𝚝𝚎𝚜𝚝", - "𝓊𝓃𝒾𝒸𝑜𝒹𝑒 𝓉𝑒𝓈𝓉", - "𝓾𝓷𝓲𝓬𝓸𝓭𝓮 𝓽𝓮𝓼𝓽", - "𝕦𝕟𝕚𝕔𝕠𝕕𝕖 𝕥𝕖𝕤𝕥", - "ЦПIᄃӨDΣ ƬΣƧƬ", - "ㄩ几丨匚ㄖᗪ乇 ㄒ乇丂ㄒ", - "ひ刀ノᄃのり乇 イ乇丂イ", - "Ʉ₦ł₵ØĐɆ ₮Ɇ₴₮", - "unicode test", - "ᴜɴɪᴄᴏᴅᴇ ᴛᴇꜱᴛ", - "ʇsǝʇ ǝpoɔıun", - "ยภเς๏๔є ՇєรՇ", - "ᑘᘉᓰᑢᓍᕲᘿ ᖶᘿSᖶ", - "υɳιƈσԃҽ ƚҽʂƚ", - "ʊռɨƈօɖɛ ȶɛֆȶ", - "🆄🅽🅸🅲🅾🅳🅴 🆃🅴🆂🆃", - "ⓤⓝⓘⓒⓞⓓⓔ ⓣⓔⓢⓣ", - "̶̝̳̥͈͖̝͌̈͛̽͊̏̚͠", - // test control codes - "\r\n", "\n", "\r", "\t", - "\\", "\"", "\'", - "\u0000\u0001\u0002\u0003", - "\u0004\u0005\u0006\u0007", - "\u0008\u0009\u000A\u000B", - "\u000C\u000D\u000E\u000F", - // test invalid bytes as characters - "\u00C0\u00C1\u00F5\u00F6", - "\u00F7\u00F8\u00F9\u00FA", - "\u00FB\u00FC\u00FD\u00FE", - "\u00FF", - }; - foreach (string weird in weirdUnicode) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteString(weird); - byte[] data = writer.ToArray(); - NetworkReader reader = new NetworkReader(data); - string str = reader.ReadString(); - Assert.That(str, Is.EqualTo(weird)); - } - } - - [Test] - public void TestPackedUInt32() - { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedUInt32(0); - writer.WritePackedUInt32(234); - writer.WritePackedUInt32(2284); - writer.WritePackedUInt32(67821); - writer.WritePackedUInt32(16777210); - writer.WritePackedUInt32(16777219); - writer.WritePackedUInt32(uint.MaxValue); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(0)); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(234)); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(2284)); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(67821)); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(16777210)); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(16777219)); - Assert.That(reader.ReadPackedUInt32(), Is.EqualTo(uint.MaxValue)); - } - - [Test] - public void TestPackedUInt32Failure() - { - Assert.Throws(() => { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedUInt64(1099511627775); - NetworkReader reader = new NetworkReader(writer.ToArray()); - reader.ReadPackedUInt32(); - }); - Assert.Throws(() => { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedUInt64(281474976710655); - NetworkReader reader = new NetworkReader(writer.ToArray()); - reader.ReadPackedUInt32(); - }); - Assert.Throws(() => { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedUInt64(72057594037927935); - NetworkReader reader = new NetworkReader(writer.ToArray()); - reader.ReadPackedUInt32(); - }); - } - - [Test] - public void TestPackedInt32() - { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedInt32(0); - writer.WritePackedInt32(234); - writer.WritePackedInt32(2284); - writer.WritePackedInt32(67821); - writer.WritePackedInt32(16777210); - writer.WritePackedInt32(16777219); - writer.WritePackedInt32(int.MaxValue); - writer.WritePackedInt32(-1); - writer.WritePackedInt32(-234); - writer.WritePackedInt32(-2284); - writer.WritePackedInt32(-67821); - writer.WritePackedInt32(-16777210); - writer.WritePackedInt32(-16777219); - writer.WritePackedInt32(int.MinValue); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(0)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(234)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(2284)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(67821)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(16777210)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(16777219)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(int.MaxValue)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(-1)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(-234)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(-2284)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(-67821)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(-16777210)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(-16777219)); - Assert.That(reader.ReadPackedInt32(), Is.EqualTo(int.MinValue)); - } - - [Test] - public void TestPackedInt32Failure() - { - Assert.Throws(() => { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedInt64(1099511627775); - NetworkReader reader = new NetworkReader(writer.ToArray()); - reader.ReadPackedInt32(); - }); - Assert.Throws(() => { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedInt64(281474976710655); - NetworkReader reader = new NetworkReader(writer.ToArray()); - reader.ReadPackedInt32(); - }); - Assert.Throws(() => { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedInt64(72057594037927935); - NetworkReader reader = new NetworkReader(writer.ToArray()); - reader.ReadPackedInt32(); - }); - } - - [Test] - public void TestPackedUInt64() - { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedUInt64(0); - writer.WritePackedUInt64(234); - writer.WritePackedUInt64(2284); - writer.WritePackedUInt64(67821); - writer.WritePackedUInt64(16777210); - writer.WritePackedUInt64(16777219); - writer.WritePackedUInt64(4294967295); - writer.WritePackedUInt64(1099511627775); - writer.WritePackedUInt64(281474976710655); - writer.WritePackedUInt64(72057594037927935); - writer.WritePackedUInt64(ulong.MaxValue); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(0)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(234)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(2284)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(67821)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(16777210)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(16777219)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(4294967295)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(1099511627775)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(281474976710655)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(72057594037927935)); - Assert.That(reader.ReadPackedUInt64(), Is.EqualTo(ulong.MaxValue)); - } - - [Test] - public void TestPackedInt64() - { - NetworkWriter writer = new NetworkWriter(); - writer.WritePackedInt64(0); - writer.WritePackedInt64(234); - writer.WritePackedInt64(2284); - writer.WritePackedInt64(67821); - writer.WritePackedInt64(16777210); - writer.WritePackedInt64(16777219); - writer.WritePackedInt64(4294967295); - writer.WritePackedInt64(1099511627775); - writer.WritePackedInt64(281474976710655); - writer.WritePackedInt64(72057594037927935); - writer.WritePackedInt64(long.MaxValue); - writer.WritePackedInt64(-1); - writer.WritePackedInt64(-234); - writer.WritePackedInt64(-2284); - writer.WritePackedInt64(-67821); - writer.WritePackedInt64(-16777210); - writer.WritePackedInt64(-16777219); - writer.WritePackedInt64(-4294967295); - writer.WritePackedInt64(-1099511627775); - writer.WritePackedInt64(-281474976710655); - writer.WritePackedInt64(-72057594037927935); - writer.WritePackedInt64(long.MinValue); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(0)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(234)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(2284)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(67821)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(16777210)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(16777219)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(4294967295)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(1099511627775)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(281474976710655)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(72057594037927935)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(long.MaxValue)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-1)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-234)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-2284)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-67821)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-16777210)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-16777219)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-4294967295)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-1099511627775)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-281474976710655)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(-72057594037927935)); - Assert.That(reader.ReadPackedInt64(), Is.EqualTo(long.MinValue)); - } - - [Test] - public void TestGuid() - { - Guid originalGuid = new Guid("0123456789abcdef9876543210fedcba"); - NetworkWriter writer = new NetworkWriter(); - writer.WriteGuid(originalGuid); - - NetworkReader reader = new NetworkReader(writer.ToArray()); - Guid readGuid = reader.ReadGuid(); - Assert.That(readGuid, Is.EqualTo(originalGuid)); - } - - [Test] - public void TestFloats() - { - float[] weirdFloats = { - 0f, - -0f, - float.Epsilon, - -float.Epsilon, - float.MaxValue, - float.MinValue, - float.NaN, - -float.NaN, - float.PositiveInfinity, - float.NegativeInfinity, - (float) double.MaxValue, - (float) double.MinValue, - (float) decimal.MaxValue, - (float) decimal.MinValue, - (float) Math.PI, - (float) Math.E - }; - foreach (float weird in weirdFloats) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteSingle(weird); - NetworkReader reader = new NetworkReader(writer.ToArray()); - float readFloat = reader.ReadSingle(); - Assert.That(readFloat, Is.EqualTo(weird)); - } - } - - [Test] - public void TestDoubles() - { - double[] weirdDoubles = { - 0d, - -0d, - double.Epsilon, - -double.Epsilon, - double.MaxValue, - double.MinValue, - double.NaN, - -double.NaN, - double.PositiveInfinity, - double.NegativeInfinity, - float.MaxValue, - float.MinValue, - (double) decimal.MaxValue, - (double) decimal.MinValue, - Math.PI, - Math.E - }; - foreach (double weird in weirdDoubles) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteDouble(weird); - NetworkReader reader = new NetworkReader(writer.ToArray()); - double readDouble = reader.ReadDouble(); - Assert.That(readDouble, Is.EqualTo(weird)); - } - } - - [Test] - public void TestDecimals() - { - decimal[] weirdDecimals = { - decimal.Zero, - -decimal.Zero, - decimal.MaxValue, - decimal.MinValue, - (decimal) Math.PI, - (decimal) Math.E - }; - foreach (decimal weird in weirdDecimals) - { - NetworkWriter writer = new NetworkWriter(); - writer.WriteDecimal(weird); - NetworkReader reader = new NetworkReader(writer.ToArray()); - decimal readDecimal = reader.ReadDecimal(); - Assert.That(readDecimal, Is.EqualTo(weird)); - } - } - - [Test] - public void TestFloatBinaryCompatibility() - { - float[] weirdFloats = { - ((float) Math.PI) / 3.0f, - ((float) Math.E) / 3.0f - }; - byte[] expected = { - 146, 10,134, 63, - 197,245,103, 63, - }; - NetworkWriter writer = new NetworkWriter(); - foreach (float weird in weirdFloats) - { - writer.WriteSingle(weird); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestDoubleBinaryCompatibility() - { - double[] weirdDoubles = { - Math.PI / 3.0d, - Math.E / 3.0d - }; - byte[] expected = { - 101,115, 45, 56, 82,193,240, 63, - 140,116,112,185,184,254,236, 63, - }; - NetworkWriter writer = new NetworkWriter(); - foreach (double weird in weirdDoubles) - { - writer.WriteDouble(weird); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestDecimalBinaryCompatibility() - { - decimal[] weirdDecimals = { - ((decimal) Math.PI) / 3.0m, - ((decimal) Math.E) / 3.0m - }; - byte[] expected = { - 0x00, 0x00, 0x1C, 0x00, 0x12, 0x37, 0xD6, 0x21, 0xAB, 0xEA, - 0x84, 0x0A, 0x5B, 0x5E, 0xB1, 0x03, 0x00, 0x00, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x6D, 0xC2, 0xA4, 0x68, 0x52, - 0x00, 0x00 - }; - NetworkWriter writer = new NetworkWriter(); - foreach (decimal weird in weirdDecimals) - { - writer.WriteDecimal(weird); - } - //Debug.Log(BitConverter.ToString(writer.ToArray())); - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestByteEndianness() - { - byte[] values = {0x12,0x43,0x00,0xff,0xab,0x02,0x20}; - byte[] expected = {0x12,0x43,0x00,0xff,0xab,0x02,0x20}; - NetworkWriter writer = new NetworkWriter(); - foreach (byte value in values) - { - writer.WriteByte(value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestUShortEndianness() - { - ushort[] values = {0x0000,0x1234,0xabcd,0xF00F,0x0FF0,0xbeef}; - byte[] expected = {0x00,0x00,0x34,0x12,0xcd,0xab,0x0F,0xF0,0xF0,0x0F,0xef,0xbe}; - NetworkWriter writer = new NetworkWriter(); - foreach (ushort value in values) - { - writer.WriteUInt16(value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestUIntEndianness() - { - uint[] values = {0x12345678,0xabcdef09,0xdeadbeef}; - byte[] expected = {0x78,0x56,0x34,0x12,0x09,0xef,0xcd,0xab,0xef,0xbe,0xad,0xde}; - NetworkWriter writer = new NetworkWriter(); - foreach (uint value in values) - { - writer.WriteUInt32(value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestULongEndianness() - { - ulong[] values = {0x0123456789abcdef,0xdeaded_beef_c0ffee}; - byte[] expected = {0xef,0xcd,0xab,0x89,0x67,0x45,0x23,0x01,0xee,0xff,0xc0,0xef,0xbe,0xed,0xad,0xde}; - NetworkWriter writer = new NetworkWriter(); - foreach (ulong value in values) - { - writer.WriteUInt64(value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestSbyteEndianness() - { - byte[] values = {0x12,0x43,0x00,0xff,0xab,0x02,0x20}; - byte[] expected = {0x12,0x43,0x00,0xff,0xab,0x02,0x20}; - NetworkWriter writer = new NetworkWriter(); - foreach (byte value in values) - { - writer.WriteSByte((sbyte) value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestShortEndianness() - { - ushort[] values = {0x0000,0x1234,0xabcd,0xF00F,0x0FF0,0xbeef}; - byte[] expected = {0x00,0x00,0x34,0x12,0xcd,0xab,0x0F,0xF0,0xF0,0x0F,0xef,0xbe}; - NetworkWriter writer = new NetworkWriter(); - foreach (ushort value in values) - { - writer.WriteInt16((short) value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestIntEndianness() - { - uint[] values = {0x12345678,0xabcdef09,0xdeadbeef}; - byte[] expected = {0x78,0x56,0x34,0x12,0x09,0xef,0xcd,0xab,0xef,0xbe,0xad,0xde}; - NetworkWriter writer = new NetworkWriter(); - foreach (uint value in values) - { - writer.WriteInt32((int) value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestLongEndianness() - { - ulong[] values = {0x0123456789abcdef,0xdeaded_beef_c0ffee}; - byte[] expected = {0xef,0xcd,0xab,0x89,0x67,0x45,0x23,0x01,0xee,0xff,0xc0,0xef,0xbe,0xed,0xad,0xde}; - NetworkWriter writer = new NetworkWriter(); - foreach (ulong value in values) - { - writer.WriteInt64((long) value); - } - Assert.That(writer.ToArray(), Is.EqualTo(expected)); - } - - [Test] - public void TestWritingAndReading() - { - // write all simple types once - NetworkWriter writer = new NetworkWriter(); - writer.WriteChar((char)1); - writer.WriteByte((byte)2); - writer.WriteSByte((sbyte)3); - writer.WriteBoolean(true); - writer.WriteInt16((short)4); - writer.WriteUInt16((ushort)5); - writer.WriteInt32(6); - writer.WriteUInt32(7U); - writer.WriteInt64(8L); - writer.WriteUInt64(9UL); - writer.WriteSingle(10.0F); - writer.WriteDouble(11.0D); - writer.WriteDecimal((decimal)12); - writer.WriteString((string)null); - writer.WriteString(""); - writer.WriteString("13"); - writer.WriteBytes(new byte[] { 14, 15 }, 0, 2); // just the byte array, no size info etc. - writer.WriteBytesAndSize((byte[])null); // [SyncVar] struct values can have uninitialized byte arrays, null needs to be supported - writer.WriteBytesAndSize(new byte[] { 17, 18 }, 0, 2); // buffer, no-offset, count - writer.WriteBytesAndSize(new byte[] { 19, 20, 21 }, 1, 2); // buffer, offset, count - writer.WriteBytesAndSize(new byte[] { 22, 23 }, 0, 2); // size, buffer - - // read them - NetworkReader reader = new NetworkReader(writer.ToArray()); - - Assert.That(reader.ReadChar(), Is.EqualTo(1)); - Assert.That(reader.ReadByte(), Is.EqualTo(2)); - Assert.That(reader.ReadSByte(), Is.EqualTo(3)); - Assert.That(reader.ReadBoolean(), Is.True); - Assert.That(reader.ReadInt16(), Is.EqualTo(4)); - Assert.That(reader.ReadUInt16(), Is.EqualTo(5)); - Assert.That(reader.ReadInt32(), Is.EqualTo(6)); - Assert.That(reader.ReadUInt32(), Is.EqualTo(7)); - Assert.That(reader.ReadInt64(), Is.EqualTo(8)); - Assert.That(reader.ReadUInt64(), Is.EqualTo(9)); - Assert.That(reader.ReadSingle(), Is.EqualTo(10)); - Assert.That(reader.ReadDouble(), Is.EqualTo(11)); - Assert.That(reader.ReadDecimal(), Is.EqualTo(12)); - Assert.That(reader.ReadString(), Is.Null); // writing null string should write null in Mirror ("" in original HLAPI) - Assert.That(reader.ReadString(), Is.EqualTo("")); - Assert.That(reader.ReadString(), Is.EqualTo("13")); - - Assert.That(reader.ReadBytes(2), Is.EqualTo(new byte[] { 14, 15 })); - - Assert.That(reader.ReadBytesAndSize(), Is.Null); - - Assert.That(reader.ReadBytesAndSize(), Is.EqualTo(new byte[] { 17, 18 })); - - Assert.That(reader.ReadBytesAndSize(), Is.EqualTo(new byte[] { 20, 21 })); - - Assert.That(reader.ReadBytesAndSize(), Is.EqualTo(new byte[] { 22, 23 })); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs.meta deleted file mode 100644 index 394706e..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/NetworkWriterTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 9f7c59e9071cf4a64a9bd207465e3f1b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs deleted file mode 100644 index 825341b..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs +++ /dev/null @@ -1,233 +0,0 @@ -using System; -using System.Collections.Generic; -using NUnit.Framework; - -namespace Mirror.Tests -{ - [TestFixture] - public class SyncDictionaryTest - { - public class SyncDictionaryIntString : SyncDictionary {} - - SyncDictionaryIntString serverSyncDictionary; - SyncDictionaryIntString clientSyncDictionary; - - void SerializeAllTo(T fromList, T toList) where T : SyncObject - { - NetworkWriter writer = new NetworkWriter(); - fromList.OnSerializeAll(writer); - NetworkReader reader = new NetworkReader(writer.ToArray()); - toList.OnDeserializeAll(reader); - } - - void SerializeDeltaTo(T fromList, T toList) where T : SyncObject - { - NetworkWriter writer = new NetworkWriter(); - fromList.OnSerializeDelta(writer); - NetworkReader reader = new NetworkReader(writer.ToArray()); - toList.OnDeserializeDelta(reader); - fromList.Flush(); - } - - [SetUp] - public void SetUp() - { - serverSyncDictionary = new SyncDictionaryIntString(); - clientSyncDictionary = new SyncDictionaryIntString(); - - // add some data to the list - serverSyncDictionary.Add(0, "Hello"); - serverSyncDictionary.Add(1, "World"); - serverSyncDictionary.Add(2, "!"); - SerializeAllTo(serverSyncDictionary, clientSyncDictionary); - } - - [Test] - public void TestInit() - { - Dictionary comparer = new Dictionary - { - [0] = "Hello", - [1] = "World", - [2] = "!" - }; - Assert.That(clientSyncDictionary[0], Is.EqualTo("Hello")); - Assert.That(clientSyncDictionary, Is.EquivalentTo(comparer)); - } - - [Test] - public void TestAdd() - { - serverSyncDictionary.Add(4, "yay"); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.ContainsKey(4), Is.EqualTo(true)); - Assert.That(clientSyncDictionary[4], Is.EqualTo("yay")); - } - - [Test] - public void TestClear() - { - serverSyncDictionary.Clear(); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(serverSyncDictionary, Is.EquivalentTo(new SyncDictionaryIntString())); - } - - [Test] - public void TestSet() - { - serverSyncDictionary[1] = "yay"; - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.ContainsKey(1)); - Assert.That(clientSyncDictionary[1], Is.EqualTo("yay")); - } - - [Test] - public void TestBareSet() - { - serverSyncDictionary[4] = "yay"; - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.ContainsKey(4)); - Assert.That(clientSyncDictionary[4], Is.EqualTo("yay")); - } - - [Test] - public void TestBareSetNull() - { - serverSyncDictionary[4] = null; - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary[4], Is.Null); - Assert.That(clientSyncDictionary.ContainsKey(4)); - } - - [Test] - public void TestConsecutiveSet() - { - serverSyncDictionary[1] = "yay"; - serverSyncDictionary[1] = "world"; - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary[1], Is.EqualTo("world")); - } - - [Test] - public void TestNullSet() - { - serverSyncDictionary[1] = null; - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.ContainsKey(1)); - Assert.That(clientSyncDictionary[1], Is.Null); - } - - [Test] - public void TestRemove() - { - serverSyncDictionary.Remove(1); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.ContainsKey(1), Is.False); - } - - [Test] - public void TestMultSync() - { - serverSyncDictionary.Add(10, "1"); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - // add some delta and see if it applies - serverSyncDictionary.Add(11, "2"); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.ContainsKey(10)); - Assert.That(clientSyncDictionary[10], Is.EqualTo("1")); - Assert.That(clientSyncDictionary.ContainsKey(11)); - Assert.That(clientSyncDictionary[11], Is.EqualTo("2")); - } - - [Test] - public void TestContains() - { - Assert.That(!clientSyncDictionary.Contains(new KeyValuePair(2, "Hello"))); - serverSyncDictionary[2] = "Hello"; - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(clientSyncDictionary.Contains(new KeyValuePair(2, "Hello"))); - } - - [Test] - public void CallbackTest() - { - bool called = false; - clientSyncDictionary.Callback += (op, index, item) => - { - called = true; - - Assert.That(op, Is.EqualTo(SyncDictionaryIntString.Operation.OP_ADD)); - Assert.That(index, Is.EqualTo(3)); - Assert.That(item, Is.EqualTo("yay")); - }; - serverSyncDictionary.Add(3, "yay"); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(called, Is.True); - } - - [Test] - public void CallbackRemoveTest() - { - bool called = false; - clientSyncDictionary.Callback += (op, key, item) => - { - called = true; - Assert.That(op, Is.EqualTo(SyncDictionaryIntString.Operation.OP_REMOVE)); - Assert.That(item, Is.EqualTo("World")); - }; - serverSyncDictionary.Remove(1); - SerializeDeltaTo(serverSyncDictionary, clientSyncDictionary); - Assert.That(called, Is.True); - } - - [Test] - public void CountTest() - { - Assert.That(serverSyncDictionary.Count, Is.EqualTo(3)); - } - - [Test] - public void ReadOnlyTest() - { - Assert.That(serverSyncDictionary.IsReadOnly, Is.False); - } - - [Test] - public void DirtyTest() - { - SyncDictionaryIntString serverList = new SyncDictionaryIntString(); - SyncDictionaryIntString clientList = new SyncDictionaryIntString(); - - // nothing to send - Assert.That(serverList.IsDirty, Is.False); - - // something has changed - serverList.Add(15, "yay"); - Assert.That(serverList.IsDirty, Is.True); - SerializeDeltaTo(serverList, clientList); - - // data has been flushed, should go back to clear - Assert.That(serverList.IsDirty, Is.False); - } - - [Test] - public void ReadonlyTest() - { - SyncDictionaryIntString serverList = new SyncDictionaryIntString(); - SyncDictionaryIntString clientList = new SyncDictionaryIntString(); - - // data has been flushed, should go back to clear - Assert.That(clientList.IsReadOnly, Is.False); - - serverList.Add(20, "yay"); - serverList.Add(30, "hello"); - serverList.Add(35, "world"); - SerializeDeltaTo(serverList, clientList); - - // client list should now lock itself, trying to modify it - // should produce an InvalidOperationException - Assert.That(clientList.IsReadOnly, Is.True); - Assert.Throws(() => clientList.Add(50, "fail")); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs.meta deleted file mode 100644 index 552e96d..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncDictionaryTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: cadf48c3662efac4181b91f5c9c88774 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs deleted file mode 100644 index 61c50ce..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs +++ /dev/null @@ -1,293 +0,0 @@ -using System; -using NUnit.Framework; - -namespace Mirror.Tests -{ - [TestFixture] - public class SyncListTest - { - SyncListString serverSyncList; - SyncListString clientSyncList; - - void SerializeAllTo(T fromList, T toList) where T: SyncObject - { - NetworkWriter writer = new NetworkWriter(); - fromList.OnSerializeAll(writer); - NetworkReader reader = new NetworkReader(writer.ToArray()); - toList.OnDeserializeAll(reader); - } - - void SerializeDeltaTo(T fromList, T toList) where T : SyncObject - { - NetworkWriter writer = new NetworkWriter(); - fromList.OnSerializeDelta(writer); - NetworkReader reader = new NetworkReader(writer.ToArray()); - toList.OnDeserializeDelta(reader); - fromList.Flush(); - } - - [SetUp] - public void SetUp() - { - serverSyncList = new SyncListString(); - clientSyncList = new SyncListString(); - - // add some data to the list - serverSyncList.Add("Hello"); - serverSyncList.Add("World"); - serverSyncList.Add("!"); - SerializeAllTo(serverSyncList, clientSyncList); - } - - [Test] - public void TestInit() - { - Assert.That(clientSyncList, Is.EquivalentTo(new []{"Hello", "World", "!"})); - } - - [Test] - public void TestAdd() - { - serverSyncList.Add("yay"); - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", "World", "!", "yay" })); - } - - [Test] - public void TestClear() - { - serverSyncList.Clear(); - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new string[] {})); - } - - [Test] - public void TestInsert() - { - serverSyncList.Insert(0,"yay"); - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new[] {"yay", "Hello", "World", "!" })); - } - - [Test] - public void TestSet() - { - serverSyncList[1] = "yay"; - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList[1], Is.EqualTo("yay")); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", "yay", "!" })); - } - - [Test] - public void TestSetNull() - { - serverSyncList[1] = null; - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList[1], Is.EqualTo(null)); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", null, "!" })); - serverSyncList[1] = "yay"; - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", "yay", "!" })); - } - - [Test] - public void TestRemoveAt() - { - serverSyncList.RemoveAt(1); - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", "!" })); - } - - [Test] - public void TestRemove() - { - serverSyncList.Remove("World"); - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", "!" })); - } - - [Test] - public void TestFindIndex() - { - int index = serverSyncList.FindIndex(entry => entry == "World"); - Assert.That(index, Is.EqualTo(1)); - } - - [Test] - public void TestMultSync() - { - serverSyncList.Add("1"); - SerializeDeltaTo(serverSyncList, clientSyncList); - // add some delta and see if it applies - serverSyncList.Add("2"); - SerializeDeltaTo(serverSyncList, clientSyncList); - Assert.That(clientSyncList, Is.EquivalentTo(new[] { "Hello", "World", "!", "1","2" })); - } - - [Test] - public void SyncListIntTest() - { - SyncListInt serverList = new SyncListInt(); - SyncListInt clientList = new SyncListInt(); - - serverList.Add(1); - serverList.Add(2); - serverList.Add(3); - SerializeDeltaTo(serverList, clientList); - - Assert.That(clientList, Is.EquivalentTo(new [] {1,2,3})); - } - - [Test] - public void SyncListBoolTest() - { - SyncListBool serverList = new SyncListBool(); - SyncListBool clientList = new SyncListBool(); - - serverList.Add(true); - serverList.Add(false); - serverList.Add(true); - SerializeDeltaTo(serverList, clientList); - - Assert.That(clientList, Is.EquivalentTo(new[] { true, false, true })); - } - - [Test] - public void SyncListUintTest() - { - SyncListUInt serverList = new SyncListUInt(); - SyncListUInt clientList = new SyncListUInt(); - - serverList.Add(1U); - serverList.Add(2U); - serverList.Add(3U); - SerializeDeltaTo(serverList, clientList); - - Assert.That(clientList, Is.EquivalentTo(new[] { 1U, 2U, 3U })); - } - - [Test] - public void SyncListFloatTest() - { - SyncListFloat serverList = new SyncListFloat(); - SyncListFloat clientList = new SyncListFloat(); - - serverList.Add(1.0F); - serverList.Add(2.0F); - serverList.Add(3.0F); - SerializeDeltaTo(serverList, clientList); - - Assert.That(clientList, Is.EquivalentTo(new[] { 1.0F, 2.0F, 3.0F })); - } - - [Test] - public void CallbackTest() - { - bool called = false; - - clientSyncList.Callback += (op, index, item) => - { - called = true; - - Assert.That(op, Is.EqualTo(SyncList.Operation.OP_ADD)); - Assert.That(index, Is.EqualTo(3)); - Assert.That(item, Is.EqualTo("yay")); - }; - - serverSyncList.Add("yay"); - SerializeDeltaTo(serverSyncList, clientSyncList); - - - Assert.That(called, Is.True); - } - - [Test] - public void CallbackRemoveTest() - { - bool called = false; - - clientSyncList.Callback += (op, index, item) => - { - called = true; - - Assert.That(op, Is.EqualTo(SyncList.Operation.OP_REMOVE)); - Assert.That(item, Is.EqualTo("World")); - }; - serverSyncList.Remove("World"); - SerializeDeltaTo(serverSyncList, clientSyncList); - - Assert.That(called, Is.True); - } - - [Test] - public void CallbackRemoveAtTest() - { - bool called = false; - - clientSyncList.Callback += (op, index, item) => - { - called = true; - - Assert.That(op, Is.EqualTo(SyncList.Operation.OP_REMOVEAT)); - Assert.That(index, Is.EqualTo(1)); - Assert.That(item, Is.EqualTo("World")); - }; - - serverSyncList.RemoveAt(1); - SerializeDeltaTo(serverSyncList, clientSyncList); - - Assert.That(called, Is.True); - } - - [Test] - public void CountTest() - { - Assert.That(serverSyncList.Count, Is.EqualTo(3)); - } - - [Test] - public void ReadOnlyTest() - { - Assert.That(serverSyncList.IsReadOnly, Is.False); - } - - [Test] - public void DirtyTest() - { - SyncListInt serverList = new SyncListInt(); - SyncListInt clientList = new SyncListInt(); - - // nothing to send - Assert.That(serverList.IsDirty, Is.False); - - // something has changed - serverList.Add(1); - Assert.That(serverList.IsDirty, Is.True); - SerializeDeltaTo(serverList, clientList); - - // data has been flushed, should go back to clear - Assert.That(serverList.IsDirty, Is.False); - } - - [Test] - public void ReadonlyTest() - { - SyncListUInt serverList = new SyncListUInt(); - SyncListUInt clientList = new SyncListUInt(); - - // data has been flushed, should go back to clear - Assert.That(clientList.IsReadOnly, Is.False); - - serverList.Add(1U); - serverList.Add(2U); - serverList.Add(3U); - SerializeDeltaTo(serverList, clientList); - - // client list should now lock itself, trying to modify it - // should produce an InvalidOperationException - Assert.That(clientList.IsReadOnly, Is.True); - Assert.Throws(() => { clientList.Add(5U); }); - - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs.meta deleted file mode 100644 index 9b55701..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncListTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: a937d4274ff484d769209f2e0b0c1d8a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs deleted file mode 100644 index e031835..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs +++ /dev/null @@ -1,274 +0,0 @@ -using System; -using System.Collections.Generic; -using NUnit.Framework; - -namespace Mirror.Tests -{ - [TestFixture] - public class SyncSetTest - { - public class SyncSetString : SyncHashSet {} - - SyncSetString serverSyncSet; - SyncSetString clientSyncSet; - - void SerializeAllTo(T fromList, T toList) where T : SyncObject - { - NetworkWriter writer = new NetworkWriter(); - fromList.OnSerializeAll(writer); - NetworkReader reader = new NetworkReader(writer.ToArray()); - toList.OnDeserializeAll(reader); - } - - void SerializeDeltaTo(T fromList, T toList) where T : SyncObject - { - NetworkWriter writer = new NetworkWriter(); - fromList.OnSerializeDelta(writer); - NetworkReader reader = new NetworkReader(writer.ToArray()); - toList.OnDeserializeDelta(reader); - fromList.Flush(); - } - - [SetUp] - public void SetUp() - { - serverSyncSet = new SyncSetString(); - clientSyncSet = new SyncSetString(); - - // add some data to the list - serverSyncSet.Add("Hello"); - serverSyncSet.Add("World"); - serverSyncSet.Add("!"); - SerializeAllTo(serverSyncSet, clientSyncSet); - } - - [Test] - public void TestInit() - { - Assert.That(serverSyncSet, Is.EquivalentTo(new[] {"Hello", "World", "!"})); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] {"Hello", "World", "!"})); - } - - [Test] - public void TestAdd() - { - serverSyncSet.Add("yay"); - Assert.That(serverSyncSet.IsDirty, Is.True); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "Hello", "World", "!", "yay" })); - Assert.That(serverSyncSet.IsDirty, Is.False); - } - - [Test] - public void TestClear() - { - serverSyncSet.Clear(); - Assert.That(serverSyncSet.IsDirty, Is.True); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new string[] {})); - Assert.That(serverSyncSet.IsDirty, Is.False); - } - - [Test] - public void TestRemove() - { - serverSyncSet.Remove("World"); - Assert.That(serverSyncSet.IsDirty, Is.True); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "Hello", "!" })); - Assert.That(serverSyncSet.IsDirty, Is.False); - } - - [Test] - public void TestMultSync() - { - serverSyncSet.Add("1"); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - // add some delta and see if it applies - serverSyncSet.Add("2"); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "Hello", "World", "!", "1","2" })); - } - - [Test] - public void CallbackTest() - { - bool called = false; - - clientSyncSet.Callback += (op, item) => - { - called = true; - - Assert.That(op, Is.EqualTo(SyncSetString.Operation.OP_ADD)); - Assert.That(item, Is.EqualTo("yay")); - }; - - serverSyncSet.Add("yay"); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - - Assert.That(called, Is.True); - } - - [Test] - public void CallbackRemoveTest() - { - bool called = false; - - clientSyncSet.Callback += (op, item) => - { - called = true; - - Assert.That(op, Is.EqualTo(SyncSetString.Operation.OP_REMOVE)); - Assert.That(item, Is.EqualTo("World")); - }; - serverSyncSet.Remove("World"); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - - Assert.That(called, Is.True); - } - - [Test] - public void CountTest() - { - Assert.That(serverSyncSet.Count, Is.EqualTo(3)); - } - - [Test] - public void ReadOnlyTest() - { - Assert.That(serverSyncSet.IsReadOnly, Is.False); - } - - [Test] - public void ReadonlyTest() - { - SyncSetString serverList = new SyncSetString(); - SyncSetString clientList = new SyncSetString(); - - // data has been flushed, should go back to clear - Assert.That(clientList.IsReadOnly, Is.False); - - serverList.Add("1"); - serverList.Add("2"); - serverList.Add("3"); - SerializeDeltaTo(serverList, clientList); - - // client list should now lock itself, trying to modify it - // should produce an InvalidOperationException - Assert.That(clientList.IsReadOnly, Is.True); - Assert.Throws(() => { clientList.Add("5"); }); - } - - [Test] - public void TestExceptWith() - { - serverSyncSet.ExceptWith(new[] { "World", "Hello" }); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "!" })); - } - - [Test] - public void TestExceptWithSelf() - { - serverSyncSet.ExceptWith(serverSyncSet); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new String [] {})); - } - - [Test] - public void TestIntersectWith() - { - serverSyncSet.IntersectWith(new[] { "World", "Hello" }); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "World", "Hello" })); - } - - [Test] - public void TestIntersectWithSet() - { - serverSyncSet.IntersectWith(new HashSet { "World", "Hello" }); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "World", "Hello" })); - } - - [Test] - public void TestIsProperSubsetOf() - { - Assert.That(clientSyncSet.IsProperSubsetOf(new[] { "World", "Hello", "!", "pepe" })); - } - - [Test] - public void TestIsProperSubsetOfSet() - { - Assert.That(clientSyncSet.IsProperSubsetOf(new HashSet { "World", "Hello", "!", "pepe" })); - } - - [Test] - public void TestIsNotProperSubsetOf() - { - Assert.That(clientSyncSet.IsProperSubsetOf(new[] { "World", "!", "pepe"}), Is.False); - } - - [Test] - public void TestIsProperSuperSetOf() - { - Assert.That(clientSyncSet.IsProperSupersetOf(new[] { "World", "Hello" })); - } - - [Test] - public void TestIsSubsetOf() - { - Assert.That(clientSyncSet.IsSubsetOf(new[] { "World", "Hello", "!" })); - } - - [Test] - public void TestIsSupersetOf() - { - Assert.That(clientSyncSet.IsSupersetOf(new[] { "World", "Hello" })); - } - - [Test] - public void TestOverlaps() - { - Assert.That(clientSyncSet.Overlaps(new[] { "World", "my", "baby"})); - } - - [Test] - public void TestSetEquals() - { - Assert.That(clientSyncSet.SetEquals(new[] { "World","Hello", "!" })); - } - - [Test] - public void TestSymmetricExceptWith() - { - serverSyncSet.SymmetricExceptWith(new HashSet { "Hello", "is" }); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "World", "is", "!" })); - } - - [Test] - public void TestSymmetricExceptWithSelf() - { - serverSyncSet.SymmetricExceptWith(serverSyncSet); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new String[] { })); - } - - [Test] - public void TestUnionWith() - { - serverSyncSet.UnionWith(new HashSet { "Hello", "is" }); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "World", "Hello", "is", "!" })); - } - - [Test] - public void TestUnionWithSelf() - { - serverSyncSet.UnionWith(serverSyncSet); - SerializeDeltaTo(serverSyncSet, clientSyncSet); - Assert.That(clientSyncSet, Is.EquivalentTo(new[] { "World", "Hello", "!" })); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs.meta deleted file mode 100644 index 7411ffe..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncSetTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 36dbb64593fa546edb477df3d88b6e1a -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs deleted file mode 100644 index c08b2cb..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs +++ /dev/null @@ -1,163 +0,0 @@ -using UnityEngine; -using System.Collections; -using Mirror; -using NUnit.Framework; - -namespace Mirror.Tests -{ - - class MockPlayer : NetworkBehaviour - { - public struct Guild - { - public string name; - } - - [SyncVar] - public Guild guild; - - } - - - public class SyncVarTest - { - - [Test] - public void TestSettingStruct() - { - - GameObject gameObject = new GameObject(); - - MockPlayer player = gameObject.AddComponent(); - - // synchronize immediatelly - player.syncInterval = 0f; - - Assert.That(player.IsDirty(), Is.False, "First time object should not be dirty"); - - MockPlayer.Guild myGuild = new MockPlayer.Guild - { - name = "Back street boys" - }; - - player.guild = myGuild; - - Assert.That(player.IsDirty(), "Setting struct should mark object as dirty"); - player.ClearAllDirtyBits(); - Assert.That(player.IsDirty(), Is.False, "ClearAllDirtyBits() should clear dirty flag"); - - // clearing the guild should set dirty bit too - player.guild = default; - Assert.That(player.IsDirty(), "Clearing struct should mark object as dirty"); - } - - [Test] - public void TestSyncIntervalAndClearDirtyComponents() - { - - GameObject gameObject = new GameObject(); - - MockPlayer player = gameObject.AddComponent(); - player.lastSyncTime = Time.time; - // synchronize immediately - player.syncInterval = 1f; - - player.guild = new MockPlayer.Guild - { - name = "Back street boys" - }; - - Assert.That(player.IsDirty(), Is.False, "Sync interval not met, so not dirty yet"); - - // ClearDirtyComponents should do nothing since syncInterval is not - // elapsed yet - player.netIdentity.ClearDirtyComponentsDirtyBits(); - - // set lastSyncTime far enough back to be ready for syncing - player.lastSyncTime = Time.time - player.syncInterval; - - // should be dirty now - Assert.That(player.IsDirty(), Is.True, "Sync interval met, should be dirty"); - } - - [Test] - public void TestSyncIntervalAndClearAllComponents() - { - - GameObject gameObject = new GameObject(); - - MockPlayer player = gameObject.AddComponent(); - player.lastSyncTime = Time.time; - // synchronize immediately - player.syncInterval = 1f; - - player.guild = new MockPlayer.Guild - { - name = "Back street boys" - }; - - Assert.That(player.IsDirty(), Is.False, "Sync interval not met, so not dirty yet"); - - // ClearAllComponents should clear dirty even if syncInterval not - // elapsed yet - player.netIdentity.ClearAllComponentsDirtyBits(); - - // set lastSyncTime far enough back to be ready for syncing - player.lastSyncTime = Time.time - player.syncInterval; - - // should be dirty now - Assert.That(player.IsDirty(), Is.False, "Sync interval met, should still not be dirty"); - } - - [Test] - public void TestSynchronizingObjects() - { - // set up a "server" object - GameObject gameObject1 = new GameObject(); - NetworkIdentity identity1 = gameObject1.AddComponent(); - MockPlayer player1 = gameObject1.AddComponent(); - MockPlayer.Guild myGuild = new MockPlayer.Guild - { - name = "Back street boys" - }; - player1.guild = myGuild; - - // serialize all the data as we would for the network - NetworkWriter ownerWriter = new NetworkWriter(); - NetworkWriter observersWriter = new NetworkWriter(); // not really used in this Test - identity1.OnSerializeAllSafely(true, ownerWriter, out int ownerWritten, observersWriter, out int observersWritten); - - // set up a "client" object - GameObject gameObject2 = new GameObject(); - NetworkIdentity identity2 = gameObject2.AddComponent(); - MockPlayer player2 = gameObject2.AddComponent(); - - // apply all the data from the server object - NetworkReader reader = new NetworkReader(ownerWriter.ToArray()); - identity2.OnDeserializeAllSafely(reader, true); - - // check that the syncvars got updated - Assert.That(player2.guild.name, Is.EqualTo("Back street boys"), "Data should be synchronized"); - } - - [Test] - public void TestSyncModeObserversMask() - { - GameObject gameObject1 = new GameObject(); - NetworkIdentity identity = gameObject1.AddComponent(); - MockPlayer player1 = gameObject1.AddComponent(); - player1.syncInterval = 0; - MockPlayer player2 = gameObject1.AddComponent(); - player2.syncInterval = 0; - MockPlayer player3 = gameObject1.AddComponent(); - player3.syncInterval = 0; - - // sync mode - player1.syncMode = SyncMode.Observers; - player2.syncMode = SyncMode.Owner; - player3.syncMode = SyncMode.Observers; - - Assert.That(identity.GetSyncModeObserversMask(), Is.EqualTo(0b101)); - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs.meta deleted file mode 100644 index 3bfd55f..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/SyncVarTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 7a1a87ad2c7e74dc69138ba36f583640 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs deleted file mode 100644 index e604b73..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs +++ /dev/null @@ -1,190 +0,0 @@ -using System.IO; -using System.Linq; -using System.Collections.Generic; -using UnityEditor.Compilation; -using UnityEngine; - -namespace Mirror.Tests -{ - public class WeaverAssembler : MonoBehaviour - { - public const string OutputDirectory = "Assets/Mirror/Tests/WeaverTests~/"; - public static string OutputFile { get; set; } - public static HashSet SourceFiles { get; private set; } - public static HashSet ReferenceAssemblies { get; private set; } - public static bool AllowUnsafe { get; set; } - public static List CompilerMessages { get; private set; } - public static bool CompilerErrors { get; private set; } - public static bool DeleteOutputOnClear { get; set; } - - // static constructor to initialize static properties - static WeaverAssembler() - { - SourceFiles = new HashSet(); - ReferenceAssemblies = new HashSet(); - CompilerMessages = new List(); - } - - // Add a range of source files to compile - public static void AddSourceFiles(string[] sourceFiles) - { - foreach (string src in sourceFiles) - { - SourceFiles.Add(OutputDirectory + src); - } - } - - // Add a range of reference files by full path - public static void AddReferencesByFullPath(string[] refAsms) - { - foreach (string asm in refAsms) - { - ReferenceAssemblies.Add(asm); - } - } - - // Add a range of reference files by assembly name only - public static void AddReferencesByAssemblyName(string[] refAsms) - { - foreach (string asm in refAsms) - { - if (FindReferenceAssemblyPath(asm, out string asmFullPath)) - { - ReferenceAssemblies.Add(asmFullPath); - } - } - } - - // Find reference assembly specified by asmName and store its full path in asmFullPath - // do not pass in paths in asmName, just assembly names - public static bool FindReferenceAssemblyPath(string asmName, out string asmFullPath) - { - asmFullPath = ""; - - Assembly[] asms = CompilationPipeline.GetAssemblies(); - foreach (Assembly asm in asms) - { - foreach (string asmRef in asm.compiledAssemblyReferences) - { - if (asmRef.EndsWith(asmName)) - { - asmFullPath = asmRef; - return true; - } - } - } - - return false; - } - - // Add reference (not cleared during calls to Clear) - public static void ClearReferences() - { - ReferenceAssemblies.Clear(); - } - - // Delete output dll / pdb / mdb - public static void DeleteOutput() - { - if (OutputFile.Length < 5) return; // "x.dll" shortest possible dll name - - string projPathFile = OutputDirectory + OutputFile; - - try - { - File.Delete(projPathFile); - - } - catch { } - - try - { - File.Delete(Path.ChangeExtension(projPathFile, ".pdb")); - - } - catch { } - - try - { - File.Delete(Path.ChangeExtension(projPathFile, ".dll.mdb")); - - } - catch { } - } - - // clear all settings except for referenced assemblies (which are cleared with ClearReferences) - public static void Clear() - { - if (DeleteOutputOnClear) - { - DeleteOutput(); - } - - CompilerErrors = false; - OutputFile = ""; - SourceFiles.Clear(); - CompilerMessages.Clear(); - AllowUnsafe = false; - DeleteOutputOnClear = false; - } - - // build synchronously - public static void Build() - { - BuildAssembly(true); - } - - // build asynchronously - this isn't currently used - public static void BuildAsync() - { - BuildAssembly(false); - } - - static void BuildAssembly(bool wait) - { - AssemblyBuilder assemblyBuilder = new AssemblyBuilder(OutputDirectory + OutputFile, SourceFiles.ToArray()); - assemblyBuilder.additionalReferences = ReferenceAssemblies.ToArray(); - if (AllowUnsafe) - { - assemblyBuilder.compilerOptions.AllowUnsafeCode = true; - } - - /*assemblyBuilder.buildStarted += delegate (string assemblyPath) - { - Debug.LogFormat("Assembly build started for {0}", assemblyPath); - };*/ - - assemblyBuilder.buildFinished += delegate (string assemblyPath, CompilerMessage[] compilerMessages) - { - CompilerMessages.AddRange(compilerMessages); - foreach (CompilerMessage cm in compilerMessages) - { - /*if (cm.type == CompilerMessageType.Warning) - { - Debug.LogWarningFormat("{0}:{1} -- {2}", cm.file, cm.line, cm.message); - } - else */if (cm.type == CompilerMessageType.Error) - { - Debug.LogErrorFormat("{0}:{1} -- {2}", cm.file, cm.line, cm.message); - CompilerErrors = true; - } - } - }; - - // Start build of assembly - if (!assemblyBuilder.Build()) - { - Debug.LogErrorFormat("Failed to start build of assembly {0}", assemblyBuilder.assemblyPath); - return; - } - - if (wait) - { - while (assemblyBuilder.status != AssemblyBuilderStatus.Finished) - { - System.Threading.Thread.Sleep(10); - } - } - } - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs.meta deleted file mode 100644 index d41b1b4..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverAssembler.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 049ac5abfba3c0943a2694cd502fcc80 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs deleted file mode 100644 index 2d95af3..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs +++ /dev/null @@ -1,810 +0,0 @@ -//#define LOG_WEAVER_OUTPUTS - -using System.Collections.Generic; -using NUnit.Framework; -using UnityEngine; -using UnityEditor.Compilation; - -using Mirror.Weaver; - -namespace Mirror.Tests -{ - [TestFixture] - public class WeaverTest - { - #region Private - List m_weaverErrors = new List(); - void HandleWeaverError(string msg) - { -#if LOG_WEAVER_OUTPUTS - Debug.LogError(msg); -#endif - m_weaverErrors.Add(msg); - } - - List m_weaverWarnings = new List(); - void HandleWeaverWarning(string msg) - { -#if LOG_WEAVER_OUTPUTS - Debug.LogWarning(msg); -#endif - m_weaverWarnings.Add(msg); - } - - void BuildAndWeaveTestAssembly(string baseName) - { - WeaverAssembler.OutputFile = baseName + ".dll"; - WeaverAssembler.AddSourceFiles(new string[] { baseName + ".cs" }); - WeaverAssembler.Build(); - - Assert.That(WeaverAssembler.CompilerErrors, Is.False); - if (m_weaverErrors.Count > 0) - { - Assert.That(m_weaverErrors[0], Does.StartWith("Mirror.Weaver error: ")); - } - } - #endregion - - #region Setup and Teardown - [OneTimeSetUp] - public void FixtureSetup() - { - // TextRenderingModule is only referenced to use TextMesh type to throw errors about types from another module - WeaverAssembler.AddReferencesByAssemblyName(new string[] { "UnityEngine.dll", "UnityEngine.CoreModule.dll", "UnityEngine.TextRenderingModule.dll", "Mirror.dll" }); - - CompilationFinishedHook.UnityLogEnabled = false; - CompilationFinishedHook.OnWeaverError += HandleWeaverError; - CompilationFinishedHook.OnWeaverWarning += HandleWeaverWarning; - } - - [OneTimeTearDown] - public void FixtureCleanup() - { - CompilationFinishedHook.UnityLogEnabled = true; - } - - [SetUp] - public void TestSetup() - { - BuildAndWeaveTestAssembly(TestContext.CurrentContext.Test.Name); - } - - [TearDown] - public void TestCleanup() - { - WeaverAssembler.DeleteOutputOnClear = true; - WeaverAssembler.Clear(); - - m_weaverWarnings.Clear(); - m_weaverErrors.Clear(); - } - #endregion - - #region General tests - [Test] - public void InvalidType() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.AtLeast(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.AccessViolationException MirrorTest.MirrorTestPlayer/MyStruct::violatedPotato has unsupported type. Use a type supported by Mirror instead")); - } - - [Test] - public void RecursionCount() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.AtLeast(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/Potato1 can't be serialized because it references itself")); - } - - [Test] - public void ClientGuardWrongClass() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [Client] System.Void MirrorTest.MirrorTestPlayer::CantClientGuardInThisClass() must be declared in a NetworkBehaviour")); - } - - [Test] - public void ServerGuardWrongClass() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [Server] System.Void MirrorTest.MirrorTestPlayer::CantServerGuardInThisClass() must be declared in a NetworkBehaviour")); - } - - [Test] - public void GuardCmdWrongClass() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(4)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [Server] System.Void MirrorTest.MirrorTestPlayer::CantServerGuardInThisClass() must be declared in a NetworkBehaviour")); - Assert.That(m_weaverErrors[1], Is.EqualTo("Mirror.Weaver error: [Server] System.Void MirrorTest.MirrorTestPlayer::CantServerCallbackGuardInThisClass() must be declared in a NetworkBehaviour")); - Assert.That(m_weaverErrors[2], Is.EqualTo("Mirror.Weaver error: [Client] System.Void MirrorTest.MirrorTestPlayer::CantClientGuardInThisClass() must be declared in a NetworkBehaviour")); - Assert.That(m_weaverErrors[3], Is.EqualTo("Mirror.Weaver error: [Client] System.Void MirrorTest.MirrorTestPlayer::CantClientCallbackGuardInThisClass() must be declared in a NetworkBehaviour")); - } - - [Test] - public void JaggedArray() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.AtLeast(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Int32[][] is an unsupported type. Jagged and multidimensional arrays are not supported")); - } - #endregion - - #region SyncVar tests - [Test] - public void SyncVarsValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void SyncVarsNoHook() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: No hook implementation found for System.Int32 MirrorTest.MirrorTestPlayer::health. Add this method to your class:\npublic void OnChangeHealth(System.Int32 value) { }")); - } - - [Test] - public void SyncVarsNoHookParams() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::OnChangeHealth() should have signature:\npublic void OnChangeHealth(System.Int32 value) { }")); - } - - [Test] - public void SyncVarsTooManyHookParams() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::OnChangeHealth(System.Int32,System.Int32) should have signature:\npublic void OnChangeHealth(System.Int32 value) { }")); - } - - [Test] - public void SyncVarsWrongHookType() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::OnChangeHealth(System.Boolean) should have signature:\npublic void OnChangeHealth(System.Int32 value) { }")); - } - - [Test] - public void SyncVarsDerivedNetworkBehaviour() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MySyncVar MirrorTest.MirrorTestPlayer::invalidVar has invalid type. SyncVars cannot be NetworkBehaviours")); - } - - [Test] - public void SyncVarsDerivedScriptableObject() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MySyncVar MirrorTest.MirrorTestPlayer::invalidVar has invalid type. SyncVars cannot be scriptable objects")); - } - - [Test] - public void SyncVarsStatic() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Int32 MirrorTest.MirrorTestPlayer::invalidVar cannot be static")); - } - - [Test] - public void SyncVarsGenericParam() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MySyncVar`1 MirrorTest.MirrorTestPlayer::invalidVar has invalid type. SyncVars cannot have generic parameters")); - } - - [Test] - public void SyncVarsInterface() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MySyncVar MirrorTest.MirrorTestPlayer::invalidVar has invalid type. Use a concrete type instead of interface MirrorTest.MirrorTestPlayer/MySyncVar")); - } - - [Test] - public void SyncVarsDifferentModule() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: UnityEngine.TextMesh MirrorTest.MirrorTestPlayer::invalidVar has unsupported type. Use a supported Mirror type instead")); - } - - [Test] - public void SyncVarsCantBeArray() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Int32[] MirrorTest.MirrorTestPlayer::thisShouldntWork has invalid type. Use SyncLists instead of arrays")); - } - - [Test] - public void SyncVarsSyncList() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - Assert.That(m_weaverWarnings.Count, Is.EqualTo(2)); - Assert.That(m_weaverWarnings[0], Does.Match("SyncLists should not be marked with SyncVar")); - Assert.That(m_weaverWarnings[1], Does.Match("SyncLists should not be marked with SyncVar")); - } - - [Test] - public void SyncVarsMoreThan63() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer has too many SyncVars. Consider refactoring your class into multiple components")); - } - #endregion - - #region SyncList tests - [Test] - public void SyncListValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void SyncListMissingParamlessCtor() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/SyncListString2 MirrorTest.MirrorTestPlayer::Foo does not have a default constructor")); - } - - [Test] - public void SyncListByteValid() { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - #endregion - - #region SyncListStruct tests - [Test] - public void SyncListStructValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void SyncListStructGenericGeneric() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MyStructClass cannot have generic elements MirrorTest.MirrorTestPlayer/MyGenericStruct`1")); - } - - [Test] - public void SyncListStructMemberGeneric() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(2)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MyGenericStruct`1 MirrorTest.MirrorTestPlayer/MyStruct::potato has unsupported type. Create a derived class instead of using generics")); - } - - [Test] - public void SyncListStructMemberInterface() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(2)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/IPotato MirrorTest.MirrorTestPlayer/MyStruct::potato has unsupported type. Use a concrete class instead of an interface")); - } - - [Test] - public void SyncListStructMemberBasicType() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(2)); - Assert.That(m_weaverErrors[1], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MyStructClass cannot have item of type MirrorTest.MirrorTestPlayer/MyStruct. Use a type supported by mirror instead")); - } - #endregion - - #region NetworkBehaviour tests - [Test] - public void NetworkBehaviourValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void NetworkBehaviourAbstractBaseValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void NetworkBehaviourGeneric() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer`1 cannot have generic parameters")); - } - - [Test] - public void NetworkBehaviourCmdGenericParam() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveGeneric() cannot have generic parameters")); - } - - [Test] - public void NetworkBehaviourCmdCoroutine() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Collections.IEnumerator MirrorTest.MirrorTestPlayer::CmdCantHaveCoroutine() cannot be a coroutine")); - } - - [Test] - public void NetworkBehaviourCmdVoidReturn() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Int32 MirrorTest.MirrorTestPlayer::CmdCantHaveNonVoidReturn() cannot return a value. Make it void instead")); - } - - [Test] - public void NetworkBehaviourTargetRpcGenericParam() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetRpcCantHaveGeneric() cannot have generic parameters")); - } - - [Test] - public void NetworkBehaviourTargetRpcCoroutine() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Collections.IEnumerator MirrorTest.MirrorTestPlayer::TargetRpcCantHaveCoroutine() cannot be a coroutine")); - } - - [Test] - public void NetworkBehaviourTargetRpcVoidReturn() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Int32 MirrorTest.MirrorTestPlayer::TargetRpcCantHaveNonVoidReturn() cannot return a value. Make it void instead")); - } - - [Test] - public void NetworkBehaviourTargetRpcParamOut() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetRpcCantHaveParamOut(Mirror.NetworkConnection,System.Int32&) cannot have out parameters")); - } - - [Test] - public void NetworkBehaviourTargetRpcParamOptional() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetRpcCantHaveParamOptional(Mirror.NetworkConnection,System.Int32) cannot have optional parameters")); - } - - [Test] - public void NetworkBehaviourTargetRpcParamRef() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetRpcCantHaveParamRef(Mirror.NetworkConnection,System.Int32&) has invalid parameter monkeys. Use supported type instead of reference type System.Int32&")); - } - - [Test] - public void NetworkBehaviourTargetRpcParamAbstract() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetRpcCantHaveParamAbstract(Mirror.NetworkConnection,MirrorTest.MirrorTestPlayer/AbstractClass) has invalid parameter monkeys. Use concrete type instead of abstract type MirrorTest.MirrorTestPlayer/AbstractClass")); - } - - [Test] - public void NetworkBehaviourTargetRpcParamComponent() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetRpcCantHaveParamComponent(Mirror.NetworkConnection,MirrorTest.MirrorTestPlayer/ComponentClass) has invalid parameter monkeyComp. Cannot pass components in remote method calls")); - } - - [Test] - public void NetworkBehaviourTargetRpcParamNetworkConnection() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void NetworkBehaviourTargetRpcDuplicateName() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Does.Match("Duplicate Target Rpc name")); - } - - [Test] - public void NetworkBehaviourClientRpcGenericParam() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveGeneric() cannot have generic parameters")); - } - - [Test] - public void NetworkBehaviourClientRpcCoroutine() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Collections.IEnumerator MirrorTest.MirrorTestPlayer::RpcCantHaveCoroutine() cannot be a coroutine")); - } - - [Test] - public void NetworkBehaviourClientRpcVoidReturn() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Int32 MirrorTest.MirrorTestPlayer::RpcCantHaveNonVoidReturn() cannot return a value. Make it void instead")); - } - - [Test] - public void NetworkBehaviourClientRpcParamOut() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveParamOut(System.Int32&) cannot have out parameters")); - } - - [Test] - public void NetworkBehaviourClientRpcParamOptional() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveParamOptional(System.Int32) cannot have optional parameters")); - } - - [Test] - public void NetworkBehaviourClientRpcParamRef() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveParamRef(System.Int32&) has invalid parameter monkeys. Use supported type instead of reference type System.Int32&")); - } - - [Test] - public void NetworkBehaviourClientRpcParamAbstract() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveParamAbstract(MirrorTest.MirrorTestPlayer/AbstractClass) has invalid parameter monkeys. Use concrete type instead of abstract type MirrorTest.MirrorTestPlayer/AbstractClass")); - } - - [Test] - public void NetworkBehaviourClientRpcParamComponent() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveParamComponent(MirrorTest.MirrorTestPlayer/ComponentClass) has invalid parameter monkeyComp. Cannot pass components in remote method calls")); - } - - [Test] - public void NetworkBehaviourClientRpcParamNetworkConnection() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantHaveParamOptional(Mirror.NetworkConnection) has invalid parameer monkeyCon. Cannot pass NeworkConnections")); - } - - [Test] - public void NetworkBehaviourClientRpcDuplicateName() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Does.Match("Duplicate ClientRpc name")); - } - - [Test] - public void NetworkBehaviourCmdParamOut() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveParamOut(System.Int32&) cannot have out parameters")); - } - - [Test] - public void NetworkBehaviourCmdParamOptional() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveParamOptional(System.Int32) cannot have optional parameters")); - } - - [Test] - public void NetworkBehaviourCmdParamRef() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveParamRef(System.Int32&) has invalid parameter monkeys. Use supported type instead of reference type System.Int32&")); - } - - [Test] - public void NetworkBehaviourCmdParamAbstract() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveParamAbstract(MirrorTest.MirrorTestPlayer/AbstractClass) has invalid parameter monkeys. Use concrete type instead of abstract type MirrorTest.MirrorTestPlayer/AbstractClass")); - } - - [Test] - public void NetworkBehaviourCmdParamComponent() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveParamComponent(MirrorTest.MirrorTestPlayer/ComponentClass) has invalid parameter monkeyComp. Cannot pass components in remote method calls")); - } - - [Test] - public void NetworkBehaviourCmdParamNetworkConnection() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantHaveParamOptional(Mirror.NetworkConnection) has invalid parameer monkeyCon. Cannot pass NeworkConnections")); - } - - [Test] - public void NetworkBehaviourCmdDuplicateName() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Does.Match("Duplicate Command name")); - } - #endregion - - #region Command tests - [Test] - public void CommandValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void CommandStartsWithCmd() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::DoesntStartWithCmd() must start with Cmd. Consider renaming it to CmdDoesntStartWithCmd")); - } - - [Test] - public void CommandCantBeStatic() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::CmdCantBeStatic() cannot be static")); - } - #endregion - - #region ClientRpc tests - [Test] - public void ClientRpcValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void ClientRpcStartsWithRpc() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - CollectionAssert.AreEqual(m_weaverErrors, - new[] { "Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::DoesntStartWithRpc() must start with Rpc. Consider renaming it to RpcDoesntStartWithRpc" }); - } - - [Test] - public void ClientRpcCantBeStatic() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - CollectionAssert.AreEqual(m_weaverErrors, - new [] { "Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::RpcCantBeStatic() must not be static"}); - } - #endregion - - #region TargetRpc tests - [Test] - public void TargetRpcValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void TargetRpcStartsWithTarget() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::DoesntStartWithTarget(Mirror.NetworkConnection) must start with Target. Consider renaming it to TargetDoesntStartWithTarget")); - } - - [Test] - public void TargetRpcCantBeStatic() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.Void MirrorTest.MirrorTestPlayer::TargetCantBeStatic(Mirror.NetworkConnection) must not be static")); - } - #endregion - - #region TargetRpc tests - [Test] - public void SyncEventValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void SyncEventStartsWithEvent() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MySyncEventDelegate MirrorTest.MirrorTestPlayer::DoCoolThingsWithExcitingPeople must start with Event. Consider renaming it to EventDoCoolThingsWithExcitingPeople")); - } - - [Test] - public void SyncEventParamGeneric() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.MirrorTestPlayer/MySyncEventDelegate`1 MirrorTest.MirrorTestPlayer::EventDoCoolThingsWithExcitingPeople must not have generic parameters. Consider creating a new class that inherits from MirrorTest.MirrorTestPlayer/MySyncEventDelegate`1 instead")); - } - #endregion - - #region MonoBehaviour tests - [Test] - public void MonoBehaviourValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void MonoBehaviourSyncVar() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [SyncVar] System.Int32 MirrorTest.MirrorTestPlayer::potato must be inside a NetworkBehaviour. MirrorTest.MirrorTestPlayer is not a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourSyncList() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: Mirror.SyncListInt MirrorTest.MirrorTestPlayer::potato is a SyncObject and must be inside a NetworkBehaviour. MirrorTest.MirrorTestPlayer is not a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourCommand() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [Command] System.Void MirrorTest.MirrorTestPlayer::CmdThisCantBeOutsideNetworkBehaviour() must be declared inside a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourClientRpc() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [ClienRpc] System.Void MirrorTest.MirrorTestPlayer::RpcThisCantBeOutsideNetworkBehaviour() must be declared inside a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourTargetRpc() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [TargetRpc] System.Void MirrorTest.MirrorTestPlayer::TargetThisCantBeOutsideNetworkBehaviour(Mirror.NetworkConnection) must be declared inside a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourServer() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [Server] System.Void MirrorTest.MirrorTestPlayer::ThisCantBeOutsideNetworkBehaviour() must be declared inside a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourServerCallback() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [ServerCallback] System.Void MirrorTest.MirrorTestPlayer::ThisCantBeOutsideNetworkBehaviour() must be declared inside a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourClient() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [Client] System.Void MirrorTest.MirrorTestPlayer::ThisCantBeOutsideNetworkBehaviour() must be declared inside a NetworkBehaviour")); - } - - [Test] - public void MonoBehaviourClientCallback() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: [ClientCallback] System.Void MirrorTest.MirrorTestPlayer::ThisCantBeOutsideNetworkBehaviour() must be declared inside a NetworkBehaviour")); - } - #endregion - - #region Message tests - [Test] - public void MessageValid() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.False); - Assert.That(m_weaverErrors.Count, Is.EqualTo(0)); - } - - [Test] - public void MessageSelfReferencing() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.PrefabClone has field $MirrorTest.PrefabClone MirrorTest.PrefabClone::selfReference that references itself")); - } - - [Test] - public void MessageInvalidSerializeFieldType() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.AccessViolationException MirrorTest.PrefabClone::invalidField has unsupported type")); - } - - [Test] - public void MessageInvalidDeserializeFieldType() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(2)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: System.AccessViolationException is not a supported type")); - Assert.That(m_weaverErrors[1], Is.EqualTo("Mirror.Weaver error: System.AccessViolationException MirrorTest.PrefabClone::invalidField has unsupported type")); - } - - [Test] - public void MessageMemberGeneric() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.HasGeneric`1 MirrorTest.PrefabClone::invalidField cannot have generic type MirrorTest.HasGeneric`1. Consider creating a class that derives the generic type")); - } - - [Test] - public void MessageMemberInterface() - { - Assert.That(CompilationFinishedHook.WeaveFailed, Is.True); - Assert.That(m_weaverErrors.Count, Is.EqualTo(1)); - Assert.That(m_weaverErrors[0], Is.EqualTo("Mirror.Weaver error: MirrorTest.SuperCoolInterface MirrorTest.PrefabClone::invalidField has unsupported type. Use a concrete class instead of interface MirrorTest.SuperCoolInterface")); - } - #endregion - } -} diff --git a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs.meta b/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs.meta deleted file mode 100644 index a98d922..0000000 --- a/LiteNetLib4Mirror/Assets/MirrorLib/Mirror/Tests/WeaverTest.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: c3f52dab9c479dd4586d0aceeb2390f0 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/LiteNetLib4Mirror/Packages/manifest.json b/LiteNetLib4Mirror/Packages/manifest.json index 9f6ec26..8d305c3 100644 --- a/LiteNetLib4Mirror/Packages/manifest.json +++ b/LiteNetLib4Mirror/Packages/manifest.json @@ -17,21 +17,14 @@ "com.unity.modules.particlesystem": "1.0.0", "com.unity.modules.physics": "1.0.0", "com.unity.modules.physics2d": "1.0.0", - "com.unity.modules.screencapture": "1.0.0", "com.unity.modules.terrain": "1.0.0", "com.unity.modules.terrainphysics": "1.0.0", "com.unity.modules.tilemap": "1.0.0", "com.unity.modules.ui": "1.0.0", "com.unity.modules.uielements": "1.0.0", - "com.unity.modules.umbra": "1.0.0", - "com.unity.modules.unityanalytics": "1.0.0", "com.unity.modules.unitywebrequest": "1.0.0", "com.unity.modules.unitywebrequestassetbundle": "1.0.0", "com.unity.modules.unitywebrequestaudio": "1.0.0", - "com.unity.modules.unitywebrequesttexture": "1.0.0", - "com.unity.modules.unitywebrequestwww": "1.0.0", - "com.unity.modules.vehicles": "1.0.0", - "com.unity.modules.video": "1.0.0", - "com.unity.modules.wind": "1.0.0" + "com.unity.modules.unitywebrequestwww": "1.0.0" } } diff --git a/LiteNetLib4Mirror/ProjectSettings/EditorBuildSettings.asset b/LiteNetLib4Mirror/ProjectSettings/EditorBuildSettings.asset index cee92ec..9bd6d10 100644 --- a/LiteNetLib4Mirror/ProjectSettings/EditorBuildSettings.asset +++ b/LiteNetLib4Mirror/ProjectSettings/EditorBuildSettings.asset @@ -5,7 +5,7 @@ EditorBuildSettings: m_ObjectHideFlags: 0 serializedVersion: 2 m_Scenes: - - enabled: 1 - path: Assets/Scene.unity - guid: efb2dac61520fc94fbef23e13ff1b662 + - enabled: 0 + path: + guid: 00000000000000000000000000000000 m_configObjects: {} diff --git a/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset b/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset index 4ea22e9..5750fc9 100644 --- a/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset +++ b/LiteNetLib4Mirror/ProjectSettings/ProjectSettings.asset @@ -537,7 +537,7 @@ PlayerSettings: webGLThreadsSupport: 0 webGLWasmStreaming: 0 scriptingDefineSymbols: - 1: LITENETLIB4MIRROR;MIRROR;MIRROR_1726_OR_NEWER;MIRROR_3_0_OR_NEWER;MIRROR_WRITERSEND;MIRROR_3_12_OR_NEWER;MIRROR_4_0_OR_NEWER + 1: LITENETLIB4MIRROR;MIRROR;MIRROR_1726_OR_NEWER;MIRROR_3_0_OR_NEWER;MIRROR_WRITERSEND;MIRROR_3_12_OR_NEWER;MIRROR_4_0_OR_NEWER;MIRROR_5_0_OR_NEWER;MIRROR_6_0_OR_NEWER;MIRROR_7_0_OR_NEWER;MIRROR_8_0_OR_NEWER;MIRROR_9_0_OR_NEWER;MIRROR_10_0_OR_NEWER;MIRROR_11_0_OR_NEWER;MIRROR_12_0_OR_NEWER;MIRROR_13_0_OR_NEWER;MIRROR_14_0_OR_NEWER;MIRROR_15_0_OR_NEWER;MIRROR_16_0_OR_NEWER platformArchitecture: {} scriptingBackend: Standalone: 0 From 4875e610154cf841dd7af8b442290bb12a5090d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Jurczyk?= Date: Sat, 1 Aug 2020 20:11:22 +0200 Subject: [PATCH 3/3] License year bump --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 4f7b837..f3d1d29 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 MichalPetryka +Copyright (c) 2019 - 2020 MichalPetryka Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal