From 5dc037dbb6db48c1ad94d20a63aa5f953ade90c2 Mon Sep 17 00:00:00 2001 From: Paul Pacheco Date: Mon, 15 Mar 2021 10:00:45 -0500 Subject: [PATCH] refactor: move serialization into Mirage.Serialization (#700) Move reader and writer to a Mirage.Serialization namespace BREAKING CHANGE: NetworkReader and NetworkWriter moved to Mirage.Serialization namespace --- Assets/Mirage/Components/NetworkAnimator.cs | 1 + .../Mirage/Components/NetworkTransformBase.cs | 1 + Assets/Mirage/Runtime/ClientObjectManager.cs | 1 + .../Mirage/Runtime/Collections/ISyncObject.cs | 1 + .../Runtime/Collections/SyncDictionary.cs | 1 + Assets/Mirage/Runtime/Collections/SyncList.cs | 1 + Assets/Mirage/Runtime/Collections/SyncSet.cs | 1 + Assets/Mirage/Runtime/GameObjectSyncvar.cs | 3 +- .../Mirage/Runtime/NetworkBehaviorSyncvar.cs | 4 +- Assets/Mirage/Runtime/NetworkBehaviour.cs | 1 + Assets/Mirage/Runtime/NetworkIdentity.cs | 1 + .../Mirage/Runtime/NetworkIdentitySyncvar.cs | 4 +- Assets/Mirage/Runtime/NetworkPlayer.cs | 1 + Assets/Mirage/Runtime/NetworkServer.cs | 1 + Assets/Mirage/Runtime/NotifyPacket.cs | 4 +- Assets/Mirage/Runtime/RemoteCallHelper.cs | 1 + Assets/Mirage/Runtime/Serialization.meta | 8 ++++ .../{ => Serialization}/Compression.cs | 2 +- .../{ => Serialization}/Compression.cs.meta | 0 .../{ => Serialization}/MessagePacker.cs | 2 +- .../{ => Serialization}/MessagePacker.cs.meta | 0 .../{ => Serialization}/NetworkReader.cs | 16 +------ .../{ => Serialization}/NetworkReader.cs.meta | 0 .../{ => Serialization}/NetworkReaderPool.cs | 2 +- .../NetworkReaderPool.cs.meta | 0 .../{ => Serialization}/NetworkWriter.cs | 2 +- .../{ => Serialization}/NetworkWriter.cs.meta | 0 .../{ => Serialization}/NetworkWriterPool.cs | 2 +- .../NetworkWriterPool.cs.meta | 0 .../Runtime/Serialization/TypeConversion.cs | 47 +++++++++++++++++++ .../Serialization/TypeConversion.cs.meta | 11 +++++ Assets/Mirage/Runtime/ServerObjectManager.cs | 1 + .../Runtime/Transport/PipeConnection.cs | 1 + Assets/Mirage/Runtime/UNetwork.cs | 45 ++++-------------- .../Weaver/Processors/ClientRpcProcessor.cs | 1 + .../Processors/ReaderWriterProcessor.cs | 1 + .../Weaver/Processors/ServerRpcProcessor.cs | 1 + .../Weaver/Processors/SyncVarProcessor.cs | 1 + Assets/Mirage/Weaver/Readers.cs | 1 + Assets/Mirage/Weaver/Writers.cs | 1 + Assets/Tests/Editor/Compression.cs | 1 + .../Editor/NetworkIdentityCallbackTests.cs | 1 + Assets/Tests/Editor/NetworkReaderPoolTest.cs | 1 + Assets/Tests/Editor/NetworkReaderTest.cs | 1 + Assets/Tests/Editor/NetworkTransformTest.cs | 1 + .../NetworkWriter/NetworkWriterPerformance.cs | 1 + .../Runtime/Collections/SyncDictionaryTest.cs | 1 + .../Runtime/Collections/SyncListStructTest.cs | 1 + .../Tests/Runtime/Collections/SyncListTest.cs | 1 + .../Tests/Runtime/Collections/SyncSetTest.cs | 1 + .../Serializers/ArraySegmentWriterTest.cs | 1 + .../Runtime/Serializers/ArrayWriterTest.cs | 1 + .../BasicAuthenticatorMessagesTest.cs | 1 + .../Tests/Runtime/Serializers/CustomRWTest.cs | 1 + .../Runtime/Serializers/EnumReadWriteTests.cs | 1 + .../Runtime/Serializers/MessageBaseTests.cs | 1 + .../Serializers/MessageInheritanceTest.cs | 1 + .../Runtime/Serializers/MessagePackerTest.cs | 1 + .../Tests/Runtime/Serializers/MessageTests.cs | 1 + .../NetworkBehaviourSerializeTest.cs | 1 + .../Serializers/NetworkConnectionTest.cs | 1 + .../Serializers/NetworkReaderWriterTest.cs | 1 + .../Serializers/NetworkWriterPoolTest.cs | 1 + .../Runtime/Serializers/NetworkWriterTest.cs | 1 + .../Serializers/ScriptableObjectWriterTest.cs | 1 + .../Serializers/StructMessagesTests.cs | 1 + .../Tests/Runtime/Serializers/SyncVarTest.cs | 1 + .../Runtime/Serializers/SyncVarVirtualTest.cs | 1 + .../ExtraAssembly/SomeDataWithWriter.cs | 2 + ...stingScriptableObjectArraySerialization.cs | 1 + .../CanUseCustomReadWriteForAbstractClass.cs | 1 + .../CanUseCustomReadWriteForInterfaces.cs | 1 + 72 files changed, 145 insertions(+), 60 deletions(-) create mode 100644 Assets/Mirage/Runtime/Serialization.meta rename Assets/Mirage/Runtime/{ => Serialization}/Compression.cs (99%) rename Assets/Mirage/Runtime/{ => Serialization}/Compression.cs.meta (100%) rename Assets/Mirage/Runtime/{ => Serialization}/MessagePacker.cs (99%) rename Assets/Mirage/Runtime/{ => Serialization}/MessagePacker.cs.meta (100%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkReader.cs (97%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkReader.cs.meta (100%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkReaderPool.cs (99%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkReaderPool.cs.meta (100%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkWriter.cs (99%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkWriter.cs.meta (100%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkWriterPool.cs (99%) rename Assets/Mirage/Runtime/{ => Serialization}/NetworkWriterPool.cs.meta (100%) create mode 100644 Assets/Mirage/Runtime/Serialization/TypeConversion.cs create mode 100644 Assets/Mirage/Runtime/Serialization/TypeConversion.cs.meta diff --git a/Assets/Mirage/Components/NetworkAnimator.cs b/Assets/Mirage/Components/NetworkAnimator.cs index b9c9b89acbb..d17bbdc0c97 100644 --- a/Assets/Mirage/Components/NetworkAnimator.cs +++ b/Assets/Mirage/Components/NetworkAnimator.cs @@ -2,6 +2,7 @@ using UnityEngine; using UnityEngine.Serialization; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Components/NetworkTransformBase.cs b/Assets/Mirage/Components/NetworkTransformBase.cs index 865ac6a1964..5d951c021a0 100644 --- a/Assets/Mirage/Components/NetworkTransformBase.cs +++ b/Assets/Mirage/Components/NetworkTransformBase.cs @@ -17,6 +17,7 @@ // interpolation. interpolation over time is never that good. // using UnityEngine; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/ClientObjectManager.cs b/Assets/Mirage/Runtime/ClientObjectManager.cs index 7f9100844cf..e70d233c08f 100644 --- a/Assets/Mirage/Runtime/ClientObjectManager.cs +++ b/Assets/Mirage/Runtime/ClientObjectManager.cs @@ -6,6 +6,7 @@ using UnityEngine; using UnityEngine.Serialization; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/Collections/ISyncObject.cs b/Assets/Mirage/Runtime/Collections/ISyncObject.cs index 0caa7bdcd8b..b096b6baf69 100644 --- a/Assets/Mirage/Runtime/Collections/ISyncObject.cs +++ b/Assets/Mirage/Runtime/Collections/ISyncObject.cs @@ -1,4 +1,5 @@ using System; +using Mirage.Serialization; namespace Mirage.Collections { diff --git a/Assets/Mirage/Runtime/Collections/SyncDictionary.cs b/Assets/Mirage/Runtime/Collections/SyncDictionary.cs index 2cd806c519e..034b28637bc 100644 --- a/Assets/Mirage/Runtime/Collections/SyncDictionary.cs +++ b/Assets/Mirage/Runtime/Collections/SyncDictionary.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using JetBrains.Annotations; +using Mirage.Serialization; namespace Mirage.Collections { diff --git a/Assets/Mirage/Runtime/Collections/SyncList.cs b/Assets/Mirage/Runtime/Collections/SyncList.cs index 8b29c69d6e0..555fc8697ec 100644 --- a/Assets/Mirage/Runtime/Collections/SyncList.cs +++ b/Assets/Mirage/Runtime/Collections/SyncList.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using Mirage.Serialization; namespace Mirage.Collections { diff --git a/Assets/Mirage/Runtime/Collections/SyncSet.cs b/Assets/Mirage/Runtime/Collections/SyncSet.cs index c2e2021d9ed..cd58d045371 100644 --- a/Assets/Mirage/Runtime/Collections/SyncSet.cs +++ b/Assets/Mirage/Runtime/Collections/SyncSet.cs @@ -1,6 +1,7 @@ using System; using System.Collections; using System.Collections.Generic; +using Mirage.Serialization; namespace Mirage.Collections { diff --git a/Assets/Mirage/Runtime/GameObjectSyncvar.cs b/Assets/Mirage/Runtime/GameObjectSyncvar.cs index 11a2cb16f10..2a09c41fdf6 100644 --- a/Assets/Mirage/Runtime/GameObjectSyncvar.cs +++ b/Assets/Mirage/Runtime/GameObjectSyncvar.cs @@ -1,4 +1,5 @@ -using UnityEngine; +using Mirage.Serialization; +using UnityEngine; namespace Mirage { diff --git a/Assets/Mirage/Runtime/NetworkBehaviorSyncvar.cs b/Assets/Mirage/Runtime/NetworkBehaviorSyncvar.cs index d6bf72b2a80..d2383cc53f2 100644 --- a/Assets/Mirage/Runtime/NetworkBehaviorSyncvar.cs +++ b/Assets/Mirage/Runtime/NetworkBehaviorSyncvar.cs @@ -1,4 +1,6 @@ -namespace Mirage +using Mirage.Serialization; + +namespace Mirage { /// diff --git a/Assets/Mirage/Runtime/NetworkBehaviour.cs b/Assets/Mirage/Runtime/NetworkBehaviour.cs index 1dd67b83d08..bafa9b30ff4 100644 --- a/Assets/Mirage/Runtime/NetworkBehaviour.cs +++ b/Assets/Mirage/Runtime/NetworkBehaviour.cs @@ -5,6 +5,7 @@ using Mirage.RemoteCalls; using UnityEngine; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/NetworkIdentity.cs b/Assets/Mirage/Runtime/NetworkIdentity.cs index afcfc3ad948..713721c0fff 100644 --- a/Assets/Mirage/Runtime/NetworkIdentity.cs +++ b/Assets/Mirage/Runtime/NetworkIdentity.cs @@ -6,6 +6,7 @@ using UnityEngine.Serialization; using UnityEngine.Events; using Mirage.Logging; +using Mirage.Serialization; #if UNITY_EDITOR using UnityEditor; #if UNITY_2018_3_OR_NEWER diff --git a/Assets/Mirage/Runtime/NetworkIdentitySyncvar.cs b/Assets/Mirage/Runtime/NetworkIdentitySyncvar.cs index 9fae7e2c568..277419a52ff 100644 --- a/Assets/Mirage/Runtime/NetworkIdentitySyncvar.cs +++ b/Assets/Mirage/Runtime/NetworkIdentitySyncvar.cs @@ -1,4 +1,6 @@ -namespace Mirage +using Mirage.Serialization; + +namespace Mirage { /// diff --git a/Assets/Mirage/Runtime/NetworkPlayer.cs b/Assets/Mirage/Runtime/NetworkPlayer.cs index 5b2ba97ff44..b2a081dae39 100644 --- a/Assets/Mirage/Runtime/NetworkPlayer.cs +++ b/Assets/Mirage/Runtime/NetworkPlayer.cs @@ -6,6 +6,7 @@ using UnityEngine; using UnityEngine.Assertions; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/NetworkServer.cs b/Assets/Mirage/Runtime/NetworkServer.cs index 4e6b3efdd91..16bf46da691 100644 --- a/Assets/Mirage/Runtime/NetworkServer.cs +++ b/Assets/Mirage/Runtime/NetworkServer.cs @@ -6,6 +6,7 @@ using UnityEngine.Events; using UnityEngine.Serialization; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/NotifyPacket.cs b/Assets/Mirage/Runtime/NotifyPacket.cs index 3ea750e8a2f..5bed1bb16d9 100644 --- a/Assets/Mirage/Runtime/NotifyPacket.cs +++ b/Assets/Mirage/Runtime/NotifyPacket.cs @@ -1,4 +1,6 @@ -namespace Mirage +using Mirage.Serialization; + +namespace Mirage { // header for notify packet public struct NotifyPacket diff --git a/Assets/Mirage/Runtime/RemoteCallHelper.cs b/Assets/Mirage/Runtime/RemoteCallHelper.cs index 96735ef2076..95c36984dd4 100644 --- a/Assets/Mirage/Runtime/RemoteCallHelper.cs +++ b/Assets/Mirage/Runtime/RemoteCallHelper.cs @@ -3,6 +3,7 @@ using Cysharp.Threading.Tasks; using UnityEngine; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage.RemoteCalls { diff --git a/Assets/Mirage/Runtime/Serialization.meta b/Assets/Mirage/Runtime/Serialization.meta new file mode 100644 index 00000000000..57505125d1f --- /dev/null +++ b/Assets/Mirage/Runtime/Serialization.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 999c5520b3d65450d8bcfba1231ec904 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirage/Runtime/Compression.cs b/Assets/Mirage/Runtime/Serialization/Compression.cs similarity index 99% rename from Assets/Mirage/Runtime/Compression.cs rename to Assets/Mirage/Runtime/Serialization/Compression.cs index 3909d76850c..00e194c5a86 100644 --- a/Assets/Mirage/Runtime/Compression.cs +++ b/Assets/Mirage/Runtime/Serialization/Compression.cs @@ -1,7 +1,7 @@ using System; using UnityEngine; -namespace Mirage +namespace Mirage.Serialization { enum ComponentType : uint { diff --git a/Assets/Mirage/Runtime/Compression.cs.meta b/Assets/Mirage/Runtime/Serialization/Compression.cs.meta similarity index 100% rename from Assets/Mirage/Runtime/Compression.cs.meta rename to Assets/Mirage/Runtime/Serialization/Compression.cs.meta diff --git a/Assets/Mirage/Runtime/MessagePacker.cs b/Assets/Mirage/Runtime/Serialization/MessagePacker.cs similarity index 99% rename from Assets/Mirage/Runtime/MessagePacker.cs rename to Assets/Mirage/Runtime/Serialization/MessagePacker.cs index d54a0fe1027..7f83d22f11e 100644 --- a/Assets/Mirage/Runtime/MessagePacker.cs +++ b/Assets/Mirage/Runtime/Serialization/MessagePacker.cs @@ -1,7 +1,7 @@ using System; using System.Collections.Generic; -namespace Mirage +namespace Mirage.Serialization { // message packing all in one place, instead of constructing headers in all // kinds of different places diff --git a/Assets/Mirage/Runtime/MessagePacker.cs.meta b/Assets/Mirage/Runtime/Serialization/MessagePacker.cs.meta similarity index 100% rename from Assets/Mirage/Runtime/MessagePacker.cs.meta rename to Assets/Mirage/Runtime/Serialization/MessagePacker.cs.meta diff --git a/Assets/Mirage/Runtime/NetworkReader.cs b/Assets/Mirage/Runtime/Serialization/NetworkReader.cs similarity index 97% rename from Assets/Mirage/Runtime/NetworkReader.cs rename to Assets/Mirage/Runtime/Serialization/NetworkReader.cs index da866b6fdba..17ca07a095f 100644 --- a/Assets/Mirage/Runtime/NetworkReader.cs +++ b/Assets/Mirage/Runtime/Serialization/NetworkReader.cs @@ -13,7 +13,7 @@ using UnityEngine; using Mirage.Logging; -namespace Mirage +namespace Mirage.Serialization { /// /// a class that holds readers for the different types @@ -27,20 +27,6 @@ public static class Reader public static Func Read { internal get; set; } } - /// - /// An object that implements this interface can find objects by their net id - /// This is used by readers when trying to deserialize gameobjects - /// - public interface IObjectLocator - { - /// - /// Finds a network identity by id - /// - /// the id of the object to find - /// The NetworkIdentity matching the netid or null if none is found - NetworkIdentity this[uint netId] { get; } - } - // 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. diff --git a/Assets/Mirage/Runtime/NetworkReader.cs.meta b/Assets/Mirage/Runtime/Serialization/NetworkReader.cs.meta similarity index 100% rename from Assets/Mirage/Runtime/NetworkReader.cs.meta rename to Assets/Mirage/Runtime/Serialization/NetworkReader.cs.meta diff --git a/Assets/Mirage/Runtime/NetworkReaderPool.cs b/Assets/Mirage/Runtime/Serialization/NetworkReaderPool.cs similarity index 99% rename from Assets/Mirage/Runtime/NetworkReaderPool.cs rename to Assets/Mirage/Runtime/Serialization/NetworkReaderPool.cs index caf517fbcf4..1297a4c4fe5 100644 --- a/Assets/Mirage/Runtime/NetworkReaderPool.cs +++ b/Assets/Mirage/Runtime/Serialization/NetworkReaderPool.cs @@ -2,7 +2,7 @@ using UnityEngine; using Mirage.Logging; -namespace Mirage +namespace Mirage.Serialization { /// /// NetworkReader to be used with NetworkReaderPool diff --git a/Assets/Mirage/Runtime/NetworkReaderPool.cs.meta b/Assets/Mirage/Runtime/Serialization/NetworkReaderPool.cs.meta similarity index 100% rename from Assets/Mirage/Runtime/NetworkReaderPool.cs.meta rename to Assets/Mirage/Runtime/Serialization/NetworkReaderPool.cs.meta diff --git a/Assets/Mirage/Runtime/NetworkWriter.cs b/Assets/Mirage/Runtime/Serialization/NetworkWriter.cs similarity index 99% rename from Assets/Mirage/Runtime/NetworkWriter.cs rename to Assets/Mirage/Runtime/Serialization/NetworkWriter.cs index 3b33cbc7b51..510dc4db0b3 100644 --- a/Assets/Mirage/Runtime/NetworkWriter.cs +++ b/Assets/Mirage/Runtime/Serialization/NetworkWriter.cs @@ -4,7 +4,7 @@ using System.Text; using UnityEngine; -namespace Mirage +namespace Mirage.Serialization { /// /// a class that holds writers for the different types diff --git a/Assets/Mirage/Runtime/NetworkWriter.cs.meta b/Assets/Mirage/Runtime/Serialization/NetworkWriter.cs.meta similarity index 100% rename from Assets/Mirage/Runtime/NetworkWriter.cs.meta rename to Assets/Mirage/Runtime/Serialization/NetworkWriter.cs.meta diff --git a/Assets/Mirage/Runtime/NetworkWriterPool.cs b/Assets/Mirage/Runtime/Serialization/NetworkWriterPool.cs similarity index 99% rename from Assets/Mirage/Runtime/NetworkWriterPool.cs rename to Assets/Mirage/Runtime/Serialization/NetworkWriterPool.cs index 9f01e4fd7fd..b801250603e 100644 --- a/Assets/Mirage/Runtime/NetworkWriterPool.cs +++ b/Assets/Mirage/Runtime/Serialization/NetworkWriterPool.cs @@ -2,7 +2,7 @@ using UnityEngine; using Mirage.Logging; -namespace Mirage +namespace Mirage.Serialization { /// /// NetworkWriter to be used with NetworkWriterPool diff --git a/Assets/Mirage/Runtime/NetworkWriterPool.cs.meta b/Assets/Mirage/Runtime/Serialization/NetworkWriterPool.cs.meta similarity index 100% rename from Assets/Mirage/Runtime/NetworkWriterPool.cs.meta rename to Assets/Mirage/Runtime/Serialization/NetworkWriterPool.cs.meta diff --git a/Assets/Mirage/Runtime/Serialization/TypeConversion.cs b/Assets/Mirage/Runtime/Serialization/TypeConversion.cs new file mode 100644 index 00000000000..9125dca569d --- /dev/null +++ b/Assets/Mirage/Runtime/Serialization/TypeConversion.cs @@ -0,0 +1,47 @@ +using System.Runtime.InteropServices; + +namespace Mirage.Serialization +{ + + /// + /// Converts between uint and float without allocations + /// + [StructLayout(LayoutKind.Explicit)] + internal struct UIntFloat + { + [FieldOffset(0)] + public float floatValue; + + [FieldOffset(0)] + public uint intValue; + } + + /// + /// Converts between ulong and double without allocations + /// + [StructLayout(LayoutKind.Explicit)] + internal struct UIntDouble + { + [FieldOffset(0)] + public double doubleValue; + + [FieldOffset(0)] + public ulong longValue; + } + + /// + /// Converts between ulong and decimal without allocations + /// + [StructLayout(LayoutKind.Explicit)] + internal struct UIntDecimal + { + [FieldOffset(0)] + public ulong longValue1; + + [FieldOffset(8)] + public ulong longValue2; + + [FieldOffset(0)] + public decimal decimalValue; + } +} \ No newline at end of file diff --git a/Assets/Mirage/Runtime/Serialization/TypeConversion.cs.meta b/Assets/Mirage/Runtime/Serialization/TypeConversion.cs.meta new file mode 100644 index 00000000000..d48d61eb954 --- /dev/null +++ b/Assets/Mirage/Runtime/Serialization/TypeConversion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ab6c1ed99802413b9d356645175e225 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Mirage/Runtime/ServerObjectManager.cs b/Assets/Mirage/Runtime/ServerObjectManager.cs index 05d7d8ee7c0..8bd9cfb8b85 100644 --- a/Assets/Mirage/Runtime/ServerObjectManager.cs +++ b/Assets/Mirage/Runtime/ServerObjectManager.cs @@ -5,6 +5,7 @@ using UnityEngine; using UnityEngine.Serialization; using Mirage.Logging; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/Transport/PipeConnection.cs b/Assets/Mirage/Runtime/Transport/PipeConnection.cs index 705d5ac5548..650b3eff244 100644 --- a/Assets/Mirage/Runtime/Transport/PipeConnection.cs +++ b/Assets/Mirage/Runtime/Transport/PipeConnection.cs @@ -3,6 +3,7 @@ using System.Net; using System.Threading; using Cysharp.Threading.Tasks; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Mirage/Runtime/UNetwork.cs b/Assets/Mirage/Runtime/UNetwork.cs index 6fe626dfd9f..1d1fe86f072 100644 --- a/Assets/Mirage/Runtime/UNetwork.cs +++ b/Assets/Mirage/Runtime/UNetwork.cs @@ -15,44 +15,17 @@ public static class Version } /// - /// Converts between uint and float without allocations + /// An object that implements this interface can find objects by their net id + /// This is used by readers when trying to deserialize gameobjects /// - [StructLayout(LayoutKind.Explicit)] - internal struct UIntFloat + public interface IObjectLocator { - [FieldOffset(0)] - public float floatValue; - - [FieldOffset(0)] - public uint intValue; - } - - /// - /// Converts between ulong and double without allocations - /// - [StructLayout(LayoutKind.Explicit)] - internal struct UIntDouble - { - [FieldOffset(0)] - public double doubleValue; - - [FieldOffset(0)] - public ulong longValue; + /// + /// Finds a network identity by id + /// + /// the id of the object to find + /// The NetworkIdentity matching the netid or null if none is found + NetworkIdentity this[uint netId] { get; } } - /// - /// Converts between ulong and decimal without allocations - /// - [StructLayout(LayoutKind.Explicit)] - internal struct UIntDecimal - { - [FieldOffset(0)] - public ulong longValue1; - - [FieldOffset(8)] - public ulong longValue2; - - [FieldOffset(0)] - public decimal decimalValue; - } } diff --git a/Assets/Mirage/Weaver/Processors/ClientRpcProcessor.cs b/Assets/Mirage/Weaver/Processors/ClientRpcProcessor.cs index 44f7f9194d2..0e3bc3434bd 100644 --- a/Assets/Mirage/Weaver/Processors/ClientRpcProcessor.cs +++ b/Assets/Mirage/Weaver/Processors/ClientRpcProcessor.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Mirage.RemoteCalls; +using Mirage.Serialization; using Mono.Cecil; using Mono.Cecil.Cil; namespace Mirage.Weaver diff --git a/Assets/Mirage/Weaver/Processors/ReaderWriterProcessor.cs b/Assets/Mirage/Weaver/Processors/ReaderWriterProcessor.cs index bc9590e5ce9..828ea37f0bd 100644 --- a/Assets/Mirage/Weaver/Processors/ReaderWriterProcessor.cs +++ b/Assets/Mirage/Weaver/Processors/ReaderWriterProcessor.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Reflection; +using Mirage.Serialization; using Mono.Cecil; using Mono.Cecil.Cil; using UnityEditor; diff --git a/Assets/Mirage/Weaver/Processors/ServerRpcProcessor.cs b/Assets/Mirage/Weaver/Processors/ServerRpcProcessor.cs index 6baebb556e0..e7737d807d9 100644 --- a/Assets/Mirage/Weaver/Processors/ServerRpcProcessor.cs +++ b/Assets/Mirage/Weaver/Processors/ServerRpcProcessor.cs @@ -5,6 +5,7 @@ using System.Reflection; using Cysharp.Threading.Tasks; using Mirage.RemoteCalls; +using Mirage.Serialization; using Mono.Cecil; using Mono.Cecil.Cil; using MethodAttributes = Mono.Cecil.MethodAttributes; diff --git a/Assets/Mirage/Weaver/Processors/SyncVarProcessor.cs b/Assets/Mirage/Weaver/Processors/SyncVarProcessor.cs index d609ff2445e..f0ca19d43c2 100644 --- a/Assets/Mirage/Weaver/Processors/SyncVarProcessor.cs +++ b/Assets/Mirage/Weaver/Processors/SyncVarProcessor.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Linq; +using Mirage.Serialization; using Mono.Cecil; using Mono.Cecil.Cil; using UnityEngine; diff --git a/Assets/Mirage/Weaver/Readers.cs b/Assets/Mirage/Weaver/Readers.cs index 3b9b9a536d4..6ca1f3d601f 100644 --- a/Assets/Mirage/Weaver/Readers.cs +++ b/Assets/Mirage/Weaver/Readers.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq.Expressions; +using Mirage.Serialization; using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Cecil.Rocks; diff --git a/Assets/Mirage/Weaver/Writers.cs b/Assets/Mirage/Weaver/Writers.cs index 29ffe065d86..c16013a6145 100644 --- a/Assets/Mirage/Weaver/Writers.cs +++ b/Assets/Mirage/Weaver/Writers.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq.Expressions; +using Mirage.Serialization; using Mono.Cecil; using Mono.Cecil.Cil; using Mono.Cecil.Rocks; diff --git a/Assets/Tests/Editor/Compression.cs b/Assets/Tests/Editor/Compression.cs index ca45f9c1d99..2723c3021bd 100644 --- a/Assets/Tests/Editor/Compression.cs +++ b/Assets/Tests/Editor/Compression.cs @@ -1,6 +1,7 @@ using NUnit.Framework; using UnityEngine; using RangeAttribute = NUnit.Framework.RangeAttribute; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Tests/Editor/NetworkIdentityCallbackTests.cs b/Assets/Tests/Editor/NetworkIdentityCallbackTests.cs index 9b2b709b590..dea3ce5875a 100644 --- a/Assets/Tests/Editor/NetworkIdentityCallbackTests.cs +++ b/Assets/Tests/Editor/NetworkIdentityCallbackTests.cs @@ -6,6 +6,7 @@ using UnityEngine.Events; using static Mirage.Tests.LocalConnections; using Object = UnityEngine.Object; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Tests/Editor/NetworkReaderPoolTest.cs b/Assets/Tests/Editor/NetworkReaderPoolTest.cs index eb6368d2cc2..ea31c2620fc 100644 --- a/Assets/Tests/Editor/NetworkReaderPoolTest.cs +++ b/Assets/Tests/Editor/NetworkReaderPoolTest.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using NUnit.Framework; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Tests/Editor/NetworkReaderTest.cs b/Assets/Tests/Editor/NetworkReaderTest.cs index 0781a2c20fc..f0e779ae4d7 100644 --- a/Assets/Tests/Editor/NetworkReaderTest.cs +++ b/Assets/Tests/Editor/NetworkReaderTest.cs @@ -1,5 +1,6 @@ using System.IO; using NUnit.Framework; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Tests/Editor/NetworkTransformTest.cs b/Assets/Tests/Editor/NetworkTransformTest.cs index 6ee4ae827f2..05b293f488f 100644 --- a/Assets/Tests/Editor/NetworkTransformTest.cs +++ b/Assets/Tests/Editor/NetworkTransformTest.cs @@ -1,5 +1,6 @@ using NUnit.Framework; using UnityEngine; +using Mirage.Serialization; namespace Mirage { diff --git a/Assets/Tests/Performance/Runtime/NetworkWriter/NetworkWriterPerformance.cs b/Assets/Tests/Performance/Runtime/NetworkWriter/NetworkWriterPerformance.cs index 61281ee73c7..9c185fc76cb 100644 --- a/Assets/Tests/Performance/Runtime/NetworkWriter/NetworkWriterPerformance.cs +++ b/Assets/Tests/Performance/Runtime/NetworkWriter/NetworkWriterPerformance.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; using Unity.PerformanceTesting; diff --git a/Assets/Tests/Runtime/Collections/SyncDictionaryTest.cs b/Assets/Tests/Runtime/Collections/SyncDictionaryTest.cs index 8563f61158d..6e9fc8f8379 100644 --- a/Assets/Tests/Runtime/Collections/SyncDictionaryTest.cs +++ b/Assets/Tests/Runtime/Collections/SyncDictionaryTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Mirage.Collections; +using Mirage.Serialization; using NSubstitute; using NUnit.Framework; diff --git a/Assets/Tests/Runtime/Collections/SyncListStructTest.cs b/Assets/Tests/Runtime/Collections/SyncListStructTest.cs index b50f588cf5d..040b4039941 100644 --- a/Assets/Tests/Runtime/Collections/SyncListStructTest.cs +++ b/Assets/Tests/Runtime/Collections/SyncListStructTest.cs @@ -1,4 +1,5 @@ using Mirage.Collections; +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Collections/SyncListTest.cs b/Assets/Tests/Runtime/Collections/SyncListTest.cs index 72191106b02..99e6e4d587a 100644 --- a/Assets/Tests/Runtime/Collections/SyncListTest.cs +++ b/Assets/Tests/Runtime/Collections/SyncListTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Mirage.Collections; +using Mirage.Serialization; using NSubstitute; using NUnit.Framework; diff --git a/Assets/Tests/Runtime/Collections/SyncSetTest.cs b/Assets/Tests/Runtime/Collections/SyncSetTest.cs index cb9250c2d8e..005fc59091a 100644 --- a/Assets/Tests/Runtime/Collections/SyncSetTest.cs +++ b/Assets/Tests/Runtime/Collections/SyncSetTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using Mirage.Collections; +using Mirage.Serialization; using NSubstitute; using NUnit.Framework; diff --git a/Assets/Tests/Runtime/Serializers/ArraySegmentWriterTest.cs b/Assets/Tests/Runtime/Serializers/ArraySegmentWriterTest.cs index 483484e8181..8c6032854c9 100644 --- a/Assets/Tests/Runtime/Serializers/ArraySegmentWriterTest.cs +++ b/Assets/Tests/Runtime/Serializers/ArraySegmentWriterTest.cs @@ -1,4 +1,5 @@ using System; +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/ArrayWriterTest.cs b/Assets/Tests/Runtime/Serializers/ArrayWriterTest.cs index 2ef34a42245..0d5c265c384 100644 --- a/Assets/Tests/Runtime/Serializers/ArrayWriterTest.cs +++ b/Assets/Tests/Runtime/Serializers/ArrayWriterTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests { diff --git a/Assets/Tests/Runtime/Serializers/BasicAuthenticatorMessagesTest.cs b/Assets/Tests/Runtime/Serializers/BasicAuthenticatorMessagesTest.cs index a093221edd7..fe4bf8fe53f 100644 --- a/Assets/Tests/Runtime/Serializers/BasicAuthenticatorMessagesTest.cs +++ b/Assets/Tests/Runtime/Serializers/BasicAuthenticatorMessagesTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/CustomRWTest.cs b/Assets/Tests/Runtime/Serializers/CustomRWTest.cs index 11137799dbb..d934eda5faa 100644 --- a/Assets/Tests/Runtime/Serializers/CustomRWTest.cs +++ b/Assets/Tests/Runtime/Serializers/CustomRWTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/EnumReadWriteTests.cs b/Assets/Tests/Runtime/Serializers/EnumReadWriteTests.cs index d63d70529b6..5ad12289ed5 100644 --- a/Assets/Tests/Runtime/Serializers/EnumReadWriteTests.cs +++ b/Assets/Tests/Runtime/Serializers/EnumReadWriteTests.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/MessageBaseTests.cs b/Assets/Tests/Runtime/Serializers/MessageBaseTests.cs index 19da59ae662..e75301fec30 100644 --- a/Assets/Tests/Runtime/Serializers/MessageBaseTests.cs +++ b/Assets/Tests/Runtime/Serializers/MessageBaseTests.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/MessageInheritanceTest.cs b/Assets/Tests/Runtime/Serializers/MessageInheritanceTest.cs index 4fe778ff9a9..6e0f9a1cab5 100644 --- a/Assets/Tests/Runtime/Serializers/MessageInheritanceTest.cs +++ b/Assets/Tests/Runtime/Serializers/MessageInheritanceTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/MessagePackerTest.cs b/Assets/Tests/Runtime/Serializers/MessagePackerTest.cs index 80a3ccaeed3..40761550771 100644 --- a/Assets/Tests/Runtime/Serializers/MessagePackerTest.cs +++ b/Assets/Tests/Runtime/Serializers/MessagePackerTest.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.IO; +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/MessageTests.cs b/Assets/Tests/Runtime/Serializers/MessageTests.cs index 9847d327a6b..ef262be2b08 100644 --- a/Assets/Tests/Runtime/Serializers/MessageTests.cs +++ b/Assets/Tests/Runtime/Serializers/MessageTests.cs @@ -1,4 +1,5 @@ using System; +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/NetworkBehaviourSerializeTest.cs b/Assets/Tests/Runtime/Serializers/NetworkBehaviourSerializeTest.cs index a5bbedc91fe..1cc2f2ba055 100644 --- a/Assets/Tests/Runtime/Serializers/NetworkBehaviourSerializeTest.cs +++ b/Assets/Tests/Runtime/Serializers/NetworkBehaviourSerializeTest.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Mirage.Collections; +using Mirage.Serialization; using NUnit.Framework; using UnityEngine; diff --git a/Assets/Tests/Runtime/Serializers/NetworkConnectionTest.cs b/Assets/Tests/Runtime/Serializers/NetworkConnectionTest.cs index 4ba92c9435b..4496f387afe 100644 --- a/Assets/Tests/Runtime/Serializers/NetworkConnectionTest.cs +++ b/Assets/Tests/Runtime/Serializers/NetworkConnectionTest.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using Mirage.Serialization; using NSubstitute; using NUnit.Framework; diff --git a/Assets/Tests/Runtime/Serializers/NetworkReaderWriterTest.cs b/Assets/Tests/Runtime/Serializers/NetworkReaderWriterTest.cs index d15bdfbaf28..974740f5db8 100644 --- a/Assets/Tests/Runtime/Serializers/NetworkReaderWriterTest.cs +++ b/Assets/Tests/Runtime/Serializers/NetworkReaderWriterTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/NetworkWriterPoolTest.cs b/Assets/Tests/Runtime/Serializers/NetworkWriterPoolTest.cs index 2772e5aaf41..cda1707fa7f 100644 --- a/Assets/Tests/Runtime/Serializers/NetworkWriterPoolTest.cs +++ b/Assets/Tests/Runtime/Serializers/NetworkWriterPoolTest.cs @@ -1,4 +1,5 @@ using System.Linq; +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests diff --git a/Assets/Tests/Runtime/Serializers/NetworkWriterTest.cs b/Assets/Tests/Runtime/Serializers/NetworkWriterTest.cs index 11dfb229a74..9e2214fc63b 100644 --- a/Assets/Tests/Runtime/Serializers/NetworkWriterTest.cs +++ b/Assets/Tests/Runtime/Serializers/NetworkWriterTest.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using Mirage.Serialization; using NUnit.Framework; using UnityEngine; diff --git a/Assets/Tests/Runtime/Serializers/ScriptableObjectWriterTest.cs b/Assets/Tests/Runtime/Serializers/ScriptableObjectWriterTest.cs index 167897a6f68..51e9e836506 100644 --- a/Assets/Tests/Runtime/Serializers/ScriptableObjectWriterTest.cs +++ b/Assets/Tests/Runtime/Serializers/ScriptableObjectWriterTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; using UnityEngine; diff --git a/Assets/Tests/Runtime/Serializers/StructMessagesTests.cs b/Assets/Tests/Runtime/Serializers/StructMessagesTests.cs index 41ec908521b..fb6a03724ab 100644 --- a/Assets/Tests/Runtime/Serializers/StructMessagesTests.cs +++ b/Assets/Tests/Runtime/Serializers/StructMessagesTests.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; namespace Mirage.Tests.StructMessages diff --git a/Assets/Tests/Runtime/Serializers/SyncVarTest.cs b/Assets/Tests/Runtime/Serializers/SyncVarTest.cs index 77ad4795c7b..245fcdd3c51 100644 --- a/Assets/Tests/Runtime/Serializers/SyncVarTest.cs +++ b/Assets/Tests/Runtime/Serializers/SyncVarTest.cs @@ -1,3 +1,4 @@ +using Mirage.Serialization; using NUnit.Framework; using UnityEngine; diff --git a/Assets/Tests/Runtime/Serializers/SyncVarVirtualTest.cs b/Assets/Tests/Runtime/Serializers/SyncVarVirtualTest.cs index aba61ee7471..3f3c004b95a 100644 --- a/Assets/Tests/Runtime/Serializers/SyncVarVirtualTest.cs +++ b/Assets/Tests/Runtime/Serializers/SyncVarVirtualTest.cs @@ -1,4 +1,5 @@ using System; +using Mirage.Serialization; using NUnit.Framework; using UnityEngine; diff --git a/Assets/Tests/Weaver/ExtraAssembly/SomeDataWithWriter.cs b/Assets/Tests/Weaver/ExtraAssembly/SomeDataWithWriter.cs index bd818674cec..41b20d3ca09 100644 --- a/Assets/Tests/Weaver/ExtraAssembly/SomeDataWithWriter.cs +++ b/Assets/Tests/Weaver/ExtraAssembly/SomeDataWithWriter.cs @@ -1,3 +1,5 @@ +using Mirage.Serialization; + namespace Mirage.Weaver.Extra { public struct SomeDataWithWriter diff --git a/Assets/Tests/Weaver/GeneralTests~/TestingScriptableObjectArraySerialization.cs b/Assets/Tests/Weaver/GeneralTests~/TestingScriptableObjectArraySerialization.cs index 6b0caba17b2..df2ffa3454a 100644 --- a/Assets/Tests/Weaver/GeneralTests~/TestingScriptableObjectArraySerialization.cs +++ b/Assets/Tests/Weaver/GeneralTests~/TestingScriptableObjectArraySerialization.cs @@ -1,5 +1,6 @@ using Mirage; using UnityEngine; +using Mirage.Serialization; namespace GeneralTests.TestingScriptableObjectArraySerialization { diff --git a/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForAbstractClass.cs b/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForAbstractClass.cs index 60b8ff93255..5c2ec325977 100644 --- a/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForAbstractClass.cs +++ b/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForAbstractClass.cs @@ -1,4 +1,5 @@ using Mirage; +using Mirage.Serialization; namespace GeneratedReaderWriter.CanUseCustomReadWriteForAbstractClass { diff --git a/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForInterfaces.cs b/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForInterfaces.cs index 1e2e32ad93b..8e0fdd3f1dc 100644 --- a/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForInterfaces.cs +++ b/Assets/Tests/Weaver/GeneratedReaderWriterTests~/CanUseCustomReadWriteForInterfaces.cs @@ -1,4 +1,5 @@ using Mirage; +using Mirage.Serialization; namespace GeneratedReaderWriter.CanUseCustomReadWriteForInterfaces {