com.unity.netcode.gameobjects@2.0.0-pre.3
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-pre.3] - 2024-07-23 ### Added - Added: `UnityTransport.GetNetworkDriver` and `UnityTransport.GetLocalEndpoint` methods to expose the driver and local endpoint being used. (#2978) ### Fixed - Fixed issue where deferred despawn was causing GC allocations when converting an `IEnumerable` to a list. (#2983) - Fixed issue where the realtime network stats monitor was not able to display RPC traffic in release builds due to those stats being only available in development builds or the editor. (#2979) - Fixed issue where `NetworkManager.ScenesLoaded` was not being updated if `PostSynchronizationSceneUnloading` was set and any loaded scenes not used during synchronization were unloaded. (#2971) - Fixed issue where `Rigidbody2d` under Unity 6000.0.11f1 has breaking changes where `velocity` is now `linearVelocity` and `isKinematic` is replaced by `bodyType`. (#2971) - Fixed issue where `NetworkSpawnManager.InstantiateAndSpawn` and `NetworkObject.InstantiateAndSpawn` were not honoring the ownerClientId parameter when using a client-server network topology. (#2968) - Fixed issue where internal delta serialization could not have a byte serializer defined when serializing deltas for other types. Added `[GenerateSerializationForType(typeof(byte))]` to both the `NetworkVariable` and `AnticipatedNetworkVariable` classes to assure a byte serializer is defined.(#2962) - Fixed issue when scene management was disabled and the session owner would still try to synchronize a late joining client. (#2962) - Fixed issue when using a distributed authority network topology where it would allow a session owner to spawn a `NetworkObject` prior to being approved. Now, an error message is logged and the `NetworkObject` will not be spawned prior to the client being approved. (#2962) - Fixed issue where attempting to spawn during `NetworkBehaviour.OnInSceneObjectsSpawned` and `NetworkBehaviour.OnNetworkSessionSynchronized` notifications would throw a collection modified exception. (#2962) ### Changed - Changed logic where clients can now set the `NetworkSceneManager` client synchronization mode when using a distributed authority network topology. (#2985)
This commit is contained in:
@@ -29,13 +29,40 @@ namespace Unity.Netcode
|
||||
// RuntimeAccessModifiersILPP will make this `public`
|
||||
internal static readonly Dictionary<uint, RpcReceiveHandler> __rpc_func_table = new Dictionary<uint, RpcReceiveHandler>();
|
||||
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR || UNITY_MP_TOOLS_NET_STATS_MONITOR_ENABLED_IN_RELEASE
|
||||
// RuntimeAccessModifiersILPP will make this `public`
|
||||
internal static readonly Dictionary<uint, string> __rpc_name_table = new Dictionary<uint, string>();
|
||||
#endif
|
||||
|
||||
#pragma warning restore IDE1006 // restore naming rule violation check
|
||||
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
private static List<Type> s_SerializedType = new List<Type>();
|
||||
// This is used to control the serialized type not optimized messaging for integration test purposes
|
||||
internal static bool DisableNotOptimizedSerializedType;
|
||||
/// <summary>
|
||||
/// Until all serialized types are optimized for the distributed authority network topology,
|
||||
/// this will handle the notification to the user that the type being serialized is not yet
|
||||
/// optimized but will only log the message once to prevent log spamming.
|
||||
/// </summary>
|
||||
internal static void LogSerializedTypeNotOptimized<T>()
|
||||
{
|
||||
if (DisableNotOptimizedSerializedType)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var type = typeof(T);
|
||||
if (!s_SerializedType.Contains(type))
|
||||
{
|
||||
s_SerializedType.Add(type);
|
||||
if (NetworkLog.CurrentLogLevel <= LogLevel.Developer)
|
||||
{
|
||||
Debug.LogWarning($"[{type.Name}] Serialized type has not been optimized for use with Distributed Authority!");
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
internal static bool IsDistributedAuthority;
|
||||
|
||||
/// <summary>
|
||||
@@ -1062,6 +1089,13 @@ namespace Unity.Netcode
|
||||
|
||||
internal void Initialize(bool server)
|
||||
{
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
if (!DisableNotOptimizedSerializedType)
|
||||
{
|
||||
s_SerializedType.Clear();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if COM_UNITY_MODULES_PHYSICS
|
||||
NetworkTransformFixedUpdate.Clear();
|
||||
#endif
|
||||
@@ -1250,17 +1284,8 @@ namespace Unity.Netcode
|
||||
{
|
||||
SpawnManager.ServerSpawnSceneObjectsOnStartSweep();
|
||||
|
||||
// Notify the server that all in-scnee placed NetworkObjects are spawned at this time.
|
||||
foreach (var networkObject in SpawnManager.SpawnedObjectsList)
|
||||
{
|
||||
networkObject.InternalInSceneNetworkObjectsSpawned();
|
||||
}
|
||||
|
||||
// Notify the server that everything should be synchronized/spawned at this time.
|
||||
foreach (var networkObject in SpawnManager.SpawnedObjectsList)
|
||||
{
|
||||
networkObject.InternalNetworkSessionSynchronized();
|
||||
}
|
||||
SpawnManager.NotifyNetworkObjectsSynchronized();
|
||||
OnServerStarted?.Invoke();
|
||||
ConnectionManager.LocalClient.IsApproved = true;
|
||||
return true;
|
||||
@@ -1407,17 +1432,9 @@ namespace Unity.Netcode
|
||||
}
|
||||
|
||||
SpawnManager.ServerSpawnSceneObjectsOnStartSweep();
|
||||
// Notify the host that all in-scnee placed NetworkObjects are spawned at this time.
|
||||
foreach (var networkObject in SpawnManager.SpawnedObjectsList)
|
||||
{
|
||||
networkObject.InternalInSceneNetworkObjectsSpawned();
|
||||
}
|
||||
|
||||
// Notify the host that everything should be synchronized/spawned at this time.
|
||||
foreach (var networkObject in SpawnManager.SpawnedObjectsList)
|
||||
{
|
||||
networkObject.InternalNetworkSessionSynchronized();
|
||||
}
|
||||
SpawnManager.NotifyNetworkObjectsSynchronized();
|
||||
|
||||
OnServerStarted?.Invoke();
|
||||
OnClientStarted?.Invoke();
|
||||
|
||||
Reference in New Issue
Block a user