Skip to content

Commit 1051ea1

Browse files
authored
Merge branch 'develop-2.0.0' into fix/3552-networkmanager-fails-to-cleanup-if-exception-thrown-during-start
2 parents 1e7a70c + 3491f14 commit 1051ea1

33 files changed

+265
-253
lines changed

.yamato/project-standards.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,9 @@ standards_{{ platform.name }}_{{ project.name }}_{{ editor }}:
4747

4848
- unity-downloader-cli --fast --wait -u {{ editor }} -c editor {% if platform.name == "mac" %} --arch arm64 {% endif %} # For macOS we use ARM64 models. Downloads basic editor
4949
- .Editor/Unity -batchmode -nographics -logFile - -executeMethod Packages.Rider.Editor.RiderScriptEditor.SyncSolution -projectPath {{ project.path }} -quit # This command is used to invoke Unity in a "headless" mode. It's used to sync the project
50-
- dotnet run --project=dotnet-tools/netcode.standards -- --project={{ project.path }} --check # Runs standards check
50+
- dotnet run --project=dotnet-tools/netcode.standards -- --project={{ project.path }} --fix # Auto-fix formatting issues
51+
- git checkout -- {{ project.path }}/Packages/manifest.json {{ project.path }}/Packages/packages-lock.json {{ project.path }}/ProjectSettings/ProjectVersion.txt 2>/dev/null || true # Restore files that Unity may have modified (we only want to check code formatting)
52+
- 'git diff --exit-code || (echo "ERROR: Code formatting issues found. Run dotnet run --project=dotnet-tools/netcode.standards -- --project={{ project.path }} --fix locally and commit the changes." && exit 1)' # Fail if formatter made any changes
5153
{% endfor -%}
5254
{% endfor -%}
5355
{% endfor -%}

.yamato/project.metafile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
small_agent_platform:
2525
- name: ubuntu
2626
type: Unity::VM
27-
image: package-ci/ubuntu-22.04:v4.77.0
27+
image: package-ci/ubuntu-22.04:v4.81.0
2828
flavor: b1.small
2929

3030

@@ -39,13 +39,13 @@ test_platforms:
3939
default:
4040
- name: ubuntu
4141
type: Unity::VM
42-
image: package-ci/ubuntu-22.04:v4.77.0
42+
image: package-ci/ubuntu-22.04:v4.81.0
4343
flavor: b1.large
4444
standalone: StandaloneLinux64
4545
desktop:
4646
- name: ubuntu
4747
type: Unity::VM
48-
image: package-ci/ubuntu-22.04:v4.77.0
48+
image: package-ci/ubuntu-22.04:v4.81.0
4949
flavor: b1.large
5050
smaller_flavor: b1.medium
5151
larger_flavor: b1.xlarge

com.unity.netcode.gameobjects/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ Additional documentation and release notes are available at [Multiplayer Documen
2828

2929
### Fixed
3030

31+
- Fixed memory leak in `NetworkAnimator` on clients where `RpcTarget` groups were not being properly disposed due to incorrect type casting of `ProxyRpcTargetGroup` to `RpcTargetGroup`.
3132
- Fixed issue when using a client-server topology where a `NetworkList` with owner write permissions was resetting sent time and dirty flags after having been spawned on owning clients that were not the spawn authority. (#3850)
3233
- Fixed an integer overflow that occurred when configuring a large disconnect timeout with Unity Transport. (#3810)
3334

com.unity.netcode.gameobjects/Editor/NetworkRigidbodyBaseEditor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ private void DisplayNetworkRigidbodyProperties()
3333
public override void OnInspectorGUI()
3434
{
3535
var networkRigidbodyBase = target as NetworkRigidbodyBase;
36-
void SetExpanded(bool expanded) { networkRigidbodyBase.NetworkRigidbodyBaseExpanded = expanded; };
36+
void SetExpanded(bool expanded)
37+
{
38+
networkRigidbodyBase.NetworkRigidbodyBaseExpanded = expanded;
39+
}
40+
3741
DrawFoldOutGroup<NetworkRigidbodyBase>(networkRigidbodyBase.GetType(), DisplayNetworkRigidbodyProperties, networkRigidbodyBase.NetworkRigidbodyBaseExpanded, SetExpanded);
3842
base.OnInspectorGUI();
3943
}

com.unity.netcode.gameobjects/Editor/NetworkTransformEditor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,11 @@ private void DrawToggleProperty(Rect rect, string label, SerializedProperty prop
307307
public override void OnInspectorGUI()
308308
{
309309
var networkTransform = target as NetworkTransform;
310-
void SetExpanded(bool expanded) { networkTransform.NetworkTransformExpanded = expanded; };
310+
void SetExpanded(bool expanded)
311+
{
312+
networkTransform.NetworkTransformExpanded = expanded;
313+
}
314+
311315
DrawFoldOutGroup<NetworkTransform>(networkTransform.GetType(), DisplayNetworkTransformProperties, networkTransform.NetworkTransformExpanded, SetExpanded);
312316
base.OnInspectorGUI();
313317
}

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

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ protected virtual bool OnIsServerAuthoritative()
709709
private static byte[] s_EmptyArray = new byte[] { };
710710
private List<int> m_ParametersToUpdate;
711711
private RpcParams m_RpcParams;
712-
private RpcTargetGroup m_TargetGroup;
712+
private IGroupRpcTarget m_TargetGroup;
713713
private AnimationMessage m_AnimationMessage;
714714
private NetworkAnimatorStateChangeHandler m_NetworkAnimatorStateChangeHandler;
715715

@@ -754,18 +754,15 @@ static AnimationParamEnumWrapper()
754754
/// </summary>
755755
private void SpawnCleanup()
756756
{
757-
if (m_NetworkAnimatorStateChangeHandler != null)
758-
{
759-
m_NetworkAnimatorStateChangeHandler.DeregisterUpdate();
760-
m_NetworkAnimatorStateChangeHandler = null;
761-
}
757+
m_NetworkAnimatorStateChangeHandler?.DeregisterUpdate();
758+
m_NetworkAnimatorStateChangeHandler = null;
762759
}
763760

764761
public override void OnDestroy()
765762
{
766763
SpawnCleanup();
767764

768-
m_TargetGroup?.Dispose();
765+
m_TargetGroup?.Target?.Dispose();
769766

770767
if (m_CachedAnimatorParameters != null && m_CachedAnimatorParameters.IsCreated)
771768
{
@@ -931,12 +928,12 @@ public override void OnNetworkSpawn()
931928
NetworkLog.LogWarningServer($"[{gameObject.name}][{nameof(NetworkAnimator)}] {nameof(Animator)} is not assigned! Animation synchronization will not work for this instance!");
932929
}
933930

934-
m_TargetGroup = RpcTarget.Group(new List<ulong>(128), RpcTargetUse.Persistent) as RpcTargetGroup;
931+
m_TargetGroup = RpcTarget.Group(new List<ulong>(128), RpcTargetUse.Persistent) as IGroupRpcTarget;
935932
m_RpcParams = new RpcParams()
936933
{
937934
Send = new RpcSendParams()
938935
{
939-
Target = m_TargetGroup
936+
Target = m_TargetGroup?.Target
940937
}
941938
};
942939

@@ -1222,7 +1219,7 @@ internal void CheckForAnimatorChanges()
12221219
}
12231220
m_TargetGroup.Add(clientId);
12241221
}
1225-
m_RpcParams.Send.Target = m_TargetGroup;
1222+
m_RpcParams.Send.Target = m_TargetGroup.Target;
12261223
SendClientAnimStateRpc(m_AnimationMessage, m_RpcParams);
12271224
}
12281225
}
@@ -1558,7 +1555,7 @@ private unsafe void SendServerParametersUpdateRpc(ParametersUpdateMessage parame
15581555
m_TargetGroup.Add(clientId);
15591556
}
15601557

1561-
m_RpcParams.Send.Target = m_TargetGroup;
1558+
m_RpcParams.Send.Target = m_TargetGroup.Target;
15621559
m_NetworkAnimatorStateChangeHandler.SendParameterUpdate(parametersUpdate, m_RpcParams);
15631560
}
15641561
}
@@ -1624,7 +1621,7 @@ private void SendServerAnimStateRpc(AnimationMessage animationMessage, RpcParams
16241621
}
16251622
m_TargetGroup.Add(clientId);
16261623
}
1627-
m_RpcParams.Send.Target = m_TargetGroup;
1624+
m_RpcParams.Send.Target = m_TargetGroup.Target;
16281625
m_NetworkAnimatorStateChangeHandler.SendAnimationUpdate(animationMessage, m_RpcParams);
16291626
}
16301627
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ public interface IContactEventHandler
3838
/// <summary>
3939
/// Should return a <see cref="Rigidbody"/>.
4040
/// </summary>
41-
Rigidbody GetRigidbody();
41+
public Rigidbody GetRigidbody();
4242

4343
/// <summary>
4444
/// Invoked by the <see cref="RigidbodyContactEventManager"/> instance.
@@ -49,7 +49,7 @@ public interface IContactEventHandler
4949
/// <param name="contactPoint">The world space location of the contact event.</param>
5050
/// <param name="hasCollisionStay">Will be set if this is a collision stay contact event (i.e. it is not the first contact event and continually has contact)</param>
5151
/// <param name="averagedCollisionStayNormal">The average normal of the collision stay contact over time.</param>
52-
void ContactEvent(ulong eventId, Vector3 averagedCollisionNormal, Rigidbody collidingBody, Vector3 contactPoint, bool hasCollisionStay = false, Vector3 averagedCollisionStayNormal = default);
52+
public void ContactEvent(ulong eventId, Vector3 averagedCollisionNormal, Rigidbody collidingBody, Vector3 contactPoint, bool hasCollisionStay = false, Vector3 averagedCollisionStayNormal = default);
5353
}
5454

5555
/// <summary>
@@ -62,7 +62,7 @@ public interface IContactEventHandlerWithInfo : IContactEventHandler
6262
/// Invoked by <see cref="RigidbodyContactEventManager"/> for each set of contact events it is processing (prior to processing).
6363
/// </summary>
6464
/// <returns><see cref="ContactEventHandlerInfo"/></returns>
65-
ContactEventHandlerInfo GetContactEventHandlerInfo();
65+
public ContactEventHandlerInfo GetContactEventHandlerInfo();
6666
}
6767

6868
/// <summary>

com.unity.netcode.gameobjects/Runtime/Core/NetworkManager.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1655,12 +1655,8 @@ internal void ShutdownInternal()
16551655

16561656
// Shutdown connection manager last which shuts down transport
16571657
ConnectionManager.Shutdown();
1658-
1659-
if (MessageManager != null)
1660-
{
1661-
MessageManager.Dispose();
1662-
MessageManager = null;
1663-
}
1658+
MessageManager?.Dispose();
1659+
MessageManager = null;
16641660

16651661
// Let the NetworkSceneManager clean up its two SceneEvenData instances
16661662
SceneManager?.Dispose();
@@ -1777,9 +1773,9 @@ private void OnDestroy()
17771773
/// </summary>
17781774
internal interface INetworkManagerHelper
17791775
{
1780-
bool NotifyUserOfNestedNetworkManager(NetworkManager networkManager, bool ignoreNetworkManagerCache = false, bool editorTest = false);
1776+
public bool NotifyUserOfNestedNetworkManager(NetworkManager networkManager, bool ignoreNetworkManagerCache = false, bool editorTest = false);
17811777

1782-
void CheckAndNotifyUserNetworkObjectRemoved(NetworkManager networkManager, bool editorTest = false);
1778+
public void CheckAndNotifyUserNetworkObjectRemoved(NetworkManager networkManager, bool editorTest = false);
17831779

17841780
internal NetcodeAnalytics Analytics();
17851781
}

com.unity.netcode.gameobjects/Runtime/Core/NetworkObject.cs

Lines changed: 50 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,8 @@ public void DeferDespawn(int tickOffset, bool destroy = true)
508508
/// In order for this status to be applied, the the <see cref="NetworkObject"/> must have the <see cref="OwnershipStatus.RequestRequired"/>
509509
/// flag set and a non-owner client must have sent a request via <see cref="RequestOwnership"/>.
510510
/// </summary>
511-
public bool IsRequestInProgress => ((OwnershipStatusExtended)Ownership).HasFlag(OwnershipStatusExtended.Requested);
511+
public bool IsRequestInProgress =>
512+
((OwnershipStatusExtended)Ownership).HasFlag(OwnershipStatusExtended.Requested);
512513

513514
/// <summary>
514515
/// Determines whether a NetworkObject can be distributed to other clients during
@@ -2852,18 +2853,54 @@ internal struct SerializedObject
28522853
internal ushort GetBitsetRepresentation()
28532854
{
28542855
ushort bitset = 0;
2855-
if (IsPlayerObject) { bitset |= k_IsPlayerObject; };
2856-
if (HasParent) { bitset |= k_HasParent; };
2857-
if (IsSceneObject) { bitset |= k_IsSceneObject; };
2858-
if (HasTransform) { bitset |= k_HasTransform; };
2859-
if (IsLatestParentSet) { bitset |= k_IsLatestParentSet; };
2860-
if (WorldPositionStays) { bitset |= k_WorldPositionStays; };
2861-
if (DestroyWithScene) { bitset |= k_DestroyWithScene; };
2862-
if (DontDestroyWithOwner) { bitset |= k_DontDestroyWithOwner; };
2863-
if (HasOwnershipFlags) { bitset |= k_HasOwnershipFlags; };
2864-
if (SyncObservers) { bitset |= k_SyncObservers; };
2865-
if (SpawnWithObservers) { bitset |= k_SpawnWithObservers; };
2866-
if (HasInstantiationData) { bitset |= k_HasInstantiationData; };
2856+
if (IsPlayerObject)
2857+
{
2858+
bitset |= k_IsPlayerObject;
2859+
}
2860+
if (HasParent)
2861+
{
2862+
bitset |= k_HasParent;
2863+
}
2864+
if (IsSceneObject)
2865+
{
2866+
bitset |= k_IsSceneObject;
2867+
}
2868+
if (HasTransform)
2869+
{
2870+
bitset |= k_HasTransform;
2871+
}
2872+
if (IsLatestParentSet)
2873+
{
2874+
bitset |= k_IsLatestParentSet;
2875+
}
2876+
if (WorldPositionStays)
2877+
{
2878+
bitset |= k_WorldPositionStays;
2879+
}
2880+
if (DestroyWithScene)
2881+
{
2882+
bitset |= k_DestroyWithScene;
2883+
}
2884+
if (DontDestroyWithOwner)
2885+
{
2886+
bitset |= k_DontDestroyWithOwner;
2887+
}
2888+
if (HasOwnershipFlags)
2889+
{
2890+
bitset |= k_HasOwnershipFlags;
2891+
}
2892+
if (SyncObservers)
2893+
{
2894+
bitset |= k_SyncObservers;
2895+
}
2896+
if (SpawnWithObservers)
2897+
{
2898+
bitset |= k_SpawnWithObservers;
2899+
}
2900+
if (HasInstantiationData)
2901+
{
2902+
bitset |= k_HasInstantiationData;
2903+
}
28672904
return bitset;
28682905
}
28692906

com.unity.netcode.gameobjects/Runtime/Core/NetworkUpdateLoop.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public interface INetworkUpdateSystem
1515
/// The update method that is being executed in the context of related <see cref="NetworkUpdateStage"/>.
1616
/// </summary>
1717
/// <param name="updateStage">The <see cref="NetworkUpdateStage"/> that is being executed.</param>
18-
void NetworkUpdate(NetworkUpdateStage updateStage);
18+
public void NetworkUpdate(NetworkUpdateStage updateStage);
1919
}
2020

2121
/// <summary>

0 commit comments

Comments
 (0)