* perf: Batching. Batches message into Transport.GetMaxPacketSize sized chunks and sends them every batchInterval
* don't log time
* Transport.GetMaxBatchSize and kcp override it to always use MTU
* remove comment
* NetworkConnectionToClient tests
* Test: Send_BatchesUntilUpdate
* Test: Send_BatchesUntilInterval
* fix: initialize last send time with NetworkTime.time
* better comment
* fixing reset after sending batch
Need to reset both position and length
* revert the transportreceive change for localconnections.
before it didn't work because of the length bug that is fixed now.
* added test to avoid length bug in the future
* optional
* enable batching in benchmark demo for max scale
Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
- fix: unreliable messages reset timeout now too
- perf: KcpConnection OnCheckEnabled callback changed to a simple 'paused' boolean.
This is faster than invoking a Func<bool> every time and allows us to fix#8 more
easily later by calling .Pause/.Unpause from OnEnable/OnDisable in MirrorTransport.
- fix#8: Unpause now resets timeout to fix a bug where Mirror would pause kcp,
change the scene which took >10s, then unpause and kcp would detect the lack of
any messages for >10s as timeout. Added test to make sure it never happens again.
- MirrorTransport: statistics logging for headless servers
- Mirror Transport: Send/Receive window size increased once more from 2048 to 4096.
this avoids the first line of the stacktrace being on the same line as the Exception. this is better because the Exception line could be line and it is easy to miss the first stack trace line.
* moving FindPath to editor scripts
this allows this function to be used by other scripts
* Update Assets/Mirror/Editor/EditorHelper.cs
* removing extra using
* fix: prevent allocation of massive array
A poison message could contain an invalid length causing us to allocate massive arrays
* throw exception instead
* Update Assets/Mirror/Runtime/NetworkReader.cs
Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
* test for ReadArray
* swapping order of equation so that length doesnt overflow
* adding test case
* adding more tests for array length
* swapping order
* fixing expected message
Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
Unity has added new private LogWarning methods in 2020.2 which causes weaver to find the wrong method. Checking the parameters as we as the name will find the correct method.
fixes: https://github.com/vis2k/Mirror/issues/2366
* adding MakeGeneric method
* adding tests for NB syncvar+hook
* adding functions to NetworkBehaviour
* getting references to new functions
* fixing NB read so it always reads same number of bytes as write
* adding backing field and serialize for Nb Syncvar
* extra test
* adding ignore to transform test
* fixing test
Seems like this has come up a few times so here is a commit to sort this out.
We shouldn't have to worry about the order of the using, we should just let plugins automatically sort them. They are sorted into alphabetical order expect for system becase we have `dotnet_sort_system_directives_first = true` enabled in `.editorconfig`
* fix: stopping values being reset before OnDestory is called
* matches server side logic
* if an object is being fully destroyed it doesn't need its values to be reset
* adding read/write functions
* adding method to get WriteNetworkBehaviour
* adding methods to weavertypes
* adding method to get ReadNetworkBehaviour
* weaver test for NetworkBehaviour in RPC
* renaming var
* writing tests to make sure read/write works
* registering functions
* changing function and adding comment
* checking any writer is set
* adding Description to test
* collection test
* fixing call
* removing errors, networkbehaviour as read/write
* adding test to use the reader that weaver generates
* fixing import
* simplifying test
* removing null from spawned
* improving throw
* adding code coverage
* applying code suggestions
* Using TypeReference with IEqualityComparer instead of string to keep reference to type
* using targetType to initialize write/read functions
* test to make sure write function is set
```
UnityException: ToString is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'GamePlay' on game object 'GamePlay'.
See "Script Serialization" page in the Unity Manual for further details.
UnityEngine.Object.ToString () (at <a979f18d51af41179d12b797e8c5be14>:0)
UnityEngine.Logger.GetString (System.Object message) (at <a979f18d51af41179d12b797e8c5be14>:0)
UnityEngine.Logger.LogError (System.String tag, System.Object message) (at <a979f18d51af41179d12b797e8c5be14>:0)
Mirror.NetworkBehaviour.InitSyncObject (Mirror.SyncObject syncObject) (at Assets/System/3rdParty/Mirror/Runtime/NetworkBehaviour.cs:168)
myGame.GamePlay..ctor () (at Assets/System/GamePlay.cs:18)
```
- consolidate nested if
- set kinematic by default on scene objects
- set kinematic false on server in AddForce::Start
- added field for Rigidbody component reference via inspector
- eliminated calling GetComponent every frame
- set SyncInverval to zero on both NetworkTransforms and NetworkRigidbody