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

refactor: consolidate prefab and spawn handlers #817

Merged
merged 1 commit into from
Apr 17, 2019

Conversation

paulpach
Copy link
Contributor

There is no need to keep the list of prefabs.

Prefabs can be spawned with the spawn handlers, so we only need 1 mechanism.

@@ -282,7 +260,6 @@ public static void UnregisterSpawnHandler(Guid assetId)

public static void ClearSpawners()
{
prefabs.Clear();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this not needed anymore?

Copy link
Contributor Author

@paulpach paulpach Apr 17, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because the prefabs set does not do anything anymore. I could remove it instead of obsolete it.

@miwarnec miwarnec merged commit b4c9c6f into MirrorNetworking:master Apr 17, 2019
@paulpach paulpach deleted the pendingowner branch April 17, 2019 14:01
@miwarnec
Copy link
Collaborator

🎉 This PR is included in version 3.6.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

miwarnec pushed a commit that referenced this pull request Apr 24, 2019
…to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range

This reverts commit b4c9c6f.
github-actions bot referenced this pull request in MirageNet/Mirage Jan 4, 2020
# 1.0.0 (2020-01-04)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](46eddc0))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](#1179))" ([4cc4279](4cc4279))
* [#573](#573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](c1af84e))
* [#573](#573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](e521a20))
* [#573](#573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](a2d6317))
* [#609](#609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](#623)) ([5c00577](5c00577))
* [#640](#640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](bdf12c8))
* [#651](#651) GetSceneAt assumes default scene ([#654](#654)) ([65eaba1](65eaba1))
* [#652](#652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](ee2ace8))
* [#679](#679) package for unity ([4a6a4df](4a6a4df))
* [#679](#679) unity package ([9895647](9895647))
* [#692](#692) by always adding connectionToClient when rebuilding observers ([ab44ac8](ab44ac8))
* [#718](#718) remove Tests folder from unitypackage ([#827](#827)) ([7e487af](7e487af))
* [#791](#791) corrected assembly paths passed to weaver ([#803](#803)) ([3ba546e](3ba546e))
* [#791](#791) stack overflow in the weaver ([#792](#792)) ([7b57830](7b57830))
* [#840](#840) by allowing Mirror to respect the forceHidden flag ([#893](#893)) ([3ec3d02](3ec3d02))
* added new read/write symbol params ([#806](#806)) ([3a50ca6](3a50ca6))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](#773)) ([72e4e55](72e4e55))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](8899d20))
* ArraySegment<byte> work in Messages ([#919](#919)) ([981ba7c](981ba7c))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](7aa7815))
* call Obsoleted OnStartClient ([#681](#681)) ([8dea50e](8dea50e))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](4d373c5))
* check event prefix ([7417b68](7417b68))
* ClientRpc methods now work accross assemblies ([#1129](#1129)) ([13dbcb9](13dbcb9)), closes [#1128](#1128)
* Cmds can be called from child classes in other assemblies ([d8a98d8](d8a98d8)), closes [#1108](#1108)
* code generation works with il2cpp again ([#1056](#1056)) ([8738562](8738562))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](d7a58d2)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* do not accumulate changes if there are no observers fixes [#963](#963) ([#964](#964)) ([64a0468](64a0468))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](7119dd1))
* don't call hook in host if no change,  fixes [#1142](#1142) ([#1143](#1143)) ([d8ce80f](d8ce80f))
* don't call OnStartLocalPlayer twice ([#1263](https://github.com/MirrorNG/MirrorNG/issues/1263)) ([c753089](c753089))
* don't convert null arrays to empty array ([#913](#913)) ([dd758ca](dd758ca))
* Don't disconnect host ([#608](#608)) ([c1707e5](c1707e5))
* Don't give host player authority by default ([#1158](#1158)) ([1fc1ed2](1fc1ed2))
* Don't increment counter in Awake ([#971](#971)) ([45b7118](45b7118))
* Don't set asset id for scene objects ([7e40232](7e40232))
* Don't set framerate in host mode ([4644bc4](4644bc4))
* Don't throw exception getting address ([7df3ce3](7df3ce3))
* don't use obsolete method ([12437ba](12437ba))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](a0425e4))
* Dummy file for SyncListStructProcessor.cs ([#798](#798)) ([75e4f15](75e4f15))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](dbe0643))
* error with missing assemblies ([#1052](#1052)) ([00eb23a](00eb23a)), closes [#1051](#1051)
* Fix error scene error message in host mode ([838d4f0](838d4f0))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](2f19c7c)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* hooks in host mode can call each other ([#1017](#1017)) ([f27fd0b](f27fd0b))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](203a823))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](d00c95b))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](fb26d00)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](9acde20)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](bc7a961))
* list server logs properly when disconnected ([f02d317](f02d317))
* ListServer Ping not found in WebGL ([6c4b34b](6c4b34b))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](377c47c))
* maintain Unity's copyright notice ([#961](#961)) ([7718955](7718955))
* Make assembly definition 2018.4 compatible ([99ecc9e](99ecc9e))
* make build pass ([08df6d0](08df6d0))
* Mark weaver as failed if serializing invalid type ([03c767d](03c767d))
* missed ushort reader/writer ([74faf2a](74faf2a))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](#832)) ([5262592](5262592))
* move listserver classes into package ([2668b17](2668b17))
* move NetworkStreamExtension in a namespace ([12de543](12de543))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](b3127be))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](ed572da))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](fb716df))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](524abfc))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](d712cd0))
* non ready connections should not observe objects ([1352334](1352334))
* null reference exception ([7ce95c5](7ce95c5))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](#618)) ([c9eac57](c9eac57))
* OnSetHostVisibility can now check if it has authority ([888e46c](888e46c))
* pack works if message is boxed ([55c9bb6](55c9bb6))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](701f4f4))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](#727)) ([3cee3ab](3cee3ab))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](#730)) ([015d0d5](015d0d5))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](5449840))
* potential null reference exception with debug logging ([33493a0](33493a0))
* Prevent Compiler Paradox ([#1145](#1145)) ([fd43c67](fd43c67))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](#936)) ([d6389e6](d6389e6))
* Rebuild observers when we switch scenes, fixes [#978](#978) ([#1016](#1016)) ([6dd1350](6dd1350))
* reduce allocations at the transport ([80e4f17](80e4f17))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](d0cc669))
* remove samples from upm package ([#25](#25)) ([a71e21f](a71e21f))
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](ad724fe)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](0e1bc81)), closes [#962](#962)
* replacing the player does not mean giving up authority ([#1254](https://github.com/MirrorNG/MirrorNG/issues/1254)) ([a2c273e](a2c273e))
* Respect Player Prefab Position & Rotation ([#825](#825)) ([8ebda0f](8ebda0f))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](13bb748))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](f56507f))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](#817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](1f07af0))
* Round Robin Spawning by Hierarchy Order ([#790](#790)) ([531e202](531e202)), closes [#724](#724)
* SceneId was not set to 0 for prefab variants ([#976](#976)) ([#977](#977)) ([2ca2c48](2ca2c48))
* set authority when replacing the player ([2195fee](2195fee))
* Set syncvar variables after calling the hook ([#659](#659)) ([2d63ee1](2d63ee1))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](0d1d7b5))
* spawnwithauthority works again in host mode ([5b04836](5b04836))
* Stop calling ClientDisconnect on host ([#597](#597)) ([b67b3e4](b67b3e4))
* suppress warning on standalone build [#1053](#1053) ([4ef680a](4ef680a))
* Suspend server transport while changing scenes ([#1169](#1169)) ([e8fac8a](e8fac8a))
* Sync full netAnimator for new clients, fix [#980](#980) ([#1110](#1110)) ([db8310f](db8310f))
* syncvars in commands work again ([#1131](#1131)) ([c24a73f](c24a73f))
* TargetRpc now works accross assemblies ([#1130](#1130)) ([5ecd646](5ecd646)), closes [#1128](#1128)
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](488446a))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](3831cbd))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](22931fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](535b4d4))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](98d3fb0))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](2761ff2))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](abf06df))
* TelepathyTransport.ToString UWP exception ([8a190bf](8a190bf))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](cc6e4f6))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](ed7e509))
* webgl build fix [#1136](#1136) ([#1137](#1137)) ([c85d0df](c85d0df))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](db99dd7))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](#769)) ([99c8f5c](99c8f5c))
* **tests:** Added missing SyncListByteValid test file ([#634](#634)) ([b0af876](b0af876))
* **weaver:** [#696](#696) detect .mystruct = new MyStruct() changes with syncvars ([#702](#702)) ([053949b](053949b))
* **weaver:** fix [#706](#706) find system dlls ([#729](#729)) ([53be9b6](53be9b6))
* **weaver:** fix [#796](#796), reload assemblies after initial import ([#1106](#1106)) ([d91b387](d91b387))
* **websocket:** [#829](#829) fix InvalidOperationException with wss:// ([#830](#830)) ([2d682b5](2d682b5))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](#879)) ([3c60b08](3c60b08))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](#848)) ([8967a20](8967a20))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](67d715f))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](a2cc14b))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](#707)) ([699a261](699a261))
* workaround for [#791](#791) ([5c850aa](5c850aa))

### Features

* [#869](#869) support structs in other assemblies ([#1022](#1022)) ([62d1887](62d1887))
* Add roomPlayer parameter to OnRoomServerCreateGamePlayer ([#1317](https://github.com/MirrorNG/MirrorNG/issues/1317)) ([abf5cdc](abf5cdc))
* Add SyncHashSet and SyncSortedSet ([#685](#685)) ([695979e](695979e))
* Add Timeout to NetworkAuthenticator ([#1091](#1091)) ([e8cc9ba](e8cc9ba))
* Add UPM configuration ([#11](#11)) ([9280af1](9280af1))
* Add version to package file ([#1361](https://github.com/MirrorNG/MirrorNG/issues/1361)) ([e97ab93](e97ab93))
* Add weaver support for Vector2Int and Vector3Int ([#646](#646)) ([e2a6ce9](e2a6ce9))
* allow users to detect mirror version 3 ([ee9c737](ee9c737))
* An authenticator that times out other authenticators ([#1211](https://github.com/MirrorNG/MirrorNG/issues/1211)) ([09f6892](09f6892))
* Authentication Framework ([#1057](#1057)) ([56bcb02](56bcb02))
* Chat example ([#1305](https://github.com/MirrorNG/MirrorNG/issues/1305)) ([9926472](9926472))
* component based SyncToOwner, fixes [#39](#39) ([#1023](#1023)) ([c6d86b3](c6d86b3))
* custom reader/writer via extension methods ([#1047](#1047)) ([b45afad](b45afad))
* Custom readers and writers ([92b3e98](92b3e98))
* fallback transport now supports uri ([#1296](https://github.com/MirrorNG/MirrorNG/issues/1296)) ([e4a701e](e4a701e))
* generate serializers for IMessageBase structs ([#1353](https://github.com/MirrorNG/MirrorNG/issues/1353)) ([3c0bc28](3c0bc28))
* Implement IReadOnlyList<T> in SyncLists ([#903](#903)) ([3eaaa77](3eaaa77))
* Include version in release ([#1336](https://github.com/MirrorNG/MirrorNG/issues/1336)) ([e4f89cf](e4f89cf))
* LLAPI transport can receive port from uri ([#1294](https://github.com/MirrorNG/MirrorNG/issues/1294)) ([7865a84](7865a84))
* Mirror now supports message inheritance ([#1286](https://github.com/MirrorNG/MirrorNG/issues/1286)) ([f9d34d5](f9d34d5))
* Multiplex based on url ([#1295](https://github.com/MirrorNG/MirrorNG/issues/1295)) ([c206f9a](c206f9a))
* network writer pool to avoid expensive allocations ([3659acb](3659acb))
* network writer pool to avoid expensive allocations ([#928](#928)) ([f5e9318](f5e9318))
* NetworkConnection is optional for handlers ([#1202](https://github.com/MirrorNG/MirrorNG/issues/1202)) ([bf9eb61](bf9eb61))
* new way to connect using uri ([#1279](https://github.com/MirrorNG/MirrorNG/issues/1279)) ([7c3622c](7c3622c))
* Pass all information to spawn handler ([#1215](https://github.com/MirrorNG/MirrorNG/issues/1215)) ([d741bae](d741bae))
* profiler info is available in production builds ([5649cc6](5649cc6))
* Remove Command shortcut for host mode ([#1168](#1168)) ([94eda38](94eda38))
* safer and consistent writers names ([#979](#979)) ([b4077c1](b4077c1))
* Script Templates ([#1217](https://github.com/MirrorNG/MirrorNG/issues/1217)) ([8cf6a07](8cf6a07))
* Secure messages that require authentication, fixes [#720](#720) ([#1089](#1089)) ([7ac43cd](7ac43cd))
* Semantic release for UPM ([#24](#24)) ([8cbc005](8cbc005))
* ship as a unitypackage ([11edc14](11edc14))
* Show compile time error if overriding unused OnServerAddPlayer ([#682](#682)) ([a8599c1](a8599c1))
* support sending and receiving ArraySegment<byte> ([#898](#898)) ([e5eecbf](e5eecbf))
* support writing and reading array segments ([#918](#918)) ([f9ff443](f9ff443))
* SyncDictionary can now be used for any IDictionary ([#703](#703)) ([2683572](2683572))
* SyncList now supports any IList implementation ([#704](#704)) ([040bcb4](040bcb4))
* SyncList.FindIndex added ([#823](#823)) ([b5ff43a](b5ff43a))
* SyncSet custom Equality Comparer support ([#1147](#1147)) ([0f95185](0f95185))
* SyncToOwner now works with authority ([#1204](https://github.com/MirrorNG/MirrorNG/issues/1204)) ([92d0df7](92d0df7))
* telepathy can now receive port from uri ([#1284](https://github.com/MirrorNG/MirrorNG/issues/1284)) ([06946cf](06946cf))
* Transport can send to multiple connections at once ([#1120](#1120)) ([bc7e116](bc7e116))
* update upm package if tests pass ([#21](#21)) ([7447776](7447776))
* user friendly weaver error ([#896](#896)) ([954a3d5](954a3d5))
* Users may provide custom serializers for any type ([#1153](#1153)) ([9cb309e](9cb309e))
* websocket can receive port in url ([#1287](https://github.com/MirrorNG/MirrorNG/issues/1287)) ([c8ad118](c8ad118))
* Websockets now give client address, fix [#1121](#1121) ([#1125](#1125)) ([c9f317d](c9f317d))
* **scene:** Add support for scene loading params ([#644](#644)) ([d48a375](d48a375))
* **syncvar:** Add SyncDictionary ([#602](#602)) ([7d21bde](7d21bde))
* **telepathy:** Split MaxMessageSize to allow setting a different value for client and server ([#749](#749)) ([f0a8b5d](f0a8b5d))
* **websocket:** Re-enable native SSL ([#965](#965)) ([7ed4a9a](7ed4a9a))

### Performance Improvements

* AddPlayerMessage is now a value type ([246a551](246a551))
* allocation free enumerator for syncsets,  fixes [#1171](#1171) ([#1173](#1173)) ([035e630](035e630))
* allocation free syncdict foreach, fix [#1172](#1172) ([#1174](#1174)) ([1ec8910](1ec8910))
* avoid allocation for error messages ([c669ff1](c669ff1))
* Avoid allocation when reading message payload ([#912](#912)) ([11750a9](11750a9))
* avoid allocation with message structs ([#939](#939)) ([7c7c910](7c7c910))
* avoid boxing for getting message id ([#1144](#1144)) ([9513842](9513842))
* avoid boxing if there is no profiler ([a351879](a351879))
* ClientAuthorityMessage is now a value type ([#991](#991)) ([d071438](d071438))
* Custom IEnumerator for SyncLists to avoid allocations on foreach ([#904](#904)) ([4ffd5a2](4ffd5a2))
* don't varint bytes and shorts ([4867415](4867415))
* eliminate boxing with lists ([#901](#901)) ([8f6d4cb](8f6d4cb))
* eliminate small allocation on remote calls ([#907](#907)) ([1c18743](1c18743))
* eliminate string concat during remote method calls ([#908](#908)) ([70a532b](70a532b))
* empty messages are value types now ([145edaa](145edaa))
* messages should be value types ([#987](#987)) ([633fb19](633fb19))
* MultiplexTransport: avoid Linq allocations that would happen on every packet send because Send calls .ServerActive() each time ([7fe8888](7fe8888))
* Networkreader nonalloc ([#910](#910)) ([18f035d](18f035d))
* objdestroy message is now a value type ([#993](#993)) ([a32c5a9](a32c5a9))
* ObjHideMessage is now a value type ([#992](#992)) ([a49d938](a49d938))
* OnDeserializeSafely without GC ([#804](#804)) ([27b7e25](27b7e25))
* Optimize interest management ([f1ceb0c](f1ceb0c))
* Optimize interest management ([#899](#899)) ([ff1a234](ff1a234))
* Pack small 32 bit negatives efficiently ([480af1a](480af1a))
* Pack small 64 bit negatives efficiently ([5f1ef4a](5f1ef4a))
* Recycle argument writer to avoid allocations ([#945](#945)) ([9743216](9743216))
* Reduce enum bandwidth ([#794](#794)) ([97e9ac2](97e9ac2))
* remove allocations during syncvar sync ([#946](#946)) ([d2381ce](d2381ce))
* remove BinaryWriter,  it allocates like crazy ([#929](#929)) ([7b3e82a](7b3e82a))
* remove network transform allocation ([9e3ecc1](9e3ecc1))
* remove syncvar boxing ([#927](#927)) ([b2ba589](b2ba589))
* return the contents of the writer as an array segment ([#916](#916)) ([ced3690](ced3690))
* reuse the network writer used for rpc parameters ([5dafc4d](5dafc4d))
* rpc messages are now value types ([#997](#997)) ([b5b2f3e](b5b2f3e))
* SceneMessage is now a value type ([#989](#989)) ([407b36a](407b36a))
* spawn with client authority only takes 1 message ([#1206](https://github.com/MirrorNG/MirrorNG/issues/1206)) ([3b9414f](3b9414f))
* SpawnPrefabMessage is now a value type ([a44efd1](a44efd1))
* SpawnSceneObjectMessage is now a value type ([40c7d97](40c7d97))
* Transports now give ArraySegment<byte> instead of byte[] (based on [#569](#569) and [#846](#846)) ([77bee45](77bee45))
* update vars is now a value type ([#990](#990)) ([f99e71e](f99e71e))
* Use 0 for null byte arrays ([#925](#925)) ([21ca49d](21ca49d))
* use 0 for null strings ([#926](#926)) ([7181cd9](7181cd9))
* use bitshift operations instead of division in varint ([fff765c](fff765c))
* Use RemoveAt to remove elements from lists ([22b45f7](22b45f7))
* use value types for empty messages ([#988](#988)) ([81d915e](81d915e))
* Use WritePackedUInt32 in SyncList ([#688](#688)) ([2db7576](2db7576))

* Merge pull request #650 from vis2k/networkclient_static_2 ([fac0542](fac0542)), closes [#650](#650)

### BREAKING CHANGES

* Remove obsolete OnServerAddPlayer

Any person that overrides this method has a broken game.  These methods are never called anywhere.

The user gets a warning because they are overriding an obsolete method,  which might get ignored if they have lots of other warnings.   They would run their game and their game would not work at all.  No errors.

By removing these methods, users that override these methods will get a compile time error instead.  So they cannot ignore this error and they will fix it.

* Method is no longer available in NetworkLobbyManager
* Make NetworkClient Great Again!
github-actions bot referenced this pull request in MirageNet/Mirage Jan 4, 2020
# 1.0.0 (2020-01-04)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](46eddc0))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](#1179))" ([4cc4279](4cc4279))
* [#573](#573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](c1af84e))
* [#573](#573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](e521a20))
* [#573](#573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](a2d6317))
* [#609](#609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](#623)) ([5c00577](5c00577))
* [#640](#640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](bdf12c8))
* [#651](#651) GetSceneAt assumes default scene ([#654](#654)) ([65eaba1](65eaba1))
* [#652](#652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](ee2ace8))
* [#679](#679) package for unity ([4a6a4df](4a6a4df))
* [#679](#679) unity package ([9895647](9895647))
* [#692](#692) by always adding connectionToClient when rebuilding observers ([ab44ac8](ab44ac8))
* [#718](#718) remove Tests folder from unitypackage ([#827](#827)) ([7e487af](7e487af))
* [#791](#791) corrected assembly paths passed to weaver ([#803](#803)) ([3ba546e](3ba546e))
* [#791](#791) stack overflow in the weaver ([#792](#792)) ([7b57830](7b57830))
* [#840](#840) by allowing Mirror to respect the forceHidden flag ([#893](#893)) ([3ec3d02](3ec3d02))
* added new read/write symbol params ([#806](#806)) ([3a50ca6](3a50ca6))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](#773)) ([72e4e55](72e4e55))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](8899d20))
* ArraySegment<byte> work in Messages ([#919](#919)) ([981ba7c](981ba7c))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](7aa7815))
* call Obsoleted OnStartClient ([#681](#681)) ([8dea50e](8dea50e))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](4d373c5))
* check event prefix ([7417b68](7417b68))
* ClientRpc methods now work accross assemblies ([#1129](#1129)) ([13dbcb9](13dbcb9)), closes [#1128](#1128)
* Cmds can be called from child classes in other assemblies ([d8a98d8](d8a98d8)), closes [#1108](#1108)
* code generation works with il2cpp again ([#1056](#1056)) ([8738562](8738562))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](d7a58d2)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* do not accumulate changes if there are no observers fixes [#963](#963) ([#964](#964)) ([64a0468](64a0468))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](7119dd1))
* don't call hook in host if no change,  fixes [#1142](#1142) ([#1143](#1143)) ([d8ce80f](d8ce80f))
* don't convert null arrays to empty array ([#913](#913)) ([dd758ca](dd758ca))
* Don't disconnect host ([#608](#608)) ([c1707e5](c1707e5))
* Don't give host player authority by default ([#1158](#1158)) ([1fc1ed2](1fc1ed2))
* Don't increment counter in Awake ([#971](#971)) ([45b7118](45b7118))
* Don't set asset id for scene objects ([7e40232](7e40232))
* Don't set framerate in host mode ([4644bc4](4644bc4))
* Don't throw exception getting address ([7df3ce3](7df3ce3))
* don't use obsolete method ([12437ba](12437ba))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](a0425e4))
* Dummy file for SyncListStructProcessor.cs ([#798](#798)) ([75e4f15](75e4f15))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](dbe0643))
* error with missing assemblies ([#1052](#1052)) ([00eb23a](00eb23a)), closes [#1051](#1051)
* Fix error scene error message in host mode ([838d4f0](838d4f0))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](2f19c7c)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* hooks in host mode can call each other ([#1017](#1017)) ([f27fd0b](f27fd0b))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](203a823))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](d00c95b))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](fb26d00)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](9acde20)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](bc7a961))
* list server logs properly when disconnected ([f02d317](f02d317))
* ListServer Ping not found in WebGL ([6c4b34b](6c4b34b))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](377c47c))
* maintain Unity's copyright notice ([#961](#961)) ([7718955](7718955))
* Make assembly definition 2018.4 compatible ([99ecc9e](99ecc9e))
* make build pass ([08df6d0](08df6d0))
* Mark weaver as failed if serializing invalid type ([03c767d](03c767d))
* missed ushort reader/writer ([74faf2a](74faf2a))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](#832)) ([5262592](5262592))
* move listserver classes into package ([2668b17](2668b17))
* move NetworkStreamExtension in a namespace ([12de543](12de543))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](b3127be))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](ed572da))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](fb716df))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](524abfc))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](d712cd0))
* non ready connections should not observe objects ([1352334](1352334))
* null reference exception ([7ce95c5](7ce95c5))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](#618)) ([c9eac57](c9eac57))
* OnSetHostVisibility can now check if it has authority ([888e46c](888e46c))
* pack works if message is boxed ([55c9bb6](55c9bb6))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](701f4f4))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](#727)) ([3cee3ab](3cee3ab))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](#730)) ([015d0d5](015d0d5))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](5449840))
* potential null reference exception with debug logging ([33493a0](33493a0))
* Prevent Compiler Paradox ([#1145](#1145)) ([fd43c67](fd43c67))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](#936)) ([d6389e6](d6389e6))
* Rebuild observers when we switch scenes, fixes [#978](#978) ([#1016](#1016)) ([6dd1350](6dd1350))
* reduce allocations at the transport ([80e4f17](80e4f17))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](d0cc669))
* remove samples from upm package ([#25](#25)) ([a71e21f](a71e21f))
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](ad724fe)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](0e1bc81)), closes [#962](#962)
* replacing the player does not mean giving up authority ([#1254](https://github.com/MirrorNG/MirrorNG/issues/1254)) ([a2c273e](a2c273e))
* Respect Player Prefab Position & Rotation ([#825](#825)) ([8ebda0f](8ebda0f))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](13bb748))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](f56507f))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](#817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](1f07af0))
* Round Robin Spawning by Hierarchy Order ([#790](#790)) ([531e202](531e202)), closes [#724](#724)
* SceneId was not set to 0 for prefab variants ([#976](#976)) ([#977](#977)) ([2ca2c48](2ca2c48))
* set authority when replacing the player ([2195fee](2195fee))
* Set syncvar variables after calling the hook ([#659](#659)) ([2d63ee1](2d63ee1))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](0d1d7b5))
* spawnwithauthority works again in host mode ([5b04836](5b04836))
* Stop calling ClientDisconnect on host ([#597](#597)) ([b67b3e4](b67b3e4))
* suppress warning on standalone build [#1053](#1053) ([4ef680a](4ef680a))
* Suspend server transport while changing scenes ([#1169](#1169)) ([e8fac8a](e8fac8a))
* Sync full netAnimator for new clients, fix [#980](#980) ([#1110](#1110)) ([db8310f](db8310f))
* syncvars in commands work again ([#1131](#1131)) ([c24a73f](c24a73f))
* TargetRpc now works accross assemblies ([#1130](#1130)) ([5ecd646](5ecd646)), closes [#1128](#1128)
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](488446a))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](3831cbd))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](22931fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](535b4d4))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](98d3fb0))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](2761ff2))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](abf06df))
* TelepathyTransport.ToString UWP exception ([8a190bf](8a190bf))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](cc6e4f6))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](ed7e509))
* webgl build fix [#1136](#1136) ([#1137](#1137)) ([c85d0df](c85d0df))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](db99dd7))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](#769)) ([99c8f5c](99c8f5c))
* **tests:** Added missing SyncListByteValid test file ([#634](#634)) ([b0af876](b0af876))
* **weaver:** [#696](#696) detect .mystruct = new MyStruct() changes with syncvars ([#702](#702)) ([053949b](053949b))
* **weaver:** fix [#706](#706) find system dlls ([#729](#729)) ([53be9b6](53be9b6))
* **weaver:** fix [#796](#796), reload assemblies after initial import ([#1106](#1106)) ([d91b387](d91b387))
* **websocket:** [#829](#829) fix InvalidOperationException with wss:// ([#830](#830)) ([2d682b5](2d682b5))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](#879)) ([3c60b08](3c60b08))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](#848)) ([8967a20](8967a20))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](67d715f))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](a2cc14b))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](#707)) ([699a261](699a261))
* workaround for [#791](#791) ([5c850aa](5c850aa))

### Features

* [#869](#869) support structs in other assemblies ([#1022](#1022)) ([62d1887](62d1887))
* Add roomPlayer parameter to OnRoomServerCreateGamePlayer ([#1317](https://github.com/MirrorNG/MirrorNG/issues/1317)) ([abf5cdc](abf5cdc))
* Add SyncHashSet and SyncSortedSet ([#685](#685)) ([695979e](695979e))
* Add Timeout to NetworkAuthenticator ([#1091](#1091)) ([e8cc9ba](e8cc9ba))
* Add UPM configuration ([#11](#11)) ([9280af1](9280af1))
* Add version to package file ([#1361](https://github.com/MirrorNG/MirrorNG/issues/1361)) ([e97ab93](e97ab93))
* Add weaver support for Vector2Int and Vector3Int ([#646](#646)) ([e2a6ce9](e2a6ce9))
* allow users to detect mirror version 3 ([ee9c737](ee9c737))
* An authenticator that times out other authenticators ([#1211](https://github.com/MirrorNG/MirrorNG/issues/1211)) ([09f6892](09f6892))
* Authentication Framework ([#1057](#1057)) ([56bcb02](56bcb02))
* Chat example ([#1305](https://github.com/MirrorNG/MirrorNG/issues/1305)) ([9926472](9926472))
* component based SyncToOwner, fixes [#39](#39) ([#1023](#1023)) ([c6d86b3](c6d86b3))
* custom reader/writer via extension methods ([#1047](#1047)) ([b45afad](b45afad))
* Custom readers and writers ([92b3e98](92b3e98))
* fallback transport now supports uri ([#1296](https://github.com/MirrorNG/MirrorNG/issues/1296)) ([e4a701e](e4a701e))
* generate serializers for IMessageBase structs ([#1353](https://github.com/MirrorNG/MirrorNG/issues/1353)) ([3c0bc28](3c0bc28))
* Implement IReadOnlyList<T> in SyncLists ([#903](#903)) ([3eaaa77](3eaaa77))
* Include version in release ([#1336](https://github.com/MirrorNG/MirrorNG/issues/1336)) ([e4f89cf](e4f89cf))
* LLAPI transport can receive port from uri ([#1294](https://github.com/MirrorNG/MirrorNG/issues/1294)) ([7865a84](7865a84))
* Mirror now supports message inheritance ([#1286](https://github.com/MirrorNG/MirrorNG/issues/1286)) ([f9d34d5](f9d34d5))
* Multiplex based on url ([#1295](https://github.com/MirrorNG/MirrorNG/issues/1295)) ([c206f9a](c206f9a))
* network writer pool to avoid expensive allocations ([3659acb](3659acb))
* network writer pool to avoid expensive allocations ([#928](#928)) ([f5e9318](f5e9318))
* NetworkConnection is optional for handlers ([#1202](https://github.com/MirrorNG/MirrorNG/issues/1202)) ([bf9eb61](bf9eb61))
* new way to connect using uri ([#1279](https://github.com/MirrorNG/MirrorNG/issues/1279)) ([7c3622c](7c3622c))
* Pass all information to spawn handler ([#1215](https://github.com/MirrorNG/MirrorNG/issues/1215)) ([d741bae](d741bae))
* profiler info is available in production builds ([5649cc6](5649cc6))
* Remove Command shortcut for host mode ([#1168](#1168)) ([94eda38](94eda38))
* safer and consistent writers names ([#979](#979)) ([b4077c1](b4077c1))
* Script Templates ([#1217](https://github.com/MirrorNG/MirrorNG/issues/1217)) ([8cf6a07](8cf6a07))
* Secure messages that require authentication, fixes [#720](#720) ([#1089](#1089)) ([7ac43cd](7ac43cd))
* Semantic release for UPM ([#24](#24)) ([8cbc005](8cbc005))
* ship as a unitypackage ([11edc14](11edc14))
* Show compile time error if overriding unused OnServerAddPlayer ([#682](#682)) ([a8599c1](a8599c1))
* support sending and receiving ArraySegment<byte> ([#898](#898)) ([e5eecbf](e5eecbf))
* support writing and reading array segments ([#918](#918)) ([f9ff443](f9ff443))
* SyncDictionary can now be used for any IDictionary ([#703](#703)) ([2683572](2683572))
* SyncList now supports any IList implementation ([#704](#704)) ([040bcb4](040bcb4))
* SyncList.FindIndex added ([#823](#823)) ([b5ff43a](b5ff43a))
* SyncSet custom Equality Comparer support ([#1147](#1147)) ([0f95185](0f95185))
* SyncToOwner now works with authority ([#1204](https://github.com/MirrorNG/MirrorNG/issues/1204)) ([92d0df7](92d0df7))
* telepathy can now receive port from uri ([#1284](https://github.com/MirrorNG/MirrorNG/issues/1284)) ([06946cf](06946cf))
* Transport can send to multiple connections at once ([#1120](#1120)) ([bc7e116](bc7e116))
* update upm package if tests pass ([#21](#21)) ([7447776](7447776))
* user friendly weaver error ([#896](#896)) ([954a3d5](954a3d5))
* Users may provide custom serializers for any type ([#1153](#1153)) ([9cb309e](9cb309e))
* websocket can receive port in url ([#1287](https://github.com/MirrorNG/MirrorNG/issues/1287)) ([c8ad118](c8ad118))
* Websockets now give client address, fix [#1121](#1121) ([#1125](#1125)) ([c9f317d](c9f317d))
* **scene:** Add support for scene loading params ([#644](#644)) ([d48a375](d48a375))
* **syncvar:** Add SyncDictionary ([#602](#602)) ([7d21bde](7d21bde))
* **telepathy:** Split MaxMessageSize to allow setting a different value for client and server ([#749](#749)) ([f0a8b5d](f0a8b5d))
* **websocket:** Re-enable native SSL ([#965](#965)) ([7ed4a9a](7ed4a9a))

### Performance Improvements

* AddPlayerMessage is now a value type ([246a551](246a551))
* allocation free enumerator for syncsets,  fixes [#1171](#1171) ([#1173](#1173)) ([035e630](035e630))
* allocation free syncdict foreach, fix [#1172](#1172) ([#1174](#1174)) ([1ec8910](1ec8910))
* avoid allocation for error messages ([c669ff1](c669ff1))
* Avoid allocation when reading message payload ([#912](#912)) ([11750a9](11750a9))
* avoid allocation with message structs ([#939](#939)) ([7c7c910](7c7c910))
* avoid boxing for getting message id ([#1144](#1144)) ([9513842](9513842))
* avoid boxing if there is no profiler ([a351879](a351879))
* ClientAuthorityMessage is now a value type ([#991](#991)) ([d071438](d071438))
* Custom IEnumerator for SyncLists to avoid allocations on foreach ([#904](#904)) ([4ffd5a2](4ffd5a2))
* don't varint bytes and shorts ([4867415](4867415))
* eliminate boxing with lists ([#901](#901)) ([8f6d4cb](8f6d4cb))
* eliminate small allocation on remote calls ([#907](#907)) ([1c18743](1c18743))
* eliminate string concat during remote method calls ([#908](#908)) ([70a532b](70a532b))
* empty messages are value types now ([145edaa](145edaa))
* messages should be value types ([#987](#987)) ([633fb19](633fb19))
* MultiplexTransport: avoid Linq allocations that would happen on every packet send because Send calls .ServerActive() each time ([7fe8888](7fe8888))
* Networkreader nonalloc ([#910](#910)) ([18f035d](18f035d))
* objdestroy message is now a value type ([#993](#993)) ([a32c5a9](a32c5a9))
* ObjHideMessage is now a value type ([#992](#992)) ([a49d938](a49d938))
* OnDeserializeSafely without GC ([#804](#804)) ([27b7e25](27b7e25))
* Optimize interest management ([f1ceb0c](f1ceb0c))
* Optimize interest management ([#899](#899)) ([ff1a234](ff1a234))
* Pack small 32 bit negatives efficiently ([480af1a](480af1a))
* Pack small 64 bit negatives efficiently ([5f1ef4a](5f1ef4a))
* Recycle argument writer to avoid allocations ([#945](#945)) ([9743216](9743216))
* Reduce enum bandwidth ([#794](#794)) ([97e9ac2](97e9ac2))
* remove allocations during syncvar sync ([#946](#946)) ([d2381ce](d2381ce))
* remove BinaryWriter,  it allocates like crazy ([#929](#929)) ([7b3e82a](7b3e82a))
* remove network transform allocation ([9e3ecc1](9e3ecc1))
* remove syncvar boxing ([#927](#927)) ([b2ba589](b2ba589))
* return the contents of the writer as an array segment ([#916](#916)) ([ced3690](ced3690))
* reuse the network writer used for rpc parameters ([5dafc4d](5dafc4d))
* rpc messages are now value types ([#997](#997)) ([b5b2f3e](b5b2f3e))
* SceneMessage is now a value type ([#989](#989)) ([407b36a](407b36a))
* spawn with client authority only takes 1 message ([#1206](https://github.com/MirrorNG/MirrorNG/issues/1206)) ([3b9414f](3b9414f))
* SpawnPrefabMessage is now a value type ([a44efd1](a44efd1))
* SpawnSceneObjectMessage is now a value type ([40c7d97](40c7d97))
* Transports now give ArraySegment<byte> instead of byte[] (based on [#569](#569) and [#846](#846)) ([77bee45](77bee45))
* update vars is now a value type ([#990](#990)) ([f99e71e](f99e71e))
* Use 0 for null byte arrays ([#925](#925)) ([21ca49d](21ca49d))
* use 0 for null strings ([#926](#926)) ([7181cd9](7181cd9))
* use bitshift operations instead of division in varint ([fff765c](fff765c))
* Use RemoveAt to remove elements from lists ([22b45f7](22b45f7))
* use value types for empty messages ([#988](#988)) ([81d915e](81d915e))
* Use WritePackedUInt32 in SyncList ([#688](#688)) ([2db7576](2db7576))

* Merge pull request #650 from vis2k/networkclient_static_2 ([fac0542](fac0542)), closes [#650](#650)

### BREAKING CHANGES

* Remove obsolete OnServerAddPlayer

Any person that overrides this method has a broken game.  These methods are never called anywhere.

The user gets a warning because they are overriding an obsolete method,  which might get ignored if they have lots of other warnings.   They would run their game and their game would not work at all.  No errors.

By removing these methods, users that override these methods will get a compile time error instead.  So they cannot ignore this error and they will fix it.

* Method is no longer available in NetworkLobbyManager
* Make NetworkClient Great Again!
github-actions bot referenced this pull request in MirageNet/Mirage Jan 4, 2020
# 1.0.0 (2020-01-04)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](46eddc0))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](#1179))" ([4cc4279](4cc4279))
* [#573](#573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](c1af84e))
* [#573](#573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](e521a20))
* [#573](#573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](a2d6317))
* [#609](#609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](#623)) ([5c00577](5c00577))
* [#640](#640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](bdf12c8))
* [#651](#651) GetSceneAt assumes default scene ([#654](#654)) ([65eaba1](65eaba1))
* [#652](#652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](ee2ace8))
* [#679](#679) package for unity ([4a6a4df](4a6a4df))
* [#679](#679) unity package ([9895647](9895647))
* [#692](#692) by always adding connectionToClient when rebuilding observers ([ab44ac8](ab44ac8))
* [#718](#718) remove Tests folder from unitypackage ([#827](#827)) ([7e487af](7e487af))
* [#791](#791) corrected assembly paths passed to weaver ([#803](#803)) ([3ba546e](3ba546e))
* [#791](#791) stack overflow in the weaver ([#792](#792)) ([7b57830](7b57830))
* [#840](#840) by allowing Mirror to respect the forceHidden flag ([#893](#893)) ([3ec3d02](3ec3d02))
* added new read/write symbol params ([#806](#806)) ([3a50ca6](3a50ca6))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](#773)) ([72e4e55](72e4e55))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](8899d20))
* ArraySegment<byte> work in Messages ([#919](#919)) ([981ba7c](981ba7c))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](7aa7815))
* call Obsoleted OnStartClient ([#681](#681)) ([8dea50e](8dea50e))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](4d373c5))
* check event prefix ([7417b68](7417b68))
* ClientRpc methods now work accross assemblies ([#1129](#1129)) ([13dbcb9](13dbcb9)), closes [#1128](#1128)
* Cmds can be called from child classes in other assemblies ([d8a98d8](d8a98d8)), closes [#1108](#1108)
* code generation works with il2cpp again ([#1056](#1056)) ([8738562](8738562))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](d7a58d2)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* do not accumulate changes if there are no observers fixes [#963](#963) ([#964](#964)) ([64a0468](64a0468))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](7119dd1))
* don't call hook in host if no change,  fixes [#1142](#1142) ([#1143](#1143)) ([d8ce80f](d8ce80f))
* don't call OnStartLocalPlayer twice ([#1263](https://github.com/MirrorNG/MirrorNG/issues/1263)) ([c753089](c753089))
* don't convert null arrays to empty array ([#913](#913)) ([dd758ca](dd758ca))
* Don't disconnect host ([#608](#608)) ([c1707e5](c1707e5))
* Don't give host player authority by default ([#1158](#1158)) ([1fc1ed2](1fc1ed2))
* Don't increment counter in Awake ([#971](#971)) ([45b7118](45b7118))
* Don't set asset id for scene objects ([7e40232](7e40232))
* Don't set framerate in host mode ([4644bc4](4644bc4))
* Don't throw exception getting address ([7df3ce3](7df3ce3))
* don't use obsolete method ([12437ba](12437ba))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](a0425e4))
* Dummy file for SyncListStructProcessor.cs ([#798](#798)) ([75e4f15](75e4f15))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](dbe0643))
* error with missing assemblies ([#1052](#1052)) ([00eb23a](00eb23a)), closes [#1051](#1051)
* Fix error scene error message in host mode ([838d4f0](838d4f0))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](2f19c7c)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* hooks in host mode can call each other ([#1017](#1017)) ([f27fd0b](f27fd0b))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](203a823))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](d00c95b))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](fb26d00)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](9acde20)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](bc7a961))
* list server logs properly when disconnected ([f02d317](f02d317))
* ListServer Ping not found in WebGL ([6c4b34b](6c4b34b))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](377c47c))
* maintain Unity's copyright notice ([#961](#961)) ([7718955](7718955))
* Make assembly definition 2018.4 compatible ([99ecc9e](99ecc9e))
* make build pass ([08df6d0](08df6d0))
* Mark weaver as failed if serializing invalid type ([03c767d](03c767d))
* missed ushort reader/writer ([74faf2a](74faf2a))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](#832)) ([5262592](5262592))
* move listserver classes into package ([2668b17](2668b17))
* move NetworkStreamExtension in a namespace ([12de543](12de543))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](b3127be))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](ed572da))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](fb716df))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](524abfc))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](d712cd0))
* non ready connections should not observe objects ([1352334](1352334))
* null reference exception ([7ce95c5](7ce95c5))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](#618)) ([c9eac57](c9eac57))
* OnSetHostVisibility can now check if it has authority ([888e46c](888e46c))
* pack works if message is boxed ([55c9bb6](55c9bb6))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](701f4f4))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](#727)) ([3cee3ab](3cee3ab))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](#730)) ([015d0d5](015d0d5))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](5449840))
* potential null reference exception with debug logging ([33493a0](33493a0))
* Prevent Compiler Paradox ([#1145](#1145)) ([fd43c67](fd43c67))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](#936)) ([d6389e6](d6389e6))
* Rebuild observers when we switch scenes, fixes [#978](#978) ([#1016](#1016)) ([6dd1350](6dd1350))
* reduce allocations at the transport ([80e4f17](80e4f17))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](d0cc669))
* remove samples from upm package ([#25](#25)) ([a71e21f](a71e21f))
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](ad724fe)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](0e1bc81)), closes [#962](#962)
* replacing the player does not mean giving up authority ([#1254](https://github.com/MirrorNG/MirrorNG/issues/1254)) ([a2c273e](a2c273e))
* Respect Player Prefab Position & Rotation ([#825](#825)) ([8ebda0f](8ebda0f))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](13bb748))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](f56507f))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](#817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](1f07af0))
* Round Robin Spawning by Hierarchy Order ([#790](#790)) ([531e202](531e202)), closes [#724](#724)
* SceneId was not set to 0 for prefab variants ([#976](#976)) ([#977](#977)) ([2ca2c48](2ca2c48))
* set authority when replacing the player ([2195fee](2195fee))
* Set syncvar variables after calling the hook ([#659](#659)) ([2d63ee1](2d63ee1))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](0d1d7b5))
* spawnwithauthority works again in host mode ([5b04836](5b04836))
* Stop calling ClientDisconnect on host ([#597](#597)) ([b67b3e4](b67b3e4))
* suppress warning on standalone build [#1053](#1053) ([4ef680a](4ef680a))
* Suspend server transport while changing scenes ([#1169](#1169)) ([e8fac8a](e8fac8a))
* Sync full netAnimator for new clients, fix [#980](#980) ([#1110](#1110)) ([db8310f](db8310f))
* syncvars in commands work again ([#1131](#1131)) ([c24a73f](c24a73f))
* TargetRpc now works accross assemblies ([#1130](#1130)) ([5ecd646](5ecd646)), closes [#1128](#1128)
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](488446a))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](3831cbd))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](22931fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](535b4d4))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](98d3fb0))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](2761ff2))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](abf06df))
* TelepathyTransport.ToString UWP exception ([8a190bf](8a190bf))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](cc6e4f6))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](ed7e509))
* webgl build fix [#1136](#1136) ([#1137](#1137)) ([c85d0df](c85d0df))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](db99dd7))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](#769)) ([99c8f5c](99c8f5c))
* **tests:** Added missing SyncListByteValid test file ([#634](#634)) ([b0af876](b0af876))
* **weaver:** [#696](#696) detect .mystruct = new MyStruct() changes with syncvars ([#702](#702)) ([053949b](053949b))
* **weaver:** fix [#706](#706) find system dlls ([#729](#729)) ([53be9b6](53be9b6))
* **weaver:** fix [#796](#796), reload assemblies after initial import ([#1106](#1106)) ([d91b387](d91b387))
* **websocket:** [#829](#829) fix InvalidOperationException with wss:// ([#830](#830)) ([2d682b5](2d682b5))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](#879)) ([3c60b08](3c60b08))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](#848)) ([8967a20](8967a20))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](67d715f))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](a2cc14b))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](#707)) ([699a261](699a261))
* workaround for [#791](#791) ([5c850aa](5c850aa))

### Features

* [#869](#869) support structs in other assemblies ([#1022](#1022)) ([62d1887](62d1887))
* Add roomPlayer parameter to OnRoomServerCreateGamePlayer ([#1317](https://github.com/MirrorNG/MirrorNG/issues/1317)) ([abf5cdc](abf5cdc))
* Add SyncHashSet and SyncSortedSet ([#685](#685)) ([695979e](695979e))
* Add Timeout to NetworkAuthenticator ([#1091](#1091)) ([e8cc9ba](e8cc9ba))
* Add UPM configuration ([#11](#11)) ([9280af1](9280af1))
* Add version to package file ([#1361](https://github.com/MirrorNG/MirrorNG/issues/1361)) ([e97ab93](e97ab93))
* Add weaver support for Vector2Int and Vector3Int ([#646](#646)) ([e2a6ce9](e2a6ce9))
* allow users to detect mirror version 3 ([ee9c737](ee9c737))
* An authenticator that times out other authenticators ([#1211](https://github.com/MirrorNG/MirrorNG/issues/1211)) ([09f6892](09f6892))
* Authentication Framework ([#1057](#1057)) ([56bcb02](56bcb02))
* Chat example ([#1305](https://github.com/MirrorNG/MirrorNG/issues/1305)) ([9926472](9926472))
* component based SyncToOwner, fixes [#39](#39) ([#1023](#1023)) ([c6d86b3](c6d86b3))
* custom reader/writer via extension methods ([#1047](#1047)) ([b45afad](b45afad))
* Custom readers and writers ([92b3e98](92b3e98))
* fallback transport now supports uri ([#1296](https://github.com/MirrorNG/MirrorNG/issues/1296)) ([e4a701e](e4a701e))
* generate serializers for IMessageBase structs ([#1353](https://github.com/MirrorNG/MirrorNG/issues/1353)) ([3c0bc28](3c0bc28))
* Implement IReadOnlyList<T> in SyncLists ([#903](#903)) ([3eaaa77](3eaaa77))
* Include version in release ([#1336](https://github.com/MirrorNG/MirrorNG/issues/1336)) ([e4f89cf](e4f89cf))
* LLAPI transport can receive port from uri ([#1294](https://github.com/MirrorNG/MirrorNG/issues/1294)) ([7865a84](7865a84))
* Mirror now supports message inheritance ([#1286](https://github.com/MirrorNG/MirrorNG/issues/1286)) ([f9d34d5](f9d34d5))
* Multiplex based on url ([#1295](https://github.com/MirrorNG/MirrorNG/issues/1295)) ([c206f9a](c206f9a))
* network writer pool to avoid expensive allocations ([3659acb](3659acb))
* network writer pool to avoid expensive allocations ([#928](#928)) ([f5e9318](f5e9318))
* NetworkConnection is optional for handlers ([#1202](https://github.com/MirrorNG/MirrorNG/issues/1202)) ([bf9eb61](bf9eb61))
* new way to connect using uri ([#1279](https://github.com/MirrorNG/MirrorNG/issues/1279)) ([7c3622c](7c3622c))
* Pass all information to spawn handler ([#1215](https://github.com/MirrorNG/MirrorNG/issues/1215)) ([d741bae](d741bae))
* profiler info is available in production builds ([5649cc6](5649cc6))
* Remove Command shortcut for host mode ([#1168](#1168)) ([94eda38](94eda38))
* safer and consistent writers names ([#979](#979)) ([b4077c1](b4077c1))
* Script Templates ([#1217](https://github.com/MirrorNG/MirrorNG/issues/1217)) ([8cf6a07](8cf6a07))
* Secure messages that require authentication, fixes [#720](#720) ([#1089](#1089)) ([7ac43cd](7ac43cd))
* Semantic release for UPM ([#24](#24)) ([8cbc005](8cbc005))
* ship as a unitypackage ([11edc14](11edc14))
* Show compile time error if overriding unused OnServerAddPlayer ([#682](#682)) ([a8599c1](a8599c1))
* support sending and receiving ArraySegment<byte> ([#898](#898)) ([e5eecbf](e5eecbf))
* support writing and reading array segments ([#918](#918)) ([f9ff443](f9ff443))
* SyncDictionary can now be used for any IDictionary ([#703](#703)) ([2683572](2683572))
* SyncList now supports any IList implementation ([#704](#704)) ([040bcb4](040bcb4))
* SyncList.FindIndex added ([#823](#823)) ([b5ff43a](b5ff43a))
* SyncSet custom Equality Comparer support ([#1147](#1147)) ([0f95185](0f95185))
* SyncToOwner now works with authority ([#1204](https://github.com/MirrorNG/MirrorNG/issues/1204)) ([92d0df7](92d0df7))
* telepathy can now receive port from uri ([#1284](https://github.com/MirrorNG/MirrorNG/issues/1284)) ([06946cf](06946cf))
* Transport can send to multiple connections at once ([#1120](#1120)) ([bc7e116](bc7e116))
* update upm package if tests pass ([#21](#21)) ([7447776](7447776))
* user friendly weaver error ([#896](#896)) ([954a3d5](954a3d5))
* Users may provide custom serializers for any type ([#1153](#1153)) ([9cb309e](9cb309e))
* websocket can receive port in url ([#1287](https://github.com/MirrorNG/MirrorNG/issues/1287)) ([c8ad118](c8ad118))
* Websockets now give client address, fix [#1121](#1121) ([#1125](#1125)) ([c9f317d](c9f317d))
* **scene:** Add support for scene loading params ([#644](#644)) ([d48a375](d48a375))
* **syncvar:** Add SyncDictionary ([#602](#602)) ([7d21bde](7d21bde))
* **telepathy:** Split MaxMessageSize to allow setting a different value for client and server ([#749](#749)) ([f0a8b5d](f0a8b5d))
* **websocket:** Re-enable native SSL ([#965](#965)) ([7ed4a9a](7ed4a9a))

### Performance Improvements

* AddPlayerMessage is now a value type ([246a551](246a551))
* allocation free enumerator for syncsets,  fixes [#1171](#1171) ([#1173](#1173)) ([035e630](035e630))
* allocation free syncdict foreach, fix [#1172](#1172) ([#1174](#1174)) ([1ec8910](1ec8910))
* avoid allocation for error messages ([c669ff1](c669ff1))
* Avoid allocation when reading message payload ([#912](#912)) ([11750a9](11750a9))
* avoid allocation with message structs ([#939](#939)) ([7c7c910](7c7c910))
* avoid boxing for getting message id ([#1144](#1144)) ([9513842](9513842))
* avoid boxing if there is no profiler ([a351879](a351879))
* ClientAuthorityMessage is now a value type ([#991](#991)) ([d071438](d071438))
* Custom IEnumerator for SyncLists to avoid allocations on foreach ([#904](#904)) ([4ffd5a2](4ffd5a2))
* don't varint bytes and shorts ([4867415](4867415))
* eliminate boxing with lists ([#901](#901)) ([8f6d4cb](8f6d4cb))
* eliminate small allocation on remote calls ([#907](#907)) ([1c18743](1c18743))
* eliminate string concat during remote method calls ([#908](#908)) ([70a532b](70a532b))
* empty messages are value types now ([145edaa](145edaa))
* messages should be value types ([#987](#987)) ([633fb19](633fb19))
* MultiplexTransport: avoid Linq allocations that would happen on every packet send because Send calls .ServerActive() each time ([7fe8888](7fe8888))
* Networkreader nonalloc ([#910](#910)) ([18f035d](18f035d))
* objdestroy message is now a value type ([#993](#993)) ([a32c5a9](a32c5a9))
* ObjHideMessage is now a value type ([#992](#992)) ([a49d938](a49d938))
* OnDeserializeSafely without GC ([#804](#804)) ([27b7e25](27b7e25))
* Optimize interest management ([f1ceb0c](f1ceb0c))
* Optimize interest management ([#899](#899)) ([ff1a234](ff1a234))
* Pack small 32 bit negatives efficiently ([480af1a](480af1a))
* Pack small 64 bit negatives efficiently ([5f1ef4a](5f1ef4a))
* Recycle argument writer to avoid allocations ([#945](#945)) ([9743216](9743216))
* Reduce enum bandwidth ([#794](#794)) ([97e9ac2](97e9ac2))
* remove allocations during syncvar sync ([#946](#946)) ([d2381ce](d2381ce))
* remove BinaryWriter,  it allocates like crazy ([#929](#929)) ([7b3e82a](7b3e82a))
* remove network transform allocation ([9e3ecc1](9e3ecc1))
* remove syncvar boxing ([#927](#927)) ([b2ba589](b2ba589))
* return the contents of the writer as an array segment ([#916](#916)) ([ced3690](ced3690))
* reuse the network writer used for rpc parameters ([5dafc4d](5dafc4d))
* rpc messages are now value types ([#997](#997)) ([b5b2f3e](b5b2f3e))
* SceneMessage is now a value type ([#989](#989)) ([407b36a](407b36a))
* spawn with client authority only takes 1 message ([#1206](https://github.com/MirrorNG/MirrorNG/issues/1206)) ([3b9414f](3b9414f))
* SpawnPrefabMessage is now a value type ([a44efd1](a44efd1))
* SpawnSceneObjectMessage is now a value type ([40c7d97](40c7d97))
* Transports now give ArraySegment<byte> instead of byte[] (based on [#569](#569) and [#846](#846)) ([77bee45](77bee45))
* update vars is now a value type ([#990](#990)) ([f99e71e](f99e71e))
* Use 0 for null byte arrays ([#925](#925)) ([21ca49d](21ca49d))
* use 0 for null strings ([#926](#926)) ([7181cd9](7181cd9))
* use bitshift operations instead of division in varint ([fff765c](fff765c))
* Use RemoveAt to remove elements from lists ([22b45f7](22b45f7))
* use value types for empty messages ([#988](#988)) ([81d915e](81d915e))
* Use WritePackedUInt32 in SyncList ([#688](#688)) ([2db7576](2db7576))

* Merge pull request #650 from vis2k/networkclient_static_2 ([fac0542](fac0542)), closes [#650](#650)

### BREAKING CHANGES

* Remove obsolete OnServerAddPlayer

Any person that overrides this method has a broken game.  These methods are never called anywhere.

The user gets a warning because they are overriding an obsolete method,  which might get ignored if they have lots of other warnings.   They would run their game and their game would not work at all.  No errors.

By removing these methods, users that override these methods will get a compile time error instead.  So they cannot ignore this error and they will fix it.

* Method is no longer available in NetworkLobbyManager
* Make NetworkClient Great Again!
github-actions bot referenced this pull request in MirageNet/Mirage Jan 4, 2020
# 1.0.0 (2020-01-04)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](46eddc0))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](#1179))" ([4cc4279](4cc4279))
* [#573](#573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](c1af84e))
* [#573](#573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](e521a20))
* [#573](#573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](a2d6317))
* [#609](#609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](#623)) ([5c00577](5c00577))
* [#640](#640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](bdf12c8))
* [#651](#651) GetSceneAt assumes default scene ([#654](#654)) ([65eaba1](65eaba1))
* [#652](#652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](ee2ace8))
* [#679](#679) package for unity ([4a6a4df](4a6a4df))
* [#679](#679) unity package ([9895647](9895647))
* [#692](#692) by always adding connectionToClient when rebuilding observers ([ab44ac8](ab44ac8))
* [#718](#718) remove Tests folder from unitypackage ([#827](#827)) ([7e487af](7e487af))
* [#791](#791) corrected assembly paths passed to weaver ([#803](#803)) ([3ba546e](3ba546e))
* [#791](#791) stack overflow in the weaver ([#792](#792)) ([7b57830](7b57830))
* [#840](#840) by allowing Mirror to respect the forceHidden flag ([#893](#893)) ([3ec3d02](3ec3d02))
* added new read/write symbol params ([#806](#806)) ([3a50ca6](3a50ca6))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](#773)) ([72e4e55](72e4e55))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](8899d20))
* ArraySegment<byte> work in Messages ([#919](#919)) ([981ba7c](981ba7c))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](7aa7815))
* call Obsoleted OnStartClient ([#681](#681)) ([8dea50e](8dea50e))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](4d373c5))
* check event prefix ([7417b68](7417b68))
* ClientRpc methods now work accross assemblies ([#1129](#1129)) ([13dbcb9](13dbcb9)), closes [#1128](#1128)
* Cmds can be called from child classes in other assemblies ([d8a98d8](d8a98d8)), closes [#1108](#1108)
* code generation works with il2cpp again ([#1056](#1056)) ([8738562](8738562))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](d7a58d2)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* do not accumulate changes if there are no observers fixes [#963](#963) ([#964](#964)) ([64a0468](64a0468))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](7119dd1))
* don't call hook in host if no change,  fixes [#1142](#1142) ([#1143](#1143)) ([d8ce80f](d8ce80f))
* don't convert null arrays to empty array ([#913](#913)) ([dd758ca](dd758ca))
* Don't disconnect host ([#608](#608)) ([c1707e5](c1707e5))
* Don't give host player authority by default ([#1158](#1158)) ([1fc1ed2](1fc1ed2))
* Don't increment counter in Awake ([#971](#971)) ([45b7118](45b7118))
* Don't set asset id for scene objects ([7e40232](7e40232))
* Don't set framerate in host mode ([4644bc4](4644bc4))
* Don't throw exception getting address ([7df3ce3](7df3ce3))
* don't use obsolete method ([12437ba](12437ba))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](a0425e4))
* Dummy file for SyncListStructProcessor.cs ([#798](#798)) ([75e4f15](75e4f15))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](dbe0643))
* error with missing assemblies ([#1052](#1052)) ([00eb23a](00eb23a)), closes [#1051](#1051)
* Fix error scene error message in host mode ([838d4f0](838d4f0))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](2f19c7c)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* hooks in host mode can call each other ([#1017](#1017)) ([f27fd0b](f27fd0b))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](203a823))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](d00c95b))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](fb26d00)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](9acde20)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](bc7a961))
* list server logs properly when disconnected ([f02d317](f02d317))
* ListServer Ping not found in WebGL ([6c4b34b](6c4b34b))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](377c47c))
* maintain Unity's copyright notice ([#961](#961)) ([7718955](7718955))
* Make assembly definition 2018.4 compatible ([99ecc9e](99ecc9e))
* make build pass ([08df6d0](08df6d0))
* Mark weaver as failed if serializing invalid type ([03c767d](03c767d))
* missed ushort reader/writer ([74faf2a](74faf2a))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](#832)) ([5262592](5262592))
* move listserver classes into package ([2668b17](2668b17))
* move NetworkStreamExtension in a namespace ([12de543](12de543))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](b3127be))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](ed572da))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](fb716df))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](524abfc))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](d712cd0))
* non ready connections should not observe objects ([1352334](1352334))
* null reference exception ([7ce95c5](7ce95c5))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](#618)) ([c9eac57](c9eac57))
* OnSetHostVisibility can now check if it has authority ([888e46c](888e46c))
* pack works if message is boxed ([55c9bb6](55c9bb6))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](701f4f4))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](#727)) ([3cee3ab](3cee3ab))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](#730)) ([015d0d5](015d0d5))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](5449840))
* potential null reference exception with debug logging ([33493a0](33493a0))
* Prevent Compiler Paradox ([#1145](#1145)) ([fd43c67](fd43c67))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](#936)) ([d6389e6](d6389e6))
* Rebuild observers when we switch scenes, fixes [#978](#978) ([#1016](#1016)) ([6dd1350](6dd1350))
* reduce allocations at the transport ([80e4f17](80e4f17))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](d0cc669))
* remove samples from upm package ([#25](#25)) ([a71e21f](a71e21f))
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](ad724fe)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](0e1bc81)), closes [#962](#962)
* replacing the player does not mean giving up authority ([#1254](https://github.com/MirrorNG/MirrorNG/issues/1254)) ([a2c273e](a2c273e))
* Respect Player Prefab Position & Rotation ([#825](#825)) ([8ebda0f](8ebda0f))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](13bb748))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](f56507f))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](#817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](1f07af0))
* Round Robin Spawning by Hierarchy Order ([#790](#790)) ([531e202](531e202)), closes [#724](#724)
* SceneId was not set to 0 for prefab variants ([#976](#976)) ([#977](#977)) ([2ca2c48](2ca2c48))
* set authority when replacing the player ([2195fee](2195fee))
* Set syncvar variables after calling the hook ([#659](#659)) ([2d63ee1](2d63ee1))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](0d1d7b5))
* spawnwithauthority works again in host mode ([5b04836](5b04836))
* Stop calling ClientDisconnect on host ([#597](#597)) ([b67b3e4](b67b3e4))
* suppress warning on standalone build [#1053](#1053) ([4ef680a](4ef680a))
* Suspend server transport while changing scenes ([#1169](#1169)) ([e8fac8a](e8fac8a))
* Sync full netAnimator for new clients, fix [#980](#980) ([#1110](#1110)) ([db8310f](db8310f))
* syncvars in commands work again ([#1131](#1131)) ([c24a73f](c24a73f))
* TargetRpc now works accross assemblies ([#1130](#1130)) ([5ecd646](5ecd646)), closes [#1128](#1128)
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](488446a))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](3831cbd))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](22931fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](535b4d4))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](98d3fb0))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](2761ff2))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](abf06df))
* TelepathyTransport.ToString UWP exception ([8a190bf](8a190bf))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](cc6e4f6))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](ed7e509))
* webgl build fix [#1136](#1136) ([#1137](#1137)) ([c85d0df](c85d0df))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](db99dd7))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](#769)) ([99c8f5c](99c8f5c))
* **tests:** Added missing SyncListByteValid test file ([#634](#634)) ([b0af876](b0af876))
* **weaver:** [#696](#696) detect .mystruct = new MyStruct() changes with syncvars ([#702](#702)) ([053949b](053949b))
* **weaver:** fix [#706](#706) find system dlls ([#729](#729)) ([53be9b6](53be9b6))
* **weaver:** fix [#796](#796), reload assemblies after initial import ([#1106](#1106)) ([d91b387](d91b387))
* **websocket:** [#829](#829) fix InvalidOperationException with wss:// ([#830](#830)) ([2d682b5](2d682b5))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](#879)) ([3c60b08](3c60b08))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](#848)) ([8967a20](8967a20))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](67d715f))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](a2cc14b))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](#707)) ([699a261](699a261))
* workaround for [#791](#791) ([5c850aa](5c850aa))

### Features

* [#869](#869) support structs in other assemblies ([#1022](#1022)) ([62d1887](62d1887))
* Add roomPlayer parameter to OnRoomServerCreateGamePlayer ([#1317](https://github.com/MirrorNG/MirrorNG/issues/1317)) ([abf5cdc](abf5cdc))
* Add SyncHashSet and SyncSortedSet ([#685](#685)) ([695979e](695979e))
* Add Timeout to NetworkAuthenticator ([#1091](#1091)) ([e8cc9ba](e8cc9ba))
* Add UPM configuration ([#11](#11)) ([9280af1](9280af1))
* Add version to package file ([#1361](https://github.com/MirrorNG/MirrorNG/issues/1361)) ([e97ab93](e97ab93))
* Add weaver support for Vector2Int and Vector3Int ([#646](#646)) ([e2a6ce9](e2a6ce9))
* allow users to detect mirror version 3 ([ee9c737](ee9c737))
* An authenticator that times out other authenticators ([#1211](https://github.com/MirrorNG/MirrorNG/issues/1211)) ([09f6892](09f6892))
* Authentication Framework ([#1057](#1057)) ([56bcb02](56bcb02))
* Chat example ([#1305](https://github.com/MirrorNG/MirrorNG/issues/1305)) ([9926472](9926472))
* component based SyncToOwner, fixes [#39](#39) ([#1023](#1023)) ([c6d86b3](c6d86b3))
* custom reader/writer via extension methods ([#1047](#1047)) ([b45afad](b45afad))
* Custom readers and writers ([92b3e98](92b3e98))
* fallback transport now supports uri ([#1296](https://github.com/MirrorNG/MirrorNG/issues/1296)) ([e4a701e](e4a701e))
* generate serializers for IMessageBase structs ([#1353](https://github.com/MirrorNG/MirrorNG/issues/1353)) ([3c0bc28](3c0bc28))
* Implement IReadOnlyList<T> in SyncLists ([#903](#903)) ([3eaaa77](3eaaa77))
* Include version in release ([#1336](https://github.com/MirrorNG/MirrorNG/issues/1336)) ([e4f89cf](e4f89cf))
* LLAPI transport can receive port from uri ([#1294](https://github.com/MirrorNG/MirrorNG/issues/1294)) ([7865a84](7865a84))
* Mirror now supports message inheritance ([#1286](https://github.com/MirrorNG/MirrorNG/issues/1286)) ([f9d34d5](f9d34d5))
* Multiplex based on url ([#1295](https://github.com/MirrorNG/MirrorNG/issues/1295)) ([c206f9a](c206f9a))
* network writer pool to avoid expensive allocations ([3659acb](3659acb))
* network writer pool to avoid expensive allocations ([#928](#928)) ([f5e9318](f5e9318))
* NetworkConnection is optional for handlers ([#1202](https://github.com/MirrorNG/MirrorNG/issues/1202)) ([bf9eb61](bf9eb61))
* new way to connect using uri ([#1279](https://github.com/MirrorNG/MirrorNG/issues/1279)) ([7c3622c](7c3622c))
* Pass all information to spawn handler ([#1215](https://github.com/MirrorNG/MirrorNG/issues/1215)) ([d741bae](d741bae))
* profiler info is available in production builds ([5649cc6](5649cc6))
* Remove Command shortcut for host mode ([#1168](#1168)) ([94eda38](94eda38))
* safer and consistent writers names ([#979](#979)) ([b4077c1](b4077c1))
* Script Templates ([#1217](https://github.com/MirrorNG/MirrorNG/issues/1217)) ([8cf6a07](8cf6a07))
* Secure messages that require authentication, fixes [#720](#720) ([#1089](#1089)) ([7ac43cd](7ac43cd))
* Semantic release for UPM ([#24](#24)) ([8cbc005](8cbc005))
* ship as a unitypackage ([11edc14](11edc14))
* Show compile time error if overriding unused OnServerAddPlayer ([#682](#682)) ([a8599c1](a8599c1))
* support sending and receiving ArraySegment<byte> ([#898](#898)) ([e5eecbf](e5eecbf))
* support writing and reading array segments ([#918](#918)) ([f9ff443](f9ff443))
* SyncDictionary can now be used for any IDictionary ([#703](#703)) ([2683572](2683572))
* SyncList now supports any IList implementation ([#704](#704)) ([040bcb4](040bcb4))
* SyncList.FindIndex added ([#823](#823)) ([b5ff43a](b5ff43a))
* SyncSet custom Equality Comparer support ([#1147](#1147)) ([0f95185](0f95185))
* SyncToOwner now works with authority ([#1204](https://github.com/MirrorNG/MirrorNG/issues/1204)) ([92d0df7](92d0df7))
* telepathy can now receive port from uri ([#1284](https://github.com/MirrorNG/MirrorNG/issues/1284)) ([06946cf](06946cf))
* Transport can send to multiple connections at once ([#1120](#1120)) ([bc7e116](bc7e116))
* update upm package if tests pass ([#21](#21)) ([7447776](7447776))
* user friendly weaver error ([#896](#896)) ([954a3d5](954a3d5))
* Users may provide custom serializers for any type ([#1153](#1153)) ([9cb309e](9cb309e))
* websocket can receive port in url ([#1287](https://github.com/MirrorNG/MirrorNG/issues/1287)) ([c8ad118](c8ad118))
* Websockets now give client address, fix [#1121](#1121) ([#1125](#1125)) ([c9f317d](c9f317d))
* **scene:** Add support for scene loading params ([#644](#644)) ([d48a375](d48a375))
* **syncvar:** Add SyncDictionary ([#602](#602)) ([7d21bde](7d21bde))
* **telepathy:** Split MaxMessageSize to allow setting a different value for client and server ([#749](#749)) ([f0a8b5d](f0a8b5d))
* **websocket:** Re-enable native SSL ([#965](#965)) ([7ed4a9a](7ed4a9a))

### Performance Improvements

* AddPlayerMessage is now a value type ([246a551](246a551))
* allocation free enumerator for syncsets,  fixes [#1171](#1171) ([#1173](#1173)) ([035e630](035e630))
* allocation free syncdict foreach, fix [#1172](#1172) ([#1174](#1174)) ([1ec8910](1ec8910))
* avoid allocation for error messages ([c669ff1](c669ff1))
* Avoid allocation when reading message payload ([#912](#912)) ([11750a9](11750a9))
* avoid allocation with message structs ([#939](#939)) ([7c7c910](7c7c910))
* avoid boxing for getting message id ([#1144](#1144)) ([9513842](9513842))
* avoid boxing if there is no profiler ([a351879](a351879))
* ClientAuthorityMessage is now a value type ([#991](#991)) ([d071438](d071438))
* Custom IEnumerator for SyncLists to avoid allocations on foreach ([#904](#904)) ([4ffd5a2](4ffd5a2))
* don't varint bytes and shorts ([4867415](4867415))
* eliminate boxing with lists ([#901](#901)) ([8f6d4cb](8f6d4cb))
* eliminate small allocation on remote calls ([#907](#907)) ([1c18743](1c18743))
* eliminate string concat during remote method calls ([#908](#908)) ([70a532b](70a532b))
* empty messages are value types now ([145edaa](145edaa))
* messages should be value types ([#987](#987)) ([633fb19](633fb19))
* MultiplexTransport: avoid Linq allocations that would happen on every packet send because Send calls .ServerActive() each time ([7fe8888](7fe8888))
* Networkreader nonalloc ([#910](#910)) ([18f035d](18f035d))
* objdestroy message is now a value type ([#993](#993)) ([a32c5a9](a32c5a9))
* ObjHideMessage is now a value type ([#992](#992)) ([a49d938](a49d938))
* OnDeserializeSafely without GC ([#804](#804)) ([27b7e25](27b7e25))
* Optimize interest management ([f1ceb0c](f1ceb0c))
* Optimize interest management ([#899](#899)) ([ff1a234](ff1a234))
* Pack small 32 bit negatives efficiently ([480af1a](480af1a))
* Pack small 64 bit negatives efficiently ([5f1ef4a](5f1ef4a))
* Recycle argument writer to avoid allocations ([#945](#945)) ([9743216](9743216))
* Reduce enum bandwidth ([#794](#794)) ([97e9ac2](97e9ac2))
* remove allocations during syncvar sync ([#946](#946)) ([d2381ce](d2381ce))
* remove BinaryWriter,  it allocates like crazy ([#929](#929)) ([7b3e82a](7b3e82a))
* remove network transform allocation ([9e3ecc1](9e3ecc1))
* remove syncvar boxing ([#927](#927)) ([b2ba589](b2ba589))
* return the contents of the writer as an array segment ([#916](#916)) ([ced3690](ced3690))
* reuse the network writer used for rpc parameters ([5dafc4d](5dafc4d))
* rpc messages are now value types ([#997](#997)) ([b5b2f3e](b5b2f3e))
* SceneMessage is now a value type ([#989](#989)) ([407b36a](407b36a))
* spawn with client authority only takes 1 message ([#1206](https://github.com/MirrorNG/MirrorNG/issues/1206)) ([3b9414f](3b9414f))
* SpawnPrefabMessage is now a value type ([a44efd1](a44efd1))
* SpawnSceneObjectMessage is now a value type ([40c7d97](40c7d97))
* Transports now give ArraySegment<byte> instead of byte[] (based on [#569](#569) and [#846](#846)) ([77bee45](77bee45))
* update vars is now a value type ([#990](#990)) ([f99e71e](f99e71e))
* Use 0 for null byte arrays ([#925](#925)) ([21ca49d](21ca49d))
* use 0 for null strings ([#926](#926)) ([7181cd9](7181cd9))
* use bitshift operations instead of division in varint ([fff765c](fff765c))
* Use RemoveAt to remove elements from lists ([22b45f7](22b45f7))
* use value types for empty messages ([#988](#988)) ([81d915e](81d915e))
* Use WritePackedUInt32 in SyncList ([#688](#688)) ([2db7576](2db7576))

* Merge pull request #650 from vis2k/networkclient_static_2 ([fac0542](fac0542)), closes [#650](#650)

### BREAKING CHANGES

* Remove obsolete OnServerAddPlayer

Any person that overrides this method has a broken game.  These methods are never called anywhere.

The user gets a warning because they are overriding an obsolete method,  which might get ignored if they have lots of other warnings.   They would run their game and their game would not work at all.  No errors.

By removing these methods, users that override these methods will get a compile time error instead.  So they cannot ignore this error and they will fix it.

* Method is no longer available in NetworkLobbyManager
* Make NetworkClient Great Again!
github-actions bot referenced this pull request in MirageNet/Mirage Jan 12, 2020
…to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range

This reverts commit b4c9c6f.
github-actions bot referenced this pull request in MirageNet/Mirage Jan 12, 2020
# 1.0.0 (2020-01-04)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](46eddc0))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](#1179))" ([4cc4279](4cc4279))
* [#573](#573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](c1af84e))
* [#573](#573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](e521a20))
* [#573](#573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](a2d6317))
* [#609](#609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](#623)) ([5c00577](5c00577))
* [#640](#640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](bdf12c8))
* [#651](#651) GetSceneAt assumes default scene ([#654](#654)) ([65eaba1](65eaba1))
* [#652](#652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](ee2ace8))
* [#679](#679) package for unity ([4a6a4df](4a6a4df))
* [#679](#679) unity package ([9895647](9895647))
* [#692](#692) by always adding connectionToClient when rebuilding observers ([ab44ac8](ab44ac8))
* [#718](#718) remove Tests folder from unitypackage ([#827](#827)) ([7e487af](7e487af))
* [#791](#791) corrected assembly paths passed to weaver ([#803](#803)) ([3ba546e](3ba546e))
* [#791](#791) stack overflow in the weaver ([#792](#792)) ([7b57830](7b57830))
* [#840](#840) by allowing Mirror to respect the forceHidden flag ([#893](#893)) ([3ec3d02](3ec3d02))
* added new read/write symbol params ([#806](#806)) ([3a50ca6](3a50ca6))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](#773)) ([72e4e55](72e4e55))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](8899d20))
* ArraySegment<byte> work in Messages ([#919](#919)) ([981ba7c](981ba7c))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](7aa7815))
* call Obsoleted OnStartClient ([#681](#681)) ([8dea50e](8dea50e))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](4d373c5))
* check event prefix ([7417b68](7417b68))
* ClientRpc methods now work accross assemblies ([#1129](#1129)) ([13dbcb9](13dbcb9)), closes [#1128](#1128)
* Cmds can be called from child classes in other assemblies ([d8a98d8](d8a98d8)), closes [#1108](#1108)
* code generation works with il2cpp again ([#1056](#1056)) ([8738562](8738562))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](d7a58d2)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* do not accumulate changes if there are no observers fixes [#963](#963) ([#964](#964)) ([64a0468](64a0468))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](7119dd1))
* don't call hook in host if no change,  fixes [#1142](#1142) ([#1143](#1143)) ([d8ce80f](d8ce80f))
* don't call OnStartLocalPlayer twice ([#1263](https://github.com/MirrorNG/MirrorNG/issues/1263)) ([c753089](c753089))
* don't convert null arrays to empty array ([#913](#913)) ([dd758ca](dd758ca))
* Don't disconnect host ([#608](#608)) ([c1707e5](c1707e5))
* Don't give host player authority by default ([#1158](#1158)) ([1fc1ed2](1fc1ed2))
* Don't increment counter in Awake ([#971](#971)) ([45b7118](45b7118))
* Don't set asset id for scene objects ([7e40232](7e40232))
* Don't set framerate in host mode ([4644bc4](4644bc4))
* Don't throw exception getting address ([7df3ce3](7df3ce3))
* don't use obsolete method ([12437ba](12437ba))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](a0425e4))
* Dummy file for SyncListStructProcessor.cs ([#798](#798)) ([75e4f15](75e4f15))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](dbe0643))
* error with missing assemblies ([#1052](#1052)) ([00eb23a](00eb23a)), closes [#1051](#1051)
* Fix error scene error message in host mode ([838d4f0](838d4f0))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](2f19c7c)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* hooks in host mode can call each other ([#1017](#1017)) ([f27fd0b](f27fd0b))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](203a823))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](d00c95b))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](fb26d00)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](9acde20)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](bc7a961))
* list server logs properly when disconnected ([f02d317](f02d317))
* ListServer Ping not found in WebGL ([6c4b34b](6c4b34b))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](377c47c))
* maintain Unity's copyright notice ([#961](#961)) ([7718955](7718955))
* Make assembly definition 2018.4 compatible ([99ecc9e](99ecc9e))
* make build pass ([08df6d0](08df6d0))
* Mark weaver as failed if serializing invalid type ([03c767d](03c767d))
* missed ushort reader/writer ([74faf2a](74faf2a))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](#832)) ([5262592](5262592))
* move listserver classes into package ([2668b17](2668b17))
* move NetworkStreamExtension in a namespace ([12de543](12de543))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](b3127be))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](ed572da))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](fb716df))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](524abfc))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](d712cd0))
* non ready connections should not observe objects ([1352334](1352334))
* null reference exception ([7ce95c5](7ce95c5))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](#618)) ([c9eac57](c9eac57))
* OnSetHostVisibility can now check if it has authority ([888e46c](888e46c))
* pack works if message is boxed ([55c9bb6](55c9bb6))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](701f4f4))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](#727)) ([3cee3ab](3cee3ab))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](#730)) ([015d0d5](015d0d5))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](5449840))
* potential null reference exception with debug logging ([33493a0](33493a0))
* Prevent Compiler Paradox ([#1145](#1145)) ([fd43c67](fd43c67))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](#936)) ([d6389e6](d6389e6))
* Rebuild observers when we switch scenes, fixes [#978](#978) ([#1016](#1016)) ([6dd1350](6dd1350))
* reduce allocations at the transport ([80e4f17](80e4f17))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](d0cc669))
* remove samples from upm package ([#25](#25)) ([a71e21f](a71e21f))
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](ad724fe)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](0e1bc81)), closes [#962](#962)
* replacing the player does not mean giving up authority ([#1254](https://github.com/MirrorNG/MirrorNG/issues/1254)) ([a2c273e](a2c273e))
* Respect Player Prefab Position & Rotation ([#825](#825)) ([8ebda0f](8ebda0f))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](13bb748))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](f56507f))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](#817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](1f07af0))
* Round Robin Spawning by Hierarchy Order ([#790](#790)) ([531e202](531e202)), closes [#724](#724)
* SceneId was not set to 0 for prefab variants ([#976](#976)) ([#977](#977)) ([2ca2c48](2ca2c48))
* set authority when replacing the player ([2195fee](2195fee))
* Set syncvar variables after calling the hook ([#659](#659)) ([2d63ee1](2d63ee1))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](0d1d7b5))
* spawnwithauthority works again in host mode ([5b04836](5b04836))
* Stop calling ClientDisconnect on host ([#597](#597)) ([b67b3e4](b67b3e4))
* suppress warning on standalone build [#1053](#1053) ([4ef680a](4ef680a))
* Suspend server transport while changing scenes ([#1169](#1169)) ([e8fac8a](e8fac8a))
* Sync full netAnimator for new clients, fix [#980](#980) ([#1110](#1110)) ([db8310f](db8310f))
* syncvars in commands work again ([#1131](#1131)) ([c24a73f](c24a73f))
* TargetRpc now works accross assemblies ([#1130](#1130)) ([5ecd646](5ecd646)), closes [#1128](#1128)
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](488446a))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](3831cbd))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](22931fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](535b4d4))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](98d3fb0))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](2761ff2))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](abf06df))
* TelepathyTransport.ToString UWP exception ([8a190bf](8a190bf))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](cc6e4f6))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](ed7e509))
* webgl build fix [#1136](#1136) ([#1137](#1137)) ([c85d0df](c85d0df))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](db99dd7))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](#769)) ([99c8f5c](99c8f5c))
* **tests:** Added missing SyncListByteValid test file ([#634](#634)) ([b0af876](b0af876))
* **weaver:** [#696](#696) detect .mystruct = new MyStruct() changes with syncvars ([#702](#702)) ([053949b](053949b))
* **weaver:** fix [#706](#706) find system dlls ([#729](#729)) ([53be9b6](53be9b6))
* **weaver:** fix [#796](#796), reload assemblies after initial import ([#1106](#1106)) ([d91b387](d91b387))
* **websocket:** [#829](#829) fix InvalidOperationException with wss:// ([#830](#830)) ([2d682b5](2d682b5))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](#879)) ([3c60b08](3c60b08))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](#848)) ([8967a20](8967a20))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](67d715f))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](a2cc14b))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](#707)) ([699a261](699a261))
* workaround for [#791](#791) ([5c850aa](5c850aa))

### Features

* [#869](#869) support structs in other assemblies ([#1022](#1022)) ([62d1887](62d1887))
* Add roomPlayer parameter to OnRoomServerCreateGamePlayer ([#1317](https://github.com/MirrorNG/MirrorNG/issues/1317)) ([abf5cdc](abf5cdc))
* Add SyncHashSet and SyncSortedSet ([#685](#685)) ([695979e](695979e))
* Add Timeout to NetworkAuthenticator ([#1091](#1091)) ([e8cc9ba](e8cc9ba))
* Add UPM configuration ([#11](#11)) ([9280af1](9280af1))
* Add version to package file ([#1361](https://github.com/MirrorNG/MirrorNG/issues/1361)) ([e97ab93](e97ab93))
* Add weaver support for Vector2Int and Vector3Int ([#646](#646)) ([e2a6ce9](e2a6ce9))
* allow users to detect mirror version 3 ([ee9c737](ee9c737))
* An authenticator that times out other authenticators ([#1211](https://github.com/MirrorNG/MirrorNG/issues/1211)) ([09f6892](09f6892))
* Authentication Framework ([#1057](#1057)) ([56bcb02](56bcb02))
* Chat example ([#1305](https://github.com/MirrorNG/MirrorNG/issues/1305)) ([9926472](9926472))
* component based SyncToOwner, fixes [#39](#39) ([#1023](#1023)) ([c6d86b3](c6d86b3))
* custom reader/writer via extension methods ([#1047](#1047)) ([b45afad](b45afad))
* Custom readers and writers ([92b3e98](92b3e98))
* fallback transport now supports uri ([#1296](https://github.com/MirrorNG/MirrorNG/issues/1296)) ([e4a701e](e4a701e))
* generate serializers for IMessageBase structs ([#1353](https://github.com/MirrorNG/MirrorNG/issues/1353)) ([3c0bc28](3c0bc28))
* Implement IReadOnlyList<T> in SyncLists ([#903](#903)) ([3eaaa77](3eaaa77))
* Include version in release ([#1336](https://github.com/MirrorNG/MirrorNG/issues/1336)) ([e4f89cf](e4f89cf))
* LLAPI transport can receive port from uri ([#1294](https://github.com/MirrorNG/MirrorNG/issues/1294)) ([7865a84](7865a84))
* Mirror now supports message inheritance ([#1286](https://github.com/MirrorNG/MirrorNG/issues/1286)) ([f9d34d5](f9d34d5))
* Multiplex based on url ([#1295](https://github.com/MirrorNG/MirrorNG/issues/1295)) ([c206f9a](c206f9a))
* network writer pool to avoid expensive allocations ([3659acb](3659acb))
* network writer pool to avoid expensive allocations ([#928](#928)) ([f5e9318](f5e9318))
* NetworkConnection is optional for handlers ([#1202](https://github.com/MirrorNG/MirrorNG/issues/1202)) ([bf9eb61](bf9eb61))
* new way to connect using uri ([#1279](https://github.com/MirrorNG/MirrorNG/issues/1279)) ([7c3622c](7c3622c))
* Pass all information to spawn handler ([#1215](https://github.com/MirrorNG/MirrorNG/issues/1215)) ([d741bae](d741bae))
* profiler info is available in production builds ([5649cc6](5649cc6))
* Remove Command shortcut for host mode ([#1168](#1168)) ([94eda38](94eda38))
* safer and consistent writers names ([#979](#979)) ([b4077c1](b4077c1))
* Script Templates ([#1217](https://github.com/MirrorNG/MirrorNG/issues/1217)) ([8cf6a07](8cf6a07))
* Secure messages that require authentication, fixes [#720](#720) ([#1089](#1089)) ([7ac43cd](7ac43cd))
* Semantic release for UPM ([#24](#24)) ([8cbc005](8cbc005))
* ship as a unitypackage ([11edc14](11edc14))
* Show compile time error if overriding unused OnServerAddPlayer ([#682](#682)) ([a8599c1](a8599c1))
* support sending and receiving ArraySegment<byte> ([#898](#898)) ([e5eecbf](e5eecbf))
* support writing and reading array segments ([#918](#918)) ([f9ff443](f9ff443))
* SyncDictionary can now be used for any IDictionary ([#703](#703)) ([2683572](2683572))
* SyncList now supports any IList implementation ([#704](#704)) ([040bcb4](040bcb4))
* SyncList.FindIndex added ([#823](#823)) ([b5ff43a](b5ff43a))
* SyncSet custom Equality Comparer support ([#1147](#1147)) ([0f95185](0f95185))
* SyncToOwner now works with authority ([#1204](https://github.com/MirrorNG/MirrorNG/issues/1204)) ([92d0df7](92d0df7))
* telepathy can now receive port from uri ([#1284](https://github.com/MirrorNG/MirrorNG/issues/1284)) ([06946cf](06946cf))
* Transport can send to multiple connections at once ([#1120](#1120)) ([bc7e116](bc7e116))
* update upm package if tests pass ([#21](#21)) ([7447776](7447776))
* user friendly weaver error ([#896](#896)) ([954a3d5](954a3d5))
* Users may provide custom serializers for any type ([#1153](#1153)) ([9cb309e](9cb309e))
* websocket can receive port in url ([#1287](https://github.com/MirrorNG/MirrorNG/issues/1287)) ([c8ad118](c8ad118))
* Websockets now give client address, fix [#1121](#1121) ([#1125](#1125)) ([c9f317d](c9f317d))
* **scene:** Add support for scene loading params ([#644](#644)) ([d48a375](d48a375))
* **syncvar:** Add SyncDictionary ([#602](#602)) ([7d21bde](7d21bde))
* **telepathy:** Split MaxMessageSize to allow setting a different value for client and server ([#749](#749)) ([f0a8b5d](f0a8b5d))
* **websocket:** Re-enable native SSL ([#965](#965)) ([7ed4a9a](7ed4a9a))

### Performance Improvements

* AddPlayerMessage is now a value type ([246a551](246a551))
* allocation free enumerator for syncsets,  fixes [#1171](#1171) ([#1173](#1173)) ([035e630](035e630))
* allocation free syncdict foreach, fix [#1172](#1172) ([#1174](#1174)) ([1ec8910](1ec8910))
* avoid allocation for error messages ([c669ff1](c669ff1))
* Avoid allocation when reading message payload ([#912](#912)) ([11750a9](11750a9))
* avoid allocation with message structs ([#939](#939)) ([7c7c910](7c7c910))
* avoid boxing for getting message id ([#1144](#1144)) ([9513842](9513842))
* avoid boxing if there is no profiler ([a351879](a351879))
* ClientAuthorityMessage is now a value type ([#991](#991)) ([d071438](d071438))
* Custom IEnumerator for SyncLists to avoid allocations on foreach ([#904](#904)) ([4ffd5a2](4ffd5a2))
* don't varint bytes and shorts ([4867415](4867415))
* eliminate boxing with lists ([#901](#901)) ([8f6d4cb](8f6d4cb))
* eliminate small allocation on remote calls ([#907](#907)) ([1c18743](1c18743))
* eliminate string concat during remote method calls ([#908](#908)) ([70a532b](70a532b))
* empty messages are value types now ([145edaa](145edaa))
* messages should be value types ([#987](#987)) ([633fb19](633fb19))
* MultiplexTransport: avoid Linq allocations that would happen on every packet send because Send calls .ServerActive() each time ([7fe8888](7fe8888))
* Networkreader nonalloc ([#910](#910)) ([18f035d](18f035d))
* objdestroy message is now a value type ([#993](#993)) ([a32c5a9](a32c5a9))
* ObjHideMessage is now a value type ([#992](#992)) ([a49d938](a49d938))
* OnDeserializeSafely without GC ([#804](#804)) ([27b7e25](27b7e25))
* Optimize interest management ([f1ceb0c](f1ceb0c))
* Optimize interest management ([#899](#899)) ([ff1a234](ff1a234))
* Pack small 32 bit negatives efficiently ([480af1a](480af1a))
* Pack small 64 bit negatives efficiently ([5f1ef4a](5f1ef4a))
* Recycle argument writer to avoid allocations ([#945](#945)) ([9743216](9743216))
* Reduce enum bandwidth ([#794](#794)) ([97e9ac2](97e9ac2))
* remove allocations during syncvar sync ([#946](#946)) ([d2381ce](d2381ce))
* remove BinaryWriter,  it allocates like crazy ([#929](#929)) ([7b3e82a](7b3e82a))
* remove network transform allocation ([9e3ecc1](9e3ecc1))
* remove syncvar boxing ([#927](#927)) ([b2ba589](b2ba589))
* return the contents of the writer as an array segment ([#916](#916)) ([ced3690](ced3690))
* reuse the network writer used for rpc parameters ([5dafc4d](5dafc4d))
* rpc messages are now value types ([#997](#997)) ([b5b2f3e](b5b2f3e))
* SceneMessage is now a value type ([#989](#989)) ([407b36a](407b36a))
* spawn with client authority only takes 1 message ([#1206](https://github.com/MirrorNG/MirrorNG/issues/1206)) ([3b9414f](3b9414f))
* SpawnPrefabMessage is now a value type ([a44efd1](a44efd1))
* SpawnSceneObjectMessage is now a value type ([40c7d97](40c7d97))
* Transports now give ArraySegment<byte> instead of byte[] (based on [#569](#569) and [#846](#846)) ([77bee45](77bee45))
* update vars is now a value type ([#990](#990)) ([f99e71e](f99e71e))
* Use 0 for null byte arrays ([#925](#925)) ([21ca49d](21ca49d))
* use 0 for null strings ([#926](#926)) ([7181cd9](7181cd9))
* use bitshift operations instead of division in varint ([fff765c](fff765c))
* Use RemoveAt to remove elements from lists ([22b45f7](22b45f7))
* use value types for empty messages ([#988](#988)) ([81d915e](81d915e))
* Use WritePackedUInt32 in SyncList ([#688](#688)) ([2db7576](2db7576))

* Merge pull request #650 from vis2k/networkclient_static_2 ([fac0542](fac0542)), closes [#650](#650)

### BREAKING CHANGES

* Remove obsolete OnServerAddPlayer

Any person that overrides this method has a broken game.  These methods are never called anywhere.

The user gets a warning because they are overriding an obsolete method,  which might get ignored if they have lots of other warnings.   They would run their game and their game would not work at all.  No errors.

By removing these methods, users that override these methods will get a compile time error instead.  So they cannot ignore this error and they will fix it.

* Method is no longer available in NetworkLobbyManager
* Make NetworkClient Great Again!
github-actions bot referenced this pull request in MirageNet/Mirage Jan 12, 2020
# 1.0.0 (2020-01-04)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](46eddc0))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](#1179))" ([4cc4279](4cc4279))
* [#573](#573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](c1af84e))
* [#573](#573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](e521a20))
* [#573](#573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](a2d6317))
* [#609](#609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](#623)) ([5c00577](5c00577))
* [#640](#640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](bdf12c8))
* [#651](#651) GetSceneAt assumes default scene ([#654](#654)) ([65eaba1](65eaba1))
* [#652](#652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](ee2ace8))
* [#679](#679) package for unity ([4a6a4df](4a6a4df))
* [#679](#679) unity package ([9895647](9895647))
* [#692](#692) by always adding connectionToClient when rebuilding observers ([ab44ac8](ab44ac8))
* [#718](#718) remove Tests folder from unitypackage ([#827](#827)) ([7e487af](7e487af))
* [#791](#791) corrected assembly paths passed to weaver ([#803](#803)) ([3ba546e](3ba546e))
* [#791](#791) stack overflow in the weaver ([#792](#792)) ([7b57830](7b57830))
* [#840](#840) by allowing Mirror to respect the forceHidden flag ([#893](#893)) ([3ec3d02](3ec3d02))
* added new read/write symbol params ([#806](#806)) ([3a50ca6](3a50ca6))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](#773)) ([72e4e55](72e4e55))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](8899d20))
* ArraySegment<byte> work in Messages ([#919](#919)) ([981ba7c](981ba7c))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](7aa7815))
* call Obsoleted OnStartClient ([#681](#681)) ([8dea50e](8dea50e))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](4d373c5))
* check event prefix ([7417b68](7417b68))
* ClientRpc methods now work accross assemblies ([#1129](#1129)) ([13dbcb9](13dbcb9)), closes [#1128](#1128)
* Cmds can be called from child classes in other assemblies ([d8a98d8](d8a98d8)), closes [#1108](#1108)
* code generation works with il2cpp again ([#1056](#1056)) ([8738562](8738562))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](d7a58d2)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* do not accumulate changes if there are no observers fixes [#963](#963) ([#964](#964)) ([64a0468](64a0468))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](7119dd1))
* don't call hook in host if no change,  fixes [#1142](#1142) ([#1143](#1143)) ([d8ce80f](d8ce80f))
* don't convert null arrays to empty array ([#913](#913)) ([dd758ca](dd758ca))
* Don't disconnect host ([#608](#608)) ([c1707e5](c1707e5))
* Don't give host player authority by default ([#1158](#1158)) ([1fc1ed2](1fc1ed2))
* Don't increment counter in Awake ([#971](#971)) ([45b7118](45b7118))
* Don't set asset id for scene objects ([7e40232](7e40232))
* Don't set framerate in host mode ([4644bc4](4644bc4))
* Don't throw exception getting address ([7df3ce3](7df3ce3))
* don't use obsolete method ([12437ba](12437ba))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](a0425e4))
* Dummy file for SyncListStructProcessor.cs ([#798](#798)) ([75e4f15](75e4f15))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](dbe0643))
* error with missing assemblies ([#1052](#1052)) ([00eb23a](00eb23a)), closes [#1051](#1051)
* Fix error scene error message in host mode ([838d4f0](838d4f0))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](2f19c7c)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* hooks in host mode can call each other ([#1017](#1017)) ([f27fd0b](f27fd0b))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](203a823))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](d00c95b))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](fb26d00)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](9acde20)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](bc7a961))
* list server logs properly when disconnected ([f02d317](f02d317))
* ListServer Ping not found in WebGL ([6c4b34b](6c4b34b))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](377c47c))
* maintain Unity's copyright notice ([#961](#961)) ([7718955](7718955))
* Make assembly definition 2018.4 compatible ([99ecc9e](99ecc9e))
* make build pass ([08df6d0](08df6d0))
* Mark weaver as failed if serializing invalid type ([03c767d](03c767d))
* missed ushort reader/writer ([74faf2a](74faf2a))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](#832)) ([5262592](5262592))
* move listserver classes into package ([2668b17](2668b17))
* move NetworkStreamExtension in a namespace ([12de543](12de543))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](b3127be))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](ed572da))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](fb716df))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](524abfc))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](d712cd0))
* non ready connections should not observe objects ([1352334](1352334))
* null reference exception ([7ce95c5](7ce95c5))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](#618)) ([c9eac57](c9eac57))
* OnSetHostVisibility can now check if it has authority ([888e46c](888e46c))
* pack works if message is boxed ([55c9bb6](55c9bb6))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](701f4f4))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](#727)) ([3cee3ab](3cee3ab))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](#730)) ([015d0d5](015d0d5))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](5449840))
* potential null reference exception with debug logging ([33493a0](33493a0))
* Prevent Compiler Paradox ([#1145](#1145)) ([fd43c67](fd43c67))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](#936)) ([d6389e6](d6389e6))
* Rebuild observers when we switch scenes, fixes [#978](#978) ([#1016](#1016)) ([6dd1350](6dd1350))
* reduce allocations at the transport ([80e4f17](80e4f17))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](d0cc669))
* remove samples from upm package ([#25](#25)) ([a71e21f](a71e21f))
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](ad724fe)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](0e1bc81)), closes [#962](#962)
* replacing the player does not mean giving up authority ([#1254](https://github.com/MirrorNG/MirrorNG/issues/1254)) ([a2c273e](a2c273e))
* Respect Player Prefab Position & Rotation ([#825](#825)) ([8ebda0f](8ebda0f))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](13bb748))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](f56507f))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](#817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](1f07af0))
* Round Robin Spawning by Hierarchy Order ([#790](#790)) ([531e202](531e202)), closes [#724](#724)
* SceneId was not set to 0 for prefab variants ([#976](#976)) ([#977](#977)) ([2ca2c48](2ca2c48))
* set authority when replacing the player ([2195fee](2195fee))
* Set syncvar variables after calling the hook ([#659](#659)) ([2d63ee1](2d63ee1))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](0d1d7b5))
* spawnwithauthority works again in host mode ([5b04836](5b04836))
* Stop calling ClientDisconnect on host ([#597](#597)) ([b67b3e4](b67b3e4))
* suppress warning on standalone build [#1053](#1053) ([4ef680a](4ef680a))
* Suspend server transport while changing scenes ([#1169](#1169)) ([e8fac8a](e8fac8a))
* Sync full netAnimator for new clients, fix [#980](#980) ([#1110](#1110)) ([db8310f](db8310f))
* syncvars in commands work again ([#1131](#1131)) ([c24a73f](c24a73f))
* TargetRpc now works accross assemblies ([#1130](#1130)) ([5ecd646](5ecd646)), closes [#1128](#1128)
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](488446a))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](3831cbd))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](22931fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](535b4d4))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](98d3fb0))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](2761ff2))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](abf06df))
* TelepathyTransport.ToString UWP exception ([8a190bf](8a190bf))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](cc6e4f6))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](ed7e509))
* webgl build fix [#1136](#1136) ([#1137](#1137)) ([c85d0df](c85d0df))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](db99dd7))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](#769)) ([99c8f5c](99c8f5c))
* **tests:** Added missing SyncListByteValid test file ([#634](#634)) ([b0af876](b0af876))
* **weaver:** [#696](#696) detect .mystruct = new MyStruct() changes with syncvars ([#702](#702)) ([053949b](053949b))
* **weaver:** fix [#706](#706) find system dlls ([#729](#729)) ([53be9b6](53be9b6))
* **weaver:** fix [#796](#796), reload assemblies after initial import ([#1106](#1106)) ([d91b387](d91b387))
* **websocket:** [#829](#829) fix InvalidOperationException with wss:// ([#830](#830)) ([2d682b5](2d682b5))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](#879)) ([3c60b08](3c60b08))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](#848)) ([8967a20](8967a20))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](67d715f))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](a2cc14b))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](#707)) ([699a261](699a261))
* workaround for [#791](#791) ([5c850aa](5c850aa))

### Features

* [#869](#869) support structs in other assemblies ([#1022](#1022)) ([62d1887](62d1887))
* Add roomPlayer parameter to OnRoomServerCreateGamePlayer ([#1317](https://github.com/MirrorNG/MirrorNG/issues/1317)) ([abf5cdc](abf5cdc))
* Add SyncHashSet and SyncSortedSet ([#685](#685)) ([695979e](695979e))
* Add Timeout to NetworkAuthenticator ([#1091](#1091)) ([e8cc9ba](e8cc9ba))
* Add UPM configuration ([#11](#11)) ([9280af1](9280af1))
* Add version to package file ([#1361](https://github.com/MirrorNG/MirrorNG/issues/1361)) ([e97ab93](e97ab93))
* Add weaver support for Vector2Int and Vector3Int ([#646](#646)) ([e2a6ce9](e2a6ce9))
* allow users to detect mirror version 3 ([ee9c737](ee9c737))
* An authenticator that times out other authenticators ([#1211](https://github.com/MirrorNG/MirrorNG/issues/1211)) ([09f6892](09f6892))
* Authentication Framework ([#1057](#1057)) ([56bcb02](56bcb02))
* Chat example ([#1305](https://github.com/MirrorNG/MirrorNG/issues/1305)) ([9926472](9926472))
* component based SyncToOwner, fixes [#39](#39) ([#1023](#1023)) ([c6d86b3](c6d86b3))
* custom reader/writer via extension methods ([#1047](#1047)) ([b45afad](b45afad))
* Custom readers and writers ([92b3e98](92b3e98))
* fallback transport now supports uri ([#1296](https://github.com/MirrorNG/MirrorNG/issues/1296)) ([e4a701e](e4a701e))
* generate serializers for IMessageBase structs ([#1353](https://github.com/MirrorNG/MirrorNG/issues/1353)) ([3c0bc28](3c0bc28))
* Implement IReadOnlyList<T> in SyncLists ([#903](#903)) ([3eaaa77](3eaaa77))
* Include version in release ([#1336](https://github.com/MirrorNG/MirrorNG/issues/1336)) ([e4f89cf](e4f89cf))
* LLAPI transport can receive port from uri ([#1294](https://github.com/MirrorNG/MirrorNG/issues/1294)) ([7865a84](7865a84))
* Mirror now supports message inheritance ([#1286](https://github.com/MirrorNG/MirrorNG/issues/1286)) ([f9d34d5](f9d34d5))
* Multiplex based on url ([#1295](https://github.com/MirrorNG/MirrorNG/issues/1295)) ([c206f9a](c206f9a))
* network writer pool to avoid expensive allocations ([3659acb](3659acb))
* network writer pool to avoid expensive allocations ([#928](#928)) ([f5e9318](f5e9318))
* NetworkConnection is optional for handlers ([#1202](https://github.com/MirrorNG/MirrorNG/issues/1202)) ([bf9eb61](bf9eb61))
* new way to connect using uri ([#1279](https://github.com/MirrorNG/MirrorNG/issues/1279)) ([7c3622c](7c3622c))
* Pass all information to spawn handler ([#1215](https://github.com/MirrorNG/MirrorNG/issues/1215)) ([d741bae](d741bae))
* profiler info is available in production builds ([5649cc6](5649cc6))
* Remove Command shortcut for host mode ([#1168](#1168)) ([94eda38](94eda38))
* safer and consistent writers names ([#979](#979)) ([b4077c1](b4077c1))
* Script Templates ([#1217](https://github.com/MirrorNG/MirrorNG/issues/1217)) ([8cf6a07](8cf6a07))
* Secure messages that require authentication, fixes [#720](#720) ([#1089](#1089)) ([7ac43cd](7ac43cd))
* Semantic release for UPM ([#24](#24)) ([8cbc005](8cbc005))
* ship as a unitypackage ([11edc14](11edc14))
* Show compile time error if overriding unused OnServerAddPlayer ([#682](#682)) ([a8599c1](a8599c1))
* support sending and receiving ArraySegment<byte> ([#898](#898)) ([e5eecbf](e5eecbf))
* support writing and reading array segments ([#918](#918)) ([f9ff443](f9ff443))
* SyncDictionary can now be used for any IDictionary ([#703](#703)) ([2683572](2683572))
* SyncList now supports any IList implementation ([#704](#704)) ([040bcb4](040bcb4))
* SyncList.FindIndex added ([#823](#823)) ([b5ff43a](b5ff43a))
* SyncSet custom Equality Comparer support ([#1147](#1147)) ([0f95185](0f95185))
* SyncToOwner now works with authority ([#1204](https://github.com/MirrorNG/MirrorNG/issues/1204)) ([92d0df7](92d0df7))
* telepathy can now receive port from uri ([#1284](https://github.com/MirrorNG/MirrorNG/issues/1284)) ([06946cf](06946cf))
* Transport can send to multiple connections at once ([#1120](#1120)) ([bc7e116](bc7e116))
* update upm package if tests pass ([#21](#21)) ([7447776](7447776))
* user friendly weaver error ([#896](#896)) ([954a3d5](954a3d5))
* Users may provide custom serializers for any type ([#1153](#1153)) ([9cb309e](9cb309e))
* websocket can receive port in url ([#1287](https://github.com/MirrorNG/MirrorNG/issues/1287)) ([c8ad118](c8ad118))
* Websockets now give client address, fix [#1121](#1121) ([#1125](#1125)) ([c9f317d](c9f317d))
* **scene:** Add support for scene loading params ([#644](#644)) ([d48a375](d48a375))
* **syncvar:** Add SyncDictionary ([#602](#602)) ([7d21bde](7d21bde))
* **telepathy:** Split MaxMessageSize to allow setting a different value for client and server ([#749](#749)) ([f0a8b5d](f0a8b5d))
* **websocket:** Re-enable native SSL ([#965](#965)) ([7ed4a9a](7ed4a9a))

### Performance Improvements

* AddPlayerMessage is now a value type ([246a551](246a551))
* allocation free enumerator for syncsets,  fixes [#1171](#1171) ([#1173](#1173)) ([035e630](035e630))
* allocation free syncdict foreach, fix [#1172](#1172) ([#1174](#1174)) ([1ec8910](1ec8910))
* avoid allocation for error messages ([c669ff1](c669ff1))
* Avoid allocation when reading message payload ([#912](#912)) ([11750a9](11750a9))
* avoid allocation with message structs ([#939](#939)) ([7c7c910](7c7c910))
* avoid boxing for getting message id ([#1144](#1144)) ([9513842](9513842))
* avoid boxing if there is no profiler ([a351879](a351879))
* ClientAuthorityMessage is now a value type ([#991](#991)) ([d071438](d071438))
* Custom IEnumerator for SyncLists to avoid allocations on foreach ([#904](#904)) ([4ffd5a2](4ffd5a2))
* don't varint bytes and shorts ([4867415](4867415))
* eliminate boxing with lists ([#901](#901)) ([8f6d4cb](8f6d4cb))
* eliminate small allocation on remote calls ([#907](#907)) ([1c18743](1c18743))
* eliminate string concat during remote method calls ([#908](#908)) ([70a532b](70a532b))
* empty messages are value types now ([145edaa](145edaa))
* messages should be value types ([#987](#987)) ([633fb19](633fb19))
* MultiplexTransport: avoid Linq allocations that would happen on every packet send because Send calls .ServerActive() each time ([7fe8888](7fe8888))
* Networkreader nonalloc ([#910](#910)) ([18f035d](18f035d))
* objdestroy message is now a value type ([#993](#993)) ([a32c5a9](a32c5a9))
* ObjHideMessage is now a value type ([#992](#992)) ([a49d938](a49d938))
* OnDeserializeSafely without GC ([#804](#804)) ([27b7e25](27b7e25))
* Optimize interest management ([f1ceb0c](f1ceb0c))
* Optimize interest management ([#899](#899)) ([ff1a234](ff1a234))
* Pack small 32 bit negatives efficiently ([480af1a](480af1a))
* Pack small 64 bit negatives efficiently ([5f1ef4a](5f1ef4a))
* Recycle argument writer to avoid allocations ([#945](#945)) ([9743216](9743216))
* Reduce enum bandwidth ([#794](#794)) ([97e9ac2](97e9ac2))
* remove allocations during syncvar sync ([#946](#946)) ([d2381ce](d2381ce))
* remove BinaryWriter,  it allocates like crazy ([#929](#929)) ([7b3e82a](7b3e82a))
* remove network transform allocation ([9e3ecc1](9e3ecc1))
* remove syncvar boxing ([#927](#927)) ([b2ba589](b2ba589))
* return the contents of the writer as an array segment ([#916](#916)) ([ced3690](ced3690))
* reuse the network writer used for rpc parameters ([5dafc4d](5dafc4d))
* rpc messages are now value types ([#997](#997)) ([b5b2f3e](b5b2f3e))
* SceneMessage is now a value type ([#989](#989)) ([407b36a](407b36a))
* spawn with client authority only takes 1 message ([#1206](https://github.com/MirrorNG/MirrorNG/issues/1206)) ([3b9414f](3b9414f))
* SpawnPrefabMessage is now a value type ([a44efd1](a44efd1))
* SpawnSceneObjectMessage is now a value type ([40c7d97](40c7d97))
* Transports now give ArraySegment<byte> instead of byte[] (based on [#569](#569) and [#846](#846)) ([77bee45](77bee45))
* update vars is now a value type ([#990](#990)) ([f99e71e](f99e71e))
* Use 0 for null byte arrays ([#925](#925)) ([21ca49d](21ca49d))
* use 0 for null strings ([#926](#926)) ([7181cd9](7181cd9))
* use bitshift operations instead of division in varint ([fff765c](fff765c))
* Use RemoveAt to remove elements from lists ([22b45f7](22b45f7))
* use value types for empty messages ([#988](#988)) ([81d915e](81d915e))
* Use WritePackedUInt32 in SyncList ([#688](#688)) ([2db7576](2db7576))

* Merge pull request #650 from vis2k/networkclient_static_2 ([fac0542](fac0542)), closes [#650](#650)

### BREAKING CHANGES

* Remove obsolete OnServerAddPlayer

Any person that overrides this method has a broken game.  These methods are never called anywhere.

The user gets a warning because they are overriding an obsolete method,  which might get ignored if they have lots of other warnings.   They would run their game and their game would not work at all.  No errors.

By removing these methods, users that override these methods will get a compile time error instead.  So they cannot ignore this error and they will fix it.

* Method is no longer available in NetworkLobbyManager
* Make NetworkClient Great Again!
github-actions bot referenced this pull request in MirageNet/Mirage Aug 23, 2020
# 1.0.0 (2020-08-23)

### breaking

* AsyncFallbackTransport -> FallbackTransport ([f8f643a](https://github.com/MirrorNG/MirrorNG/commit/f8f643a6245777279de31dc8997a7ea84328533e))
* AsyncMultiplexTransport -> MultiplexTransport ([832b7f9](https://github.com/MirrorNG/MirrorNG/commit/832b7f9528595e45769790c4be4fd94e873c96f4))
* remove redundant scene ready value ([#325](https://github.com/MirrorNG/MirrorNG/issues/325)) ([6cc8f62](https://github.com/MirrorNG/MirrorNG/commit/6cc8f6212413ccdf2a95da7ea2ef93b86fc837bf))
* Remove TargetRPC & use ClientRPC option instead ([#293](https://github.com/MirrorNG/MirrorNG/issues/293)) ([4ace144](https://github.com/MirrorNG/MirrorNG/commit/4ace14477d024d0ef763c0860cdb2abfde8022fd))
* Removed websocket transport ([f26159b](https://github.com/MirrorNG/MirrorNG/commit/f26159b7b4d31d643a1dc2a28b1797bd2ad28f68))
* Rename [Command] to [ServerRpc] ([#271](https://github.com/MirrorNG/MirrorNG/issues/271)) ([fff7459](https://github.com/MirrorNG/MirrorNG/commit/fff7459801fc637c641757c516f85b4d685e0ad1))
* rename AsyncWsTransport -> WsTransport ([9c394bc](https://github.com/MirrorNG/MirrorNG/commit/9c394bc96192a50ad273371b66c9289d75402dc6))
* Transports can now provide their Uri ([#1454](https://github.com/MirrorNG/MirrorNG/issues/1454)) ([b916064](https://github.com/MirrorNG/MirrorNG/commit/b916064856cf78f1c257f0de0ffe8c9c1ab28ce7)), closes [#38](https://github.com/MirrorNG/MirrorNG/issues/38)

### Bug Fixes

* (again) Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([46eddc0](https://github.com/MirrorNG/MirrorNG/commit/46eddc01ec104f98701e5552a66728ae48d0720f))
* [#1241](https://github.com/MirrorNG/MirrorNG/issues/1241) - Telepathy updated to latest version. All tests are passing again. Thread.Interrupt was replaced by Abort+Join. ([228b32e](https://github.com/MirrorNG/MirrorNG/commit/228b32e1da8e407e1d63044beca0fd179f0835b4))
* [#1278](https://github.com/MirrorNG/MirrorNG/issues/1278) - only call initial state SyncVar hooks on clients if the SyncVar value is different from the default one. ([#1414](https://github.com/MirrorNG/MirrorNG/issues/1414)) ([a3ffd12](https://github.com/MirrorNG/MirrorNG/commit/a3ffd1264c2ed2780e6e86ce83077fa756c01154))
* [#1359](https://github.com/MirrorNG/MirrorNG/issues/1359). Revert "Destroy objects owned by this connection when disconnecting ([#1179](https://github.com/MirrorNG/MirrorNG/issues/1179))" ([4cc4279](https://github.com/MirrorNG/MirrorNG/commit/4cc4279d7ddeaf61fe300b3dc420143e63942f1f))
* [#1380](https://github.com/MirrorNG/MirrorNG/issues/1380) - NetworkConnection.clientOwnedObjects changed from uint HashSet to NetworkIdentity HashSet for ease of use and to fix a bug where DestroyOwnedObjects wouldn't find a netId anymore in some cases. ([a71ecdb](https://github.com/MirrorNG/MirrorNG/commit/a71ecdba4a020f9f4648b8275ec9d17b19aff55f))
* [#1515](https://github.com/MirrorNG/MirrorNG/issues/1515) - StopHost now invokes OnServerDisconnected for the host client too ([#1601](https://github.com/MirrorNG/MirrorNG/issues/1601)) ([678ac68](https://github.com/MirrorNG/MirrorNG/commit/678ac68b58798816658d29be649bdaf18ad70794))
* [#1593](https://github.com/MirrorNG/MirrorNG/issues/1593) - NetworkRoomManager.ServerChangeScene doesn't destroy the world player before replacing the connection. otherwise ReplacePlayerForConnection removes authority form a destroyed object, causing all kidns of errors. The call wasn't actually needed. ([#1594](https://github.com/MirrorNG/MirrorNG/issues/1594)) ([347cb53](https://github.com/MirrorNG/MirrorNG/commit/347cb5374d0cba72762e893645f076d3161aa0c5))
* [#1599](https://github.com/MirrorNG/MirrorNG/issues/1599) - NetworkManager HUD calls StopHost/Server/Client depending on state. It does not call StopHost in all cases. ([#1600](https://github.com/MirrorNG/MirrorNG/issues/1600)) ([8c6ae0f](https://github.com/MirrorNG/MirrorNG/commit/8c6ae0f8b4fdafbc3abd194c081c75ee75fcfe51))
* [#1659](https://github.com/MirrorNG/MirrorNG/issues/1659) Telepathy LateUpdate processes a limited amount of messages per tick to avoid deadlocks ([#1830](https://github.com/MirrorNG/MirrorNG/issues/1830)) ([d3dccd7](https://github.com/MirrorNG/MirrorNG/commit/d3dccd7a25e4b9171ac04e43a05954b56caefd4b))
* [#718](https://github.com/MirrorNG/MirrorNG/issues/718) remove Tests folder from unitypackage ([#827](https://github.com/MirrorNG/MirrorNG/issues/827)) ([7e487af](https://github.com/MirrorNG/MirrorNG/commit/7e487afe512de9dc8a0d699693884cbfc9c7be7e))
* [#840](https://github.com/MirrorNG/MirrorNG/issues/840) by allowing Mirror to respect the forceHidden flag ([#893](https://github.com/MirrorNG/MirrorNG/issues/893)) ([3ec3d02](https://github.com/MirrorNG/MirrorNG/commit/3ec3d023621e121aed302222fdb6e35ed5ca92b2))
* ArraySegment<byte> work in Messages ([#919](https://github.com/MirrorNG/MirrorNG/issues/919)) ([981ba7c](https://github.com/MirrorNG/MirrorNG/commit/981ba7c2b3a64ebd9e1405e5182daa030886d792))
* code generation works with il2cpp again ([#1056](https://github.com/MirrorNG/MirrorNG/issues/1056)) ([8738562](https://github.com/MirrorNG/MirrorNG/commit/87385628f0836109fb009b1f912575c5c8145005))
* do not accumulate changes if there are no observers fixes [#963](https://github.com/MirrorNG/MirrorNG/issues/963) ([#964](https://github.com/MirrorNG/MirrorNG/issues/964)) ([64a0468](https://github.com/MirrorNG/MirrorNG/commit/64a046803ada79f7602f6e6fda21d821909fbc98))
* don't convert null arrays to empty array ([#913](https://github.com/MirrorNG/MirrorNG/issues/913)) ([dd758ca](https://github.com/MirrorNG/MirrorNG/commit/dd758cac0578629e351bf60d25733d788bd0f668))
* Don't increment counter in Awake ([#971](https://github.com/MirrorNG/MirrorNG/issues/971)) ([45b7118](https://github.com/MirrorNG/MirrorNG/commit/45b711804b1159e390910227796f312f74351025))
* don't use obsolete method ([12437ba](https://github.com/MirrorNG/MirrorNG/commit/12437ba9c2ccc72998f2dd895b888d8eaa66e7a6))
* error with missing assemblies ([#1052](https://github.com/MirrorNG/MirrorNG/issues/1052)) ([00eb23a](https://github.com/MirrorNG/MirrorNG/commit/00eb23aa01210860b9c8ab253929563f695714d7)), closes [#1051](https://github.com/MirrorNG/MirrorNG/issues/1051)
* Fix error scene error message in host mode ([838d4f0](https://github.com/MirrorNG/MirrorNG/commit/838d4f019f60e202b3795a01e4297c2d3efe6bca))
* hooks in host mode can call each other ([#1017](https://github.com/MirrorNG/MirrorNG/issues/1017)) ([f27fd0b](https://github.com/MirrorNG/MirrorNG/commit/f27fd0bdc570ec3ceeef433eb4991beb487d2ddb))
* invalid scene id in 2019.1 by ignoring prefabs in NetworkScenePostProcess ([203a823](https://github.com/MirrorNG/MirrorNG/commit/203a823b19b6e31a50cd193a7bd58c33a73960f2))
* ListServer Ping not found in WebGL ([6c4b34b](https://github.com/MirrorNG/MirrorNG/commit/6c4b34ba065429b57ccfed71ac0adc325de19809))
* maintain Unity's copyright notice ([#961](https://github.com/MirrorNG/MirrorNG/issues/961)) ([7718955](https://github.com/MirrorNG/MirrorNG/commit/771895509a358286377ea3d391ca45f8c0a3b48d))
* missed ushort reader/writer ([74faf2a](https://github.com/MirrorNG/MirrorNG/commit/74faf2a95b5a3e551e7ae344d5772e10ee198318))
* Mono.CecilX namespace to work around Unity 2019 Cecil namespace collision ([#832](https://github.com/MirrorNG/MirrorNG/issues/832)) ([5262592](https://github.com/MirrorNG/MirrorNG/commit/52625923b2d408018f61506ef93b15487764d095))
* NetworkManager OnValidate wouldn't properly save the automatically added Transport before because Undo.RecordObject is needed for that now. ([524abfc](https://github.com/MirrorNG/MirrorNG/commit/524abfc5e8c881d2088a7f9f8bbf07c0371785cf))
* pack works if message is boxed ([55c9bb6](https://github.com/MirrorNG/MirrorNG/commit/55c9bb625aa06ab83c2350b483eaca09b463db0a))
* properly stop client and server in OnApplicationQuit so that clients still get a chance to send then 'quit' packet instead of just timing out. Also fixes a bug where OnStopServer/OnStopClient were not called when stopping the Editor. ([#936](https://github.com/MirrorNG/MirrorNG/issues/936)) ([d6389e6](https://github.com/MirrorNG/MirrorNG/commit/d6389e68be3a951f3ddb9aa51c57a0e3c788e5f6))
* Rebuild observers when we switch scenes, fixes [#978](https://github.com/MirrorNG/MirrorNG/issues/978) ([#1016](https://github.com/MirrorNG/MirrorNG/issues/1016)) ([6dd1350](https://github.com/MirrorNG/MirrorNG/commit/6dd135088bd0b3858dabf5d195d14d85879ead6d))
* Respect Player Prefab Position & Rotation ([#825](https://github.com/MirrorNG/MirrorNG/issues/825)) ([8ebda0f](https://github.com/MirrorNG/MirrorNG/commit/8ebda0fa21b430ce1394eba8e7eeafa56d9290f3))
* Revert "NetworkIdentity.observers dictionary is always created, but always empty on clients. Gets rid of all null checks." to fix server-only bug not allowing movement on client, e.g. in uMMORPG ([f56507f](https://github.com/MirrorNG/MirrorNG/commit/f56507f2fc9f36ca9f8e1df9a7a437a97b416d54))
* Revert "refactor:  consolidate prefab and spawn handlers ([#817](https://github.com/MirrorNG/MirrorNG/issues/817))" to fix a bug where if editor=host, build=client, we receive scene object not found when walking out of and back into an observer's range ([1f07af0](https://github.com/MirrorNG/MirrorNG/commit/1f07af0cae7b41cd52df621f1b5cfcefc77efdfa))
* SceneId was not set to 0 for prefab variants ([#976](https://github.com/MirrorNG/MirrorNG/issues/976)) ([#977](https://github.com/MirrorNG/MirrorNG/issues/977)) ([2ca2c48](https://github.com/MirrorNG/MirrorNG/commit/2ca2c488acc3966ef7dc67cb530c5db9eaa8b0ea))
* suppress warning on standalone build [#1053](https://github.com/MirrorNG/MirrorNG/issues/1053) ([4ef680a](https://github.com/MirrorNG/MirrorNG/commit/4ef680a47483890d6576784ca880f2b3536b6b7f))
* Sync full netAnimator for new clients, fix [#980](https://github.com/MirrorNG/MirrorNG/issues/980) ([#1110](https://github.com/MirrorNG/MirrorNG/issues/1110)) ([db8310f](https://github.com/MirrorNG/MirrorNG/commit/db8310f8385ec45c28356e59d1ba4ef8f4c9ab47))
* Telepathy already supports IPv6, but can no also connect to IPv4-only servers again (e.g. Mirror Booster) ([488446a](https://github.com/MirrorNG/MirrorNG/commit/488446ae040246a631f8921a4cd5bdbb6a6e54d1))
* Telepathy fix a bug where calling Disconnect while connecting to a dead end would freeze Unity because .Join would wait forever. Interrupt fixes it. ([3831cbd](https://github.com/MirrorNG/MirrorNG/commit/3831cbddbea7d98fe8a871133a0ba2bf14f22df0))
* **weaver:** fix [#796](https://github.com/MirrorNG/MirrorNG/issues/796), reload assemblies after initial import ([#1106](https://github.com/MirrorNG/MirrorNG/issues/1106)) ([d91b387](https://github.com/MirrorNG/MirrorNG/commit/d91b387bb29bdba06a62a718533db5c0fe52f642))
* [#573](https://github.com/MirrorNG/MirrorNG/issues/573) (part 1) NetworkScenePostProcess handles NetworkIdentities of all scenes except DontDestroyOnLoad. this way it works for additively loaded scenes too. ([c1af84e](https://github.com/MirrorNG/MirrorNG/commit/c1af84e6bf61ff919607c66affc4a1bd0dc3fb26))
* [#573](https://github.com/MirrorNG/MirrorNG/issues/573) (part 2) NetworkManager detects additive scene loads and respawns objects on server/client again ([e521a20](https://github.com/MirrorNG/MirrorNG/commit/e521a200523b25a874a3cbc743d2a9d98a88b238))
* [#573](https://github.com/MirrorNG/MirrorNG/issues/573) NullReferenceException because destroyed NetworkIdentities were never removed from sceneIds dict ([a2d6317](https://github.com/MirrorNG/MirrorNG/commit/a2d6317642a24571a63bbeade5fe8898f56c1c3e))
* [#609](https://github.com/MirrorNG/MirrorNG/issues/609) by spawning observers in NetworkServer.AddPlayerForConnection after setting the controller. There is no point in trying to spawn with a null controller in SetReady, because by definition no one can observer something that is null. ([#623](https://github.com/MirrorNG/MirrorNG/issues/623)) ([5c00577](https://github.com/MirrorNG/MirrorNG/commit/5c00577746f83eadd948383dd478360e96634ea4))
* [#640](https://github.com/MirrorNG/MirrorNG/issues/640) InternalReplacePlayerForConnection calls SpawnObserversForConnection now too ([bdf12c8](https://github.com/MirrorNG/MirrorNG/commit/bdf12c85d01b20f2a0edc0767454401a6c5a1aad))
* [#651](https://github.com/MirrorNG/MirrorNG/issues/651) GetSceneAt assumes default scene ([#654](https://github.com/MirrorNG/MirrorNG/issues/654)) ([65eaba1](https://github.com/MirrorNG/MirrorNG/commit/65eaba1fe059db159b5fdb1427dc8b783f5720e0))
* [#652](https://github.com/MirrorNG/MirrorNG/issues/652) OnPostProcessScene includes disabled NetworkIdentities in scene ([ee2ace8](https://github.com/MirrorNG/MirrorNG/commit/ee2ace8e428d67309dc219109be5853b1a9b67df))
* [#679](https://github.com/MirrorNG/MirrorNG/issues/679) package for unity ([4a6a4df](https://github.com/MirrorNG/MirrorNG/commit/4a6a4df61bc65c2065cb1150cd05e15528db6b66))
* [#679](https://github.com/MirrorNG/MirrorNG/issues/679) unity package ([9895647](https://github.com/MirrorNG/MirrorNG/commit/98956472969ba8ae1c66d255f1094140aeb275f0))
* [#692](https://github.com/MirrorNG/MirrorNG/issues/692) by always adding connectionToClient when rebuilding observers ([ab44ac8](https://github.com/MirrorNG/MirrorNG/commit/ab44ac8f8bad4749e300ba8c2db4593fcff5474f))
* [#723](https://github.com/MirrorNG/MirrorNG/issues/723) - NetworkTransform teleport works properly now ([fd7dc5e](https://github.com/MirrorNG/MirrorNG/commit/fd7dc5e226a76b27250fb503a98f23eb579387f8))
* [#791](https://github.com/MirrorNG/MirrorNG/issues/791) corrected assembly paths passed to weaver ([#803](https://github.com/MirrorNG/MirrorNG/issues/803)) ([3ba546e](https://github.com/MirrorNG/MirrorNG/commit/3ba546e133dae6dd2762d7c4f719f61e90554473))
* [#791](https://github.com/MirrorNG/MirrorNG/issues/791) stack overflow in the weaver ([#792](https://github.com/MirrorNG/MirrorNG/issues/792)) ([7b57830](https://github.com/MirrorNG/MirrorNG/commit/7b57830e6c8e3b9abf470cf1029eb2e4aba914ee))
* add Changelog metadata fix [#31](https://github.com/MirrorNG/MirrorNG/issues/31) ([c67de22](https://github.com/MirrorNG/MirrorNG/commit/c67de2216aa331de10bba2e09ea3f77e6b1caa3c))
* add client only test for FinishLoadScene ([#262](https://github.com/MirrorNG/MirrorNG/issues/262)) ([50e7fa6](https://github.com/MirrorNG/MirrorNG/commit/50e7fa6e287fee09afbe36a51575f41c4bd50736))
* Add missing channelId to NetworkConnectionToClient.Send calls ([#1509](https://github.com/MirrorNG/MirrorNG/issues/1509)) ([b8bcd9a](https://github.com/MirrorNG/MirrorNG/commit/b8bcd9ad25895eee940a3daaf6fe7ed82eaf76ac))
* add NetworkManager.StartClientUri test ([#2095](https://github.com/MirrorNG/MirrorNG/issues/2095)) ([12827f6](https://github.com/MirrorNG/MirrorNG/commit/12827f65a906232da55ca226129423a5bd806d23))
* add NRE short circuit for scene change ([#335](https://github.com/MirrorNG/MirrorNG/issues/335)) ([7afbe57](https://github.com/MirrorNG/MirrorNG/commit/7afbe57ff3779ba33d225ab604f1477a883badd7))
* add tests for NetworkTransform and NetworkRigidbody ([#273](https://github.com/MirrorNG/MirrorNG/issues/273)) ([e9621dd](https://github.com/MirrorNG/MirrorNG/commit/e9621ddebd50637680fad8fe743c7c99afea3f84))
* Add the transport first so NetworkManager doesn't add Telepathy in OnValidate ([bdec276](https://github.com/MirrorNG/MirrorNG/commit/bdec2762821dc657e8450b576422fcf1f0f69cdf))
* Added ClientOnly check ([fb927f8](https://github.com/MirrorNG/MirrorNG/commit/fb927f814110327867821dac8b0d69ca4251d4f6))
* Added LogFilter.Debug check in a few places ([#1575](https://github.com/MirrorNG/MirrorNG/issues/1575)) ([3156504](https://github.com/MirrorNG/MirrorNG/commit/31565042708ec768fcaafe9986968d095a3a1419))
* added new read/write symbol params ([#806](https://github.com/MirrorNG/MirrorNG/issues/806)) ([3a50ca6](https://github.com/MirrorNG/MirrorNG/commit/3a50ca6352761b47464d0bc7721aa6556d664661))
* Added WriteBytesAndSize tests, and fixed the function to be pedantic. ([#773](https://github.com/MirrorNG/MirrorNG/issues/773)) ([72e4e55](https://github.com/MirrorNG/MirrorNG/commit/72e4e55778edc0acc4ef3546f69c984f0f392867))
* Adding warning when adding handler with RegisterSpawnHandler if assetid already exists ([#1819](https://github.com/MirrorNG/MirrorNG/issues/1819)) ([7f26329](https://github.com/MirrorNG/MirrorNG/commit/7f26329e2db9d00da04bed40399af053436218bd))
* Adding warning when adding prefab with RegisterPrefab if assetid already exists ([#1828](https://github.com/MirrorNG/MirrorNG/issues/1828)) ([9f59e0c](https://github.com/MirrorNG/MirrorNG/commit/9f59e0c439707d66409a617b8f209187856eaf5f))
* addingNetwork rigidbody icon and AddComponentMenu attribute ([#2051](https://github.com/MirrorNG/MirrorNG/issues/2051)) ([ab1b92f](https://github.com/MirrorNG/MirrorNG/commit/ab1b92f74b56787feb7c6fde87c0b9838b8d9d0f))
* Additive scene can respawn objects safely ([#1270](https://github.com/MirrorNG/MirrorNG/issues/1270)) ([8899d20](https://github.com/MirrorNG/MirrorNG/commit/8899d207127be86a01cb859d0539c7927ebc2f67))
* additive scene example ([9fa0169](https://github.com/MirrorNG/MirrorNG/commit/9fa016957f487526ab44d443aabfe58fcc69518a))
* Additive Scene Example was missing Player Auth on movement. ([#234](https://github.com/MirrorNG/MirrorNG/issues/234)) ([09bbd68](https://github.com/MirrorNG/MirrorNG/commit/09bbd686e6c294f24412b35785cfa7a5aa47b5f2))
* additive scene player movement is client authoritative ([e683a92](https://github.com/MirrorNG/MirrorNG/commit/e683a92b081c989314c11e48fb21ee0096465797))
* AdditiveSceneExample missing comp and assignments ([#267](https://github.com/MirrorNG/MirrorNG/issues/267)) ([ab394b8](https://github.com/MirrorNG/MirrorNG/commit/ab394b8f7e823b8c3882de35eaa54c05fbd9316e))
* Allow sync objects to be re-used ([#1744](https://github.com/MirrorNG/MirrorNG/issues/1744)) ([58c89a3](https://github.com/MirrorNG/MirrorNG/commit/58c89a3d32daedc9b6670ed0b5eb1f8753c902e2)), closes [#1714](https://github.com/MirrorNG/MirrorNG/issues/1714)
* Allowing overrides for virtual commands to call base method ([#1944](https://github.com/MirrorNG/MirrorNG/issues/1944)) ([b92da91](https://github.com/MirrorNG/MirrorNG/commit/b92da91d7a04f41098615ff2e2a35cf7ff479201))
* assign spawn locations and fix null refs in example ([#242](https://github.com/MirrorNG/MirrorNG/issues/242)) ([3adf343](https://github.com/MirrorNG/MirrorNG/commit/3adf3438578ff304f1216022aae8e043c52cd71d))
* AsyncTcp now exits normally when client disconnects ([#141](https://github.com/MirrorNG/MirrorNG/issues/141)) ([8896c4a](https://github.com/MirrorNG/MirrorNG/commit/8896c4afa2f937839a54dc71fbe578b9c636f393))
* attributes causing a NRE ([#69](https://github.com/MirrorNG/MirrorNG/issues/69)) ([fc99c67](https://github.com/MirrorNG/MirrorNG/commit/fc99c67712564e2d983674b37858591903294f1a))
* auto reference mirrorng assembly ([93f8688](https://github.com/MirrorNG/MirrorNG/commit/93f8688b39822bb30ed595ca36f44a8a556bec85))
* Avoid FindObjectOfType when not needed ([#66](https://github.com/MirrorNG/MirrorNG/issues/66)) ([e2a4afd](https://github.com/MirrorNG/MirrorNG/commit/e2a4afd0b9ca8dea720acb9c558efca210bd8e71))
* benchmark examples ([b221b74](https://github.com/MirrorNG/MirrorNG/commit/b221b74beae2ee56f6fe536963b17d0aff10c5d8))
* better error for Command, ClientRpc and TargetRpc marked as abstract ([#1947](https://github.com/MirrorNG/MirrorNG/issues/1947)) ([62257d8](https://github.com/MirrorNG/MirrorNG/commit/62257d8c4fc307ba3e23fbd01dcc950515c31e79))
* Better errors when trying to replace existing assetid ([#1827](https://github.com/MirrorNG/MirrorNG/issues/1827)) ([822b041](https://github.com/MirrorNG/MirrorNG/commit/822b04155def9859b24900c6e55a4253f85ebb3f))
* build in IL2CPP ([#1524](https://github.com/MirrorNG/MirrorNG/issues/1524)) ([59faa81](https://github.com/MirrorNG/MirrorNG/commit/59faa819262a166024b16d854e410c7e51763e6a)), closes [#1519](https://github.com/MirrorNG/MirrorNG/issues/1519) [#1520](https://github.com/MirrorNG/MirrorNG/issues/1520)
* call callback after update dictionary in host ([#1476](https://github.com/MirrorNG/MirrorNG/issues/1476)) ([1736bb0](https://github.com/MirrorNG/MirrorNG/commit/1736bb0c42c0d2ad341e31a645658722de3bfe07))
* Call hooks when initializing objects OnStartServer on host ([#1249](https://github.com/MirrorNG/MirrorNG/issues/1249)) ([7aa7815](https://github.com/MirrorNG/MirrorNG/commit/7aa7815754bb3be1071884d6583076badc7cae59))
* call Obsoleted OnStartClient ([#681](https://github.com/MirrorNG/MirrorNG/issues/681)) ([8dea50e](https://github.com/MirrorNG/MirrorNG/commit/8dea50ed18ca45e72cc5e5addf1cc28c7ab08746))
* call OnStartClient only once in room ([#1264](https://github.com/MirrorNG/MirrorNG/issues/1264)) ([4d373c5](https://github.com/MirrorNG/MirrorNG/commit/4d373c5071c45201146333f40d3fbc5d1fa8ec26))
* call the virtual OnRoomServerDisconnect before the base ([e6881ef](https://github.com/MirrorNG/MirrorNG/commit/e6881ef007f199efca3c326ead258f0c350ffb47))
* calling base method when the first base class did not have the virtual method ([#2014](https://github.com/MirrorNG/MirrorNG/issues/2014)) ([4af72c3](https://github.com/MirrorNG/MirrorNG/commit/4af72c3a63e72dac6b3bab193dc58bfa3c44a975))
* calling Connect and Authenticate handler twice ([#102](https://github.com/MirrorNG/MirrorNG/issues/102)) ([515f5a1](https://github.com/MirrorNG/MirrorNG/commit/515f5a15cd5be984f8cb4f94d3be0a0ac919eb63))
* calling syncvar hook when not connected yet ([#77](https://github.com/MirrorNG/MirrorNG/issues/77)) ([e64727b](https://github.com/MirrorNG/MirrorNG/commit/e64727b74bcbb1adfcd8f5efbf96066443254dff))
* cap spawned to match client ([#301](https://github.com/MirrorNG/MirrorNG/issues/301)) ([7d1571a](https://github.com/MirrorNG/MirrorNG/commit/7d1571ab5a9eaf31cd64bff2bc47158c0e1e6ff6))
* changing namespace to match folder name ([#2037](https://github.com/MirrorNG/MirrorNG/issues/2037)) ([e36449c](https://github.com/MirrorNG/MirrorNG/commit/e36449cb22d8a2dede0133cf229bc12885c36bdb))
* chat example ([e6e10a7](https://github.com/MirrorNG/MirrorNG/commit/e6e10a7108bc01e3bd0c208734c97c945003ff86))
* chat example works ([0609d50](https://github.com/MirrorNG/MirrorNG/commit/0609d50d9b93afd3b42d97ddcd00d32e8aaa0db5))
* check event prefix ([7417b68](https://github.com/MirrorNG/MirrorNG/commit/7417b6867175f0a54db56efc4387d2d24b0b37dd))
* Check SceneManager GetSceneByName and GetSceneByPath ([#1684](https://github.com/MirrorNG/MirrorNG/issues/1684)) ([e7cfd5a](https://github.com/MirrorNG/MirrorNG/commit/e7cfd5a498c7359636cd109fe586fce1771bada2))
* Clean up roomSlots on clients in NetworkRoomPlayer ([5032ceb](https://github.com/MirrorNG/MirrorNG/commit/5032ceb00035679e0b80f59e91131cdfa8e0b1bb))
* Cleaning up network objects when server stops ([#1864](https://github.com/MirrorNG/MirrorNG/issues/1864)) ([4c25122](https://github.com/MirrorNG/MirrorNG/commit/4c25122958978557173ec37ca400c47b2d8e834f))
* cleanup the server even after error ([#255](https://github.com/MirrorNG/MirrorNG/issues/255)) ([7bd015e](https://github.com/MirrorNG/MirrorNG/commit/7bd015eac1b77f0ad5974abb5c4c87a5d3da7b6d))
* clear all message handlers on Shutdown ([#1829](https://github.com/MirrorNG/MirrorNG/issues/1829)) ([a6ab352](https://github.com/MirrorNG/MirrorNG/commit/a6ab3527acb9af8f6a68f0151e5231e4ee1a98e9))
* client being disconnected twice ([#132](https://github.com/MirrorNG/MirrorNG/issues/132)) ([36bb3a2](https://github.com/MirrorNG/MirrorNG/commit/36bb3a2418bcf41fd63d1fc79e8a5173e4b0bc51))
* client disconnected on server event never raised ([#133](https://github.com/MirrorNG/MirrorNG/issues/133)) ([9d9efa0](https://github.com/MirrorNG/MirrorNG/commit/9d9efa0e31cbea4d90d7408ae6b3742151b49a21))
* ClientRpc methods now work accross assemblies ([#1129](https://github.com/MirrorNG/MirrorNG/issues/1129)) ([13dbcb9](https://github.com/MirrorNG/MirrorNG/commit/13dbcb9f35d64285258e748ca1fd5c4daac97a16)), closes [#1128](https://github.com/MirrorNG/MirrorNG/issues/1128)
* ClientRPC should skip first arg only if set as Connection ([#315](https://github.com/MirrorNG/MirrorNG/issues/315)) ([168e622](https://github.com/MirrorNG/MirrorNG/commit/168e6222e759016b588e994b76d2f134c9224b0b))
* ClientSceneManager should be responsible for its own cleanup ([#298](https://github.com/MirrorNG/MirrorNG/issues/298)) ([92ab3ff](https://github.com/MirrorNG/MirrorNG/commit/92ab3ffe265e72b3c012dc44075f6e9752323984))
* Cmds can be called from child classes in other assemblies ([d8a98d8](https://github.com/MirrorNG/MirrorNG/commit/d8a98d8d996aeded693223b00b90f2eea5084c11)), closes [#1108](https://github.com/MirrorNG/MirrorNG/issues/1108)
* code smell rename Ready ([#256](https://github.com/MirrorNG/MirrorNG/issues/256)) ([6d92d14](https://github.com/MirrorNG/MirrorNG/commit/6d92d1482cdd31fa663f7475f103476c65b7d875))
* Command and Rpc debugging information ([#1551](https://github.com/MirrorNG/MirrorNG/issues/1551)) ([658847b](https://github.com/MirrorNG/MirrorNG/commit/658847b096571eb7cf14e824ea76359576121e63)), closes [#1550](https://github.com/MirrorNG/MirrorNG/issues/1550)
* comment punctuation ([4d827cd](https://github.com/MirrorNG/MirrorNG/commit/4d827cd9f60e4fb7cd6524d78ca26ea1d88a1eff))
* compilation error ([df7baa4](https://github.com/MirrorNG/MirrorNG/commit/df7baa4db0d347ee69c17bad9f9e56ccefb54fab))
* compilation error ([dc74256](https://github.com/MirrorNG/MirrorNG/commit/dc74256fc380974ad6df59b5d1dee3884b879bd7))
* compilation error on standalone build ([bb70bf9](https://github.com/MirrorNG/MirrorNG/commit/bb70bf963459be02a79c2c40cb7dfb8f10d2b92d))
* compilation issue after merge from mirror ([daf07be](https://github.com/MirrorNG/MirrorNG/commit/daf07bea83c9925bd780e23de53dd50604e8a999))
* compilation issues ([22bf925](https://github.com/MirrorNG/MirrorNG/commit/22bf925f1ebf018b9ea33df22294fb9205574fa5))
* comply with MIT license in upm package ([b879bef](https://github.com/MirrorNG/MirrorNG/commit/b879bef4295e48c19d96a1d45536a11ea47380f3))
* Decouple ChatWindow from player ([#1429](https://github.com/MirrorNG/MirrorNG/issues/1429)) ([42a2f9b](https://github.com/MirrorNG/MirrorNG/commit/42a2f9b853667ef9485a1d4a31979fcf1153c0d7))
* Default port is 7777 ([960c39d](https://github.com/MirrorNG/MirrorNG/commit/960c39da90db156cb58d4765695664f0c084b39a))
* destroy owned objects ([#1352](https://github.com/MirrorNG/MirrorNG/issues/1352)) ([d7a58d2](https://github.com/MirrorNG/MirrorNG/commit/d7a58d25d4aa79d31dfc3fadfa4f68a5fdb895e6)), closes [#1346](https://github.com/MirrorNG/MirrorNG/issues/1346) [#1206](https://github.com/MirrorNG/MirrorNG/issues/1206) [#1351](https://github.com/MirrorNG/MirrorNG/issues/1351)
* Destroyed NetMan due to singleton collision must not continue. ([#1636](https://github.com/MirrorNG/MirrorNG/issues/1636)) ([d2a58a4](https://github.com/MirrorNG/MirrorNG/commit/d2a58a4c251c97cdb38c88c9a381496b3078adf8))
* disconnect even if there is an exception ([#152](https://github.com/MirrorNG/MirrorNG/issues/152)) ([2eb9de6](https://github.com/MirrorNG/MirrorNG/commit/2eb9de6b470579b6de75853ba161b3e7a36de698))
* disconnect properly from the server ([c89bb51](https://github.com/MirrorNG/MirrorNG/commit/c89bb513e536f256e55862b723487bb21281572e))
* disconnect transport without domain reload ([20785b7](https://github.com/MirrorNG/MirrorNG/commit/20785b740e21fb22834cd01d7d628e127df6b80d))
* Do not call InternalAddPlayer twice ([#1246](https://github.com/MirrorNG/MirrorNG/issues/1246)) ([7119dd1](https://github.com/MirrorNG/MirrorNG/commit/7119dd15f8e90e6d6bc929a9e4633082615d0023))
* don't call hook in host if no change,  fixes [#1142](https://github.com/MirrorNG/MirrorNG/issues/1142) ([#1143](https://github.com/MirrorNG/MirrorNG/issues/1143)) ([d8ce80f](https://github.com/MirrorNG/MirrorNG/commit/d8ce80fe0edb243a71d35bdae657805b18a8a85e))
* don't call OnStartLocalPlayer twice ([#1263](https://github.com/MirrorNG/MirrorNG/issues/1263)) ([c753089](https://github.com/MirrorNG/MirrorNG/commit/c7530894788bb843b0f424e8f25029efce72d8ca))
* Don't call RegisterClientMessages every scene change ([#1865](https://github.com/MirrorNG/MirrorNG/issues/1865)) ([05c119f](https://github.com/MirrorNG/MirrorNG/commit/05c119f505390094c8f33e11568d40117360c49e))
* Don't call RegisterClientMessages twice ([#1842](https://github.com/MirrorNG/MirrorNG/issues/1842)) ([2a08aac](https://github.com/MirrorNG/MirrorNG/commit/2a08aac7cb8887934eb7eb8c232ce07976defe35))
* don't crash when stopping the client ([f584388](https://github.com/MirrorNG/MirrorNG/commit/f584388a16e746ac5c3000123a02a5c77387765e))
* Don't destroy the player twice ([#1709](https://github.com/MirrorNG/MirrorNG/issues/1709)) ([cbc2a47](https://github.com/MirrorNG/MirrorNG/commit/cbc2a4772921e01db17033075fa9f7d8cb7e6faf))
* Don't disconnect host ([#608](https://github.com/MirrorNG/MirrorNG/issues/608)) ([c1707e5](https://github.com/MirrorNG/MirrorNG/commit/c1707e5917c4058a9641376d028f5feff51128cc))
* Don't give host player authority by default ([#1158](https://github.com/MirrorNG/MirrorNG/issues/1158)) ([1fc1ed2](https://github.com/MirrorNG/MirrorNG/commit/1fc1ed27081413e48a7898fc185cb238ed0074dc))
* don't report error when stopping the server ([c965d4b](https://github.com/MirrorNG/MirrorNG/commit/c965d4b0ff32288ebe4e5c63a43e32559203deb1))
* Don't set asset id for scene objects ([7e40232](https://github.com/MirrorNG/MirrorNG/commit/7e4023246bc2e6a11909a7c3730ae05ee56d1369))
* Don't set framerate in host mode ([4644bc4](https://github.com/MirrorNG/MirrorNG/commit/4644bc4b7730d4aefae833fb59264230026bb4d0))
* Don't throw exception getting address ([7df3ce3](https://github.com/MirrorNG/MirrorNG/commit/7df3ce37d1a23b8137119015276436a741b7cd9d))
* Dont allow null connections ([#323](https://github.com/MirrorNG/MirrorNG/issues/323)) ([44fef7e](https://github.com/MirrorNG/MirrorNG/commit/44fef7ec7bd6ae0772414ff28bb78bf42a6b4c92))
* dont allow set of networkSceneName directly ([#2100](https://github.com/MirrorNG/MirrorNG/issues/2100)) ([df16a7d](https://github.com/MirrorNG/MirrorNG/commit/df16a7d3ccfddcf3aa1a68fe0965757d91363e16))
* dont directly set NetworkSceneName ([#297](https://github.com/MirrorNG/MirrorNG/issues/297)) ([bd043a3](https://github.com/MirrorNG/MirrorNG/commit/bd043a3001775fe32da558e17566b61c5694ee7c))
* dont register client scene handlers while host ([#296](https://github.com/MirrorNG/MirrorNG/issues/296)) ([37c8ddd](https://github.com/MirrorNG/MirrorNG/commit/37c8ddd87595143149af942dc7e5654de3eef424))
* Draw SyncVar label for Unity objects inline  ([#1291](https://github.com/MirrorNG/MirrorNG/issues/1291)) ([a0425e4](https://github.com/MirrorNG/MirrorNG/commit/a0425e4e84cb08c3fd8d7e7fe07a230579d0c0c7))
* Dummy file for SyncListStructProcessor.cs ([#798](https://github.com/MirrorNG/MirrorNG/issues/798)) ([75e4f15](https://github.com/MirrorNG/MirrorNG/commit/75e4f159e516f8f3b04b6f1a2c77898de8c7c7b5))
* Eliminate NetworkAnimator SetTrigger double firing on Host ([#1723](https://github.com/MirrorNG/MirrorNG/issues/1723)) ([e5b728f](https://github.com/MirrorNG/MirrorNG/commit/e5b728fed515ab679ad1e4581035d32f6c187a98))
* empty scene name isn't considered as empty ([ec3a939](https://github.com/MirrorNG/MirrorNG/commit/ec3a93945b5b52a77fd745b39e1e821db721768d))
* error when there are no network behaviors ([#1303](https://github.com/MirrorNG/MirrorNG/issues/1303)) ([dbe0643](https://github.com/MirrorNG/MirrorNG/commit/dbe064393a6573bcb213b628ec53b547d04891cc))
* examples now work with prefabs in NC ([df4149b](https://github.com/MirrorNG/MirrorNG/commit/df4149b8fea9f174742d20f600ef5261058e5300))
* examples run in background ([#233](https://github.com/MirrorNG/MirrorNG/issues/233)) ([4755650](https://github.com/MirrorNG/MirrorNG/commit/47556500eed7c0e2719e41c0e996925ddf1799bb))
* Fallback and Multiplex now disable their transports when they are disabled  ([#2048](https://github.com/MirrorNG/MirrorNG/issues/2048)) ([61d44b2](https://github.com/MirrorNG/MirrorNG/commit/61d44b2d80c9616f784e855131ba6d1ee8a30136))
* FinishLoadSceneHost calls FinishStart host which now calls StartHostClient AFTER server online scene was loaded. Previously there was a race condition where StartHostClient was called immediately in StartHost, before the scene change even finished. This was still from UNET. ([df9c29a](https://github.com/MirrorNG/MirrorNG/commit/df9c29a6b3f9d0c8adbaff5a500e54abddb303b3))
* first connection id = 1 ([#60](https://github.com/MirrorNG/MirrorNG/issues/60)) ([891dab9](https://github.com/MirrorNG/MirrorNG/commit/891dab92d065821ca46b47ef2d3eb27124058d74))
* fix adding and saving Components ([2de7ecd](https://github.com/MirrorNG/MirrorNG/commit/2de7ecd93029bf5fd2fbb04ad4e47936cbb802cc))
* fix release pipeline ([2a3db0b](https://github.com/MirrorNG/MirrorNG/commit/2a3db0b398cd641c3e1ba65a32b34822e9c9169f))
* Fix Room Slots for clients ([#1439](https://github.com/MirrorNG/MirrorNG/issues/1439)) ([268753c](https://github.com/MirrorNG/MirrorNG/commit/268753c3bd0a9c0695d8d4510a129685be364a11))
* Fixed Capitalization ([c45deb8](https://github.com/MirrorNG/MirrorNG/commit/c45deb808e8e01a7b697e703be783aea2799d4d1))
* Fixed ClienRpc typos ([e946c79](https://github.com/MirrorNG/MirrorNG/commit/e946c79194dd9618992a4136daed4b79f60671a2))
* Fixed NetworkRoomManager Template ([1662c5a](https://github.com/MirrorNG/MirrorNG/commit/1662c5a139363dbe61784bb90ae6544ec74478c3))
* Fixed toc link ([3a0c7fb](https://github.com/MirrorNG/MirrorNG/commit/3a0c7fb1ecd9d8715e797a7665ab9a6a7cb19e2a))
* Fixing ClientScene UnregisterPrefab ([#1815](https://github.com/MirrorNG/MirrorNG/issues/1815)) ([9270765](https://github.com/MirrorNG/MirrorNG/commit/9270765bebf45c34a466694473b43c6d802b99d9))
* fixing cloud scripts not pinging api ([#2097](https://github.com/MirrorNG/MirrorNG/issues/2097)) ([8e545ac](https://github.com/MirrorNG/MirrorNG/commit/8e545ac46863e4fbe874c70bf9559c9b12de83d4))
* Fixing SyncVars not serializing when OnSerialize is overridden ([#1671](https://github.com/MirrorNG/MirrorNG/issues/1671)) ([c66c5a6](https://github.com/MirrorNG/MirrorNG/commit/c66c5a6dcc6837c840e6a51435b88fde10322297))
* folders for meta files no longer in the codebase ([#237](https://github.com/MirrorNG/MirrorNG/issues/237)) ([192fd16](https://github.com/MirrorNG/MirrorNG/commit/192fd1645986c515a804a01e0707c78241882676))
* hasAuthority is now visible in all overrides ([#1251](https://github.com/MirrorNG/MirrorNG/issues/1251)) ([2f19c7c](https://github.com/MirrorNG/MirrorNG/commit/2f19c7ca8961e9d99794e6053abfa88263dea89d)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* headless build ([7864e8d](https://github.com/MirrorNG/MirrorNG/commit/7864e8d6f4a0952ef3114daac11842e4ee0a7a58))
* headless build ([ab47a45](https://github.com/MirrorNG/MirrorNG/commit/ab47a45d08f4e9a82a5cd26f913f4871d46dd484))
* Host Player Ready Race Condition ([#1498](https://github.com/MirrorNG/MirrorNG/issues/1498)) ([4c4a52b](https://github.com/MirrorNG/MirrorNG/commit/4c4a52bff95e7c56f065409b1399955813f3e145))
* If socket is undefined it will return false. See [#1486](https://github.com/MirrorNG/MirrorNG/issues/1486) ([#2017](https://github.com/MirrorNG/MirrorNG/issues/2017)) ([4ffff19](https://github.com/MirrorNG/MirrorNG/commit/4ffff192a69108b993cf963cfdece47b14ffdbf2))
* Improved error checking for ClientScene.RegisterPrefab ([#1823](https://github.com/MirrorNG/MirrorNG/issues/1823)) ([a0aa4f9](https://github.com/MirrorNG/MirrorNG/commit/a0aa4f9c1425d4eca3fe08cd2d87361f092ded6f))
* Improved error checking for ClientScene.RegisterPrefab with handler ([#1841](https://github.com/MirrorNG/MirrorNG/issues/1841)) ([54071da](https://github.com/MirrorNG/MirrorNG/commit/54071da3afb18d6289de5d0e41dc248e21088641))
* Invoke server.Disconnected before identity is removed for its conn ([#165](https://github.com/MirrorNG/MirrorNG/issues/165)) ([b749c4b](https://github.com/MirrorNG/MirrorNG/commit/b749c4ba126266a1799059f7fb407b6bcaa2bbd9))
* isClient now reports true onStartServer in host mode ([#1252](https://github.com/MirrorNG/MirrorNG/issues/1252)) ([d00c95b](https://github.com/MirrorNG/MirrorNG/commit/d00c95bb55eedceb4f0811de54604c960c9352fe))
* isLocalPlayer is true during OnStartClient for Player ([#1255](https://github.com/MirrorNG/MirrorNG/issues/1255)) ([fb26d00](https://github.com/MirrorNG/MirrorNG/commit/fb26d0023f2ecfcec710d365f23a19036e3f87b2)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* isLocalPlayer works in host mode onStartServer ([#1253](https://github.com/MirrorNG/MirrorNG/issues/1253)) ([9acde20](https://github.com/MirrorNG/MirrorNG/commit/9acde20b0a4237936fc028747551204208ac9677)), closes [#1250](https://github.com/MirrorNG/MirrorNG/issues/1250)
* it is not safe to modify this outside this class ([bc7a961](https://github.com/MirrorNG/MirrorNG/commit/bc7a961e4db0b269e36cd15f1492410932ff7f5b))
* list server logs properly when disconnected ([f02d317](https://github.com/MirrorNG/MirrorNG/commit/f02d3174db39498749a6663984dcb4bea8ac342e))
* Lobby Remove button not showing for P1 when Server Only ([377c47c](https://github.com/MirrorNG/MirrorNG/commit/377c47ce74808dc7d2871eac80c4cd040894821b))
* Make assembly definition 2018.4 compatible ([99ecc9e](https://github.com/MirrorNG/MirrorNG/commit/99ecc9ec770aa89d5087e5b95821ff3e2e444085))
* make build pass ([08df6d0](https://github.com/MirrorNG/MirrorNG/commit/08df6d0694b10475301b21915214cbbfbbec2826))
* Make SendToReady non-ambiguous ([#1578](https://github.com/MirrorNG/MirrorNG/issues/1578)) ([b627779](https://github.com/MirrorNG/MirrorNG/commit/b627779acd68b2acfcaf5eefc0d3864dcce57fc7))
* making weaver include public fields in base classes in auto generated Read/Write ([#1977](https://github.com/MirrorNG/MirrorNG/issues/1977)) ([3db57e5](https://github.com/MirrorNG/MirrorNG/commit/3db57e5f61ac0748d3a6296d8ea44c202830796f))
* Mark weaver as failed if serializing invalid type ([03c767d](https://github.com/MirrorNG/MirrorNG/commit/03c767db6aea583bb00e56b1ac74bf29e8169a91))
* Message base class not being Serialized if processed in the wrong order ([#2023](https://github.com/MirrorNG/MirrorNG/issues/2023)) ([3418fa2](https://github.com/MirrorNG/MirrorNG/commit/3418fa210602cf1a9b9331b198ac47d8a3cabe69))
* MirrorNG works with 2019.2 ([9f35d6b](https://github.com/MirrorNG/MirrorNG/commit/9f35d6be427843aa7dd140cde32dd843c62147ce))
* Misc code smells ([#2094](https://github.com/MirrorNG/MirrorNG/issues/2094)) ([e4cc85c](https://github.com/MirrorNG/MirrorNG/commit/e4cc85c413eed01950bf9dddf0bdac2afd8ab479))
* Misc Code Smells ([#257](https://github.com/MirrorNG/MirrorNG/issues/257)) ([278a127](https://github.com/MirrorNG/MirrorNG/commit/278a1279dabefe04b0829015841de68b41e60a7b))
* Misc code smells ([#269](https://github.com/MirrorNG/MirrorNG/issues/269)) ([23dcca6](https://github.com/MirrorNG/MirrorNG/commit/23dcca61ff7c41e8b9f61579605fd56ee82c70e0))
* missing meta ([87ace4d](https://github.com/MirrorNG/MirrorNG/commit/87ace4dda09331968cc9d0185ce1de655f5dfb15))
* move listserver classes into package ([2668b17](https://github.com/MirrorNG/MirrorNG/commit/2668b17162e5a9fbdce2cfc776f80044f9f4d0d9))
* move NetworkStreamExtension in a namespace ([12de543](https://github.com/MirrorNG/MirrorNG/commit/12de543aa4da49edf3c14c69388f739ad315c84d))
* moved SpawnObjects call for hostmode to after LocalClient Connected ([#317](https://github.com/MirrorNG/MirrorNG/issues/317)) ([1423a6d](https://github.com/MirrorNG/MirrorNG/commit/1423a6d0160c5d14a0ee6bad84973df73956fc05))
* movement in room demo ([49f7904](https://github.com/MirrorNG/MirrorNG/commit/49f7904b4a83fc5318031d273cb10a4b87af2172))
* MultiplexTransport GetMaxMessageSize NullReferenceException when called on server. And fixes potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes. ([#1332](https://github.com/MirrorNG/MirrorNG/issues/1332)) ([b3127be](https://github.com/MirrorNG/MirrorNG/commit/b3127beb89c20447bf8044fd3bae71ae04f553e7))
* Network rigidbody fixes ([#2050](https://github.com/MirrorNG/MirrorNG/issues/2050)) ([0c30d33](https://github.com/MirrorNG/MirrorNG/commit/0c30d3398aaabcbf094a88a9c9c77ab4d5062acf))
* NetworkBehaviour.SyncVarGameObjectEqual made protected again so that Weaver finds it again ([165a1dd](https://github.com/MirrorNG/MirrorNG/commit/165a1dd94cd1a7bebc3365c4f40f968f500043a5))
* NetworkBehaviour.SyncVarNetworkIdentityEqual made protected again so that Weaver finds it again ([20a2d09](https://github.com/MirrorNG/MirrorNG/commit/20a2d09d07ab2c47a204e5d583b538a92f72231e))
* NetworkBehaviourInspector wouldn't show SyncMode if syncvars / syncobjects were only private ([ed572da](https://github.com/MirrorNG/MirrorNG/commit/ed572da6a07791a243715796304c0f7695792225))
* NetworkClient.Shutdown calls ClientScene.Shutdown again to properly clean up client scene. ClientScene only cleans up itself without touching transport or NetworkIdentities (fixes the bug where the player object wouldn't be destroyed after calling StopClient) ([fb716df](https://github.com/MirrorNG/MirrorNG/commit/fb716df12997417ce41a063508937d68a75991bf))
* NetworkConnectionEvent should be serialized in editor ([0e756ce](https://github.com/MirrorNG/MirrorNG/commit/0e756cec06c5fda9eb4b5c8aa9de093c32b0315c))
* NetworkIdentity.OnStartLocalPlayer catches exceptions now too. fixes a potential bug where an exception in PlayerInventory.OnStartLocalPlayer would cause PlayerEquipment.OnStartLocalPlayer to not be called ([5ed5f84](https://github.com/MirrorNG/MirrorNG/commit/5ed5f844090442e16e78f466f7a785881283fbd4))
* NetworkIdentity.RebuildObservers: added missing null check for observers coming from components that implement OnRebuildObservers. Previously this caused a NullReferenceException. ([a5f495a](https://github.com/MirrorNG/MirrorNG/commit/a5f495a77485b972cf39f8a42bae6d7d852be38c))
* NetworkIdentity.SetClientOwner: overwriting the owner was still possible even though it shouldn't be. all caller functions double check and return early if it already has an owner, so we should do the same here. ([548db52](https://github.com/MirrorNG/MirrorNG/commit/548db52fdf224f06ba9d8b2d75460d31181b7066))
* NetworkRoomManager.minPlayers is now protected so it's available for derived classes. ([3179f08](https://github.com/MirrorNG/MirrorNG/commit/3179f08e3dc11340227a57da0104b1c8d1d7b45d))
* NetworkServer.SpawnObjects: return false if server isn't running ([d4d524d](https://github.com/MirrorNG/MirrorNG/commit/d4d524dad2a0a9d89538e6212dceda6bea71d2b7))
* NetworkTransform clientAuthority works again via clientAuthority option that is configurable in inspector. this had to be fixed after we removed local authority. ([d712cd0](https://github.com/MirrorNG/MirrorNG/commit/d712cd03039aea92083b1be97197f6272b2296b5))
* NinjaWS code smells ([#272](https://github.com/MirrorNG/MirrorNG/issues/272)) ([71d9428](https://github.com/MirrorNG/MirrorNG/commit/71d942804c0d404f287dc51b7bcdd1fcc39bcee8))
* no longer requires hook to be the first overload in a class ([#1913](https://github.com/MirrorNG/MirrorNG/issues/1913)) ([0348699](https://github.com/MirrorNG/MirrorNG/commit/03486997fb0abb91d14f233658d375f21afbc3e3))
* non ready connections should not observe objects ([1352334](https://github.com/MirrorNG/MirrorNG/commit/135233474752373b473b6094fe52bcb3ab3c4eae))
* not removing server if id is empty ([#2078](https://github.com/MirrorNG/MirrorNG/issues/2078)) ([f717945](https://github.com/MirrorNG/MirrorNG/commit/f7179455256bb7341ffa9e6921fe0de50498150a))
* NRE on gamemanager in scene ([#268](https://github.com/MirrorNG/MirrorNG/issues/268)) ([58a124a](https://github.com/MirrorNG/MirrorNG/commit/58a124a99c267091142f00adc7f8898160a9dd97))
* NRE when destroying all objects ([#85](https://github.com/MirrorNG/MirrorNG/issues/85)) ([71e78a7](https://github.com/MirrorNG/MirrorNG/commit/71e78a7f5e15f99af89cd15c1ddd8a975e463916))
* NS call SpawnObjects. No NetMan dependency for spawning objects ([#300](https://github.com/MirrorNG/MirrorNG/issues/300)) ([e1bb8de](https://github.com/MirrorNG/MirrorNG/commit/e1bb8deba81713c8998cf47b1ec4b8b870fc55eb))
* null reference exception ([7ce95c5](https://github.com/MirrorNG/MirrorNG/commit/7ce95c5cea58446549d9a282b48c2e8b3f7c8323))
* OnClientEnterRoom should only fire on clients ([d9b7bb7](https://github.com/MirrorNG/MirrorNG/commit/d9b7bb735729e68ae399e1175d6c485a873b379e))
* OnClientReady is called and passed the appropriate ready state value in NetworkLobbyPlayer ([#618](https://github.com/MirrorNG/MirrorNG/issues/618)) ([c9eac57](https://github.com/MirrorNG/MirrorNG/commit/c9eac57ce858d5977a03979e7514f9833a958d3c))
* OnSetHostVisibility can now check if it has authority ([888e46c](https://github.com/MirrorNG/MirrorNG/commit/888e46c6850c9d32c6428f72d0dddf5f7e8a8564))
* Optional Server or Client for PlayerSpawner ([#231](https://github.com/MirrorNG/MirrorNG/issues/231)) ([3fa5f89](https://github.com/MirrorNG/MirrorNG/commit/3fa5f89d8c934b233330efe52b42e59198a920cb))
* overriden hooks are invoked (fixes [#1581](https://github.com/MirrorNG/MirrorNG/issues/1581)) ([#1584](https://github.com/MirrorNG/MirrorNG/issues/1584)) ([cf55333](https://github.com/MirrorNG/MirrorNG/commit/cf55333a072c0ffe36a2972ca0a5122a48d708d0))
* pass the correct connection to TargetRpcs ([#146](https://github.com/MirrorNG/MirrorNG/issues/146)) ([9df2f79](https://github.com/MirrorNG/MirrorNG/commit/9df2f798953f78de113ef6fa9fea111b03a52cd0))
* Pass the name of the invoking class and desired command when an object has no authority. ([#1216](https://github.com/MirrorNG/MirrorNG/issues/1216)) ([701f4f4](https://github.com/MirrorNG/MirrorNG/commit/701f4f41838a01d9268335d16380f871abaf8cf5))
* port network discovery ([d6a1154](https://github.com/MirrorNG/MirrorNG/commit/d6a1154e98c52e7873411ce9d7b87f7b294dc436))
* Potential DOS attack by sending invalid UTF8 byte sequences  ([#727](https://github.com/MirrorNG/MirrorNG/issues/727)) ([3cee3ab](https://github.com/MirrorNG/MirrorNG/commit/3cee3abc48fa58ab2bdb6affc8cbd4ae8b4fa815))
* Potential DOS attack on server by sending packed ulongs when packed uints are expected. ([#730](https://github.com/MirrorNG/MirrorNG/issues/730)) ([015d0d5](https://github.com/MirrorNG/MirrorNG/commit/015d0d508e193a694b254c182dcb0a906fe1f3bc))
* potential exploits / out of sync issues where clients with different transports might see different game states because of different max message sizes when using FallbackTransport. ([#1331](https://github.com/MirrorNG/MirrorNG/issues/1331)) ([5449840](https://github.com/MirrorNG/MirrorNG/commit/54498403a540db62b3ac1994494ff071327330c9))
* potential null reference exception with debug logging ([33493a0](https://github.com/MirrorNG/MirrorNG/commit/33493a0137a899754c433c428b13e6f6c621300b))
* Prevent Compiler Paradox ([#1145](https://github.com/MirrorNG/MirrorNG/issues/1145)) ([fd43c67](https://github.com/MirrorNG/MirrorNG/commit/fd43c67d6866ede681024d3753b17ab5427e16f4))
* Prevent Double Call of NetworkServer.Destroy ([#1554](https://github.com/MirrorNG/MirrorNG/issues/1554)) ([2d1b142](https://github.com/MirrorNG/MirrorNG/commit/2d1b142276193be1e93a3a3f6ce482c87a134a2c))
* Prevent host client redundantly changing to offline scene ([b4511a0](https://github.com/MirrorNG/MirrorNG/commit/b4511a0637958f10f4a482364c654d1d9add5ef2))
* prevent NRE when operating as a separated client and server ([#283](https://github.com/MirrorNG/MirrorNG/issues/283)) ([e10e198](https://github.com/MirrorNG/MirrorNG/commit/e10e198b4865fc8c941244c3e368eebc6cf73179))
* properly detect NT rotation ([#1516](https://github.com/MirrorNG/MirrorNG/issues/1516)) ([f0a993c](https://github.com/MirrorNG/MirrorNG/commit/f0a993c1064384e0b3bd690d4d66be38875ed50e))
* race condition closing tcp connections ([717f1f5](https://github.com/MirrorNG/MirrorNG/commit/717f1f5ad783e13a6d55920e454cb91f380cd621))
* Re-enable transport if aborting additive load/unload ([#1683](https://github.com/MirrorNG/MirrorNG/issues/1683)) ([bc37497](https://github.com/MirrorNG/MirrorNG/commit/bc37497ac963bb0f2820b103591afd05177d078d))
* register prefab error with same guid ([#2092](https://github.com/MirrorNG/MirrorNG/issues/2092)) ([984eb73](https://github.com/MirrorNG/MirrorNG/commit/984eb73ea495cf876446a21775fde5c33119695b))
* release job requires node 10 ([3f50e63](https://github.com/MirrorNG/MirrorNG/commit/3f50e63bc32f4942e1c130c681dabd34ae81b117))
* release unitypackage ([#1355](https://github.com/MirrorNG/MirrorNG/issues/1355)) ([d0cc669](https://github.com/MirrorNG/MirrorNG/commit/d0cc6690178df0af02be7bfd1fa9aacd037c57be))
* remove customHandling as its no longer used ([#265](https://github.com/MirrorNG/MirrorNG/issues/265)) ([dbd9d84](https://github.com/MirrorNG/MirrorNG/commit/dbd9d84ee46ac90a8d78daba0c23fc9be71ca77d))
* Remove leftover AddPlayer methods now that extraData is gone ([#1751](https://github.com/MirrorNG/MirrorNG/issues/1751)) ([2d006fe](https://github.com/MirrorNG/MirrorNG/commit/2d006fe7301eb8a0194af9ce9244988a6877f8f0))
* remove pause network comment and log ([#238](https://github.com/MirrorNG/MirrorNG/issues/238)) ([1a8c09d](https://github.com/MirrorNG/MirrorNG/commit/1a8c09d8a5a8cf70508d4e42e4912e3989478ff1))
* Remove RoomPlayer from roomSlots on Disconnect ([2a2f76c](https://github.com/MirrorNG/MirrorNG/commit/2a2f76c263093c342f307856e400aeabbedc58df))
* remove samples from upm package ([#25](https://github.com/MirrorNG/MirrorNG/issues/25)) ([a71e21f](https://github.com/MirrorNG/MirrorNG/commit/a71e21fe6953f6edf54fed3499801e271e2447f3))
* remove scriptableobject error Tests ([479b78b](https://github.com/MirrorNG/MirrorNG/commit/479b78bf3cabe93938bf61b7f8fd63ba46da0f4a))
* remove tests from npm package ([#32](https://github.com/MirrorNG/MirrorNG/issues/32)) ([5ed9b4f](https://github.com/MirrorNG/MirrorNG/commit/5ed9b4f1235d5d1dc54c3f50bb1aeefd5dbe3038))
* remove Tests from UPM ([#33](https://github.com/MirrorNG/MirrorNG/issues/33)) ([8f42af0](https://github.com/MirrorNG/MirrorNG/commit/8f42af0a3992cfa549eb404ad9f9693101895ce9))
* remove Tests from upm package ([#34](https://github.com/MirrorNG/MirrorNG/issues/34)) ([8d8ea0f](https://github.com/MirrorNG/MirrorNG/commit/8d8ea0f10743044e4a9a3d6c5b9f9973cf48e28b))
* remove unused code ([#308](https://github.com/MirrorNG/MirrorNG/issues/308)) ([554d2c5](https://github.com/MirrorNG/MirrorNG/commit/554d2c5030a9ff1ebcd9ca17ed7d673865709a1c))
* remove unused events ([#334](https://github.com/MirrorNG/MirrorNG/issues/334)) ([c20f6de](https://github.com/MirrorNG/MirrorNG/commit/c20f6de07ff97960a8cf9972fbb4d4d13b507b3b))
* Removed NetworkClient.Update because NetworkManager does it in LateUpdate ([984945e](https://github.com/MirrorNG/MirrorNG/commit/984945e482529bfc03bf735562f3eff297a1bad4))
* Removed NetworkServer.Listen because HostSetup does that ([cf6823a](https://github.com/MirrorNG/MirrorNG/commit/cf6823acb5151d5bc9beca2b0911a99dfbcd4472))
* Removed unnecessary registration of player prefab in NetworkRoomManager ([b2f52d7](https://github.com/MirrorNG/MirrorNG/commit/b2f52d78921ff0136c74bbed0980e3aaf5e2b379))
* Removed unused variable ([ae3dc04](https://github.com/MirrorNG/MirrorNG/commit/ae3dc04fb999c3b7133589ab631c1d23f1a8bdde))
* renaming call/invoke prefix for SyncEvent ([#2089](https://github.com/MirrorNG/MirrorNG/issues/2089)) ([18d6957](https://github.com/MirrorNG/MirrorNG/commit/18d695744f7c253d749792e4f9f8759ef16fcbab)), closes [#2088](https://github.com/MirrorNG/MirrorNG/issues/2088)
* replace player (remove authority by default) ([#1261](https://github.com/MirrorNG/MirrorNG/issues/1261)) ([ad724fe](https://github.com/MirrorNG/MirrorNG/commit/ad724fe23c4776855ee1a2a22b53ae59ddac8992)), closes [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257) [#1257](https://github.com/MirrorNG/MirrorNG/issues/1257)
* Replaced Icosphere with centered pivot ([1dc0d98](https://github.com/MirrorNG/MirrorNG/commit/1dc0d9837458c0403916476805f58442ff87e364))
* ReplacePlayer now calls OnStartLocalPlayer ([#1280](https://github.com/MirrorNG/MirrorNG/issues/1280)) ([0e1bc81](https://github.com/MirrorNG/MirrorNG/commit/0e1bc8110fb3cc4e162464a2e080eac6c70ab95e)), closes [#962](https://github.com/MirrorNG/MirrorNG/issues/962)
* Replacing ClearDelegates with RemoveDelegates for test ([#1971](https://github.com/MirrorNG/MirrorNG/issues/1971)) ([927c4de](https://github.com/MirrorNG/MirrorNG/commit/927c4dede5930b320537150466e05112ebe70c3e))
* Report correct channel to profiler in SendToObservers ([0b84d4c](https://github.com/MirrorNG/MirrorNG/commit/0b84d4c5e1b8455e32eeb4d4c00b60bbc1301436))
* reset buffer every time ([a8a62a6](https://github.com/MirrorNG/MirrorNG/commit/a8a62a64b6fa67223505505c1225269d3a047a92))
* return & continue on separate line ([#1504](https://github.com/MirrorNG/MirrorNG/issues/1504)) ([61fdd89](https://github.com/MirrorNG/MirrorNG/commit/61fdd892d9e6882e1e51094a2ceddfadc8fd1ebc))
* Revert "NetworkClient.Shutdown: call ClientScene.Shutdown, otherwise it's never called" - caused client's player to not be removed from scene after disconnecting ([13bb748](https://github.com/MirrorNG/MirrorNG/commit/13bb7486034b72e899365f1b0aed3707a3ac0cb1))
* Room example to use new override ([e1d1d41](https://github.com/MirrorNG/MirrorNG/commit/e1d1d41ed69f192b5fb91f92dcdeae1ee057d38f))
* rooms demo ([44598e5](https://github.com/MirrorNG/MirrorNG/commit/44598e58325c877bd6b53ee5a77dd95e421ec404))
* Round Robin Spawning by Hierarchy Order ([#790](https://github.com/MirrorNG/MirrorNG/issues/790)) ([531e202](https://github.com/MirrorNG/MirrorNG/commit/531e202bbec43d855b0ba24e445588fda2f08102)), closes [#724](https://github.com/MirrorNG/MirrorNG/issues/724)
* SceneManager Exceptions and Tests ([#287](https://github.com/MirrorNG/MirrorNG/issues/287)) ([388d218](https://github.com/MirrorNG/MirrorNG/commit/388d21872bb8b4c7f9d3742ecfa9b857ee734dfa))
* SendToAll sends to that exact connection if it is detected as local connection, instead of falling back to the .localConnection field which might be something completely different. ([4b90aaf](https://github.com/MirrorNG/MirrorNG/commit/4b90aafe12970e00949ee43b07b9edd5213745da))
* SendToObservers missing result variable ([9c09c26](https://github.com/MirrorNG/MirrorNG/commit/9c09c26a5cd28cadae4049fea71cddc38c00cf79))
* SendToObservers sends to that exact connection if it is detected as local connection, instead of falling back to the .localConnection field which might be something completely different. ([4267983](https://github.com/MirrorNG/MirrorNG/commit/426798313920d23548048aa1c678167fd9b45cbd))
* SendToReady sends to that exact connection if it is detected as local connection, instead of falling back to the .localConnection field which might be something completely different. ([4596b19](https://github.com/MirrorNG/MirrorNG/commit/4596b19dd959722d5dc659552206fe90c015fb01))
* set authority when replacing the player ([2195fee](https://github.com/MirrorNG/MirrorNG/commit/2195fee81c455ac6c2ea7cca28290fbda6f30260))
* Set syncvar variables after calling the hook ([#659](https://github.com/MirrorNG/MirrorNG/issues/659)) ([2d63ee1](https://github.com/MirrorNG/MirrorNG/commit/2d63ee13180a54d06ce68b641f35ee2a7702cffa))
* set version number ([#1338](https://github.com/MirrorNG/MirrorNG/issues/1338)) ([0d1d7b5](https://github.com/MirrorNG/MirrorNG/commit/0d1d7b5a1c0e6d94c5749a94aa7b75f2c9a2ca0d))
* show private serializable fields in network behavior inspector ([#1557](https://github.com/MirrorNG/MirrorNG/issues/1557)) ([b8c87d9](https://github.com/MirrorNG/MirrorNG/commit/b8c87d9053e7fd7c3b69bcf1d4179e6e4c9bc4a6))
* smell cleanup left if bug. repaired with parenthesis. ([#275](https://github.com/MirrorNG/MirrorNG/issues/275)) ([dd52be3](https://github.com/MirrorNG/MirrorNG/commit/dd52be3bb9406de7b2527c72fce90c9ed6c9d5bf))
* Spawn Handler Order ([#223](https://github.com/MirrorNG/MirrorNG/issues/223)) ([8674274](https://github.com/MirrorNG/MirrorNG/commit/86742740ef2707f420d5cb6aeeb257bf07511f0b)), closes [#222](https://github.com/MirrorNG/MirrorNG/issues/222)
* spawnwithauthority works again in host mode ([5b04836](https://github.com/MirrorNG/MirrorNG/commit/5b04836bb220b8fc0a8c3d0a3636966af3c538f2))
* stack overflow getting logger ([55e075c](https://github.com/MirrorNG/MirrorNG/commit/55e075c872a076f524ec62f44d81df17819e81ba))
* Telepathy forgot to set socket options for accepted clients on the server ([22931fc](https://github.com/MirrorNG/MirrorNG/commit/22931fcd84e402a60b74f5261313c830913754fc))
* Telepathy updated to latest version (IPv6 fix again) ([535b4d4](https://github.com/MirrorNG/MirrorNG/commit/535b4d40fa50cec9abfac37c61aaf207ecbb43b9))
* Telepathy updated to latest version (Send SocketExceptions now disconnect the player too) ([98d3fb0](https://github.com/MirrorNG/MirrorNG/commit/98d3fb0c31b7ac8bd27ec176ebdf7fb19908d472))
* Telepathy updated to latest version: Correctly support IPv4 and IPv6 sockets ([2761ff2](https://github.com/MirrorNG/MirrorNG/commit/2761ff23f459b5647a5700c9b9b29abdcff13f97))
* Telepathy updated to latest version. connectionId counter is properly reset after stopping server. ([abf06df](https://github.com/MirrorNG/MirrorNG/commit/abf06df25d932d3cfb016e2da0bb5e4ee72d259d))
* TelepathyTransport.ToString UWP exception ([8a190bf](https://github.com/MirrorNG/MirrorNG/commit/8a190bfd176f043322097e64bd041e80e38cc6d2))
* update NetworkIdentityEditor FindProperty to renamed variables ([a2cc14b](https://github.com/MirrorNG/MirrorNG/commit/a2cc14bd202311aa36e61804183c983c6df8c7b4))
* Updated Telepathy to latest version to fix IPAddress.Parse error for "localhost" ([cc6e4f6](https://github.com/MirrorNG/MirrorNG/commit/cc6e4f696dbc462c3880a2c9fc73163d88351b5a))
* workaround for [#791](https://github.com/MirrorNG/MirrorNG/issues/791) ([5c850aa](https://github.com/MirrorNG/MirrorNG/commit/5c850aa9ca5b480449c453aa14191aeb9998e6cb))
* **serialization:** Added NetworkWriter tests, found and fixed a bug in Write(Ray). ([#769](https://github.com/MirrorNG/MirrorNG/issues/769)) ([99c8f5c](https://github.com/MirrorNG/MirrorNG/commit/99c8f5c356d2e3bd298fbd3508a3ed2abcb04351))
* **tests:** Added missing SyncListByteValid test file ([#634](https://github.com/MirrorNG/MirrorNG/issues/634)) ([b0af876](https://github.com/MirrorNG/MirrorNG/commit/b0af87622159ceca9aebf4d939a3b7ad733fbe4f))
* **weaver:** [#696](https://github.com/MirrorNG/MirrorNG/issues/696) detect .mystruct = new MyStruct() changes with syncvars ([#702](https://github.com/MirrorNG/MirrorNG/issues/702)) ([053949b](https://github.com/MirrorNG/MirrorNG/commit/053949b7d2e1e3178025a75cddb6e47b83cdbd48))
* **weaver:** fix [#706](https://github.com/MirrorNG/MirrorNG/issues/706) find system dlls ([#729](https://github.com/MirrorNG/MirrorNG/issues/729)) ([53be9b6](https://github.com/MirrorNG/MirrorNG/commit/53be9b6d9949645d5334690961ff31f90065a93a))
* **websocket:** [#829](https://github.com/MirrorNG/MirrorNG/issues/829) fix InvalidOperationException with wss:// ([#830](https://github.com/MirrorNG/MirrorNG/issues/830)) ([2d682b5](https://github.com/MirrorNG/MirrorNG/commit/2d682b5fad2811d3838e8d61ccaea381cc218bb2))
* **websocket:** Remove send queues (they never worked) and SSL (temporarily) ([#879](https://github.com/MirrorNG/MirrorNG/issues/879)) ([3c60b08](https://github.com/MirrorNG/MirrorNG/commit/3c60b087627175833c616619941722927aa9cd5d))
* **websocket:** Use a buffer for most WS messages in WebGL client resulting in 0 alloc for most messages ([#848](https://github.com/MirrorNG/MirrorNG/issues/848)) ([8967a20](https://github.com/MirrorNG/MirrorNG/commit/8967a20244a2e16e3861d60c1d13c9e808248607))
* Stop calling ClientDisconnect on host ([#597](https://github.com/MirrorNG/MirrorNG/issues/597)) ([b67b3e4](https://github.com/MirrorNG/MirrorNG/commit/b67b3e43049405808fe123276b3637c625b0ca9b))
* StopHost with offline scene calls scene change twice ([#1409](https://github.com/MirrorNG/MirrorNG/issues/1409)) ([a0c96f8](https://github.com/MirrorNG/MirrorNG/commit/a0c96f85189bfc9b5a936a8a33ebda34b460f17f))
* Suppress warning ([fffd462](https://github.com/MirrorNG/MirrorNG/commit/fffd462df8cc1c0265890cdfa4ceb3e24606b1c1))
* Suspend server transport while changing scenes ([#1169](https://github.com/MirrorNG/MirrorNG/issues/1169)) ([e8fac8a](https://github.com/MirrorNG/MirrorNG/commit/e8fac8aba5c570edfb3346c1f68ad9e5fd3b1176))
* sync events can not have the same name if they are in different classes ([#2054](https://github.com/MirrorNG/MirrorNG/issues/2054)) ([c91308f](https://github.com/MirrorNG/MirrorNG/commit/c91308fb0461e54292940ce6fa42bb6cd9800d89))
* syncvars in commands work again ([#1131](https://github.com/MirrorNG/MirrorNG/issues/1131)) ([c24a73f](https://github.com/MirrorNG/MirrorNG/commit/c24a73f6c9bbe25e98a6708f05b89a63dfc54b74))
* syntax error in release job ([2eeaea4](https://github.com/MirrorNG/MirrorNG/commit/2eeaea41bc81cfe0c191b39da912adc565e11ec7))
* TargetRpc now works accross assemblies ([#1130](https://github.com/MirrorNG/MirrorNG/issues/1130)) ([5ecd646](https://github.com/MirrorNG/MirrorNG/commit/5ecd646134791c80d8b53759de0d8aafddc31aeb)), closes [#1128](https://github.com/MirrorNG/MirrorNG/issues/1128)
* tcp server Tests ([3b95477](https://github.com/MirrorNG/MirrorNG/commit/3b954777f16a41469d953e3744c5d68554e3d200))
* Telepathy reverted to older version to fix freezes when calling Client.Disconnect on some platforms like Windows 10 ([d0d77b6](https://github.com/MirrorNG/MirrorNG/commit/d0d77b661cd07e25887f0e2f4c2d72b4f65240a2))
* Telepathy updated to latest version: protect against allocation attacks via MaxMessageSize. Can be configured in the TelepathyTransport component now. ([67d715f](https://github.com/MirrorNG/MirrorNG/commit/67d715fe7416e790bcddcd4e23bb2cb8fbbc54e8))
* Telepathy updated to latest version. Threads are closed properly now. ([4007423](https://github.com/MirrorNG/MirrorNG/commit/4007423db28f7044f6aa97b108a6bfbe3f2d46a9))
* Telepathy works on .net core again ([cb3d9f0](https://github.com/MirrorNG/MirrorNG/commit/cb3d9f0d08a961b345ce533d1ce64602f7041e1c))
* the Room scene references other scenes ([9b60871](https://github.com/MirrorNG/MirrorNG/commit/9b60871e2ea1a2912c0af3d95796660fc04dc569))
* there is no lobby example ([b1e05ef](https://github.com/MirrorNG/MirrorNG/commit/b1e05efb19984ce615d20a16a6c4b09a8897da6a))
* ui bug where additive button is not reset ([#311](https://github.com/MirrorNG/MirrorNG/issues/311)) ([5effce9](https://github.com/MirrorNG/MirrorNG/commit/5effce9abcea0274412cb97100e1f06e4ae01028))
* update interfaces for recent changes that were missed ([#309](https://github.com/MirrorNG/MirrorNG/issues/309)) ([a17e760](https://github.com/MirrorNG/MirrorNG/commit/a17e760e36d581ba964120af11678b66a1248ecc))
* Updated NetworkRoomPlayer inspector and doc and image ([a4ffcbe](https://github.com/MirrorNG/MirrorNG/commit/a4ffcbe280e2e2318d7cd2988379af74f0d32021))
* Use big endian for packet size ([1ddcbec](https://github.com/MirrorNG/MirrorNG/commit/1ddcbec93509e14169bddbb2a38a7cf0d53776e4))
* Use path instead of name in Room Example ([5d4bc47](https://github.com/MirrorNG/MirrorNG/commit/5d4bc47d46098f920f9e3468d0f276e336488e42))
* Use ReplaceHandler instead of RegisterHandler in NetworkManager ([ffc276c](https://github.com/MirrorNG/MirrorNG/commit/ffc276cb79c4202964275642097451b78a817c8a))
* version file ([#1337](https://github.com/MirrorNG/MirrorNG/issues/1337)) ([ed7e509](https://github.com/MirrorNG/MirrorNG/commit/ed7e509ed6f77f2e694966a1c21130e3488f443d))
* weaver Cmd/Rpc/Target prefix check is no longer trash ([#707](https://github.com/MirrorNG/MirrorNG/issues/707)) ([699a261](https://github.com/MirrorNG/MirrorNG/commit/699a261e91078b65f3fb1a51a5838b05be2c87d6))
* weaver now processes multiple SyncEvent per class ([#2055](https://github.com/MirrorNG/MirrorNG/issues/2055)) ([b316b35](https://github.com/MirrorNG/MirrorNG/commit/b316b35d46868a7e11c7b2005570efeec843efe1))
* weaver support array of custom types ([#1470](https://github.com/MirrorNG/MirrorNG/issues/1470)) ([d0b0bc9](https://github.com/MirrorNG/MirrorNG/commit/d0b0bc92bc33ff34491102a2f9e1855f2a5ed476))
* weaver syncLists now checks for SerializeItem in base class ([#1768](https://github.com/MirrorNG/MirrorNG/issues/1768)) ([1af5b4e](https://github.com/MirrorNG/MirrorNG/commit/1af5b4ed2f81b4450881fb11fa9b4b7e198274cb))
* webgl build fix [#1136](https://github.com/MirrorNG/MirrorNG/issues/1136) ([#1137](https://github.com/MirrorNG/MirrorNG/issues/1137)) ([c85d0df](https://github.com/MirrorNG/MirrorNG/commit/c85d0df5332c63c0e0107e6c99cea5de37c087fc))
* Websockets Transport now handles being disabled for scene changes ([#1994](https://github.com/MirrorNG/MirrorNG/issues/1994)) ([5480a58](https://github.com/MirrorNG/MirrorNG/commit/5480a583e13b9183a3670450af639f4e766cc358))
* WebSockets: Force KeepAliveInterval to Zero ([9a42fe3](https://github.com/MirrorNG/MirrorNG/commit/9a42fe334251852ab12e721db72cb12e98de82e8))
* when modifying a prefab, Unity calls OnValidate for all scene objects based on that prefab, which caused Mirror to reset the sceneId because we only checked if a prefab is currently edited, not if THIS prefab is currently edited ([db99dd7](https://github.com/MirrorNG/MirrorNG/commit/db99dd7b3d4c93969c02c5fa7b3e3a1a2948cd7e))
* Wrong method names in ClientSceneTests ([ab3f353](https://github.com/MirrorNG/MirrorNG/commit/ab3f353b33b3068a6ac1649613a28b0977a72685)…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants