Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
a1fac91
chore: optimization
noellie-velez Dec 24, 2025
b1b85ac
chore: optimize NetworkManager accessors
noellie-velez Dec 29, 2025
0a28480
Merge branch 'develop-2.0.0' into chore/simplify-accessors-network-ob…
noellie-velez Dec 29, 2025
606c9f7
Using m_CachedNetworkObject instead of NetworkObject
noellie-velez Dec 29, 2025
18a1805
Using m_CachedNetworkManager instead of NetworkManager
noellie-velez Dec 29, 2025
7a49a9a
Convert "==" to explicit Unity engine object lifetime check
noellie-velez Dec 29, 2025
7d9ffd5
Fix wording
noellie-velez Dec 29, 2025
b255749
Use m_CachedParent and Scene
noellie-velez Dec 29, 2025
0ebab51
Changed parentObject scope
noellie-velez Dec 29, 2025
a166482
Removing comments (added in PR)
noellie-velez Dec 29, 2025
f817796
Revert null check removal for Log
noellie-velez Dec 29, 2025
e8d6053
Avoiding breaking change
noellie-velez Jan 5, 2026
43cc1cd
Reverting NetworkManager changes
noellie-velez Jan 5, 2026
25e9577
Address PR feedback
noellie-velez Jan 6, 2026
73a0bf8
Fix opposite null check
noellie-velez Jan 7, 2026
3f17e83
Address PR feedback
noellie-velez Jan 8, 2026
e02e462
Cleanup NetworkObject: use cached NetworkManager
noellie-velez Jan 8, 2026
690cabb
Cached NetworkManager instead of lazy instantiation
noellie-velez Jan 8, 2026
6860816
Merge branch 'develop-2.0.0' into chore/simplify-accessors-network-ob…
noellie-velez Jan 8, 2026
db9b406
Merge branch 'chore/simplify-accessors-network-object' into chore/sim…
noellie-velez Jan 9, 2026
815d310
Comments
noellie-velez Jan 9, 2026
10f258e
Merge branch 'develop-2.0.0' into chore/simplify-accessors-misc
noellie-velez Jan 19, 2026
e1fbce0
Removing comment
noellie-velez Jan 19, 2026
a32d7e5
Use cached NetworkManager in NetworkAnimator
noellie-velez Mar 16, 2026
f3e4361
Add and use cached NetworkManager in RigidbodyBase
noellie-velez Mar 16, 2026
ab880f8
Merge branch 'develop-2.0.0' into chore/simplify-accessors-misc
noellie-velez Mar 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ internal void DeregisterUpdate()
internal NetworkAnimatorStateChangeHandler(NetworkAnimator networkAnimator)
{
m_NetworkAnimator = networkAnimator;
m_IsServer = networkAnimator.NetworkManager.IsServer;
m_IsServer = networkAnimator.LocalNetworkManager.IsServer;
NetworkUpdateLoop.RegisterNetworkUpdate(this, NetworkUpdateStage.PreUpdate);
}
}
Expand Down Expand Up @@ -279,7 +279,7 @@ public Animator Animator
private Dictionary<int, Dictionary<int, TransitionStateinfo>> m_DestinationStateToTransitioninfo = new Dictionary<int, Dictionary<int, TransitionStateinfo>>();

// Named differently to avoid serialization conflicts with NetworkBehaviour
private NetworkManager m_LocalNetworkManager;
internal NetworkManager LocalNetworkManager;

internal bool DistributedAuthorityMode;

Expand Down Expand Up @@ -915,8 +915,8 @@ internal AnimationMessage GetAnimationMessage()
internal override void InternalOnNetworkPreSpawn(ref NetworkManager networkManager)
{
// Save internal state references
m_LocalNetworkManager = networkManager;
DistributedAuthorityMode = m_LocalNetworkManager.DistributedAuthorityMode;
LocalNetworkManager = networkManager;
DistributedAuthorityMode = LocalNetworkManager.DistributedAuthorityMode;
}

/// <inheritdoc/>
Expand Down Expand Up @@ -1176,7 +1176,7 @@ internal void CheckForAnimatorChanges()

if (m_Animator.runtimeAnimatorController == null)
{
if (m_LocalNetworkManager.LogLevel == LogLevel.Developer)
if (LocalNetworkManager.LogLevel == LogLevel.Developer)
{
Debug.LogError($"[{GetType().Name}] Could not find an assigned {nameof(RuntimeAnimatorController)}! Cannot check {nameof(Animator)} for changes in state!");
}
Expand Down Expand Up @@ -1211,9 +1211,9 @@ internal void CheckForAnimatorChanges()
{
// Just notify all remote clients and not the local server
m_TargetGroup.Clear();
foreach (var clientId in m_LocalNetworkManager.ConnectionManager.ConnectedClientIds)
foreach (var clientId in LocalNetworkManager.ConnectionManager.ConnectedClientIds)
{
if (clientId == m_LocalNetworkManager.LocalClientId || !NetworkObject.Observers.Contains(clientId))
if (clientId == LocalNetworkManager.LocalClientId || !NetworkObject.Observers.Contains(clientId))
{
continue;
}
Expand Down Expand Up @@ -1241,7 +1241,7 @@ private void SendParametersUpdate(RpcParams rpcParams = default, bool sendDirect
}
else
{
Debug.LogError($"[{name}][Client-{m_LocalNetworkManager.LocalClientId}] Attempting to send parameter updates but not the owner!");
Debug.LogError($"[{name}][Client-{LocalNetworkManager.LocalClientId}] Attempting to send parameter updates but not the owner!");
}
}
else
Expand Down Expand Up @@ -1491,18 +1491,18 @@ internal void UpdateAnimationState(AnimationState animationState)
// Cross fade from the current to the destination state for the transitions duration while starting at the server's current normalized time of the transition
m_Animator.CrossFade(transitionStateInfo.DestinationState, transitionStateInfo.TransitionDuration, transitionStateInfo.Layer, 0.0f, animationState.NormalizedTime);
}
else if (m_LocalNetworkManager.LogLevel == LogLevel.Developer)
else if (LocalNetworkManager.LogLevel == LogLevel.Developer)
{
NetworkLog.LogWarning($"Current State Hash ({currentState.fullPathHash}) != AnimationState.StateHash ({animationState.StateHash})");
}
}
else if (m_LocalNetworkManager.LogLevel == LogLevel.Developer)
else if (LocalNetworkManager.LogLevel == LogLevel.Developer)
{
NetworkLog.LogError($"[DestinationState To Transition Info] Layer ({animationState.Layer}) sub-table does not contain destination state ({animationState.DestinationStateHash})!");
}
}
// For reference, it is valid to have no transition information
//else if (NetworkManager.LogLevel == LogLevel.Developer)
//else if (m_LocalNetworkManager.LogLevel == LogLevel.Developer)
//{
// NetworkLog.LogError($"[DestinationState To Transition Info] Layer ({animationState.Layer}) does not exist!");
//}
Expand Down Expand Up @@ -1539,7 +1539,7 @@ private unsafe void SendServerParametersUpdateRpc(ParametersUpdateMessage parame
return;
}
UpdateParameters(ref parametersUpdate);
var connectedClientIds = m_LocalNetworkManager.ConnectionManager.ConnectedClientIds;
var connectedClientIds = LocalNetworkManager.ConnectionManager.ConnectedClientIds;
if (connectedClientIds.Count <= (IsHost ? 2 : 1))
{
return;
Expand Down Expand Up @@ -1605,7 +1605,7 @@ private void SendServerAnimStateRpc(AnimationMessage animationMessage, RpcParams
UpdateAnimationState(animationState);
}

var connectedClientIds = m_LocalNetworkManager.ConnectionManager.ConnectedClientIds;
var connectedClientIds = LocalNetworkManager.ConnectionManager.ConnectedClientIds;
if (connectedClientIds.Count <= (IsHost ? 2 : 1))
{
return;
Expand Down Expand Up @@ -1652,7 +1652,7 @@ private void ProcessAnimStates(AnimationMessage animationMessage)
{
if (HasAuthority)
{
if (m_LocalNetworkManager.LogLevel == LogLevel.Developer)
if (LocalNetworkManager.LogLevel == LogLevel.Developer)
{
var hostOrOwner = DistributedAuthorityMode ? "Owner" : "Host";
var clientServerOrDAMode = DistributedAuthorityMode ? "distributed authority" : "client-server";
Expand All @@ -1677,7 +1677,7 @@ internal void SendServerAnimTriggerRpc(AnimationTriggerMessage animationTriggerM
// Ignore if a non-owner sent this.
if (rpcParams.Receive.SenderClientId != OwnerClientId)
{
if (m_LocalNetworkManager.LogLevel == LogLevel.Developer)
if (LocalNetworkManager.LogLevel == LogLevel.Developer)
{
NetworkLog.LogWarning($"[Owner Authoritative] Detected the a non-authoritative client is sending the server animation trigger updates. If you recently changed ownership of the {name} object, then this could be the reason.");
}
Expand All @@ -1687,7 +1687,7 @@ internal void SendServerAnimTriggerRpc(AnimationTriggerMessage animationTriggerM
// set the trigger locally on the server
InternalSetTrigger(animationTriggerMessage.Hash, animationTriggerMessage.IsTriggerSet);

var connectedClientIds = m_LocalNetworkManager.ConnectionManager.ConnectedClientIds;
var connectedClientIds = LocalNetworkManager.ConnectionManager.ConnectedClientIds;

m_TargetGroup.Clear();
foreach (var clientId in connectedClientIds)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -971,7 +972,7 @@ protected override void OnOwnershipChanged(ulong previous, ulong current)
/// </remarks>
internal void UpdateOwnershipAuthority()
{
if (NetworkManager.DistributedAuthorityMode)
if (m_LocalNetworkManager.DistributedAuthorityMode)
{
// When in distributed authority mode, always use HasAuthority
m_IsAuthority = HasAuthority;
Expand All @@ -980,7 +981,7 @@ internal void UpdateOwnershipAuthority()
{
if (NetworkTransform.IsServerAuthoritative())
{
m_IsAuthority = NetworkManager.IsServer;
m_IsAuthority = m_LocalNetworkManager.IsServer;
}
else
{
Expand All @@ -994,11 +995,16 @@ internal void UpdateOwnershipAuthority()
}
}

internal override void InternalOnNetworkPreSpawn(ref NetworkManager networkManager)
{
m_LocalNetworkManager = networkManager;
}

/// <inheritdoc />
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();
}

Expand Down
Loading