Commit Graph

86 Commits

Author SHA1 Message Date
MrGadget
3e1eb7998d
feat(Transport): Reimplement Transport Exception Actions (#3461)
* feat(Transport): Reimplement Transport Exception Actions

* Fixed Script Templates

* fix: Updated Network Transform Template

* fix(NetworkIdentity): Separate ResetState (#3742)

* fix(NetworkTransform): Separate ResetState
We should not have hijacked Unity's callback for runtime resets.

* Rename test too

* fix(InterestManagement): Separate ResetState (#3743)

* fix(InterestManagement): Separate ResetState
We should not have hijacked Unity's callback for runtime resets.

* Updated Template

* feat(NetworkTransform): Default Sync Direction = Client To Server (#3741)

* feat(NetworkTransform): Default Sync Direction = Client To Server
- This is done in Reset so Network Behaviour isn't effected.
- This will not change NT components already in place on objects / prefabs unless user manually chooses Reset in the inspector.

* Update Assets/Mirror/Components/NetworkTransform/NetworkTransformBase.cs

---------

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>

* Prediction: detect renderers in children

* Add missing replace handler override to NetworkServer (#3744)

* perf(BenchmarkIdle Example): Lowered spawn amount to 10k (#3745)

50k causes a long delay, and looks like Unity has initially frozen, even on beefy machines.
To prevent users from thinking this, and perhaps force closing, amount is lowered to something still crazy, but more reasonable. :)
- Nothing else has been touched

* fix(Room Example): Updated Reward Script
- Added Headers
- made `available` private with ReadOnly

* feat(NetworkClient): Add ReplaceHandler with channel param (#3747)

* breaking(NetworkClient): Remove NetworkConnection parameter from ReplaceHandler
There is only one connection on client.
Aligns with RegisterHandler that takes no NetworkConnection parameter.

* feat(NetworkClient): Add ReplaceHandler with channel param

* breaking(NetworkIdentity): Rename visible to visibility (#3748)

* breaking(NetworkIdentity): Rename visible to visibility

* Remove TODO comment

* Prediction: physics copy now has the correct layer assigned to fix predicted objects falling through the ground in games which use custom physics collision matrix

* Update Readme: prediction status

* fix(MirrorBenchmarkIdle): Spawn Amount Correction

* Prediction: disable log spam

* Prediction: fix wrong null check

* Prediction: catch errors

* Prediction: catch errors early

* chore(CI): RunUnityTests - updated unityVersions

* fix(Prediction): fix MoveColliders not copying isTrigger

* Prediction: make Move.* functions static for reuse later

* Prediction: MoveAllColliders helper for reuse

* fix(Prediction): now supports interest management by moving physics copy's components back onto self before destroying the physics copy

* Prediction: now supports colliders on children

* comments

* fix(Prediction): when copying child Colliders, copy their relative position/rotation/scale too

* fix(Prediction): child colliders now have the correct layer too

* oops

* Prediction: move GameObject/MonoBehaviour copying code into PredicitonUtils.cs

* Prediction: MovePhysicsComponents helper function

* Prediction: comments

* Prediction: collider materials are now copied too

* feat(SyncVar): Arrays are supported (#3750)

* feat(SyncVar): Arrays are supported

* Moved and revised SyncVarsCantBeArray test
- Now named SyncVarsCanBeArray
- thisShouldntWork renamed to thisShouldWork

* Prediction: support all Joints

* Prediction: add support for predicted objects which are children of parents with non-default scale

* perf(Team Interest Mgmt): Complete Overhaul (#3730)

* WIP

* perf(Team Interest Mgmt) Use Dictionary instead of spawned
This is better than iterating all spawned objects and doing TryGetComponent in Update.

* TeamIntMgmt WIP

* NetworkTeam SerializeField, no SyncVar

* Fixed Tooltip

* Removed SyncVar on forceShown

* Fixed issues per review

* Fixed comments and naming

* Remove ReadOnly

* PredictionUtils: Fixed pre-Unity 2022.3 errors

* PredictionUtils: Fixed pre-Unity 2020.3 errors

* chore(CI): RunUnityTests - updated unityVersion

* NetworkBehaviour: Improved comments

* Edgegap Hosting: updated to latest version for fixes and Websocket support

* PredictedRigidbody: improve logging

* Add network messages to lookup dict in network server replace handler (#3753)

* Add network mesages to lookup dict in network client replace handler (#3754)

* Prediction: rename DestroyCopies to DestroyGhosts for consistency

* syntax

* perf(Prediction): cache .transform getter because this is performance critical

* perf(Prediction): optimize LateUpdate because this shows in profiler! deep profiling: 93 objects, before=0.54ms, after=0.22ms => 2.5x faster!

* perf(Prediction): optimize ghosts. deep profiling: 93 objects before=0.08ms after =0.03ms!

* chore: RunUnityTest - upload-artifact@v4

* chore(CI): Semantic.yml - use v4 of github actions

* fix(MultiplexTransport): Better Startup Logging

* perf(PredictedRigidbody): next round of optimizations

* perf(Extensions): Add shim for transform.GetPositionAndRotation (#3755)

Doesn't exist in unity versions 2021.2 or earlier

* ThreadLog: more obvious prefix!

* fix(MultiplexTransport): Fixed log output

* KcpTransport: fixed ToString to match other transports

* fix typos

* fix(MultiplexTransport): Use TryGetValue for Lookups (#3758)

* NetworkManager: fixed comment

* Prediction: warn about not readable meshes

* NetworkTime: SendPing method added.

* fix(NetworkClient): Call NetworkTime.SendPing from OnTransportConnected (#3686)

* fix: fixing time not being sent on connect

client does not send ping if connecting to server within 2 seconds of starting, the new PingNow function will tell client to send the message right away instead of after lastPingTime+PingInterval

* Update Assets/Mirror/Core/NetworkTime.cs

* Update Assets/Mirror/Core/NetworkTime.cs

* Update Assets/Mirror/Core/NetworkClient.cs

* Update Assets/Mirror/Core/NetworkTime.cs

---------

Co-authored-by: MrGadget <9826063+MrGadget1024@users.noreply.github.com>

* SyncDictionary: Fixed typo in comment

* feat: NT-UR bit flag changed detection to lower bandwidth usage. (#3721)

* feat: NT-UR bit flag changed detection to lower bandwidth usage.

Also major credits to our Ninja.

* Tooltip updated

* fix: NT-Unreliable Quaternion Compression Fix

Credits to ninja of course :D

* NT-U new improvements

Credits to Ninja

* Nothing to see here..

* Added comment to Quat Rotation Fix

* Sensitivity check to improve value comparisons.

Without this, X 0 and X -4.955753E-07 (0) would trigger as a change of value.
Helps epsilon/floating point inaccuracies.

* Moved around checks.

rotationChanged not needed now for non-compressed bool, as we check individual rotation sensitivity changes.
We can move this inside quat compress check.

* Use Rot/All, not just RotX as a compress changed flag.

* Set Just Rot.

* Updated Reset to ResetState

* Fixing PR 3571/3572/3572 in this new bitflag branch

---------

Co-authored-by: ninjakickja <80569286+ninjakickja@users.noreply.github.com>

* fix(NetworkManager): FinishStartHost-Don't force localhost (#3759)

* perf(PredictedRigidbody): only record state if changed(!)

* perf(PredictedRigidbody): reduce sends to 1 Hz while idle(!)

* Prediction: expose physics copy components to inheriting classes

* fix(PredictedRigidbody): only show 'hard correcting because too old' warning if older than entire state history limit. not when starting to record only 2-3 entries yet.

* fix(PredictedRigidbody): fix host mode [FakeByte]

* perf(PredictedRigidbody): OnSerialize faster

* breaking: perf: change NB.syncVarDirtyBits to field (#3762)

@miwarnec saw the property showing up while profiling. Very much unnecessary, so lets change that to a field.
BREAKING: Changed NetworkBehaviour.syncVarDirtyBits from a "get-only" property to a field

* feat(NetworkAnimator): Default Sync Direction = Client To Server
- This is done in Reset so Network Behaviour isn't effected.
- This will not change NA components already in place on objects / prefabs unless user manually chooses Reset in the inspector.

* chore(CI): RunUnityTests - updated unityVersions

* chore(CI): RunUnityTests - updated unityVersion

* chore(CI): RunUnityTests - updated unityVersion

* fix(SWT): Improved logging in ClientHandshake
- Added hint to check Server Roles for handshake key mismatches

* feat(NetworkRigidbody): Default Sync Direction = Client To Server (#3764)

- This is done in Reset so Network Behaviour isn't effected.
- This will not change components already in place on objects / prefabs unless user manually chooses Reset in the inspector.

* PredictedRigidbody: add OnBeforeApplyState callback

* doc(ReadMe): Fixed sponsor link

* CanvasNetworkManagerHUD: fixed indent

* perf(Prediction): ghosts-on-demand(!)

* Prediction: sync angularVelocity too

* Prediction: better motion smoothing time

* Prediction: only set velocity if not kinematic

* Prediction: sync delta rotations too [FakeByte]

* fix(PredictedRigidbody): reduce-send-rate considers angular velocity now too!

* fix(Prediction): ConfigurableJoints' range of motion is now moved correctly

* fix: Safer version for FindAnyObjectByType (#3765)

Unity docs are a mess on when FindAnyObjectByType was implemented:
- 2021.3 says it is
- 2022.1 says it's not
- 2022.2 says it is

* chore(CI): RunUnityTests - updated unityVersions

* fix(Prediction): disable setting scale for joints since it causes issues with parenting

* feat: LagCompensator as convenience component that wraps all the Lag Compensation logic

* Update README.md

* LagCompensator: rename collider field to be more obvious in Inspector

* LagCompensator: preview notice

* refactor: NetworkServer DestroyObject(DestroyMode) logic moved to Unspawn() + Destroy to remove the DestroyMode parameter

* fix: NetworkServer.Destroy never destroys scene objects anymore since unlike prefabs, once they are gone we can never instantiate them again (#3771)

* fix: NetworkServer.Spawn now activates inactive GameObjects (for example, in case they were previously Unspawned)

* chore(CI): RunUnityTests - updated unityVersion

* Upgrade to Unity 2021.3.35 LTS

* MIRROR_88_OR_NEWER

* feat: EncryptionTransport (#3768)

* initial working transport

* code cleanup & transport wrap tests

* better connection tests

* Handle bouncycastle exceptions

* clean up usings

* Mirror icon :)

* list to allow for removing entries during loop

* Profiler sampling

* Unity 2019 compat

* code style

* pubkey validation

* use builtin aes engine selector

this is overly optimistic, as the hardware accelerated engine is only available on .net core 3 or higher

* Older unity version fix

* fix: EncryptionTransport uses KDF to ensure fixed size key (#3773)

* reset _time

* fix: EncryptionTransport use KDF to ensure fixed size key

* Expose pub key through transport

* Old Unity compat

* breaking: Asset Store Release
BREAKING CHANGE: Asset Store Release

* Removed empty folder meta

* chore: EncryptionTransport help url (#3774)

* fix: NetworkServer.Destroy now warns instead of throwing for null objects again

* fix: NetworkServer.OnCommandMessage NullReferenceException due to log message accessing a guaranteed-to-be-null value

* feat(Transport): IsEncrypted, EncryptionCipher virtuals

* feat: EncryptionTransport overrides IsEncrypted & Cipher (#3776)

* feat: SWT overrides Transport.IsEncrypted & EncryptionCipher (#3777)

TLS isn't technically correct, but there's no good way to get that info

* SimpleWebTransport: moved overrides down

* fix: #2503 Weaver Custom Read Write functions for Serialization not working over multiple assembly definitions

* chore(CI): RunUnityTests - updated unityVersion

* fix: EdgegapKcp StopHost() null reference exception (#3779)

see https://github.com/MirrorNetworking/Mirror/issues/3708

* fix(ILPostProcessorAssemblyResolver): Ignore Bee.BeeDriver
- There is now BeeDriver2, so using StartsWith

* PredictedRigidbody: make .predictedRigidbody accessible to other components!

* Examples: Prediction Benchmark with readme & current results

* readme changed from .txt to .md for formatting

* Prediction: syntax

* chore(CI): RunUnityTests - updated unityVersions

* PredictedRigidbody: OnDeserialize parsing grouped together (syntax change)

* PredictedRigidbody: syntax

* perf: PredictedRigidbody doesn't log hard correction when ahead anymore

* perf: Prediction.Sample() removed SortedList foreach iteration allocations(!)

* perf: PredictedRigidbody doesn't log "Separating Physics" anymore

* PredictedSyncData struct first step: same reads & writes

* perf: PredictedRigidbody syncs a blittable struct once instead of doing 5 separate reads/writes

* perf: PredictedRigidbody caches IsMoving sqr computations

* inlining

* perf: PredictedRigidbody FixedUpdate caches sqr computations

* perf: PredictedRigidbody RecordState only calls NetworkTime.time getter once

* perf: PredictedRigidbody state properties inlined

* perf: PredictedRigidbody RecordState only grabs count once

* prediction benchmark updated

* perf: PredictedRigidbody UpdateGhosting: only every few frames

* perf: PredictedRigidbody caches physics transform to use GetPositionAndRotation

* ProjectSettings resaved with current Unity version

* PredictedRigidbody: update hard follow commented code

* perf: PredictedRigidbody smoothFollowThreshold squared caching

* perf: PredictedRigidbody MoveTowardsCustom

* perf: PredictedRigidbody MoveTowardsCustom: only calculate distance factor once

* Prediction: RingBuffer perf comments

* feat: Edgegap Lobby Transport & Demo (#3780)

* feat: Edgegap Lobby Transport & Example

* Code Cleanup

* Rename data -> models

* Remove debug logs

* Log errors as OnClient/ServerError dont always log

* Only show joinable lobbies

* naming

* Transport help url

* old unity compat

* Unity 2020 compat as well

* Readme

* lobby name is required + correct placeholder

* Update lobby ui prefab too

* Lobby creation ui tweaks

* lobby url tooltip tweak

* Remove test lobby url

* chore: old unity compat for PredictedRigidbody (#3781)

* fix(EdgegapLobbyKcpTransport): Fixed HelpURL

* EncryptionTransportInspector: Fixed button label

* fix: Edgegap Lobby Create UI Tweaks (#3782)

* chore: Edgegap Lobby Create UI Tweaks

* 3 loading dots

* help urls

---------

Co-authored-by: mischa <16416509+miwarnec@users.noreply.github.com>
Co-authored-by: mischa <info@noobtuts.com>
Co-authored-by: Justin Nolan <justin@nolan.de>
Co-authored-by: JesusLuvsYooh <57072365+JesusLuvsYooh@users.noreply.github.com>
Co-authored-by: Robin Rolf <imer@imer.cc>
Co-authored-by: James Frowen <jamesfrowendev@gmail.com>
Co-authored-by: ninjakickja <80569286+ninjakickja@users.noreply.github.com>
Co-authored-by: mischa <16416509+vis2k@users.noreply.github.com>
2024-04-15 22:57:03 +08:00
MrGadget
90fc00a446
feat(MoveToAssetsFolder): Editor Script Moves ScriptTemplates to Assets (#3805)
- Ensures ScriptTemplates folder is in Assets root
- Allows ScriptTemplates folder to be included in Asset Store package under Mirror folder
- Only runs once when Unity first loads project via SessionState flag
2024-04-15 10:52:58 -04:00
MrGadget
e10ab75bf5
fix(InterestManagement): Separate ResetState (#3743)
* fix(InterestManagement): Separate ResetState
We should not have hijacked Unity's callback for runtime resets.

* Updated Template
2024-01-20 10:46:29 +01:00
MrGadget
87979aeb38 fix: Updated Network Transform Template 2024-01-19 14:30:05 -05:00
MrGadget
92b99335d8
fix(ConnectionQuality): Move Connection Quality to Network Client (#3693)
* fix(ConnectionQuality): Move Connection Quality to Network Client
- Added zero as disable value
- Added Tooltip and Range to NetworkManager.connectionQualityInterval
- Obsoleted NetworkManager.OnConnectionQualityChanged
- Added temporary event wireups for OnConnectionQualityChanged
- Removed Action and overrides from NetworkManager template

* Removed stray blank line

* Added ConnectionQualityMethod Selection
- Enum added to ConnectionQuality
- Fields added to NetworkManager and NetworkClient
- Switch added to NetworkClient.UpdateConnectionQuality

* Use right params for Pragmatic

* Renamed Fields in NetworkManager
2023-12-06 10:06:31 +01:00
MrGadget1024
bd85c74f52 NetworkManagerWithActions template - made actions non-static
- the singleton is already static, so ref them through that.
2023-11-05 07:54:13 -05:00
MrGadget1024
1cda80369a feat(Templates): Added Script Templates with Actions
- Adds template NetworkManagerWithActions
- Adds template NetworkBehaviourWithActions
2023-11-04 17:46:33 -04:00
MrGadget1024
8cd6cb1602 Renamed Network Authenticator and Interest Mgmt templates 2023-11-04 14:54:11 -04:00
MrGadget1024
075f250976 NetworkBehaviour Template - Added Awake and Start with comments 2023-11-04 14:53:25 -04:00
MrGadget1024
7e80464d5d NetworkManagerTemplate - simplified singleton 2023-11-04 12:54:30 -04:00
mischa
3619be494a feature: allow NetworkBehaviour components in children. solves #2276 (#3486)
* feature: allow child NetworkBehaviour components in children

* Tanks demo: move Turret NetworkTransform to child

* NT TODO

* RequireInParents NI

* NetworkAnimatore allow in children

* call base onvalidate

* Add OnValidate to Script Template

* fix for pre-2020.3 Unity

* MirrorTest: CreateNetworked with NetworkBehaviour in children

* Tests: child networkbehaviours

---------

Co-authored-by: MrGadget1024 <9826063+MrGadget1024@users.noreply.github.com>
2023-05-27 08:25:53 +08:00
JesusLuvsYooh
bafc1277c7
Updated ApplySnapshot ScriptTemplates (#3472) 2023-04-15 18:13:36 +02:00
MrGadget1024
8b1796f0a3 NetworkManagerTemplate: comments 2023-04-10 16:26:33 -04:00
MrGadget1024
a30c85d389 fix(NetworkManagerTemplate): Updated OnServerError / OnClientError comments 2023-04-10 16:18:06 -04:00
MrGadget1024
5c7de2b6e0 fix(Discovery Template): wrapped OnValidate with #if UNITY_EDITOR 2023-03-21 06:55:32 -04:00
MrGadget1024
f0d288be1b Updated Discovery Template
- Added OnValidate and Start overrides
- Improved comments
2023-03-21 06:10:05 -04:00
MrGadget1024
638b3536a5 fix(NetworkAuthenticatorTemplate): Added missing overrides 2023-03-18 11:04:56 -04:00
MrGadget1024
80211ba827 fix: NetworkRoomManager.ReadyStatusChange is now a virtual method
- Script Template updated accordingly.

Fixes #1889
2023-02-09 11:21:06 -05:00
MrGadget1024
2554372913 Updated Interest Management Script Template 2023-01-29 06:44:20 -05:00
MrGadget1024
fdd7a32402 NetworkManager Template - moved Awake override up 2022-12-27 20:00:33 -05:00
MrGadget1024
16d8c08a75 Network Manager Template - moved setting singleton to Awake 2022-12-27 15:23:08 -05:00
MrGadget1024
22fa56da70 Discovery Template - Changed to structs 2022-12-21 09:57:24 -05:00
MrGadget1024
a7fb58d54f Updated NetworkManager Script Template 2022-12-07 16:22:34 -05:00
MrGadget
abd1c1689d NetworkRoomManager - Removed OnRoomClientAddPlayerFailed virtual method
- Fixes #3168
- There is no good place to call that - use OnRoomClientDisconnect or OnRoomStopClient
2022-11-26 14:03:29 -05:00
MrGadget
e0e098531e fixed NetworkManager Script Tempate
- broken by PR #3158
2022-05-13 10:32:44 -04:00
MrGadget
99d3a91f17 Fixed Authenticator Comments
- Fixes #3146
2022-04-18 22:58:16 -04:00
MrGadget
b117b92d08
fix: Updated Templates (#3090) 2022-02-06 06:25:08 -05:00
MrGadget
68f1a605d3 Added OnStopLocalPlayer to NetworkBehaviour Script Template 2022-01-31 00:35:35 -05:00
MrGadget
85e86bd4a0 fix: Network Manager Template singleton 2022-01-18 11:56:55 -05:00
MrGadget
88770f87c6 Updated NetworkManager Template 2022-01-16 01:30:13 -05:00
MrGadget1024
942a0383b0 Updated Authenticator Template 2021-12-17 10:26:08 -05:00
MrGadget1024
5a430d3606 Updated Authenticator Template 2021-12-17 10:08:51 -05:00
MrGadget1024
0445af105d template syntax 2021-12-12 07:45:27 -05:00
MrGadget
d6048911f2
fix: Obsolete NetworkConnection param in client callbacks (#2820)
* Obsoletes NetworkConnection param in client callbacks
- Use NetworkClient.connection instead

* fixed comments

* fixed more comments

* fixed more comments

* Restored original calls to virtuals with pragmas

* Call both old and new methods where possible

* added comments

* updated deprecated date

* fix parameters

* fixed examples

* comments
2021-12-11 12:16:26 -05:00
MrGadget1024
54756ee8d9 restored changes to NT template 2021-12-11 10:14:22 -05:00
vis2k
c08ceb6a82 fix: #3024 Revert NT Bandwidth savings for now 2021-12-11 10:04:01 +01:00
MrGadget1024
d4918f4ca3 feat: NT Uses less bandwidth
- updated template
2021-12-08 07:30:20 -05:00
MrGadget1024
3a1a97f759 Updated Custom Interest Mgmt Template 2021-12-02 18:20:14 -05:00
MrGadget
38c641b948
feat: Added Reset to Interest Management (#3008)
* feat: Added Reset to Interest Management
- Used in Distance and Spatial to reset `lastRebuildTime`.

* Updated Template

* Update Assets/Mirror/Runtime/NetworkServer.cs

Co-authored-by: vis2k <info@noobtuts.com>
2021-12-02 13:54:39 +01:00
MrGadget1024
9862af3aa5 Updated Template 2021-12-01 12:37:40 -05:00
MrGadget
7c389fefd2
feat: Add rotation to NTv2 teleport (#2986)
* feat: Add rotation to NTv2 teleport

* Updated script template

* Forgot Cmd/Rpc can't do overloads...fixed

* overload OnTeleport

* updated comments
2021-11-03 12:11:36 +08:00
MrGadget1024
f83ed02a83 fixed typos in Network Transform Script Template 2021-10-30 12:59:39 -04:00
MrGadget1024
429e80dde3 feat: Added Network Transform Script Template 2021-10-30 12:33:19 -04:00
MrGadget1024
74f7cb168f fix: Network Room Manager Update
- Deprecated Network Connection param from client overrides
- Use NetworkClient.connection instead
- Script Template updated
2021-10-30 05:12:37 -04:00
MrGadget1024
afabdf2c7d feat: Added Custom Interest Management script template 2021-10-29 23:18:45 -04:00
MrGadget1024
1bc8232d60 Updated NetworkManager ScriptTemplate 2021-09-17 04:22:52 -04:00
MrGadget1024
d559d45031 fixed usings order 2021-08-31 10:45:03 -04:00
Shaun He
56910a1f70
* fix: The type or namespace name 'Exception' could not be found (#2889) 2021-08-25 12:17:02 +08:00
MrGadget1024
d4f7a26278 Removed Network Observer Script Template 2021-08-09 00:32:26 -04:00
MrGadget
a3e3543797
feat: Transport Exception Handling (#2835)
* feat: Transport Exception Handling
Transports can raise OnServerError and OnClientError
Both are propagated up through NetworkServer & NetworkClient & NetworkManager
Virtual methods added to Network Manager and Template

Fixes: #2782

* Fixed typo

* Better handling of server error

* Updated template comments

* Updated comments in Transport base class

* Syntax

* Update Transport.cs

* Update NetworkServer.cs

Co-authored-by: vis2k <info@noobtuts.com>
2021-07-15 13:26:01 +08:00