@@ -1621,10 +1621,11 @@ 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 ;
1628+ private int m_CachedTickRate ;
16281629
16291630 /// <summary>
16301631 /// Helper method that returns the space relative position of the transform.
@@ -2136,9 +2137,8 @@ private bool CheckForStateChange(ref NetworkTransformState networkState, bool is
21362137 // We compare against the NetworkTickSystem version since ServerTime is set when updating ticks
21372138 if ( UseUnreliableDeltas && ! isSynchronization && m_DeltaSynch && m_NextTickSync <= CurrentTick )
21382139 {
2139- // TODO-CACHE: m_CachedNetworkManager.NetworkConfig.TickRate value
21402140 // Increment to the next frame synch tick position for this instance
2141- m_NextTickSync += ( int ) m_CachedNetworkManager . NetworkConfig . TickRate ;
2141+ m_NextTickSync += m_CachedTickRate ;
21422142 // If we are teleporting, we do not need to send a frame synch for this tick slot
21432143 // as a "frame synch" really is effectively just a teleport.
21442144 isAxisSync = ! flagStates . IsTeleportingNextFrame ;
@@ -2606,7 +2606,7 @@ private void OnNetworkTick(bool isCalledFromParent = false)
26062606 }
26072607 else // If we are no longer authority, unsubscribe to the tick event
26082608 {
2609- DeregisterForTickUpdate ( this ) ;
2609+ DeregisterForTickUpdate ( ) ;
26102610 }
26112611 }
26122612 #endregion
@@ -3537,7 +3537,7 @@ private void ApplyPlayerTransformState()
35373537
35383538 /// <summary>
35393539 /// 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.
3540+ /// the SynchronizeState is still pending synchronization then we want to finalize the synchronization at this time.
35413541 /// </summary>
35423542 protected internal override void InternalOnNetworkPostSpawn ( )
35433543 {
@@ -3550,7 +3550,7 @@ protected internal override void InternalOnNetworkPostSpawn()
35503550 // Then we want to:
35513551 // - Force the "IsSynchronizing" flag so the NetworkTransform has its state updated properly and runs through the initialization again.
35523552 // - Make sure the SynchronizingState is updated to the instantiated prefab's default flags/settings.
3553- if ( NetworkManager . IsServer && ! NetworkManager . DistributedAuthorityMode && ! IsOwner && ! OnIsServerAuthoritative ( ) && ! SynchronizeState . IsSynchronizing )
3553+ if ( m_CachedNetworkManager . IsServer && ! m_CachedNetworkManager . DistributedAuthorityMode && ! IsOwner && ! OnIsServerAuthoritative ( ) && ! SynchronizeState . IsSynchronizing )
35543554 {
35553555 // Handle the first/root NetworkTransform slightly differently to have a sequenced synchronization of like authority nested NetworkTransform components
35563556 if ( m_IsFirstNetworkTransform )
@@ -3578,7 +3578,7 @@ protected internal override void InternalOnNetworkPostSpawn()
35783578 }
35793579
35803580 // Standard non-authority synchronization is handled here
3581- if ( ! CanCommitToTransform && NetworkManager . IsConnectedClient && SynchronizeState . IsSynchronizing )
3581+ if ( ! CanCommitToTransform && m_CachedNetworkManager . IsConnectedClient && SynchronizeState . IsSynchronizing )
35823582 {
35833583 NonAuthorityFinalizeSynchronization ( ) ;
35843584 }
@@ -3631,14 +3631,14 @@ internal override void InternalOnNetworkPreSpawn(ref NetworkManager networkManag
36313631 public override void OnNetworkSpawn ( )
36323632 {
36333633 m_ParentedChildren . Clear ( ) ;
3634- m_CachedNetworkManager = NetworkManager ;
36353634
36363635 Initialize ( ) ;
36373636
36383637 if ( CanCommitToTransform && ! SwitchTransformSpaceWhenParented )
36393638 {
36403639 SetState ( GetSpaceRelativePosition ( ) , GetSpaceRelativeRotation ( ) , GetScale ( ) , false ) ;
36413640 }
3641+ base . OnNetworkSpawn ( ) ;
36423642 }
36433643
36443644 private void CleanUpOnDestroyOrDespawn ( )
@@ -3651,10 +3651,10 @@ private void CleanUpOnDestroyOrDespawn()
36513651#endif
36523652 if ( m_CachedNetworkObject != null )
36533653 {
3654- NetworkManager ? . NetworkTransformRegistration ( m_CachedNetworkObject , forUpdate , false ) ;
3654+ m_CachedNetworkManager . NetworkTransformRegistration ( m_CachedNetworkObject , forUpdate , false ) ;
36553655 }
36563656
3657- DeregisterForTickUpdate ( this ) ;
3657+ DeregisterForTickUpdate ( ) ;
36583658 CanCommitToTransform = false ;
36593659 }
36603660
@@ -3697,7 +3697,7 @@ protected virtual void OnInitialize(ref NetworkVariable<NetworkTransformState> r
36973697 /// </summary>
36983698 private void ResetInterpolatedStateToCurrentAuthoritativeState ( )
36993699 {
3700- var serverTime = NetworkManager . ServerTime . Time ;
3700+ var serverTime = m_CachedNetworkManager . ServerTime . Time ;
37013701#if COM_UNITY_MODULES_PHYSICS || COM_UNITY_MODULES_PHYSICS2D
37023702 var position = m_UseRigidbodyForMotion ? m_NetworkRigidbodyInternal . GetPosition ( ) : GetSpaceRelativePosition ( ) ;
37033703 var rotation = m_UseRigidbodyForMotion ? m_NetworkRigidbodyInternal . GetRotation ( ) : GetSpaceRelativeRotation ( ) ;
@@ -3719,7 +3719,7 @@ private void ResetInterpolatedStateToCurrentAuthoritativeState()
37193719 }
37203720 private NetworkObject m_CachedNetworkObject ;
37213721 /// <summary>
3722- /// The internal initialzation method to allow for internal API adjustments
3722+ /// The internal initialization method to allow for internal API adjustments
37233723 /// </summary>
37243724 /// <param name="isOwnershipChange"></param>
37253725 private void InternalInitialization ( bool isOwnershipChange = false )
@@ -3729,9 +3729,10 @@ private void InternalInitialization(bool isOwnershipChange = false)
37293729 return ;
37303730 }
37313731 m_CachedNetworkObject = NetworkObject ;
3732+ m_CachedTickRate = ( int ) m_CachedNetworkManager . NetworkConfig . TickRate ;
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
@@ -3793,7 +3794,7 @@ private void InternalInitialization(bool isOwnershipChange = false)
37933794 m_InternalCurrentPosition = currentPosition ;
37943795 m_LastStateTargetPosition = currentPosition ;
37953796
3796- RegisterForTickUpdate ( this ) ;
3797+ RegisterForTickUpdate ( ) ;
37973798
37983799 if ( UseHalfFloatPrecision && isOwnershipChange && ! IsServerAuthoritative ( ) && Interpolate )
37993800 {
@@ -3813,7 +3814,7 @@ private void InternalInitialization(bool isOwnershipChange = false)
38133814 // Non-authority needs to be added to updates for interpolation and applying state purposes
38143815 m_CachedNetworkManager . NetworkTransformRegistration ( NetworkObject , forUpdate , true ) ;
38153816 // Remove this instance from the tick update
3816- DeregisterForTickUpdate ( this ) ;
3817+ DeregisterForTickUpdate ( ) ;
38173818 ResetInterpolatedStateToCurrentAuthoritativeState ( ) ;
38183819 m_InternalCurrentPosition = currentPosition ;
38193820 m_LastStateTargetPosition = currentPosition ;
@@ -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 % m_CachedTickRate ) ;
48064807 }
48074808
48084809 private static void RegisterNetworkManagerForTickUpdate ( NetworkManager networkManager )
@@ -4818,36 +4819,34 @@ private static void RegisterNetworkManagerForTickUpdate(NetworkManager networkMa
48184819 /// If a NetworkTransformTickRegistration has not yet been registered for the NetworkManager
48194820 /// instance, then create an entry.
48204821 /// </summary>
4821- /// <param name="networkTransform"></param>
4822- private static void RegisterForTickUpdate ( NetworkTransform networkTransform )
4822+ private void RegisterForTickUpdate ( )
48234823 {
48244824
4825- if ( ! networkTransform . NetworkManager . DistributedAuthorityMode && ! s_NetworkTickRegistration . ContainsKey ( networkTransform . NetworkManager ) )
4825+ if ( ! m_CachedNetworkManager . DistributedAuthorityMode && ! s_NetworkTickRegistration . ContainsKey ( m_CachedNetworkManager ) )
48264826 {
4827- s_NetworkTickRegistration . Add ( networkTransform . NetworkManager , new NetworkTransformTickRegistration ( networkTransform . NetworkManager ) ) ;
4827+ s_NetworkTickRegistration . Add ( m_CachedNetworkManager , new NetworkTransformTickRegistration ( m_CachedNetworkManager ) ) ;
48284828 }
48294829
4830- networkTransform . RegisterForTickSynchronization ( ) ;
4831- s_NetworkTickRegistration [ networkTransform . NetworkManager ] . NetworkTransforms . Add ( networkTransform ) ;
4830+ RegisterForTickSynchronization ( ) ;
4831+ s_NetworkTickRegistration [ m_CachedNetworkManager ] . NetworkTransforms . Add ( this ) ;
48324832 }
48334833
48344834 /// <summary>
48354835 /// If a NetworkTransformTickRegistration exists for the NetworkManager instance, then this will
48364836 /// remove the NetworkTransform instance from the single tick update entry point.
48374837 /// </summary>
4838- /// <param name="networkTransform"></param>
4839- private static void DeregisterForTickUpdate ( NetworkTransform networkTransform )
4838+ private void DeregisterForTickUpdate ( )
48404839 {
4841- if ( networkTransform . NetworkManager == null )
4840+ if ( m_CachedNetworkManager == null )
48424841 {
48434842 return ;
48444843 }
4845- if ( s_NetworkTickRegistration . ContainsKey ( networkTransform . NetworkManager ) )
4844+ if ( s_NetworkTickRegistration . ContainsKey ( m_CachedNetworkManager ) )
48464845 {
4847- s_NetworkTickRegistration [ networkTransform . NetworkManager ] . NetworkTransforms . Remove ( networkTransform ) ;
4848- if ( ! networkTransform . NetworkManager . DistributedAuthorityMode && s_NetworkTickRegistration [ networkTransform . NetworkManager ] . NetworkTransforms . Count == 0 )
4846+ s_NetworkTickRegistration [ m_CachedNetworkManager ] . NetworkTransforms . Remove ( this ) ;
4847+ if ( ! m_CachedNetworkManager . DistributedAuthorityMode && s_NetworkTickRegistration [ m_CachedNetworkManager ] . NetworkTransforms . Count == 0 )
48494848 {
4850- var registrationEntry = s_NetworkTickRegistration [ networkTransform . NetworkManager ] ;
4849+ var registrationEntry = s_NetworkTickRegistration [ m_CachedNetworkManager ] ;
48514850 registrationEntry . Remove ( ) ;
48524851 }
48534852 }
0 commit comments