Logically, clients can never fill in a NetworkConnectionToClient parameter.
fixes compilation failing for TargetRpc(NetworkConnectionToClient) with IL2CPP builds.
* Add tests
* Include parent class when counting syncvars
* SyncObject is unneeded
I was also testing SyncObjects and it turned out they were unaffected of this issue. I removed SyncObject from my tests but forgot to do so here.
* Remove host SyncVar hook guard test
* Update Assets/Mirror/Editor/Weaver/Processors/SyncVarAttributeProcessor.cs
* Update SyncVarAttributeProcessor.cs
* Update Assets/Mirror/Tests/Editor/SyncVarAttributeTest.cs
---------
Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
* fix(NetworkManager): Try to avoid missing transport errors
- If none assigned, tries to use first Transport available and warns user
- If none available, throws clear error to user what to do.
* improved error msg
* Add Tests
* Fix tests relying on undefined behaviors
- GetSyncVarGameObjectOnClient()
The test relies on the behavior that GameObject SyncVar lookup will behave as client if both isServer and isClient is false.
The test is modified in a way that removes unnecessary object creation and uses a single object that is made sure it's context is client-side.
- TestSyncingAbstractNetworkBehaviour()
This test has been comparing null against null. The test is modified so it simulates each context better.
* Make cached SyncVar getters fallback on no network context
* Remove unnecessary assertions
Gone under my radar doing mindless copy & pasting
* Update Assets/Mirror/Core/NetworkBehaviour.cs
* Update Assets/Mirror/Core/NetworkBehaviour.cs
* Update Assets/Mirror/Core/NetworkBehaviour.cs
---------
Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
* fix: kcp2k V1.35 [2023-04-05]
- fix: KcpClients now need to validate with a secure cookie in order to protect against
UDP spoofing. fixes:
https://github.com/MirrorNetworking/Mirror/issues/3286
[disclosed by IncludeSec]
- KcpClient/Server: change callbacks to protected so inheriting classes can use them too
- KcpClient/Server: change config visibility to protected
* credits
* credits
* link blog post
* 2019 compatibility
* Update Assets/Mirror/Transports/KCP/kcp2k/highlevel/KcpPeer.cs
Co-authored-by: MrGadget <9826063+MrGadget1024@users.noreply.github.com>
* Update Assets/Mirror/Transports/KCP/kcp2k/highlevel/KcpPeer.cs
Co-authored-by: MrGadget <9826063+MrGadget1024@users.noreply.github.com>
---------
Co-authored-by: MrGadget <9826063+MrGadget1024@users.noreply.github.com>
* perf(SceneInterestManagement): Only RebuildSceneObservers in Update
Don't RebuildSceneObservers in OnDestroy...that will happen in Update.
Multiple objects could be destroyed in same frame and we don't
want to rebuild for each one...let Update do it once.
* perf(MatchInterestManagement): Only RebuildMatchObservers in Update
Don't RebuildMatchObservers in OnDestroy...that will happen in Update.
Multiple objects could be destroyed in same frame and we don't
want to rebuild for each one...let Update do it once.
* perf(TeamInterestManagement): Only RebuildMatchObservers in Update
Don't TeamInterestManagement in OnDestroy...that will happen in Update.
Multiple objects could be destroyed in same frame and we don't
want to rebuild for each one...let Update do it once.
* SceneInterestManagement: Add curentScene to dirtyScenes in OnDestroy
* MatchInterestManagement - add match to dirtyMatches
* TeamInterestManagement - add team to dirtyTeams
- Moved transport and OnServerFound to base class
- Consolidated Start in base class
- Virtual OnValidate in base class
- Better public field order
- Added missing tooltip
- Send/SendTo/Receive/ReceiveFrom NonBlocking extensions.
to encapsulate WouldBlock allocations, exceptions, etc.
allows for reuse when overwriting KcpServer/Client (i.e. for relays).
- KcpClient: Tick/Incoming/Outgoing can now be overwritten (virtual)
- breaking: KcpClient now takes KcpConfig in constructor instead of in Connect.
cleaner, and prepares for KcpConfig.MTU setting.
- KcpConfig now includes MTU; KcpPeer now works with KcpConfig's MTU, KcpServer/Client
buffers are now created with config's MTU.
* breaking: Remove NetworkClient.serverIP
- If we're never going to set it to anything, no reason to have it.
- Transport has no mechanism to return anything for it
Host client hardcodes `address` to "localhost" in both LocalConnectionToServer and LocalConnetionToClient, so obsolete the former telling users to use the latter if they aren't already.
Users can get the endpoint from NetworkManager or Discovery, as they must be doing now since those work and serverIp does not.
* Update main.yml
* fix: kcp2p V1.30 (#3391)
- fix: set send/recv buffer sizes directly instead of iterating to find the limit.
fixes: https://github.com/MirrorNetworking/Mirror/issues/3390
- fix: server & client sockets are now always non-blocking to ensure main thread never
blocks on socket.recv/send. Send() now also handles WouldBlock.
- fix: socket.Receive/From directly with non-blocking sockets and handle WouldBlock,
instead of socket.Poll. faster, more obvious, and fixes Poll() looping forever while
socket is in error state. fixes: https://github.com/MirrorNetworking/Mirror/issues/2733
* Shortened PingWindowSize to get a faster more accurate result. (#3395)
* Shortened PingWindowSize to get a faster more accurate result.
Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users
* Revert "Shortened PingWindowSize to get a faster more accurate result."
This reverts commit 0a5916b4dc.
* Revert "Shortened PingWindowSize to get a faster more accurate result."
This reverts commit 0a5916b4dc.
* Shortened PingWindowSize to get a faster more accurate result.
Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users
* Shortened PingWindowSize to get a faster more accurate result.
Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users, choosing 6 gives us an average of 3 results, where as the previous 10, would wait for 5, it should be a slight visual improvement.
* fix: Use PingWindowSize instead of hardcoded value (#3396)
fix: Use PingWindowSize instead of hardcoded value
* KcpClient: Tick/Incoming/Outgoing can now be overwritten (virtual)
* RunUnityTests - Updated unityVersion
* fix: Write for non-spawned NB only writes 0 netId (fixes: #3399) (#3400)
* Failing test for non-spawned NB writer/reader
* fix: Write for non-spawned NB only writes 0 netId
Instead of writing 0 and component index which does not match what the reader expects (it will stop reading netId is 0)
Fixes#3399
* breaking: Removed old Unity 2018 / 2019_3 compiler defines (#3397)
- we only suppport Unity 2019.4.40 and later LTS releases.
BREAKING: Removed old 2018 / 2019 compiler defines
* RunUnityTests - try different test reporter
* RunUnityTests commented out Archive and Publish temporarily
* RunUnityTests - disable game-ci built-in test reporter
* RunUnityTests - cleanup
---------
Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
Co-authored-by: JesusLuvsYooh <57072365+JesusLuvsYooh@users.noreply.github.com>
Co-authored-by: vis2k <info@noobtuts.com>
Co-authored-by: Robin Rolf <imer@imer.cc>
* Failing test for non-spawned NB writer/reader
* fix: Write for non-spawned NB only writes 0 netId
Instead of writing 0 and component index which does not match what the reader expects (it will stop reading netId is 0)
Fixes#3399
* Shortened PingWindowSize to get a faster more accurate result.
Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users
* Revert "Shortened PingWindowSize to get a faster more accurate result."
This reverts commit 0a5916b4dc.
* Revert "Shortened PingWindowSize to get a faster more accurate result."
This reverts commit 0a5916b4dc.
* Shortened PingWindowSize to get a faster more accurate result.
Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users
* Shortened PingWindowSize to get a faster more accurate result.
Shortened PingWindowSize to get a faster more accurate result.
It taking too long to calculate the average may look bad to users, choosing 6 gives us an average of 3 results, where as the previous 10, would wait for 5, it should be a slight visual improvement.
- fix: set send/recv buffer sizes directly instead of iterating to find the limit.
fixes: https://github.com/MirrorNetworking/Mirror/issues/3390
- fix: server & client sockets are now always non-blocking to ensure main thread never
blocks on socket.recv/send. Send() now also handles WouldBlock.
- fix: socket.Receive/From directly with non-blocking sockets and handle WouldBlock,
instead of socket.Poll. faster, more obvious, and fixes Poll() looping forever while
socket is in error state. fixes: https://github.com/MirrorNetworking/Mirror/issues/2733
* Organize WeaverTypes
- Put all NetworkBehaviors together
- Put Writer with Reader
- Put Remote things together
- moved ScriptableObjectType down
* moved NetworkClientConnectionReference up
We always use a specific reader for NB syncvars, so if a custom defined writer handles data differently this leads to data mismatches.
Supporting custom readers for NB syncvars will just lead to too many edge cases and unexpected behaviour, so dont do it (see https://github.com/MirrorNetworking/Mirror/issues/2680#issuecomment-1435093212 for rationale).
Fixes#2680
* perf: Weave in pre-computed function hash for RPCs
Instead of computing it at runtime for every call
See #3381, #3377 and #3375
* Update Assets/Mirror/Editor/Weaver/Processors/CommandProcessor.cs
* Update Assets/Mirror/Editor/Weaver/Processors/RpcProcessor.cs
* Update Assets/Mirror/Editor/Weaver/Processors/TargetRpcProcessor.cs
---------
Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
* feat: InterestManagementBase
A interest management base class that allows more advanced interest management by bypassing the built-in HashSet checks via Rebuild overriding
* Update Assets/Mirror/Core/InterestManagementBase.cs
---------
Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
This cleanup step prepares for InterestManagement classes being able to customize the rebuild logic, but for that we should move it out of the NetworkServer class