diff --git a/com.unity.netcode.gameobjects/CHANGELOG.md b/com.unity.netcode.gameobjects/CHANGELOG.md index 190981fad4..64a4be29cc 100644 --- a/com.unity.netcode.gameobjects/CHANGELOG.md +++ b/com.unity.netcode.gameobjects/CHANGELOG.md @@ -14,7 +14,7 @@ Additional documentation and release notes are available at [Multiplayer Documen - `NetworkTransport.EarlyUpdate` and `NetworkTransport.PostLateUpdate` are now public. For the vast majority of users, there's really no point in ever calling those methods directly (the `NetworkManager` handles it). It's only useful if wrapping transports outside of NGO. (#3890) ### Changed - +- Improve performance of `NetworkRigidbodyBase`. (#3906) ### Deprecated diff --git a/com.unity.netcode.gameobjects/Runtime/Components/NetworkRigidBodyBase.cs b/com.unity.netcode.gameobjects/Runtime/Components/NetworkRigidBodyBase.cs index 9fbf8a26c9..0d0de9afa8 100644 --- a/com.unity.netcode.gameobjects/Runtime/Components/NetworkRigidBodyBase.cs +++ b/com.unity.netcode.gameobjects/Runtime/Components/NetworkRigidBodyBase.cs @@ -52,6 +52,7 @@ public abstract class NetworkRigidbodyBase : NetworkBehaviour #endif + private NetworkManager m_LocalNetworkManager; // Used to cache the authority state of this Rigidbody during the last frame private bool m_IsAuthority; @@ -971,7 +972,7 @@ protected override void OnOwnershipChanged(ulong previous, ulong current) /// internal void UpdateOwnershipAuthority() { - if (NetworkManager.DistributedAuthorityMode) + if (m_LocalNetworkManager.DistributedAuthorityMode) { // When in distributed authority mode, always use HasAuthority m_IsAuthority = HasAuthority; @@ -980,7 +981,7 @@ internal void UpdateOwnershipAuthority() { if (NetworkTransform.IsServerAuthoritative()) { - m_IsAuthority = NetworkManager.IsServer; + m_IsAuthority = m_LocalNetworkManager.IsServer; } else { @@ -994,11 +995,16 @@ internal void UpdateOwnershipAuthority() } } + internal override void InternalOnNetworkPreSpawn(ref NetworkManager networkManager) + { + m_LocalNetworkManager = networkManager; + } + /// public override void OnNetworkSpawn() { - m_TickFrequency = 1.0f / NetworkManager.NetworkConfig.TickRate; - m_TickRate = NetworkManager.NetworkConfig.TickRate; + m_TickFrequency = 1.0f / m_LocalNetworkManager.NetworkConfig.TickRate; + m_TickRate = m_LocalNetworkManager.NetworkConfig.TickRate; UpdateOwnershipAuthority(); }