Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mirror Attributes with out keyword on generics type confuses IL2CPP #3482

Closed
Reimirno opened this issue May 9, 2023 · 3 comments
Closed
Labels
bug Something isn't working Weaver Bug caused by Weaver

Comments

@Reimirno
Copy link
Contributor

Reimirno commented May 9, 2023

Describe the bug
IL2CPP build failure when you have a function that has both

  • one of the attributes from [Server], [Client], [ServerCallback] or [ClientCallback].
  • an out parameter on a generic type
    Error message varies, but generally you will see some Bee Compiler error like this, indicating syntax error in generated cpp code:
    image

Additional info

  • out parameter on array, or ordinary types works fine with the Mirror Attributes in Unity 2021.
  • in and ref parameter works fine in Unity 2021.
  • The Bee Compiler is new to Unity in 2021 version. I am not sure about the behaviour on lower versions.

How can we reproduce the issue, step by step:
In a Unity 2021 or above project, include a script containing a function as described above. Then, build the project with IL2CPP backend.
I have included a sample script at the end.

Expected behavior
IL2CPP should compile and build without problem.

Environment

  • OS: Windows Education 18362
  • Build target: Windows
  • Unity version: 2021.3.3f1
  • Mirror branch: v78.4.3

Additional context

  • I have looked at the generated cpp code. If I use out HashSet<int> in function A, then IL2CPP seems to believe that there are two separate out HashSet<int> types. It gives you HashSet_1_t3EAA698F222717A950BC3D871BB65D51F83F6B70 in A's signature, but inside A it refers to HashSet<int> as HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735 (mismatch).
  • James on the Discord server claims that they have worked out a fix (message ID: 1105571751498371072)

Sample Script

// Problematic.cs
using System.Collections.Generic;
using Mirror;
using UnityEngine;

public class Problematic : MonoBehaviour
{
    // You can uncomment a method at a time to see the error individually

    // Server Attribute + out generic parameter = error
    [Server]
    public void ServerAndOutGenericParameter(out HashSet<int> dummySet)
    {
        dummySet = new HashSet<int>();
    }

    // // Client Attribute + out generic parameter = error
    // [Client]
    // public void ClientAndOutGenericParameter(out HashSet<int> dummySet)
    // {
    //     dummySet = new HashSet<int>();
    // }

    // // ServerCallback Attribute + out generic parameter = error
    // [ServerCallback]
    // public void ServerCallbackAndOutGenericParameter(out HashSet<int> dummySet)
    // {
    //     dummySet = new HashSet<int>();
    // }

    // // ClientCallback Attribute + out generic parameter = error
    // [ClientCallback]
    // public void ClientCallbackAndOutGenericParameter(out HashSet<int> dummySet)
    // {
    //     dummySet = new HashSet<int>();
    // }
}
@Reimirno Reimirno changed the title Mirror Attributse with out keyword on generics type confuses IL2CPP Mirror Attributes with out keyword on generics type confuses IL2CPP May 9, 2023
@miwarnec miwarnec added bug Something isn't working Weaver Bug caused by Weaver labels May 10, 2023
@miwarnec
Copy link
Collaborator

miwarnec commented May 14, 2023

ok, can reproduce it by adding the above function to Tanks/Player.cs and building with IL2CPP with unity 2021 LTS

@miwarnec
Copy link
Collaborator

generated IL:

	// Methods
	.method public hidebysig 
		instance void ServerAndOutGenericParameter (
			[out] class [netstandard]System.Collections.Generic.HashSet`1<int32>& dummySet
		) cil managed 
	{
		.custom instance void [Mirror]Mirror.ServerAttribute::.ctor() = (
			01 00 00 00
		)
		// Method begins at RVA 0x2100
		// Header size: 12
		// Code size: 50 (0x32)
		.maxstack 2
		.locals init (
			[0] class [netstandard]System.Collections.Generic.HashSet`1
		)

		// if (!NetworkServer.active)
		IL_0000: call bool [Mirror]Mirror.NetworkServer::get_active()
		IL_0005: brtrue IL_002a

		// Debug.LogWarning((object)"[Server] function 'System.Void Mirror.Examples.Tanks.Tank::ServerAndOutGenericParameter(System.Collections.Generic.HashSet`1<System.Int32>&)' called when server was not active");
		IL_000a: ldstr "[Server] function 'System.Void Mirror.Examples.Tanks.Tank::ServerAndOutGenericParameter(System.Collections.Generic.HashSet`1<System.Int32>&)' called when server was not active"
		IL_000f: call void [UnityEngine.CoreModule]UnityEngine.Debug::LogWarning(object)
		// dummySet = null;
		IL_0014: ldarg dummySet
		IL_0018: ldloca.s 0
		IL_001a: initobj [netstandard]System.Collections.Generic.HashSet`1
		IL_0020: ldloc 0
		IL_0024: stobj [netstandard]System.Collections.Generic.HashSet`1
		// }
		IL_0029: ret

		// dummySet = new HashSet<int>();
		// sequence point: (line 30, col 13) to (line 30, col 43) in /Users/qwerty/x/dev/project_Mirror/Repository/Assets/Mirror/Examples/Tanks/Scripts/Tank.cs
		IL_002a: ldarg.1
		IL_002b: newobj instance void class [netstandard]System.Collections.Generic.HashSet`1<int32>::.ctor()
		IL_0030: stind.ref
		// (no C# code)
		// sequence point: (line 31, col 9) to (line 31, col 10) in /Users/qwerty/x/dev/project_Mirror/Repository/Assets/Mirror/Examples/Tanks/Scripts/Tank.cs
		IL_0031: ret
	} // end of method Tank::ServerAndOutGenericParameter

@miwarnec
Copy link
Collaborator

detailed IL2CPP error:

Building Library/Bee/artifacts/MacStandalonePlayerBuildProgram/4t7v3/tfd0_r.Examples.o failed with output:
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8785:2: error: unknown type name 'HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735'
        HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735* V_0 = NULL;
        ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8799:41: error: use of undeclared identifier 'HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735'
                il2cpp_codegen_initobj((&V_0), sizeof(HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735*));
                                                      ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8799:93: error: expected expression
                il2cpp_codegen_initobj((&V_0), sizeof(HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735*));
                                                                                                          ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8800:3: error: unknown type name 'HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735'
                HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735* L_2 = V_0;
                ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8801:5: error: use of undeclared identifier 'HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735'
                *(HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735**)L_1 = L_2;
                  ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8801:58: error: expected expression
                *(HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735**)L_1 = L_2;
                                                                       ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8802:38: error: use of undeclared identifier 'HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735'
                Il2CppCodeGenWriteBarrier((void**)(HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735**)L_1, (void*)L_2);
                                                   ^
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:8802:91: error: expected expression
                Il2CppCodeGenWriteBarrier((void**)(HashSet_1_tA1368DD5977A2271895CEEC3D6282C68C9675735**)L_1, (void*)L_2);
                                                                                                        ^
In file included from /Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:1:
In file included from /Applications/Unity/Hub/Editor/2021.3.23f1/Unity.app/Contents/il2cpp/libil2cpp/pch/pch-cpp.hpp:6:
In file included from /Applications/Unity/Hub/Editor/2021.3.23f1/Unity.app/Contents/il2cpp/libil2cpp/codegen/il2cpp-codegen.h:10:
In file included from /Applications/Unity/Hub/Editor/2021.3.23f1/Unity.app/Contents/il2cpp/libil2cpp/codegen/il2cpp-codegen-il2cpp.h:3:
/Applications/Unity/Hub/Editor/2021.3.23f1/Unity.app/Contents/il2cpp/libil2cpp/codegen/il2cpp-codegen-common-small.h:35:20: warning: implicit conversion from 'long long' to 'int' changes value from -9223372036854775808 to 0 [-Wconstant-conversion]
            return INT64_MIN;
            ~~~~~~ ^~~~~~~~~
/Library/Developer/CommandLineTools/SDKs/MacOSX13.sdk/usr/include/stdint.h:105:37: note: expanded from macro 'INT64_MIN'
#define INT64_MIN        (-INT64_MAX-1)
                          ~~~~~~~~~~^~
/Users/qwerty/x/dev/project_Mirror/Repository/Library/Bee/artifacts/MacStandalonePlayerBuildProgram/il2cppOutput/cpp/Mirror.Examples.cpp:32284:9: note: in instantiation of function template specialization 'il2cpp_codegen_cast_double_to_int<int>' requested here
                V_0 = il2cpp_codegen_cast_double_to_int<int32_t>(L_1);
                      ^
1 warning and 8 errors generated.
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) (at /Users/bokken/build/output/unity/unity/Modules/IMGUI/GUIUtility.cs:189)

github-actions bot pushed a commit to James-Frowen/Mirror that referenced this issue Jul 25, 2023
# [39.0.0](https://github.com/James-Frowen/Mirror/compare/v38.0.1...v39.0.0) (2023-07-25)

### breaking

* **NetworkManager:** Removed obsolete OnServerError / OnClientError ([4b34dc2](https://github.com/James-Frowen/Mirror/commit/4b34dc2fe8771f0b1c05fead47ab46c3e66cc43e))

### Bug Fixes

* "Spawned object not found when handling Command message" for unreliable commands which may have arrived before spawning, e.g. for NetworkTransform ([#3007](https://github.com/James-Frowen/Mirror/issues/3007)) ([975828f](https://github.com/James-Frowen/Mirror/commit/975828f3dcda60dd4ff1d70ec8d1de6a2ffee790))
* [#2060](https://github.com/James-Frowen/Mirror/issues/2060) serializing GameObjects / NetworkIdentities now throws an obvious exception for prefabs / unspawned objects ([#3132](https://github.com/James-Frowen/Mirror/issues/3132)) ([1a6c5de](https://github.com/James-Frowen/Mirror/commit/1a6c5de8acde863805fe27dbbf22a99c60bda6a4))
* [#2119](https://github.com/James-Frowen/Mirror/issues/2119) - DestroyObject is now called when cleaning up scene identities too. Sends unspawn messages and calls OnStopClient/Server properly. ([d466d73](https://github.com/James-Frowen/Mirror/commit/d466d73f853c9fae9da894dd487296509e34e4ef))
* [#2240](https://github.com/James-Frowen/Mirror/issues/2240) [#3324](https://github.com/James-Frowen/Mirror/issues/3324) NetworkIdentity.OnDestroy removes from spawned if not removed yet. prevents null entries in .spawned. ([#3327](https://github.com/James-Frowen/Mirror/issues/3327)) ([739ef7c](https://github.com/James-Frowen/Mirror/commit/739ef7ccc0c4119c9c8ec5879a7a96e79f34d396))
* [#2536](https://github.com/James-Frowen/Mirror/issues/2536), [#2834](https://github.com/James-Frowen/Mirror/issues/2834) - stop transport server even if dontListen in case it was enabled at runtime ([08c74de](https://github.com/James-Frowen/Mirror/commit/08c74deca0eae53097bf86a68b9083135940c253))
* [#2651](https://github.com/James-Frowen/Mirror/issues/2651) scene changing with batching would cause errors because we wouldn't stop the batch processing after a scene message ([#2774](https://github.com/James-Frowen/Mirror/issues/2774)) ([c5e8614](https://github.com/James-Frowen/Mirror/commit/c5e861410157cea1731450675138d40d1e6aba9a))
* [#2674](https://github.com/James-Frowen/Mirror/issues/2674) - Quaternion Compression LargestAbsoluteComponentIndex largest absolute was accidentally initialized with largest, instead of largest absolute ([2aa791a](https://github.com/James-Frowen/Mirror/commit/2aa791a72618c7fd7fd00dc5abd3aa49fca2f81d))
* [#2705](https://github.com/James-Frowen/Mirror/issues/2705) NetworkClient.SpawnPrefab looks for spawn handlers before looking for registered prefabs, instead of the other way around ([eded0a2](https://github.com/James-Frowen/Mirror/commit/eded0a2b15fd873e42217aee75abe101557fcbb0))
* [#2739](https://github.com/James-Frowen/Mirror/issues/2739): NetworkServer.Update now operates on a copy of connections so transports can call OnTransportDisconnected from within send. avoids 'collection can't be modified while iterating' exception ([c815629](https://github.com/James-Frowen/Mirror/commit/c8156292a576b29993ae60957b1a44199e4a5f3a))
* [#2744](https://github.com/James-Frowen/Mirror/issues/2744) KcpTransport statistics changed to long to avoid int overflows ([6eea1e7](https://github.com/James-Frowen/Mirror/commit/6eea1e77f57af0659be265477650c6ef2fb02b45))
* [#2778](https://github.com/James-Frowen/Mirror/issues/2778) SpawnObjects SetActive(true) would not initialize NetworkIdentity if the parent is inactive because Unity would not call Awake() ([2c2581f](https://github.com/James-Frowen/Mirror/commit/2c2581fa08cc9f9611ac3ab8fbca73b3275e9e33))
* [#2793](https://github.com/James-Frowen/Mirror/issues/2793) - Interest Management V2 now offers SetHostVisibility overwriting ([#2813](https://github.com/James-Frowen/Mirror/issues/2813)) ([fb052a3](https://github.com/James-Frowen/Mirror/commit/fb052a30b5f2e3d4f58378d4d4309829e8b35f5d))
* [#2797](https://github.com/James-Frowen/Mirror/issues/2797) Clear hasAuthority when Destroying and call OnStopAuthority ([0d2733c](https://github.com/James-Frowen/Mirror/commit/0d2733c56450c6138802f1bdcc6eedbb91315fe8))
* [#2818](https://github.com/James-Frowen/Mirror/issues/2818) NetworkClient Disconnecting state added. Disconnect now sets state to Disconnecting. OnTransportDisconnected doesn't early return anymore because state was == Disconnected already before. fixes OnClientDisconnect not being called for remote connections. ([#2821](https://github.com/James-Frowen/Mirror/issues/2821)) ([1c23b70](https://github.com/James-Frowen/Mirror/commit/1c23b70ca89994accbb3aa3758d938d9d955f457))
* [#2822](https://github.com/James-Frowen/Mirror/issues/2822) - OnClientDisconnect wasn't called for host disconnect because LocalConnectionToServer wouldn't call OnTransportDisconnected ([#2823](https://github.com/James-Frowen/Mirror/issues/2823)) ([b305741](https://github.com/James-Frowen/Mirror/commit/b305741b4bd040049d4189894b53a60744177a36))
* [#2842](https://github.com/James-Frowen/Mirror/issues/2842) Revert "fix: Prevent recursion overflow when stopping ([#2833](https://github.com/James-Frowen/Mirror/issues/2833))" ([24033c1](https://github.com/James-Frowen/Mirror/commit/24033c101b328bb46b4bada5a7105f81d304fce1))
* [#2882](https://github.com/James-Frowen/Mirror/issues/2882) UnpackAndInvoke now errors and disconnects in case of missing handler. This is necessary because messages in a batch are not length prefixed. we always need to read to the end, otherwise it overlaps into the next one, causing undefined behaviour. ([86eeecc](https://github.com/James-Frowen/Mirror/commit/86eeecc9cf11d710be5d92de2f7553a5a895eb19))
* [#2907](https://github.com/James-Frowen/Mirror/issues/2907) LatencySimulation now uses Time.unscaledTime ([e7a2a14](https://github.com/James-Frowen/Mirror/commit/e7a2a1467f7d6c2372e8064e2defffb55c874dd1))
* [#2912](https://github.com/James-Frowen/Mirror/issues/2912) ILPostProcessor isn't used before 2020.3 because Unity bugs ([8b5534f](https://github.com/James-Frowen/Mirror/commit/8b5534f51fd998c6544ef7b5e81864bbd952ba9d))
* [#2928](https://github.com/James-Frowen/Mirror/issues/2928) - Weaver now recommends 'readonly' keywords for SyncObjects ([#2941](https://github.com/James-Frowen/Mirror/issues/2941)) ([7e546cf](https://github.com/James-Frowen/Mirror/commit/7e546cf799867d4f970b3ebd7d4bd111c6d52a53))
* [#2954](https://github.com/James-Frowen/Mirror/issues/2954) calling StopClient in host mode does not destroy other client's objects anymore ([d8774ec](https://github.com/James-Frowen/Mirror/commit/d8774ecd478b51c6404816c0d8a681ad6d8916fd))
* [#2954](https://github.com/James-Frowen/Mirror/issues/2954) calling StopClient in host mode does not reset nextNetId anymore ([6f98122](https://github.com/James-Frowen/Mirror/commit/6f981224a93e1d16387af454d5da6d4f85806510))
* [#2972](https://github.com/James-Frowen/Mirror/issues/2972) ReadNetworkBehaviour now reads the correct amount of data even if the NetworkIdentity has disappeared on the client. ([243821f](https://github.com/James-Frowen/Mirror/commit/243821f5b1e40de8c8e95f5a77703646358ec529))
* [#3022](https://github.com/James-Frowen/Mirror/issues/3022) kcp2k V1.15 - MaxRetransmit aka dead_link is now configurable. fixes issues where dead_link may have been too low causing premature disconnects. Default is now '40' instead of Kcp.DEAD_LINK '20'. ([b0b0193](https://github.com/James-Frowen/Mirror/commit/b0b01938e69bcc37675a6cccf2ebd3098b859ac3))
* [#3024](https://github.com/James-Frowen/Mirror/issues/3024) Revert NT Bandwidth savings for now ([c08ceb6](https://github.com/James-Frowen/Mirror/commit/c08ceb6a82d0f23874b1cb7765e5de842c5fbcaf))
* [#3044](https://github.com/James-Frowen/Mirror/issues/3044) Revert "perf: NetworkWriter/Reader Write/ReadBlittable<T> for 4-6x performance improvement! (based on [#2441](https://github.com/James-Frowen/Mirror/issues/2441)) ([#3036](https://github.com/James-Frowen/Mirror/issues/3036))" ([c030574](https://github.com/James-Frowen/Mirror/commit/c030574345b7ac7cdeb059860c60997121a64cac))
* [#3044](https://github.com/James-Frowen/Mirror/issues/3044) Revert "perf: NetworkWriter/Reader Write/ReadBlittable<T> for 4-6x performance improvement! (based on [#2441](https://github.com/James-Frowen/Mirror/issues/2441)) ([#3036](https://github.com/James-Frowen/Mirror/issues/3036))" ([2b441d1](https://github.com/James-Frowen/Mirror/commit/2b441d181eb661f256f82e7a5b95b7ab3c782fab))
* [#3106](https://github.com/James-Frowen/Mirror/issues/3106) NetworkClient.ChangeOwner now uses .isLocalPlayer flag to check if OnStopLocalPlayer should be called. ([f6df4ed](https://github.com/James-Frowen/Mirror/commit/f6df4edaae9bb77990cd17e50e0ff2ba1acf2cdd))
* [#3122](https://github.com/James-Frowen/Mirror/issues/3122) DestroyAllClientObjects now also resets after unspawn handler was called ([#3124](https://github.com/James-Frowen/Mirror/issues/3124)) ([3d6c41a](https://github.com/James-Frowen/Mirror/commit/3d6c41a595d4e0863910aafd3c8b11a233864260))
* [#3138](https://github.com/James-Frowen/Mirror/issues/3138), 3135 revert Cmd/Rpc from 2 byte indices back to 4 byte function hashes for stability ([#3139](https://github.com/James-Frowen/Mirror/issues/3139)) ([4d0cd10](https://github.com/James-Frowen/Mirror/commit/4d0cd1054a9011ee4492f91ed4bd16c671fea470)), closes [#3135](https://github.com/James-Frowen/Mirror/issues/3135) [#3119](https://github.com/James-Frowen/Mirror/issues/3119)
* [#3144](https://github.com/James-Frowen/Mirror/issues/3144) Reader/Writer Sprite null support & test to guarantee it never happens again ([2984350](https://github.com/James-Frowen/Mirror/commit/298435001afe407c8ec76bc4268f0cb1caff4f96))
* [#3144](https://github.com/James-Frowen/Mirror/issues/3144) Reader/Writer Texture2D null support & test to guarantee it never happens again ([ae1c7c5](https://github.com/James-Frowen/Mirror/commit/ae1c7c5fe4459ce9bacc59ec3229c4191be7c98e))
* [#3152](https://github.com/James-Frowen/Mirror/issues/3152) [#3213](https://github.com/James-Frowen/Mirror/issues/3213) NetworkClient.AddTransportHandlers ensures they are only added once, never twice even if a community Transport forgets to call OnDisconnected ([3a7a5be](https://github.com/James-Frowen/Mirror/commit/3a7a5be152266661b152b8b3a9c1903a176562fd))
* [#3234](https://github.com/James-Frowen/Mirror/issues/3234) assetId setter now allows overwriting an old assetId after duplicating a prefab. ([270be5f](https://github.com/James-Frowen/Mirror/commit/270be5f45287a05c232115c3876893a2062df23c))
* [#3258](https://github.com/James-Frowen/Mirror/issues/3258) NetworkWriter.WriteString now ensures capacity before manually writing into the buffer ([d79de6b](https://github.com/James-Frowen/Mirror/commit/d79de6bf0ca1dc547f4a7d6fddd96aa931322eda))
* [#3259](https://github.com/James-Frowen/Mirror/issues/3259) NetworkClient.ApplySpawnPayload now initializes NetworkIdentity flags before DeserializeClient invokes SyncVar hooks ([3815fe9](https://github.com/James-Frowen/Mirror/commit/3815fe94a80ef9727c7db9c2418f4d51e5fdc205))
* [#3280](https://github.com/James-Frowen/Mirror/issues/3280) [#3083](https://github.com/James-Frowen/Mirror/issues/3083) [#3217](https://github.com/James-Frowen/Mirror/issues/3217) MultiplexTransport connectionId multiplexing out of int.max range ([#3291](https://github.com/James-Frowen/Mirror/issues/3291)) ([6d60471](https://github.com/James-Frowen/Mirror/commit/6d60471868a83591ae8634898d40b17be832e525))
* [#3287](https://github.com/James-Frowen/Mirror/issues/3287) Telepathy NullReferenceException on client after Server was forcefully closed ([ce9d52e](https://github.com/James-Frowen/Mirror/commit/ce9d52e8fdd4812f18c2495feef128962b49e9a6))
* [#3290](https://github.com/James-Frowen/Mirror/issues/3290): Weaver HasNetworkConnectionParameter now supports inheritance ([#3293](https://github.com/James-Frowen/Mirror/issues/3293)) ([4ae4834](https://github.com/James-Frowen/Mirror/commit/4ae4834f7a9b89a8c81c3587cc1f538a417c9488))
* [#3302](https://github.com/James-Frowen/Mirror/issues/3302) StartHost: user callbacks OnStartServer/OnStartHost aren't invoked until everything was set up in FinishStartHost. ([#3304](https://github.com/James-Frowen/Mirror/issues/3304)) ([42a0c8e](https://github.com/James-Frowen/Mirror/commit/42a0c8ef671fbcb5803fee43f8484f610d55f2a9))
* [#3307](https://github.com/James-Frowen/Mirror/issues/3307) kcp2k V1.24 ([3e3a1cb](https://github.com/James-Frowen/Mirror/commit/3e3a1cbb4474a1f4777f2e761ce8e00adc031343))
* [#3308](https://github.com/James-Frowen/Mirror/issues/3308) scene change NetworkClient.owned null entry. NetworkIdentity.OnDestroy now removes from owned. ([#3325](https://github.com/James-Frowen/Mirror/issues/3325)) ([100847c](https://github.com/James-Frowen/Mirror/commit/100847cc3158c1b8d3fcd01cc0ba47be66860755))
* [#3315](https://github.com/James-Frowen/Mirror/issues/3315) ClientToServer SyncList support ([#3320](https://github.com/James-Frowen/Mirror/issues/3320)) ([6cf03d6](https://github.com/James-Frowen/Mirror/commit/6cf03d60a39f4c655c4bc4e15f0fe014b6100d1e))
* [#3318](https://github.com/James-Frowen/Mirror/issues/3318) NetworkServer.SpawnObjects only spawns objects which haven't been spawned yet. ([#3328](https://github.com/James-Frowen/Mirror/issues/3328)) ([e95c9ae](https://github.com/James-Frowen/Mirror/commit/e95c9ae9a7edd2ff07810cf98facd326c8557278))
* [#3326](https://github.com/James-Frowen/Mirror/issues/3326) NetworkIdentity doesn't reset SyncObjects anymore ([#3339](https://github.com/James-Frowen/Mirror/issues/3339)) ([273f910](https://github.com/James-Frowen/Mirror/commit/273f91088fa537a1e8a97147613df5da5ead8108))
* [#3329](https://github.com/James-Frowen/Mirror/issues/3329) NetworkTransform UpdateServer checks if .connectionToClient is null to support room demo / scene changes ([ca9f07d](https://github.com/James-Frowen/Mirror/commit/ca9f07d8120c9affaddb008b7dcc40e121e4a5be))
* [#3330](https://github.com/James-Frowen/Mirror/issues/3330) [#2422](https://github.com/James-Frowen/Mirror/issues/2422) SpawnObjects now activates, but does not spawn scene objects with inactive parents ([#3347](https://github.com/James-Frowen/Mirror/issues/3347)) ([3c85efa](https://github.com/James-Frowen/Mirror/commit/3c85efa2d91d5f1feb6972086739bec1bf5aa0f5))
* [#3334](https://github.com/James-Frowen/Mirror/issues/3334) NetworkClient DestroyAllClientObjects Before ClearSpawners ([#3336](https://github.com/James-Frowen/Mirror/issues/3336)) ([c364d19](https://github.com/James-Frowen/Mirror/commit/c364d194fe892118e45be7b5995d1bf7fb849d7b))
* [#3340](https://github.com/James-Frowen/Mirror/issues/3340) SyncList callbacks are only called once ([c5aa474](https://github.com/James-Frowen/Mirror/commit/c5aa4746e1fb6f3b3d081b8e37d9f0d5c4de35d3))
* [#3340](https://github.com/James-Frowen/Mirror/issues/3340) SyncSet/Dictionary callbacks are only called once ([7b7ad85](https://github.com/James-Frowen/Mirror/commit/7b7ad852043fcb9792926adb9aa46de339e02998))
* [#3341](https://github.com/James-Frowen/Mirror/issues/3341) SyncLists can now be modified before spawning again ([8570afa](https://github.com/James-Frowen/Mirror/commit/8570afab94d49d0d91142e1f089f683b64de3256))
* [#3342](https://github.com/James-Frowen/Mirror/issues/3342) InitSyncObject IsWritable/IsRecording permissions fixed for host mode and other player's objects on client ([02218bd](https://github.com/James-Frowen/Mirror/commit/02218bda13d19efd436ebfc343dd13a6bd06cc2d))
* [#3343](https://github.com/James-Frowen/Mirror/issues/3343) allow modifying client synclists for unspawned objects like character previews ([0d53f7c](https://github.com/James-Frowen/Mirror/commit/0d53f7c3a03ceca31207d0389c57c9c16275a722))
* [#3344](https://github.com/James-Frowen/Mirror/issues/3344) NetworkServer.Shutdown sets active=false after destroying spawned objects. ([027458d](https://github.com/James-Frowen/Mirror/commit/027458db967f2e9533411f44558c81633061f743))
* [#3351](https://github.com/James-Frowen/Mirror/issues/3351) - Reset Statics in NS, NC, and NC_TimeInterpolation ([#3353](https://github.com/James-Frowen/Mirror/issues/3353)) ([875b345](https://github.com/James-Frowen/Mirror/commit/875b34540ac6862dd65b71dd613feae19ea5a36e))
* [#3354](https://github.com/James-Frowen/Mirror/issues/3354) SyncList callback for OP_SET index parameter fixed ([e16e556](https://github.com/James-Frowen/Mirror/commit/e16e55616b0b5027350a494d49d4f48b9500586b))
* [#3362](https://github.com/James-Frowen/Mirror/issues/3362) BootstrapIdentity now initializes isClient/isLocalPlayer flags before calling OnStartAuthority ([0312bf7](https://github.com/James-Frowen/Mirror/commit/0312bf710324fbde0553a0091151aa703d0d1d66))
* [#3365](https://github.com/James-Frowen/Mirror/issues/3365) NetworkClient.OnTransportDisconnected now always invokes OnDisconnected, even during connecting phase ([7d2d21a](https://github.com/James-Frowen/Mirror/commit/7d2d21ac2cf0c064a42cdb2fd9417e02c0563df6))
* [#3367](https://github.com/James-Frowen/Mirror/issues/3367) NetworkTransformReliable now checks for changes at the end of UpdateServer, not at the beginning [imer] ([deddbe6](https://github.com/James-Frowen/Mirror/commit/deddbe6ee94f9c841625970845be49f5a5d29d35))
* [#3392](https://github.com/James-Frowen/Mirror/issues/3392) NetworkLoop now checks if the function was already added before. fixes functions being added twice with Domain Reload disabled. ([8f66bd6](https://github.com/James-Frowen/Mirror/commit/8f66bd68ca6e6e298b560b2e9c8234f40bf1a06f))
* [#3409](https://github.com/James-Frowen/Mirror/issues/3409) - NetworkTime now always uses unscaled time as double. Forgot to push the commit for the previous commit's PR ([4193b54](https://github.com/James-Frowen/Mirror/commit/4193b5401e29703c110f35ed623471a362ee56f8))
* [#3409](https://github.com/James-Frowen/Mirror/issues/3409) NetworkTime now always uses ([#3475](https://github.com/James-Frowen/Mirror/issues/3475)) ([754a98f](https://github.com/James-Frowen/Mirror/commit/754a98fd71650b7f6d0fbe9ef97fcc6fd603aa8f))
* [#3427](https://github.com/James-Frowen/Mirror/issues/3427) NetworKTransformReliable now has a timelineOffset to account for decoupled arrival of NetworkTime and NetworkTransform snapshots ([#3428](https://github.com/James-Frowen/Mirror/issues/3428)) ([30d7b5b](https://github.com/James-Frowen/Mirror/commit/30d7b5b3a89a51c7ed4507b53a2b9975d376b767))
* [#3447](https://github.com/James-Frowen/Mirror/issues/3447) make cached SyncVar fallback to original field value when there is no network context ([#3449](https://github.com/James-Frowen/Mirror/issues/3449)) ([88170ed](https://github.com/James-Frowen/Mirror/commit/88170ed1415721362c89e986b5b03b43867167d0))
* [#3455](https://github.com/James-Frowen/Mirror/issues/3455) TargetRpc(NetworkConnectionToClient) weaver generated InvokeTargetRpc now passes 'null' as connection parameter on clients. ([#3465](https://github.com/James-Frowen/Mirror/issues/3465)) ([4eeb703](https://github.com/James-Frowen/Mirror/commit/4eeb7034881d74bb21b230aadb5b2fe049aab92c))
* [#3457](https://github.com/James-Frowen/Mirror/issues/3457) Make NumSyncVars take parent class syncvars into account ([#3458](https://github.com/James-Frowen/Mirror/issues/3458)) ([3420c88](https://github.com/James-Frowen/Mirror/commit/3420c88692cf1495f4e77515f0a45852684c1b68))
* [#3482](https://github.com/James-Frowen/Mirror/issues/3482) Weaver Generic 'out' parameter IL2CPP build failures [credit: JamesDev] ([bf5cd97](https://github.com/James-Frowen/Mirror/commit/bf5cd97e6920e280b506359b68cc897e5d060674))
* [#3485](https://github.com/James-Frowen/Mirror/issues/3485) Weaver now skips protected fields (Credit: James) ([#3493](https://github.com/James-Frowen/Mirror/issues/3493)) ([d74e612](https://github.com/James-Frowen/Mirror/commit/d74e61298efbf7410c64f9e6af5969f2355d76cf))
* [#3525](https://github.com/James-Frowen/Mirror/issues/3525) by explaining the solution in the Error message. ([acf67dd](https://github.com/James-Frowen/Mirror/commit/acf67dddb03b06100b92c1c4b3ed44f84d4cf85e))
* [#3538](https://github.com/James-Frowen/Mirror/issues/3538) calling unspawn on scene objects in DestroyOwnedObjects ([#3542](https://github.com/James-Frowen/Mirror/issues/3542)) ([08fa026](https://github.com/James-Frowen/Mirror/commit/08fa0269de12a70a38d2355cf9142ed28120b8f2))
* 2019 support ([5509bb7](https://github.com/James-Frowen/Mirror/commit/5509bb73bb4bf54d674f18c269ee08686bb19450))
* 2019 tests work again ([#3547](https://github.com/James-Frowen/Mirror/issues/3547)) ([39211f9](https://github.com/James-Frowen/Mirror/commit/39211f90023060001794f8da882051c422576282))
* AddComponentMenu hide example / obsolete components ([274721b](https://github.com/James-Frowen/Mirror/commit/274721b2976e895da892cbd781d07c3152826c96))
* added / updated AddComponent attributes ([#3062](https://github.com/James-Frowen/Mirror/issues/3062)) ([238c80d](https://github.com/James-Frowen/Mirror/commit/238c80dc33b09d09e2ededf75aa1331045ca030a))
* Added clientStarted check to OnStopClient ([461ce27](https://github.com/James-Frowen/Mirror/commit/461ce2790885cd9668672078cc63f30cfd674f8f)), closes [#3245](https://github.com/James-Frowen/Mirror/issues/3245)
* Added empty version file ([35e4122](https://github.com/James-Frowen/Mirror/commit/35e41227d017436f6baeb5b7d76bc6d9fb06cf2e))
* Added HashSet for disconnecting connections ([#2981](https://github.com/James-Frowen/Mirror/issues/2981)) ([803e804](https://github.com/James-Frowen/Mirror/commit/803e804d87db98ca8542f17a6260349d0c4a8978))
* Added missing [Command] attribute to NetworkAnimator.CmdSetAnimatorSpeed ([015c4d3](https://github.com/James-Frowen/Mirror/commit/015c4d3f3575a6e35cbf716f0a939b4b1e609b8b))
* Added missing EventSystem to example scenes ([63235f2](https://github.com/James-Frowen/Mirror/commit/63235f2f736982c99816d5af4f208f914a9c84c5))
* Added null check and error logging to OnDeserializeAllSafely ([b86c861](https://github.com/James-Frowen/Mirror/commit/b86c8615f45dbb7ed05831d4a381846fc347ad19))
* added Queue.TryDequeue extension for Unity 2019 ([3d471db](https://github.com/James-Frowen/Mirror/commit/3d471db938f11dc4e1d4607adac1fb9a148b2350))
* Added SimpleWebTransport to Mirror.Transports AsmDef ([79718d0](https://github.com/James-Frowen/Mirror/commit/79718d0638b926dd6a1b3959984e2ab7e788de7a))
* **Additive Levels:** Improve FadeInOut timing ([6e2227d](https://github.com/James-Frowen/Mirror/commit/6e2227dcbf96dd49de95c3bfb4e1a480c9d4ebbe))
* **AdditiveLevels:** FadeInOut more user friendly ([1aedd8d](https://github.com/James-Frowen/Mirror/commit/1aedd8d7c052e8cc7c5ce228bf367a0d2f98905d))
* **AdditiveLevels:** Improved FadeInOut Timing ([7333f88](https://github.com/James-Frowen/Mirror/commit/7333f88e1ff09970b0171016b6a2ba3ab4ab8cd7))
* Android multicast Discovery. Fixes [#2878](https://github.com/James-Frowen/Mirror/issues/2878) ([#2887](https://github.com/James-Frowen/Mirror/issues/2887)) ([7670271](https://github.com/James-Frowen/Mirror/commit/7670271bf1f70840b73562c5933e9dec35484a01))
* Avoid NRE in UnpackAndInvoke ([#2800](https://github.com/James-Frowen/Mirror/issues/2800)) ([57d1892](https://github.com/James-Frowen/Mirror/commit/57d1892433ba3ebef9b382eea48b370087321762))
* **BasicExample:** Revert unintended changes ([35ec40e](https://github.com/James-Frowen/Mirror/commit/35ec40ea60a7ab3a6155a595ab573b4e6b2d09fd))
* Batcher 'MaxBatchSize' changed to 'Threshold' to support larger messages too. They simply become large batches, while smaller ones are still fitted into 'Threshold'. fixes data race where larger messages would be sent immediately, while smaller ones would be sent at the end of the frame. prepares for timestamp batching which assumes a timestamp prefix for ALL batches (including larger ones, which previously would be treated as not a batch) ([#2787](https://github.com/James-Frowen/Mirror/issues/2787)) ([2a563b9](https://github.com/James-Frowen/Mirror/commit/2a563b96df4e71d7b5f58962b43d6bace0ea00d2))
* Batching VarInt size header added to fix custom serializated NetworkMessages with size mismatch corrupting the next message in a batch ([#3516](https://github.com/James-Frowen/Mirror/issues/3516)) ([13fd721](https://github.com/James-Frowen/Mirror/commit/13fd7211e0b57e0751c10dfdf59c16778bf22476))
* Benchmark demo Spatial Hashing radius reduced from 200 to 30 so the monsters actually despawn when walking out of range in the demo ([4127345](https://github.com/James-Frowen/Mirror/commit/4127345f8a2b9e058cc9217470713eab571eb558))
* Benchmark movement destinations set around start, not around position. prevents them from stopping to move because of the wander off protection. ([cebfab0](https://github.com/James-Frowen/Mirror/commit/cebfab010f227a457ba4caad9edff6cee06dc39e))
* breaking: Spatial hashing interest management resolution formula fixed. this is why spatial hashing visibility range always seemed a bit lower than with distance interest management. ([5f4a031](https://github.com/James-Frowen/Mirror/commit/5f4a03109dbe664309080e9365d34ebafd269a2b))
* Byte format test uses current culture ([#3126](https://github.com/James-Frowen/Mirror/issues/3126)) ([1631402](https://github.com/James-Frowen/Mirror/commit/1631402bd7cad3f349f12a4e0d4eb82821c382a9))
* Call OnStopLocalPlayer from ChangeOwner ([27e71ac](https://github.com/James-Frowen/Mirror/commit/27e71acef620de7fe28813e7c2095b4628268eb5))
* Call StopDiscovery when stopping Host/Server/Client in DiscoveryHUD ([0b4fd22](https://github.com/James-Frowen/Mirror/commit/0b4fd22c36ea34b1ca851c79bf6a9c433ea82923)), closes [#2477](https://github.com/James-Frowen/Mirror/issues/2477)
* ChangeOwner now adds/removes from owned hashset ([a35c0db](https://github.com/James-Frowen/Mirror/commit/a35c0dbd9a69779f0fa1fc6f5b6e4014ca5bcefd))
* Chat Example Authenticator ([44dfce9](https://github.com/James-Frowen/Mirror/commit/44dfce94b19782666981f0388d274babc0c2a2e8))
* **Chat Example:** moved playerNames HashSet to ChatAuthenticator ([b377d76](https://github.com/James-Frowen/Mirror/commit/b377d765ec36c8352ec24c5ed2f20fd92dbbf64e))
* Check NetworkServer.active in DestroyObject ([#2982](https://github.com/James-Frowen/Mirror/issues/2982)) ([895279e](https://github.com/James-Frowen/Mirror/commit/895279ee79f8da1045fc35f7a9e58a9ca7a1d959)), closes [#2977](https://github.com/James-Frowen/Mirror/issues/2977)
* CleanupNetworkIdentities needs to iterate a copied .spawned list becuase we now call DestroyObject directly. previously Destroy would call OnDestroy the next frame. ([0f069fc](https://github.com/James-Frowen/Mirror/commit/0f069fc848e3eb85569c183647ca6a2643b44b19))
* Clear hasAuthority when Unspawning ([#2927](https://github.com/James-Frowen/Mirror/issues/2927)) ([4efb0a6](https://github.com/James-Frowen/Mirror/commit/4efb0a64ffdf30eaabe72370e09b29a50ca42a81))
* Clear observers from other clients ([#2757](https://github.com/James-Frowen/Mirror/issues/2757)) ([456e098](https://github.com/James-Frowen/Mirror/commit/456e09854436f4be9076b1208f0d3312b7093566)), closes [#2737](https://github.com/James-Frowen/Mirror/issues/2737)
* clientAuthority access ([#2779](https://github.com/James-Frowen/Mirror/issues/2779)) ([d2ee497](https://github.com/James-Frowen/Mirror/commit/d2ee4979f70395bbbea4fc312d974a890ccd5bf5))
* ClientToServer [SyncVar] wouldn't be broadcast to other clients because server never set it dirty ([d5f7c4b](https://github.com/James-Frowen/Mirror/commit/d5f7c4bc011e73d81f1dedd3c732c19d14b1c06c))
* Correct version for Queue.TryDequeue ([c79c6d1](https://github.com/James-Frowen/Mirror/commit/c79c6d1e70e61fceefe4b432f956875bdb4c4b84)), closes [#3131](https://github.com/James-Frowen/Mirror/issues/3131)
* disable weaver registered twice logs on ILPP again ([e4305b9](https://github.com/James-Frowen/Mirror/commit/e4305b9d97c38e33ec091bd48b75bf711e299fbd))
* Disallow Child-NetworkIdentities in Scene objects ([#3492](https://github.com/James-Frowen/Mirror/issues/3492)) ([f84a385](https://github.com/James-Frowen/Mirror/commit/f84a385212196752a6a7563610170dfeff00b4ce))
* **Discovery Template:** wrapped OnValidate with `#if UNITY_EDITOR` ([5c7de2b](https://github.com/James-Frowen/Mirror/commit/5c7de2b6e0f86c2493f3251647c62d10a682028c))
* **Discovery:** Updated Network Discovery ([199ee49](https://github.com/James-Frowen/Mirror/commit/199ee490e5acc61d9d43f8b80394aa63fdc1b3fe))
* DistanceInterestManagement initial range check uses '<' instead of '<=' for consistency with the other range checks ([99316d6](https://github.com/James-Frowen/Mirror/commit/99316d6ab9cdd406e710541df3b887d9cfc76536))
* Don't call FinishLoadScene when customHandling ([#2794](https://github.com/James-Frowen/Mirror/issues/2794)) ([92334ba](https://github.com/James-Frowen/Mirror/commit/92334ba2aa148fa1a12ee15ea5cb985831291aee))
* Duplicate IL2CPP hashes when building to WebGL ([#3061](https://github.com/James-Frowen/Mirror/issues/3061)) ([#3072](https://github.com/James-Frowen/Mirror/issues/3072)) ([da09e71](https://github.com/James-Frowen/Mirror/commit/da09e715761cf41551ec89e53b0063c0d3d0df47))
* Eliminate potential errors in MatchInterestMgmt ([#2934](https://github.com/James-Frowen/Mirror/issues/2934)) ([f88190b](https://github.com/James-Frowen/Mirror/commit/f88190b756ddeca9b580fccaa9fa96929faa1dd1))
* ensure Serialize writes nothing at all if not dirty and add test so it's never missed again(!). ([e6886e8](https://github.com/James-Frowen/Mirror/commit/e6886e8a841054b81ea5daec9eeb5fb7f0c6df51))
* Examples code review and updates ([70cee43](https://github.com/James-Frowen/Mirror/commit/70cee43a710af8176fc3540e52972cefc515eafc))
* **Examples:** Updated to latest NT changes. ([1fda794](https://github.com/James-Frowen/Mirror/commit/1fda794f955bcafd1987767b9db769107c5169bf))
* **Examples:** Updated to latest NT changes. ([83a0593](https://github.com/James-Frowen/Mirror/commit/83a0593c981cdcf0f083349c614027b07846e540))
* Explicit types for default nullables ([#3020](https://github.com/James-Frowen/Mirror/issues/3020)) ([126f633](https://github.com/James-Frowen/Mirror/commit/126f6339ea55d10d87ad1559b5cd90ad52bbbb12))
* Extensions - Remove static StableHashes dictionary ([9e0c595](https://github.com/James-Frowen/Mirror/commit/9e0c59526ce5cd011a4c2f3a63a41f65860418d3))
* **FadeInOut:** Added OnValidate ([377f65a](https://github.com/James-Frowen/Mirror/commit/377f65a919d3040b338c9c2e17d037c5b8064c7c))
* failing NetworkClientTests ([#3500](https://github.com/James-Frowen/Mirror/issues/3500)) ([f11a7b4](https://github.com/James-Frowen/Mirror/commit/f11a7b44fe71a2c96a44c435918a98fdbf9640f3))
* FallbackTransport didn't propagate Early/LateUpdate ([9b160bc](https://github.com/James-Frowen/Mirror/commit/9b160bce5dd971ebe786546fd4e4f9bd02850eaa))
* Fix [#3349](https://github.com/James-Frowen/Mirror/issues/3349) - NetworkTransformReliable use correct value in OnSerialize ([b642da6](https://github.com/James-Frowen/Mirror/commit/b642da6b2fe2ea1099f3c72dcd988daa158bcd75))
* Fix delayed movement in client authority mode ([#2856](https://github.com/James-Frowen/Mirror/issues/2856)) ([9296573](https://github.com/James-Frowen/Mirror/commit/92965731d1d3422fb6936e80588db7be01f6a088))
* Fix vector3 long warnings ([#3281](https://github.com/James-Frowen/Mirror/issues/3281)) ([094b925](https://github.com/James-Frowen/Mirror/commit/094b9257970d8c806ce0254f1704581259f98b3d))
* Fixed additive scenes on host client ([fb608d6](https://github.com/James-Frowen/Mirror/commit/fb608d685a5aeda793d793a10358d7948bcf5aaf)), closes [#a0f5a846](https://github.com/James-Frowen/Mirror/issues/a0f5a846)
* Fixed Debug.Log lines ([de45f8d](https://github.com/James-Frowen/Mirror/commit/de45f8d199d94194d3dd10ed445f1f281e9d6418))
* fixed deprecated dates ([7366ba3](https://github.com/James-Frowen/Mirror/commit/7366ba3bffc146bb0afc523aabdf664a467956db))
* fixed naming typo ([cdf6d2c](https://github.com/James-Frowen/Mirror/commit/cdf6d2c90139b0e0c4212387222dcc27efc3e8d5)), closes [#2827](https://github.com/James-Frowen/Mirror/issues/2827)
* fixed order of fields in NT Base ([6bb97ab](https://github.com/James-Frowen/Mirror/commit/6bb97abd2dd4de1439b4b0c3b05914b95d81b57f))
* Fixed PlauerUI Text in Basic Example ([9fc5e0c](https://github.com/James-Frowen/Mirror/commit/9fc5e0c287b307610141d4633e4bb65b9f95a9b3))
* Fixed PlayerCamera scripts in examples ([e7cec4f](https://github.com/James-Frowen/Mirror/commit/e7cec4f943442d0c59670ef775eb75b6c70b3889))
* fixed warning in test ([e4281fe](https://github.com/James-Frowen/Mirror/commit/e4281fe5bfeee683d56115430d52a2570897b940))
* fixed warnings ([b659bde](https://github.com/James-Frowen/Mirror/commit/b659bde1115037d69c1dfacf27e37290b751fbcb))
* fixed warnings ([502d091](https://github.com/James-Frowen/Mirror/commit/502d0913d47ed14258feb5de4bf4af8b902b370d))
* Fixes [#3317](https://github.com/James-Frowen/Mirror/issues/3317) - NetworkTransformReliable: don't send last snapshot ([#3355](https://github.com/James-Frowen/Mirror/issues/3355)) ([a024753](https://github.com/James-Frowen/Mirror/commit/a024753a42dba9fec9d91bb0906350f0fd0d7be4))
* fixing NetworkDiagnostics receive for batching ([#2700](https://github.com/James-Frowen/Mirror/issues/2700)) ([aee7c82](https://github.com/James-Frowen/Mirror/commit/aee7c82dddaf7d4a81ef785e766dc3c28f1efb76))
* fixing use of new c# in 2020 ([#3507](https://github.com/James-Frowen/Mirror/issues/3507)) ([bd66be3](https://github.com/James-Frowen/Mirror/commit/bd66be3d1cb1d643ad120bf4efabea4f38af2d7d))
* forgot to remove SyncList OnSerializeAll log message ([d645aad](https://github.com/James-Frowen/Mirror/commit/d645aad95cb110e5e1139345f7c283605ef455bf))
* From !isLocalPlayer to !hasAuthority - NetworkTransform2k/NetworkTransformBase.cs ([#2855](https://github.com/James-Frowen/Mirror/issues/2855)) ([7e425d3](https://github.com/James-Frowen/Mirror/commit/7e425d3106e2dacc97fee46dd64f52a93c026358))
* host mode [SyncVar] setter hooks now support static functions again ([#3101](https://github.com/James-Frowen/Mirror/issues/3101)) ([4e91833](https://github.com/James-Frowen/Mirror/commit/4e91833c7d49d414d6bd7993bfd5359bff69a60c))
* host mode [SyncVar] setter hooks now support virtual / overwritten functions again ([#3102](https://github.com/James-Frowen/Mirror/issues/3102)) ([72973f4](https://github.com/James-Frowen/Mirror/commit/72973f484ad1b98d8939233502ebde9eb853ee25))
* Improved Player Controller in examples ([a3dbc9d](https://github.com/James-Frowen/Mirror/commit/a3dbc9dbb6ee3133cb4c163098b362a7d57e2ad3))
* Improved Portal script ([e0016e8](https://github.com/James-Frowen/Mirror/commit/e0016e815a19cd03de9376bc4cedb2a3fcc27b31))
* InterestManagement Awake ([893cb45](https://github.com/James-Frowen/Mirror/commit/893cb4590ab9d23b81b733f91503f6077bd793b9))
* InterestManagement.Awake is now protected virtual ([#3214](https://github.com/James-Frowen/Mirror/issues/3214)) ([4ea52a0](https://github.com/James-Frowen/Mirror/commit/4ea52a02830a67ba49f482af078928a0bc0017e3))
* kcp V1.23 - fixes [#3296](https://github.com/James-Frowen/Mirror/issues/3296) ([b91c702](https://github.com/James-Frowen/Mirror/commit/b91c7027a50ca3a83b38dcf0f35a077b9216dd6e))
* kcp2k V1.10 ([10c39a5](https://github.com/James-Frowen/Mirror/commit/10c39a59cc6682e3c7a10155f2791ff473d4d4d9)), closes [#17](https://github.com/James-Frowen/Mirror/issues/17) [#18](https://github.com/James-Frowen/Mirror/issues/18)
* kcp2k V1.12 ([d66d228](https://github.com/James-Frowen/Mirror/commit/d66d228079d53e5e446682e84dffacf31a89f0a6)), closes [#26](https://github.com/James-Frowen/Mirror/issues/26)
* kcp2k V1.12 (updated) ([6d021c0](https://github.com/James-Frowen/Mirror/commit/6d021c0875a28104d80a5f6e34c2b2daef780d7b))
* kcp2k V1.13 ([0a1bfad](https://github.com/James-Frowen/Mirror/commit/0a1bfade25c92ce7cde0fb0dfecf9c505e7c18b8)), closes [#2989](https://github.com/James-Frowen/Mirror/issues/2989)
* kcp2k V1.14 [2021-11-30] ([ee4399b](https://github.com/James-Frowen/Mirror/commit/ee4399b3ce185458cd5462fd3e3b8eab78b668c5))
* kcp2k V1.18 ([35f1f22](https://github.com/James-Frowen/Mirror/commit/35f1f225f32eaad5592eeacd8c84ef8364276c9e)), closes [#3155](https://github.com/James-Frowen/Mirror/issues/3155) [#3143](https://github.com/James-Frowen/Mirror/issues/3143)
* kcp2k V1.26 [2022-12-22] ([cd6e34f](https://github.com/James-Frowen/Mirror/commit/cd6e34f4b44e2ab22cd96158bcd20299bfdaf910))
* kcp2k V1.27. fixes [#3337](https://github.com/James-Frowen/Mirror/issues/3337) ([2c9f6c4](https://github.com/James-Frowen/Mirror/commit/2c9f6c4960645ba951fc36bc30bdb16019ea6643))
* kcp2k V1.32 KcpPeer RawInput now doesn't disconnect in case of random internet noise ([53658a5](https://github.com/James-Frowen/Mirror/commit/53658a58866251946b9d0cb63370029dd55b68f2))
* kcp2k V1.35. secure cookie to prevent UDP spoofing. fixes: [#3286](https://github.com/James-Frowen/Mirror/issues/3286) ([#3445](https://github.com/James-Frowen/Mirror/issues/3445)) ([ee957f3](https://github.com/James-Frowen/Mirror/commit/ee957f3fcd1ca45d569e28ed0ac7867eef8e7cfd))
* kcp2p V1.30 ([#3391](https://github.com/James-Frowen/Mirror/issues/3391)) ([228a577](https://github.com/James-Frowen/Mirror/commit/228a57768365a4b01b2eb48232ec06e1532f42d5))
* KcpServer.Stop now clears connections so they aren't carried over to the next session ([6be1a25](https://github.com/James-Frowen/Mirror/commit/6be1a253389e2a2e146bc6e157dd332bdb4e6e93))
* KcpTransport force disables nonalloc when building with IL2CPP ([#3030](https://github.com/James-Frowen/Mirror/issues/3030)) ([82d4259](https://github.com/James-Frowen/Mirror/commit/82d42591b6a9cac8966299a4df880bd4487d6ded))
* LatencySimulation error ([88825e4](https://github.com/James-Frowen/Mirror/commit/88825e45d56ff33b65c3a601fab5aee94af9bb64))
* LatencySimulation now flushes properly. fixes barely any packets getting through even on 0 settings ([47d5ecd](https://github.com/James-Frowen/Mirror/commit/47d5ecd776929405642ec527f6fc0be853bcfa2d))
* LatencySimulation now uses Time.unscaledTimeAsDouble for long running server precision ([666d1d7](https://github.com/James-Frowen/Mirror/commit/666d1d7df2e3836a90df8578cfce7197313e8c91))
* Lazy create telepathy client/server ([#2847](https://github.com/James-Frowen/Mirror/issues/2847)) ([7e72683](https://github.com/James-Frowen/Mirror/commit/7e72683850280db7c27ccb7d585001ee0ac78dbe))
* Match & Team Int Mgmt OnCheckObserver ([#3089](https://github.com/James-Frowen/Mirror/issues/3089)) ([46e6c61](https://github.com/James-Frowen/Mirror/commit/46e6c61da680deddd62e9593fedee6367843bcb4))
* MatchInterestManagement - use TryGetValue in OnDestroyed ([f67aa64](https://github.com/James-Frowen/Mirror/commit/f67aa64d59052d91b51abfa4c6e90d4541e317ea))
* MatchInterestManagement - Use TryGetValue in Update ([91c3439](https://github.com/James-Frowen/Mirror/commit/91c343994889385963aa726c03c1f0cc9e2565cd))
* Missed a couple NetworkConnectionToClient changes ([4e4e001](https://github.com/James-Frowen/Mirror/commit/4e4e001c925a577495269b6a155b2bf23390dd4d))
* moved MirrorIcon to Editor folder ([c18d15f](https://github.com/James-Frowen/Mirror/commit/c18d15fd1633cfd27afad7d4afe429e3d36340fc))
* Multiple Matches example transport to KCP ([ed29118](https://github.com/James-Frowen/Mirror/commit/ed291183f645c5056851e5dd6b1b1b9fdc5aec37))
* MultiplexTransport.ServerStart: AddServerCallbacks is only called once, not for each transport ([5991a9a](https://github.com/James-Frowen/Mirror/commit/5991a9a53a2e31d18dc50187d99e9653ca8c99e8))
* MultiSceneNetManager first client in first subscene ([9c8f89a](https://github.com/James-Frowen/Mirror/commit/9c8f89aec166f0636cebe3b5d1db0bb3e93ccac1))
* Network Manager - don't call OnClientConnect from FinishLoadScene ([42d4723](https://github.com/James-Frowen/Mirror/commit/42d4723f4ea918186ff766f5f5bf4fd5dccbb56d))
* Network Manager now calls OnClientConnect as soon as authenticated ([40e4a57](https://github.com/James-Frowen/Mirror/commit/40e4a57be289032b7d02be1b64f7a78dc0e60b7b))
* Network Manager Template singleton ([85e86bd](https://github.com/James-Frowen/Mirror/commit/85e86bd4a0d3ccdf06448cb68d4a77ada83e2cd4))
* Network Room Manager Update ([74f7cb1](https://github.com/James-Frowen/Mirror/commit/74f7cb168f5b1176d84c7f9bfd1c3128fb8b1068))
* NetworkAnimator uses double precision time for accuracy over days/weeks ([#2840](https://github.com/James-Frowen/Mirror/issues/2840)) ([7036ea5](https://github.com/James-Frowen/Mirror/commit/7036ea5cabc9743082c9344bfb1483f438ee0260))
* NetworkAuthenticator methods virtual ([c1e05d9](https://github.com/James-Frowen/Mirror/commit/c1e05d9df40fa84d60d4c40074d60d91868a6090))
* **NetworkAuthenticatorTemplate:** Added missing overrides ([638b353](https://github.com/James-Frowen/Mirror/commit/638b3536a5d3aaf40064fc1073f8fb0cd325f5a6))
* NetworkBehaviour dirty check uses double time ([#2839](https://github.com/James-Frowen/Mirror/issues/2839)) ([d516280](https://github.com/James-Frowen/Mirror/commit/d516280dca4bac460f2833397917b8d0655e0ac4))
* NetworkBehaviour OnValidate #ifdef adjusted for Unity 2020.3.19 support ([629e50e](https://github.com/James-Frowen/Mirror/commit/629e50e4f9dd6a85ae17ee491aea268e163b85b5))
* NetworkBehaviour SendRPCInternal error message fixed. This can happen if an RPC is called after shutting down the server - which doesn't mean that it was called on a client. ([26e83ce](https://github.com/James-Frowen/Mirror/commit/26e83ce645766a090b739013f8c57aa934112b84))
* NetworkBehaviour SyncVar uses netId lookup ([#3386](https://github.com/James-Frowen/Mirror/issues/3386)) ([94bb369](https://github.com/James-Frowen/Mirror/commit/94bb3690ae73b48622a58e0a55d34d6ff44a7d00)), closes [#2939](https://github.com/James-Frowen/Mirror/issues/2939)
* NetworkBehaviour.OnStopClient Called Twice ([a72d24f](https://github.com/James-Frowen/Mirror/commit/a72d24ff730c7630fa5631ae032027e86918ae95)), closes [#2976](https://github.com/James-Frowen/Mirror/issues/2976)
* NetworkBehaviour.OnValidate can't find parent NetworkIdentity because both the Unity define and GetComponentInParent() are broken in 2023.3 LTS. ([4ec8036](https://github.com/James-Frowen/Mirror/commit/4ec80368f6fea01d09d5936ea36e2721a43c3f87))
* NetworkBehaviourInspector 'had no target' warning ([8cd1332](https://github.com/James-Frowen/Mirror/commit/8cd13328ca8e9640f99a67ff0fab2a6c8688c646))
* NetworkClient - Check for duplicate sceneid ([c35ddd2](https://github.com/James-Frowen/Mirror/commit/c35ddd20db60648a697cd8c6a50edddd13d77016))
* NetworkClient - Check for duplicate sceneId ([#3157](https://github.com/James-Frowen/Mirror/issues/3157)) ([d3fa0c6](https://github.com/James-Frowen/Mirror/commit/d3fa0c67e59d8e8f8e6904407d059f9ebb7e1cca))
* NetworkClient - make OnGUI public ([655d0b0](https://github.com/James-Frowen/Mirror/commit/655d0b0aa8ee51ba88ad1ed8a9037d7f349b1bda))
* NetworkClient ConnectHost now initializes time interpolation as well ([fe6147d](https://github.com/James-Frowen/Mirror/commit/fe6147dd4d015f3d56ea02b2a84ae76e1418e0a4))
* NetworkClient now only tries to broadcast every sendInterval. otherwise ClientToServer NetworkTransform components (which have syncInterval=0) would sync every single tick. prepare for NT V3 as well. ([723da0c](https://github.com/James-Frowen/Mirror/commit/723da0cecc563531fb70a08840e6b3dfa3dd0725))
* NetworkClient now sets NetworkIdentity.connectionToServer before OnStartAuthority/OnStartClient callbacks. ([8d8bde7](https://github.com/James-Frowen/Mirror/commit/8d8bde72f42c074f58ef66716b0f372a6380b5e5))
* NetworkClient TimeInterpolation: add 'current' bufferTimeMultiplier field to not overwrite the initial SnapshotSettings.bufferTimeMultiplier. Allows us to reset bufferTimeMultiplier in InitTimeInterpolation and prepares for ConnectionQuality. ([c599fb6](https://github.com/James-Frowen/Mirror/commit/c599fb616e082a3ba2b0df343e8b886986a0b42b))
* NetworkClient unbatcher is now reset in host mode connect as well [credit: BigBoxVR] ([e58e47f](https://github.com/James-Frowen/Mirror/commit/e58e47fc4770da87d08c0667bba1ba8f6d254c4b))
* NetworkClient.Disconnect NullReferenceException if connection was null ([e6b27cf](https://github.com/James-Frowen/Mirror/commit/e6b27cf7e8445ecf7538335a5016ecad699d95ac))
* NetworkClient.OnHostClientSpawn now sets AOI visibility before invoking user callbacks. ([e9e3874](https://github.com/James-Frowen/Mirror/commit/e9e3874205bc7ceec405de0ecb7dd3f08e7f0230))
* NetworkClient.OnTransportData header size is now checked before every message unpacking again like before batching. ([e6b379f](https://github.com/James-Frowen/Mirror/commit/e6b379fb8ddb8a57ade5beaeab2e45e0b35673e4))
* NetworkClient.sendRate is now coupled to NetworkServer.sendRate in order to avoid snapshot interpolation errors where server & client may be on different send rates, components use the wrong rate to send vs. interpolate, etc. ([1176494](https://github.com/James-Frowen/Mirror/commit/1176494587c2956f11ab7bf5f48576323652e02d))
* NetworkClient.Shutdown - added all statics ([78690e7](https://github.com/James-Frowen/Mirror/commit/78690e7c0d9df38e9e95e9678732e212c1279ebb))
* NetworkClient.Shutdown now clears OnDis/ConnectedEvents ([e827c6c](https://github.com/James-Frowen/Mirror/commit/e827c6c0f3ed5f3321befb4a29bb1442f552608b))
* NetworkConnection "cannot send packet larger than ..." message now includes the message type which was too large. ([#3560](https://github.com/James-Frowen/Mirror/issues/3560)) ([9311ef3](https://github.com/James-Frowen/Mirror/commit/9311ef3523edb22521939d82719b84780b8d166d))
* NetworkConnectionToClient in Authenticators ([a88b037](https://github.com/James-Frowen/Mirror/commit/a88b03739f0d5716f060bf5c97451d274f96b659))
* NetworkDiscovery BroadcastAddress exposed for iOS support ([#3255](https://github.com/James-Frowen/Mirror/issues/3255)) ([fb95c41](https://github.com/James-Frowen/Mirror/commit/fb95c411efc2e83e2205259516be8812d3ad76f8))
* NetworkIdentity default execution order set to -1. guarantees Awake() initializing all NetworkBehaviours before their Awake is called. [imer, FakeByte] ([3efc917](https://github.com/James-Frowen/Mirror/commit/3efc917b6ea4e55177be2dabe49d24f31deb5cfa))
* NetworkIdentity.AssignAssetId() is now saved properly. fixes a bug where duplicated prefabs and prefab variants would still have the original prefab's assetId on disk, even though the Inspector showed the proper one. ([d7fbee9](https://github.com/James-Frowen/Mirror/commit/d7fbee9d5036d6246519354bc283e3984b3dd147))
* NetworkIdentity.MaxNetworkBehaviours and EnsureMax function so we have the same code in both places, where previously Serialize() still checked for 255 instead of 64 ([9dd04e2](https://github.com/James-Frowen/Mirror/commit/9dd04e2efad7ea2f377e5a07c89cae9dc7da121e))
* NetworkLerpRigidbody now uses double time to keep precision over multiple days ([5abc261](https://github.com/James-Frowen/Mirror/commit/5abc261320a7028031e2d82d82c1dda22916c7c9))
* NetworkLoop now only runs in play mode, not in edit mode ([def24f8](https://github.com/James-Frowen/Mirror/commit/def24f85103ed6ccda9eee8bf221f38583991b80))
* NetworkManager - handle StopClient in Host mode ([a83379f](https://github.com/James-Frowen/Mirror/commit/a83379fe1743c27314ca8058808b1aeadb0a88ac))
* NetworkManager - keep in DDOL if ServerOnly ([3d9e95e](https://github.com/James-Frowen/Mirror/commit/3d9e95e52cc14889c74dc50c510d4ecdda83a248))
* NetworkManager now always applies the exposed NetworkServer.send/tickRate. fixes a bug where some NetworkBehaviours may try to send with NetworkServer.tickRate, which wouldn't be available on client because NetworkManager.StartServer was never called, so the rate was never set. ([8d3d623](https://github.com/James-Frowen/Mirror/commit/8d3d623fac6a12e3974593d25e7f8d8b74558783))
* networkmanager undo and move some validation into Reset() ([#2990](https://github.com/James-Frowen/Mirror/issues/2990)) ([b2ce342](https://github.com/James-Frowen/Mirror/commit/b2ce3421e50dc6082d207febc703a60c7798d976))
* **NetworkManager:** Call OnServerDisconnect for Host Client ([#3419](https://github.com/James-Frowen/Mirror/issues/3419)) ([ff5115e](https://github.com/James-Frowen/Mirror/commit/ff5115e04a10af2219d3d64cb8ddb489862d6e47))
* **NetworkManagerTemplate:** Updated OnServerError / OnClientError comments ([a30c85d](https://github.com/James-Frowen/Mirror/commit/a30c85d38917e408607f2e678df6e558d17eeecf))
* **NetworkManager:** Try to avoid missing transport errors ([#3456](https://github.com/James-Frowen/Mirror/issues/3456)) ([bae0c37](https://github.com/James-Frowen/Mirror/commit/bae0c37679f553750fb3cb9db3f583a2e4485299))
* NetworkMessages.MaxContentSize now considers channelId instead of always assuming reliable ([6830a6e](https://github.com/James-Frowen/Mirror/commit/6830a6e52c1b56d92a2fbc99f0ff03550532ebdd))
* NetworkReader.ReadTexture2D fixed 'reader not found for Color32[]' error when using it from tests ([d235037](https://github.com/James-Frowen/Mirror/commit/d235037954d5a235dfed84a4401dc81867ddc381))
* NetworkReader/Writer Texture2D now sends dimensions too. fixes "Texture2D.SetPixels32: size of data to be filled was larger than the size of data available in the source array. (Texture '')" ([b709453](https://github.com/James-Frowen/Mirror/commit/b70945305763ee97ecea893b60fd289ca0f5f97c))
* NetworkRigidbody now uses double time to keep precision over multiple days ([e473d15](https://github.com/James-Frowen/Mirror/commit/e473d154d9e7b2c6ecec29fd61d34b880c8c089d))
* NetworkRigidbody/2D now uses .target's Rigidbody and supports child Rigidbodies ([b49f5b3](https://github.com/James-Frowen/Mirror/commit/b49f5b39dedfeb1b83926d0576e05d5c7b4799ce))
* NetworkRoomManager.ReadyStatusChange is now a virtual method ([80211ba](https://github.com/James-Frowen/Mirror/commit/80211ba8275ffe5a585c3fc6d948394b0f60d2eb)), closes [#1889](https://github.com/James-Frowen/Mirror/issues/1889)
* NetworkServer Shutdown - added OnErrorEvent = null ([950c0cb](https://github.com/James-Frowen/Mirror/commit/950c0cbbd8d099c63206cc766dc26efe86072012))
* NetworkServer.DisconnectAll doesn't set inactive anymore. it should simply "disconnect all" connections. ([74e6b72](https://github.com/James-Frowen/Mirror/commit/74e6b72239ffdeaa053cf1679525f9ee3ac4c49a)), closes [#3344](https://github.com/James-Frowen/Mirror/issues/3344)
* NetworkServer.OnTransportData header size is now checked before every message unpacking again like before batching. ([bdb410e](https://github.com/James-Frowen/Mirror/commit/bdb410e015b121264fd3ca2d961d1197230aefe9))
* NetworkServer.Shutdown - Reset more things ([0ab31c0](https://github.com/James-Frowen/Mirror/commit/0ab31c0c96a3d92c5ac04912e7338336f4f4f1fc))
* NetworkServer.Shutdown now clears OnDis/ConnectedEvents ([68a4a06](https://github.com/James-Frowen/Mirror/commit/68a4a0692660a22dc3564aaee69520d4465ff7e7))
* NetworkServer/NetworkClient batch processing now detects ever growing batches (as caused by [#2882](https://github.com/James-Frowen/Mirror/issues/2882)) ([3e4def1](https://github.com/James-Frowen/Mirror/commit/3e4def126fe7293b8cd702e318aeba749c78b4a5))
* **NetworkServer:** Don't disconnect on OnEntityStateMessage for object without authority ([#3439](https://github.com/James-Frowen/Mirror/issues/3439)) ([40361f6](https://github.com/James-Frowen/Mirror/commit/40361f62bf953944eeefd6f5b0a80996e684aeea))
* NetworkStartPosition use Start instead of Awake ([29fec27](https://github.com/James-Frowen/Mirror/commit/29fec273cb180a37fdccb48b2aa8029fb50aecec))
* NetworkStatistics Unity 2019 support ([8f357d5](https://github.com/James-Frowen/Mirror/commit/8f357d5961f15cc615078e94f279dcd32aa61aa9))
* NetworkStatistics Unity 2019 support (part two) ([4b207d2](https://github.com/James-Frowen/Mirror/commit/4b207d2994477e90e15bcecf8265f97b386318ff))
* NetworkTime RTT now checks for malicious timestamps from the future ([ac6a881](https://github.com/James-Frowen/Mirror/commit/ac6a881f1bdc15c20ab220ac6ff5807bb1016228))
* NetworkTime.UpdateClient uses double precision time for accuracy over days/weeks ([69116bf](https://github.com/James-Frowen/Mirror/commit/69116bfeb2e95b42c980fa41fc39f3c2aef27fb9))
* NetworkTransform classes - methods in call order ([dd5d7ca](https://github.com/James-Frowen/Mirror/commit/dd5d7cab0138d6aed4d3b446fefca28d079d6d34))
* NetworkTransform now always sends at the same sendInterval as time interpolation. as configured in NetworkManager. ([25d0e79](https://github.com/James-Frowen/Mirror/commit/25d0e7929ada755d013c2659be2fb1beb509e282))
* NetworkTransform syncs initial position/rotation/scale [#3048](https://github.com/James-Frowen/Mirror/issues/3048) ([#3051](https://github.com/James-Frowen/Mirror/issues/3051)) ([a828f5a](https://github.com/James-Frowen/Mirror/commit/a828f5a983e142f29d0b264354988e4466764ef6))
* **NetworkTransformeliable:** fix offset and sendIntervalMultiplier ([#3438](https://github.com/James-Frowen/Mirror/issues/3438)) ([238233d](https://github.com/James-Frowen/Mirror/commit/238233da3f7943c1fda793668c8d2b463b8ec2f9))
* NetworkTransformReliable fix jitter (fixes: [#3368](https://github.com/James-Frowen/Mirror/issues/3368)) ([#3410](https://github.com/James-Frowen/Mirror/issues/3410)) ([7137ace](https://github.com/James-Frowen/Mirror/commit/7137ace5fd6c53ff4e60278d43259e8973cc5b16))
* NetworkTransformReliable Reset() now resets 'last' too ([25ebb06](https://github.com/James-Frowen/Mirror/commit/25ebb0620bfc0577fd129300541fb0aea5053454))
* **NetworkTransformReliable:** Removed unused onlySyncOnChangeInterval ([ae40fcb](https://github.com/James-Frowen/Mirror/commit/ae40fcbddda5fcd80d320a47b3e8e3619d1ed57c))
* NetworkTransformUnreliable: timeStampAdjustment, timelineOffset to fix 2s jitter after tab switching in webgl caused by NT snaps potentially arriving behind timeline snaps ([#3441](https://github.com/James-Frowen/Mirror/issues/3441)) ([12ebd7f](https://github.com/James-Frowen/Mirror/commit/12ebd7f722009af4b06f561574b85cf85c10ba16))
* NetworkWriter - Change MaxStringLength to ushort.MaxValue ([#3374](https://github.com/James-Frowen/Mirror/issues/3374)) ([e260d1e](https://github.com/James-Frowen/Mirror/commit/e260d1eb2a07a839fc926a4d422dc62deb2fec74))
* NetworkWriterExtensions:WriteTexture2D call WriteArray instead of Write ([2f76c73](https://github.com/James-Frowen/Mirror/commit/2f76c73c413a24cc58d44c702c7e2f245f464f3c))
* never use custom NB writers for SyncVars ([#3387](https://github.com/James-Frowen/Mirror/issues/3387)) ([cfe27a1](https://github.com/James-Frowen/Mirror/commit/cfe27a179b5d5125746d27d8f8c9cb0177f4ba49)), closes [/github.com/MirrorNetworking/Mirror/issues/2680#issuecomment-1435093212](https://github.com//github.com/MirrorNetworking/Mirror/issues/2680/issues/issuecomment-1435093212) [#2680](https://github.com/James-Frowen/Mirror/issues/2680)
* nimoyd unbatcher InvalidOperationException ([#2812](https://github.com/James-Frowen/Mirror/issues/2812)) ([80387ff](https://github.com/James-Frowen/Mirror/commit/80387ffa03b3a0eef3a010f008d0d74c69bd3158))
* NT Base OnDrawGizmos only when playing ([#2876](https://github.com/James-Frowen/Mirror/issues/2876)) ([33e77d6](https://github.com/James-Frowen/Mirror/commit/33e77d69cbb298089b29888e65537096c46a1312))
* NT checks NetworkClient.ready ([#2992](https://github.com/James-Frowen/Mirror/issues/2992)) ([2710a95](https://github.com/James-Frowen/Mirror/commit/2710a95a0c1c7af48b07e0ceb3c8e4a639c70732))
* NT2 - public virtual void Reset ([bd562a6](https://github.com/James-Frowen/Mirror/commit/bd562a609bf7b098d7dad4c92bfca8e92bd9d0a7))
* NTv2 interpolateScale default false, like syncScale ([9c4cc29](https://github.com/James-Frowen/Mirror/commit/9c4cc2926f439727f16e7de77c9ff3d0e1bc1bf1))
* null handling in WriteUri & ReadUri ([#2796](https://github.com/James-Frowen/Mirror/issues/2796)) ([e07488d](https://github.com/James-Frowen/Mirror/commit/e07488d91b2154606f7a7f2630d2d72379024331))
* Obsolete NetworkConnection param in client callbacks ([#2820](https://github.com/James-Frowen/Mirror/issues/2820)) ([d604891](https://github.com/James-Frowen/Mirror/commit/d6048911f2f4cb9850673ac96881211a155237c4))
* Obsolete SyncObject Flush method ([#2931](https://github.com/James-Frowen/Mirror/issues/2931)) ([185a6c3](https://github.com/James-Frowen/Mirror/commit/185a6c38156bdd6ed3cf8f5d6bff1a22af0955be))
* OnClientChangeScene not firing for host client ([#2801](https://github.com/James-Frowen/Mirror/issues/2801)) ([a0f5a84](https://github.com/James-Frowen/Mirror/commit/a0f5a846d703c43ff4583594aabc0d87b9507d91))
* only IEnumerable SyncObjects are drawn as SyncObject Collections in Inspector now. ([9aa8353](https://github.com/James-Frowen/Mirror/commit/9aa83539bb469f7496abd65d61948c23e8779bc6))
* onlySendOnMove for new NetworkTransform ([#3013](https://github.com/James-Frowen/Mirror/issues/3013)) ([3d78235](https://github.com/James-Frowen/Mirror/commit/3d78235d05a8d5c8d4e6fe185506e988395fd989))
* OverrideVirtualWithBaseCallsBothVirtualAndBase etc. failing tests because Weaver Cmd/Rpc SubstitueMethods couldn't be accessed by inheriting classes ([ff218ad](https://github.com/James-Frowen/Mirror/commit/ff218adc17c14b67309f10169b34fa4bf7440ecc))
* PrepareToSpawnSceneObjects checks netId instead of activeSelf [fixes: [#3541](https://github.com/James-Frowen/Mirror/issues/3541)] ([#3543](https://github.com/James-Frowen/Mirror/issues/3543)) ([51c7162](https://github.com/James-Frowen/Mirror/commit/51c7162af7569061376cf314bd3ca4d5de6e33e0))
* Prevent m_AssetId set to empty string ([#2766](https://github.com/James-Frowen/Mirror/issues/2766)) ([8218979](https://github.com/James-Frowen/Mirror/commit/8218979e32ad15ea1a7055caa038c38280bdce3f)), closes [#2765](https://github.com/James-Frowen/Mirror/issues/2765)
* Prevent recursion overflow when stopping ([#2833](https://github.com/James-Frowen/Mirror/issues/2833)) ([32fdd52](https://github.com/James-Frowen/Mirror/commit/32fdd5215fb02f67935a4359ea285d3fba54772c)), closes [#2080](https://github.com/James-Frowen/Mirror/issues/2080)
* Prevent StopClient from running twice ([#2953](https://github.com/James-Frowen/Mirror/issues/2953)) ([532ca65](https://github.com/James-Frowen/Mirror/commit/532ca654dda4a476b02aa7f6b591f3abcbdb9d4a)), closes [#2940](https://github.com/James-Frowen/Mirror/issues/2940)
* Raise OnDisconnectedEvent before changing ConnectState ([#2870](https://github.com/James-Frowen/Mirror/issues/2870)) ([95de1a3](https://github.com/James-Frowen/Mirror/commit/95de1a3aae63b6b31e6950a9002ead8d73de979a))
* Reader / Writer extensions for Unity structs with properties ([#3426](https://github.com/James-Frowen/Mirror/issues/3426)) ([4ce8b2a](https://github.com/James-Frowen/Mirror/commit/4ce8b2a4317dadd9b684cbd1e87dd08ab05a719d))
* Remove all usage of Time.timeAsDouble ([#3436](https://github.com/James-Frowen/Mirror/issues/3436)) ([70e972a](https://github.com/James-Frowen/Mirror/commit/70e972aeb59c52e05f622d6dc704fff33d728fa4))
* remove redundant RPC buffering. saved bandwidth, but introduced data races, complexity, extra buffer copies [credit: James, imer] ([#3497](https://github.com/James-Frowen/Mirror/issues/3497)) ([adee4ad](https://github.com/James-Frowen/Mirror/commit/adee4ad1401b51d4768551447bc7e0d606895bf3))
* Removed buggy canvas from example player prefabs ([cbcfeed](https://github.com/James-Frowen/Mirror/commit/cbcfeede161b687418a9dbb2dc6b1a14b0496359))
* Removed invalid reference from KCP AsmDef ([900c23a](https://github.com/James-Frowen/Mirror/commit/900c23a1737eea573e8a292f3c499ed8d3c66def))
* Removed ServerAuthFailed from Basic Authenticator ([ca4c2fd](https://github.com/James-Frowen/Mirror/commit/ca4c2fd9302b1ece4240b09cc562e25bcb84407f))
* Replaced obsolete warnings on NetworkVisibility components ([f73cc91](https://github.com/James-Frowen/Mirror/commit/f73cc91af1b00e85a0c23019a798c0f7d80a6833))
* Reset lastPingTime ([#2832](https://github.com/James-Frowen/Mirror/issues/2832)) ([8453a03](https://github.com/James-Frowen/Mirror/commit/8453a03bd4bb51890e4f2cb0f454cbc332f37c47))
* restored base method calls to NetworkRoomManager ([16e2539](https://github.com/James-Frowen/Mirror/commit/16e2539efbd05c6f670f3f827f83efc81566a527))
* RuntimeInitializeOnLoadMethod BeforeSceneLoad ([473b9f1](https://github.com/James-Frowen/Mirror/commit/473b9f17609ecc7f19cd7291eb9f4c79daca1ffa))
* SceneInterestManagement - use TryGetValue in OnDestroyed ([12c83ef](https://github.com/James-Frowen/Mirror/commit/12c83effbb72dfaacda9d73681786a145d458820))
* SceneInterestManagement - Use TryGetValue in Update ([c0908a2](https://github.com/James-Frowen/Mirror/commit/c0908a2f58086ae77d65b934d6e64a88223e7b1a))
* SceneInterestManagement OnCheckObserver uses identity.gameObject instead of own gameObject ([fecfcd3](https://github.com/James-Frowen/Mirror/commit/fecfcd3378d6e6132fd932ae6741ffae5f3e6cb6))
* SceneInterestManagement OnSpawned uses identity.gameObject instead of own gameObject ([02ad57c](https://github.com/James-Frowen/Mirror/commit/02ad57cae8eaa94c429085c6d6f6daeae3ed5b56))
* SendChangeOwnerMessage robustness ([d6d0ec8](https://github.com/James-Frowen/Mirror/commit/d6d0ec88d0243f5312f8090ff3443ba39ba67b09)), closes [#2988](https://github.com/James-Frowen/Mirror/issues/2988)
* serialization precision over days by using frameCount instead of single precision time ([#2815](https://github.com/James-Frowen/Mirror/issues/2815)) ([188be9e](https://github.com/James-Frowen/Mirror/commit/188be9ead0b2bca3739015b9d7526f305feeadfb))
* set offline mode before OnStopClient ([be5cd64](https://github.com/James-Frowen/Mirror/commit/be5cd6472ac2c73a21994eb062830e8dc9c7ea28)), closes [#2080](https://github.com/James-Frowen/Mirror/issues/2080)
* Set previousLocalPlayer null in NI.Reset ([#2993](https://github.com/James-Frowen/Mirror/issues/2993)) ([3092c00](https://github.com/James-Frowen/Mirror/commit/3092c005aefe6658041ba4b65ed3fe5b03dde414))
* SetClientNotReady must always notify client ([78275ab](https://github.com/James-Frowen/Mirror/commit/78275ab5583f19ffedf09bd00eef96c3674d6d8a))
* Shutdown Discovery in OnDisable / OnDestroy ([#2736](https://github.com/James-Frowen/Mirror/issues/2736)) ([b4e8153](https://github.com/James-Frowen/Mirror/commit/b4e81537c9763fb64d960fba489c36c87fcf0da2))
* **simpleWeb:** ignore headers case when checking handshake key ([#3016](https://github.com/James-Frowen/Mirror/issues/3016)) ([31d2830](https://github.com/James-Frowen/Mirror/commit/31d2830f9b6217a0de08685efe6823ad7b56b25f))
* **SimpleWebTransport:** Check hasDisposed in Connection.ToString ([f7fe570](https://github.com/James-Frowen/Mirror/commit/f7fe570c0873cc3a6becfdf9d871e0a32cf96af7))
* **SimpleWebTransport:** Default sslProtocols to Tls12 ([31fa8a4](https://github.com/James-Frowen/Mirror/commit/31fa8a4b3cbac83a4d5fb435af41a069c56fe9b4))
* **SimpleWebTransport:** fixed ClientUseDefaultPort default ([0949665](https://github.com/James-Frowen/Mirror/commit/09496652b73b023e8730dd3e29100f1ba8b69cb5))
* **SimpleWebTransport:** Improved tooltips ([22d4fb6](https://github.com/James-Frowen/Mirror/commit/22d4fb62bb0aec61ba524d3c9ae7762e114bc693))
* Simplified Portal script ([4ab5924](https://github.com/James-Frowen/Mirror/commit/4ab59248abe84aed8f30fd2cf53bc8f97e9f62bb))
* Snapshot Interpolation Demo: assign material color to instanced material, fixes material asset changing color permanently ([db50c39](https://github.com/James-Frowen/Mirror/commit/db50c39b918d42b21eb9d0b24319e8ca75f30d19))
* Snapshot Interpolation Example: latency was accidentally applied to remoteTime instead of delivery time ([1b0901e](https://github.com/James-Frowen/Mirror/commit/1b0901e966b80984a7fe487cd54c89c5b5d4ef24))
* SnapshotInterpolation.Insert() now has a bufferLimit to avoid ever growing snapshot buffers on extremely low-fps clients ([37bbd7e](https://github.com/James-Frowen/Mirror/commit/37bbd7eb3ddc28fb21d23d9c2621d6d09e94e27c))
* SnapshotInterpolation.TimelineClamp uses Mathd.Clamp for Unity 2020 support ([844fe69](https://github.com/James-Frowen/Mirror/commit/844fe69e11f8e2762585e2b383665cdad289d415))
* **SnapshotInterpolation:** Added TimelineClamp ([#3402](https://github.com/James-Frowen/Mirror/issues/3402)) ([313c7a1](https://github.com/James-Frowen/Mirror/commit/313c7a18cda59d9ec45b929cfb9d90620e952803))
* Stop Discovery when client gets into Connected state ([26a7a2f](https://github.com/James-Frowen/Mirror/commit/26a7a2f76a7746e87f4610917365842aebe9a71d))
* Suppress Commands When Not Ready ([#3009](https://github.com/James-Frowen/Mirror/issues/3009)) ([c291932](https://github.com/James-Frowen/Mirror/commit/c29193271771b7a4b911e9fb2db89d0c26d52122))
* SWT header lookup needs to be case insensitive ([#3176](https://github.com/James-Frowen/Mirror/issues/3176)) ([d48d59c](https://github.com/James-Frowen/Mirror/commit/d48d59cc08c59171957935b3fd54add29d8ea13c)), closes [#3175](https://github.com/James-Frowen/Mirror/issues/3175)
* **SWT:** fixing jslib for Unity2021 ([#3084](https://github.com/James-Frowen/Mirror/issues/3084)) ([b62fbf5](https://github.com/James-Frowen/Mirror/commit/b62fbf51b5eb7fff4359ce33f8961207c998a35a))
* SyncVarGameObject/NetworkIdentityEqual not being accessible by weaved NetworkBehaviour components from outside assemblies ([0e0e4df](https://github.com/James-Frowen/Mirror/commit/0e0e4dfe47b532390108dc442b1276ee7cc55076))
* Tanks demo: remove light from projectile as well to fix visual glitches ([0fbf400](https://github.com/James-Frowen/Mirror/commit/0fbf40069761d368dd3b39da08da83c7267a6bfd))
* Tanks demo: remo…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Weaver Bug caused by Weaver
Projects
None yet
Development

No branches or pull requests

2 participants