diff --git a/.yamato/project-promotion.yml b/.yamato/project-promotion.yml index 22b7ecd42e..e8f0b6bde5 100644 --- a/.yamato/project-promotion.yml +++ b/.yamato/project-promotion.yml @@ -40,6 +40,7 @@ promote_{{ project.name }}_{{ package.name }}: - "upm-ci~/packages/*.tgz" dependencies: - .yamato/project-pack.yml#pack_{{ project.name }} + - .yamato/project-promotion.yml#promotion_validate_{{ project.name }}_{{ package.name }}_{{ test_platforms.first.name }}_{{ validation_editor }} - .yamato/project-promotion.yml#promote_{{ project.name }}_{{ package.name }}_dry_run promote_{{ project.name }}_{{ package.name }}_dry_run: diff --git a/.yamato/project-publish.yml b/.yamato/project-publish.yml index fc45aba9c5..7bd6c57491 100644 --- a/.yamato/project-publish.yml +++ b/.yamato/project-publish.yml @@ -18,6 +18,7 @@ publish_{{ project.name }}_{{ package.name }}: - "upm-ci~/packages/*.tgz" dependencies: - .yamato/project-pack.yml#pack_{{ project.name }} + - .yamato/project-tests.yml#validate_{{ package.name }}_{{ test_platforms.first.name }}_{{ validation_editor }} - .yamato/project-publish.yml#publish_{{ project.name }}_{{ package.name }}_dry_run publish_{{ project.name }}_{{ package.name }}_dry_run: diff --git a/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs b/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs index 9a891ec64d..5e0b8d8287 100644 --- a/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs +++ b/com.unity.netcode.gameobjects/Runtime/NetworkVariable/Collections/NetworkList.cs @@ -11,6 +11,7 @@ namespace Unity.Netcode public class NetworkList : NetworkVariableSerialization where T : unmanaged, IEquatable { private NativeList m_List = new NativeList(64, Allocator.Persistent); + private NativeList m_ListAtLastReset = new NativeList(64, Allocator.Persistent); private NativeList> m_DirtyEvents = new NativeList>(64, Allocator.Persistent); /// @@ -41,7 +42,11 @@ public NetworkList(IEnumerable values = default, public override void ResetDirty() { base.ResetDirty(); - m_DirtyEvents.Clear(); + if (m_DirtyEvents.Length > 0) + { + m_DirtyEvents.Clear(); + m_ListAtLastReset.CopyFrom(m_List); + } } /// @@ -109,10 +114,10 @@ public override void WriteDelta(FastBufferWriter writer) /// public override void WriteField(FastBufferWriter writer) { - writer.WriteValueSafe((ushort)m_List.Length); - for (int i = 0; i < m_List.Length; i++) + writer.WriteValueSafe((ushort)m_ListAtLastReset.Length); + for (int i = 0; i < m_ListAtLastReset.Length; i++) { - Write(writer, m_List[i]); + Write(writer, m_ListAtLastReset[i]); } } @@ -454,6 +459,7 @@ public int LastModifiedTick public override void Dispose() { m_List.Dispose(); + m_ListAtLastReset.Dispose(); m_DirtyEvents.Dispose(); } } diff --git a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs index 83642df574..62b932f88f 100644 --- a/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs +++ b/com.unity.netcode.gameobjects/Runtime/Transports/UTP/UnityTransport.cs @@ -1047,7 +1047,12 @@ public override bool StartClient() return false; } - return ClientBindAndConnect(); + var succeeded = ClientBindAndConnect(); + if (!succeeded) + { + Shutdown(); + } + return succeeded; } public override bool StartServer() @@ -1057,12 +1062,23 @@ public override bool StartServer() return false; } + bool succeeded; switch (m_ProtocolType) { case ProtocolType.UnityTransport: - return ServerBindAndListen(ConnectionData.ListenEndPoint); + succeeded = ServerBindAndListen(ConnectionData.ListenEndPoint); + if (!succeeded) + { + Shutdown(); + } + return succeeded; case ProtocolType.RelayUnityTransport: - return StartRelayServer(); + succeeded = StartRelayServer(); + if (!succeeded) + { + Shutdown(); + } + return succeeded; default: return false; }