Skip to content

Commit 5aab06d

Browse files
committed
Use cached network manager instead of property
1 parent 7c515b3 commit 5aab06d

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

com.unity.netcode.gameobjects/Runtime/Components/NetworkTransform.cs

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1621,7 +1621,7 @@ internal bool SynchronizeScale
16211621
public bool CanCommitToTransform { get; protected set; }
16221622

16231623
/// <summary>
1624-
/// Internally used by <see cref="NetworkTransform"/> to keep track of the <see cref="NetworkManager"/> instance assigned to this
1624+
/// Internally used by <see cref="NetworkTransform"/> to keep track of the <see cref="NetworkManager"/> instance assigned to
16251625
/// this <see cref="NetworkBehaviour"/> derived class instance.
16261626
/// </summary>
16271627
protected NetworkManager m_CachedNetworkManager;
@@ -1852,6 +1852,7 @@ private bool ShouldSynchronizeHalfFloat(ulong targetClientId)
18521852
if (!IsServerAuthoritative() && NetworkObject.OwnerClientId == targetClientId)
18531853
{
18541854
// In distributed authority mode we want to synchronize the half float if we are the owner.
1855+
// TODO do we have a cached NetworkManager here? Should we create one?
18551856
return (!NetworkManager.DistributedAuthorityMode && NetworkObject.IsOwnedByServer) || (NetworkManager.DistributedAuthorityMode);
18561857
}
18571858
return true;
@@ -3537,7 +3538,7 @@ private void ApplyPlayerTransformState()
35373538

35383539
/// <summary>
35393540
/// For dynamically spawned NetworkObjects, when the non-authority instance's client is already connected and
3540-
/// the SynchronizeState is still pending synchronization then we want to finalize the synchornization at this time.
3541+
/// the SynchronizeState is still pending synchronization then we want to finalize the synchronization at this time.
35413542
/// </summary>
35423543
protected internal override void InternalOnNetworkPostSpawn()
35433544
{
@@ -3550,7 +3551,7 @@ protected internal override void InternalOnNetworkPostSpawn()
35503551
// Then we want to:
35513552
// - Force the "IsSynchronizing" flag so the NetworkTransform has its state updated properly and runs through the initialization again.
35523553
// - Make sure the SynchronizingState is updated to the instantiated prefab's default flags/settings.
3553-
if (NetworkManager.IsServer && !NetworkManager.DistributedAuthorityMode && !IsOwner && !OnIsServerAuthoritative() && !SynchronizeState.IsSynchronizing)
3554+
if (m_CachedNetworkManager.IsServer && !m_CachedNetworkManager.DistributedAuthorityMode && !IsOwner && !OnIsServerAuthoritative() && !SynchronizeState.IsSynchronizing)
35543555
{
35553556
// Handle the first/root NetworkTransform slightly differently to have a sequenced synchronization of like authority nested NetworkTransform components
35563557
if (m_IsFirstNetworkTransform)
@@ -3578,7 +3579,7 @@ protected internal override void InternalOnNetworkPostSpawn()
35783579
}
35793580

35803581
// Standard non-authority synchronization is handled here
3581-
if (!CanCommitToTransform && NetworkManager.IsConnectedClient && SynchronizeState.IsSynchronizing)
3582+
if (!CanCommitToTransform && m_CachedNetworkManager.IsConnectedClient && SynchronizeState.IsSynchronizing)
35823583
{
35833584
NonAuthorityFinalizeSynchronization();
35843585
}
@@ -3631,14 +3632,14 @@ internal override void InternalOnNetworkPreSpawn(ref NetworkManager networkManag
36313632
public override void OnNetworkSpawn()
36323633
{
36333634
m_ParentedChildren.Clear();
3634-
m_CachedNetworkManager = NetworkManager;
36353635

36363636
Initialize();
36373637

36383638
if (CanCommitToTransform && !SwitchTransformSpaceWhenParented)
36393639
{
36403640
SetState(GetSpaceRelativePosition(), GetSpaceRelativeRotation(), GetScale(), false);
36413641
}
3642+
base.OnNetworkSpawn();
36423643
}
36433644

36443645
private void CleanUpOnDestroyOrDespawn()
@@ -3651,7 +3652,7 @@ private void CleanUpOnDestroyOrDespawn()
36513652
#endif
36523653
if (m_CachedNetworkObject != null)
36533654
{
3654-
NetworkManager?.NetworkTransformRegistration(m_CachedNetworkObject, forUpdate, false);
3655+
m_CachedNetworkManager.NetworkTransformRegistration(m_CachedNetworkObject, forUpdate, false);
36553656
}
36563657

36573658
DeregisterForTickUpdate(this);
@@ -3697,7 +3698,7 @@ protected virtual void OnInitialize(ref NetworkVariable<NetworkTransformState> r
36973698
/// </summary>
36983699
private void ResetInterpolatedStateToCurrentAuthoritativeState()
36993700
{
3700-
var serverTime = NetworkManager.ServerTime.Time;
3701+
var serverTime = m_CachedNetworkManager.ServerTime.Time;
37013702
#if COM_UNITY_MODULES_PHYSICS || COM_UNITY_MODULES_PHYSICS2D
37023703
var position = m_UseRigidbodyForMotion ? m_NetworkRigidbodyInternal.GetPosition() : GetSpaceRelativePosition();
37033704
var rotation = m_UseRigidbodyForMotion ? m_NetworkRigidbodyInternal.GetRotation() : GetSpaceRelativeRotation();
@@ -3719,7 +3720,7 @@ private void ResetInterpolatedStateToCurrentAuthoritativeState()
37193720
}
37203721
private NetworkObject m_CachedNetworkObject;
37213722
/// <summary>
3722-
/// The internal initialzation method to allow for internal API adjustments
3723+
/// The internal initialization method to allow for internal API adjustments
37233724
/// </summary>
37243725
/// <param name="isOwnershipChange"></param>
37253726
private void InternalInitialization(bool isOwnershipChange = false)
@@ -3731,7 +3732,7 @@ private void InternalInitialization(bool isOwnershipChange = false)
37313732
m_CachedNetworkObject = NetworkObject;
37323733

37333734
// Determine if this is the first NetworkTransform in the associated NetworkObject's list
3734-
m_IsFirstNetworkTransform = NetworkObject.NetworkTransforms[0] == this;
3735+
m_IsFirstNetworkTransform = m_CachedNetworkObject.NetworkTransforms[0] == this;
37353736

37363737
if (m_CachedNetworkManager && m_CachedNetworkManager.DistributedAuthorityMode)
37373738
{
@@ -3755,9 +3756,9 @@ private void InternalInitialization(bool isOwnershipChange = false)
37553756
var currentPosition = GetSpaceRelativePosition();
37563757
var currentRotation = GetSpaceRelativeRotation();
37573758

3758-
if (NetworkManager.DistributedAuthorityMode)
3759+
if (m_CachedNetworkManager.DistributedAuthorityMode)
37593760
{
3760-
RegisterNetworkManagerForTickUpdate(NetworkManager);
3761+
RegisterNetworkManagerForTickUpdate(m_CachedNetworkManager);
37613762
}
37623763

37633764
#if COM_UNITY_MODULES_PHYSICS || COM_UNITY_MODULES_PHYSICS2D
@@ -3941,7 +3942,7 @@ internal override void InternalOnNetworkObjectParentChanged(NetworkObject parent
39413942
if (LastTickSync == m_LocalAuthoritativeNetworkState.GetNetworkTick())
39423943
{
39433944
m_InternalCurrentPosition = m_LastStateTargetPosition = GetSpaceRelativePosition();
3944-
m_PositionInterpolator.ResetTo(m_PositionInterpolator.Parent, m_InternalCurrentPosition, NetworkManager.ServerTime.Time);
3945+
m_PositionInterpolator.ResetTo(m_PositionInterpolator.Parent, m_InternalCurrentPosition, m_CachedNetworkManager.ServerTime.Time);
39453946
if (InLocalSpace)
39463947
{
39473948
transform.localPosition = m_InternalCurrentPosition;
@@ -3973,7 +3974,7 @@ internal override void InternalOnNetworkObjectParentChanged(NetworkObject parent
39733974
{
39743975
m_InternalCurrentRotation = GetSpaceRelativeRotation();
39753976
m_TargetRotation = m_InternalCurrentRotation.eulerAngles;
3976-
m_RotationInterpolator.ResetTo(m_RotationInterpolator.Parent, m_InternalCurrentRotation, NetworkManager.ServerTime.Time);
3977+
m_RotationInterpolator.ResetTo(m_RotationInterpolator.Parent, m_InternalCurrentRotation, m_CachedNetworkManager.ServerTime.Time);
39773978
if (InLocalSpace)
39783979
{
39793980
transform.localRotation = m_InternalCurrentRotation;
@@ -4596,7 +4597,7 @@ internal void TransformStateUpdate()
45964597
{
45974598
// TODO: Investigate where this state should be applied or just discarded.
45984599
// For now, discard the state if we assumed ownership.
4599-
// Debug.Log($"[Client-{NetworkManager.LocalClientId}] Ignoring inbound update from Client-{0} and parentUpdated:{isParentingDirective}!");
4600+
// Debug.Log($"[Client-{m_CachedNetworkManager.LocalClientId}] Ignoring inbound update from Client-{0} and parentUpdated:{isParentingDirective}!");
46004601
return;
46014602
}
46024603
// Store the previous/old state
@@ -4653,17 +4654,17 @@ private void UpdateTransformState()
46534654
{
46544655
continue;
46554656
}
4656-
if (!NetworkObject.Observers.Contains(clientId))
4657+
if (!m_CachedNetworkObject.Observers.Contains(clientId))
46574658
{
46584659
continue;
46594660
}
4660-
NetworkManager.MessageManager.SendMessage(ref m_OutboundMessage, networkDelivery, clientId);
4661+
m_CachedNetworkManager.MessageManager.SendMessage(ref m_OutboundMessage, networkDelivery, clientId);
46614662
}
46624663
}
46634664
else
46644665
{
46654666
// Clients (owner authoritative) send messages to the server-host
4666-
NetworkManager.MessageManager.SendMessage(ref m_OutboundMessage, networkDelivery, NetworkManager.ServerClientId);
4667+
m_CachedNetworkManager.MessageManager.SendMessage(ref m_OutboundMessage, networkDelivery, NetworkManager.ServerClientId);
46674668
}
46684669
m_LocalAuthoritativeNetworkState.LastSerializedSize = m_OutboundMessage.BytesWritten;
46694670
}
@@ -4802,7 +4803,7 @@ public NetworkTransformTickRegistration(NetworkManager networkManager)
48024803
internal void RegisterForTickSynchronization()
48034804
{
48044805
s_TickSynchPosition++;
4805-
m_NextTickSync = NetworkManager.ServerTime.Tick + (s_TickSynchPosition % (int)NetworkManager.NetworkConfig.TickRate);
4806+
m_NextTickSync = m_CachedNetworkManager.ServerTime.Tick + (s_TickSynchPosition % (int)NetworkManager.NetworkConfig.TickRate);
48064807
}
48074808

48084809
private static void RegisterNetworkManagerForTickUpdate(NetworkManager networkManager)
@@ -4821,14 +4822,15 @@ private static void RegisterNetworkManagerForTickUpdate(NetworkManager networkMa
48214822
/// <param name="networkTransform"></param>
48224823
private static void RegisterForTickUpdate(NetworkTransform networkTransform)
48234824
{
4824-
4825-
if (!networkTransform.NetworkManager.DistributedAuthorityMode && !s_NetworkTickRegistration.ContainsKey(networkTransform.NetworkManager))
4825+
//CHECK can we use NetworkManager.Singleton instead as we are in static context?
4826+
var networkManager = networkTransform.NetworkManager;
4827+
if (!networkManager.DistributedAuthorityMode && !s_NetworkTickRegistration.ContainsKey(networkManager))
48264828
{
4827-
s_NetworkTickRegistration.Add(networkTransform.NetworkManager, new NetworkTransformTickRegistration(networkTransform.NetworkManager));
4829+
s_NetworkTickRegistration.Add(networkManager, new NetworkTransformTickRegistration(networkManager));
48284830
}
48294831

48304832
networkTransform.RegisterForTickSynchronization();
4831-
s_NetworkTickRegistration[networkTransform.NetworkManager].NetworkTransforms.Add(networkTransform);
4833+
s_NetworkTickRegistration[networkManager].NetworkTransforms.Add(networkTransform);
48324834
}
48334835

48344836
/// <summary>
@@ -4838,16 +4840,18 @@ private static void RegisterForTickUpdate(NetworkTransform networkTransform)
48384840
/// <param name="networkTransform"></param>
48394841
private static void DeregisterForTickUpdate(NetworkTransform networkTransform)
48404842
{
4841-
if (networkTransform.NetworkManager == null)
4843+
//CHECK static context, can we use NetworkManager.Singleton?
4844+
var networkManager = networkTransform.NetworkManager;
4845+
if (!networkManager)
48424846
{
48434847
return;
48444848
}
4845-
if (s_NetworkTickRegistration.ContainsKey(networkTransform.NetworkManager))
4849+
if (s_NetworkTickRegistration.ContainsKey(networkManager))
48464850
{
4847-
s_NetworkTickRegistration[networkTransform.NetworkManager].NetworkTransforms.Remove(networkTransform);
4848-
if (!networkTransform.NetworkManager.DistributedAuthorityMode && s_NetworkTickRegistration[networkTransform.NetworkManager].NetworkTransforms.Count == 0)
4851+
s_NetworkTickRegistration[networkManager].NetworkTransforms.Remove(networkTransform);
4852+
if (!networkManager.DistributedAuthorityMode && s_NetworkTickRegistration[networkManager].NetworkTransforms.Count == 0)
48494853
{
4850-
var registrationEntry = s_NetworkTickRegistration[networkTransform.NetworkManager];
4854+
var registrationEntry = s_NetworkTickRegistration[networkManager];
48514855
registrationEntry.Remove();
48524856
}
48534857
}

0 commit comments

Comments
 (0)