@@ -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