diff --git a/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs b/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs index 73cc6c7e2d..ddca7c9e72 100644 --- a/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs +++ b/com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs @@ -2368,11 +2368,22 @@ internal bool InternalTrySetParent(NetworkObject parent, bool worldPositionStays private void OnTransformParentChanged() { var networkManager = NetworkManager; - if (!AutoObjectParentSync || (networkManager != null && networkManager.ShutdownInProgress)) + if (networkManager != null && networkManager.ShutdownInProgress) { return; } + if (!AutoObjectParentSync) + { + // If this setting is off, we shouldn't be tracking parenting changes + // Ensure any tracking we do have is cleared. + if (m_CachedParent != null) + { + SetCachedParent(null); + } + return; + } + if (transform.parent == m_CachedParent) { return; @@ -2388,7 +2399,6 @@ private void OnTransformParentChanged() if (!IsSpawned) { - AuthorityAppliedParenting = false; // and we are removing the parent, then go ahead and allow parenting to occur if (transform.parent == null) { @@ -2398,6 +2408,7 @@ private void OnTransformParentChanged() } else { + AuthorityAppliedParenting = false; transform.parent = m_CachedParent; if (networkManager.LogLevel <= LogLevel.Error) {