com.unity.netcode.gameobjects@2.0.0-exp.4
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com). ## [2.0.0-exp.4] - 2024-05-31 ### Added - Added `NetworkRigidbodyBase.AttachToFixedJoint` and `NetworkRigidbodyBase.DetachFromFixedJoint` to replace parenting for rigid bodies that have `NetworkRigidbodyBase.UseRigidBodyForMotion` enabled. (#2933) - Added `NetworkBehaviour.OnNetworkPreSpawn` and `NetworkBehaviour.OnNetworkPostSpawn` methods that provide the ability to handle pre and post spawning actions during the `NetworkObject` spawn sequence. (#2912) - Added a client-side only `NetworkBehaviour.OnNetworkSessionSynchronized` convenience method that is invoked on all `NetworkBehaviour`s after a newly joined client has finished synchronizing with the network session in progress. (#2912) - Added `NetworkBehaviour.OnInSceneObjectsSpawned` convenience method that is invoked when all in-scene `NetworkObject`s have been spawned after a scene has been loaded or upon a host or server starting. (#2912) ### Fixed - Fixed issue where non-authoritative rigid bodies with `NetworkRigidbodyBase.UseRigidBodyForMotion` enabled would constantly log errors about the renderTime being before `StartTimeConsumed`. (#2933) - Fixed issue where in-scene placed NetworkObjects could be destroyed if a client disconnects early and/or before approval. (#2924) - Fixed issue where a `NetworkObject` component's associated `NetworkBehaviour` components would not be detected if scene loading is disabled in the editor and the currently loaded scene has in-scene placed `NetworkObject`s. (#2912) - Fixed issue where an in-scene placed `NetworkObject` with `NetworkTransform` that is also parented under a `GameObject` would not properly synchronize when the parent `GameObject` had a world space position other than 0,0,0. (#2898) ### Changed - Change all the access modifiers of test class from Public to Internal (#2930) - Changed messages are now sorted by enum values as opposed to ordinally sorting the messages by their type name. (#2929) - Changed `NetworkClient.SessionModeTypes` to `NetworkClient.NetworkTopologyTypes`. (#2875) - Changed `NetworkClient.SessionModeType` to `NetworkClient.NetworkTopologyType`. (#2875) - Changed `NetworkConfig.SessionMode` to `NeworkConfig.NetworkTopology`. (#2875)
This commit is contained in:
@@ -3,7 +3,7 @@ using NUnit.Framework;
|
||||
|
||||
namespace Unity.Netcode.EditorTests
|
||||
{
|
||||
public class DisconnectOnSendTests
|
||||
internal class DisconnectOnSendTests
|
||||
{
|
||||
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
|
||||
{
|
||||
|
||||
@@ -10,7 +10,7 @@ using UnityEngine.TestTools;
|
||||
|
||||
namespace Unity.Netcode.EditorTests
|
||||
{
|
||||
public class MessageCorruptionTests
|
||||
internal class MessageCorruptionTests
|
||||
{
|
||||
|
||||
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
|
||||
|
||||
@@ -7,7 +7,7 @@ using Unity.Collections.LowLevel.Unsafe;
|
||||
|
||||
namespace Unity.Netcode.EditorTests
|
||||
{
|
||||
public class MessageReceivingTests
|
||||
internal class MessageReceivingTests
|
||||
{
|
||||
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
|
||||
{
|
||||
|
||||
@@ -3,7 +3,7 @@ using NUnit.Framework;
|
||||
|
||||
namespace Unity.Netcode.EditorTests
|
||||
{
|
||||
public class MessageRegistrationTests
|
||||
internal class MessageRegistrationTests
|
||||
{
|
||||
private struct TestMessageOne : INetworkMessage, INetworkSerializeByMemcpy
|
||||
{
|
||||
@@ -191,77 +191,5 @@ namespace Unity.Netcode.EditorTests
|
||||
Assert.AreEqual(handlerFour, systemThree.MessageHandlers[systemThree.GetMessageType(typeof(TestMessageFour))]);
|
||||
}
|
||||
}
|
||||
|
||||
internal class AAAEarlyLexicographicNetworkMessage : INetworkMessage
|
||||
{
|
||||
public void Serialize(FastBufferWriter writer, int targetVersion)
|
||||
{
|
||||
}
|
||||
|
||||
public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int receivedMessageVersion)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public void Handle(ref NetworkContext context)
|
||||
{
|
||||
}
|
||||
|
||||
public int Version => 0;
|
||||
}
|
||||
|
||||
#pragma warning disable IDE1006
|
||||
internal class zzzLateLexicographicNetworkMessage : AAAEarlyLexicographicNetworkMessage
|
||||
{
|
||||
}
|
||||
#pragma warning restore IDE1006
|
||||
|
||||
internal class OrderingMessageProvider : INetworkMessageProvider
|
||||
{
|
||||
public List<NetworkMessageManager.MessageWithHandler> GetMessages()
|
||||
{
|
||||
var listMessages = new List<NetworkMessageManager.MessageWithHandler>();
|
||||
|
||||
var messageWithHandler = new NetworkMessageManager.MessageWithHandler
|
||||
{
|
||||
MessageType = typeof(zzzLateLexicographicNetworkMessage),
|
||||
GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<zzzLateLexicographicNetworkMessage>
|
||||
};
|
||||
listMessages.Add(messageWithHandler);
|
||||
|
||||
messageWithHandler.MessageType = typeof(ConnectionRequestMessage);
|
||||
messageWithHandler.GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<ConnectionRequestMessage>;
|
||||
listMessages.Add(messageWithHandler);
|
||||
|
||||
messageWithHandler.MessageType = typeof(ConnectionApprovedMessage);
|
||||
messageWithHandler.GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<ConnectionApprovedMessage>;
|
||||
listMessages.Add(messageWithHandler);
|
||||
|
||||
messageWithHandler.MessageType = typeof(AAAEarlyLexicographicNetworkMessage);
|
||||
messageWithHandler.GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<AAAEarlyLexicographicNetworkMessage>;
|
||||
listMessages.Add(messageWithHandler);
|
||||
|
||||
return listMessages;
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void MessagesGetPrioritizedCorrectly()
|
||||
{
|
||||
var sender = new NopMessageSender();
|
||||
var provider = new OrderingMessageProvider();
|
||||
using var messageManager = new NetworkMessageManager(sender, null, provider);
|
||||
|
||||
// the 2 priority messages should appear first, in lexicographic order
|
||||
Assert.AreEqual(messageManager.MessageTypes[0], typeof(ConnectionApprovedMessage));
|
||||
Assert.AreEqual(messageManager.MessageTypes[1], typeof(ConnectionRequestMessage));
|
||||
|
||||
// the other should follow after
|
||||
Assert.AreEqual(messageManager.MessageTypes[2], typeof(AAAEarlyLexicographicNetworkMessage));
|
||||
Assert.AreEqual(messageManager.MessageTypes[3], typeof(zzzLateLexicographicNetworkMessage));
|
||||
|
||||
// there should not be any extras
|
||||
Assert.AreEqual(messageManager.MessageHandlerCount, 4);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ using Random = System.Random;
|
||||
|
||||
namespace Unity.Netcode.EditorTests
|
||||
{
|
||||
public class MessageSendingTests
|
||||
internal class MessageSendingTests
|
||||
{
|
||||
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
|
||||
{
|
||||
|
||||
@@ -5,7 +5,7 @@ using NUnit.Framework.Internal;
|
||||
|
||||
namespace Unity.Netcode.EditorTests
|
||||
{
|
||||
public class MessageVersioningTests
|
||||
internal class MessageVersioningTests
|
||||
{
|
||||
public static int SentVersion;
|
||||
public static int ReceivedVersion;
|
||||
|
||||
Reference in New Issue
Block a user