com.unity.netcode.gameobjects@1.5.2
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). ## [1.5.2] - 2023-07-24 ### Added ### Fixed - Fixed issue where `NetworkClient.OwnedObjects` was not returning any owned objects due to the `NetworkClient.IsConnected` not being properly set. (#2631) - Fixed a crash when calling TrySetParent with a null Transform (#2625) - Fixed issue where a `NetworkTransform` using full precision state updates was losing transform state updates when interpolation was enabled. (#2624) - Fixed issue where `NetworkObject.SpawnWithObservers` was not being honored for late joining clients. (#2623) - Fixed issue where invoking `NetworkManager.Shutdown` multiple times, depending upon the timing, could cause an exception. (#2622) - Fixed issue where removing ownership would not notify the server that it gained ownership. This also resolves the issue where an owner authoritative NetworkTransform would not properly initialize upon removing ownership from a remote client. (#2618) - Fixed ILPP issues when using CoreCLR and for certain dedicated server builds. (#2614) - Fixed an ILPP compile error when creating a generic NetworkBehaviour singleton with a static T instance. (#2603) ### Changed
This commit is contained in:
@@ -36,15 +36,11 @@ namespace Unity.Netcode
|
||||
/// <summary>
|
||||
/// The ClientId of the NetworkClient
|
||||
/// </summary>
|
||||
// TODO-2023-Q2: Determine if we want to make this property a public get and internal/private set
|
||||
// There is no reason for a user to want to set this, but this will fail the package-validation-suite
|
||||
public ulong ClientId;
|
||||
|
||||
/// <summary>
|
||||
/// The PlayerObject of the Client
|
||||
/// </summary>
|
||||
// TODO-2023-Q2: Determine if we want to make this property a public get and internal/private set
|
||||
// There is no reason for a user to want to set this, but this will fail the package-validation-suite
|
||||
public NetworkObject PlayerObject;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -17,7 +17,6 @@ namespace Unity.Netcode
|
||||
/// - Processing <see cref="NetworkEvent"/>s.
|
||||
/// - Client Disconnection
|
||||
/// </summary>
|
||||
// TODO 2023-Q2: Discuss what kind of public API exposure we want for this
|
||||
public sealed class NetworkConnectionManager
|
||||
{
|
||||
#if DEVELOPMENT_BUILD || UNITY_EDITOR
|
||||
@@ -628,6 +627,8 @@ namespace Unity.Netcode
|
||||
};
|
||||
if (!NetworkManager.NetworkConfig.EnableSceneManagement)
|
||||
{
|
||||
// Update the observed spawned NetworkObjects for the newly connected player when scene management is disabled
|
||||
NetworkManager.SpawnManager.UpdateObservedNetworkObjects(ownerClientId);
|
||||
if (NetworkManager.SpawnManager.SpawnedObjectsList.Count != 0)
|
||||
{
|
||||
message.SpawnedObjectsList = NetworkManager.SpawnManager.SpawnedObjectsList;
|
||||
@@ -651,12 +652,13 @@ namespace Unity.Netcode
|
||||
SendMessage(ref message, NetworkDelivery.ReliableFragmentedSequenced, ownerClientId);
|
||||
message.MessageVersions.Dispose();
|
||||
|
||||
// If scene management is enabled, then let NetworkSceneManager handle the initial scene and NetworkObject synchronization
|
||||
// If scene management is disabled, then we are done and notify the local host-server the client is connected
|
||||
if (!NetworkManager.NetworkConfig.EnableSceneManagement)
|
||||
{
|
||||
NetworkManager.ConnectedClients[ownerClientId].IsConnected = true;
|
||||
InvokeOnClientConnectedCallback(ownerClientId);
|
||||
}
|
||||
else
|
||||
else // Otherwise, let NetworkSceneManager handle the initial scene and NetworkObject synchronization
|
||||
{
|
||||
NetworkManager.SceneManager.SynchronizeNetworkObjects(ownerClientId);
|
||||
}
|
||||
@@ -665,6 +667,7 @@ namespace Unity.Netcode
|
||||
{
|
||||
LocalClient = client;
|
||||
NetworkManager.SpawnManager.UpdateObservedNetworkObjects(ownerClientId);
|
||||
LocalClient.IsConnected = true;
|
||||
}
|
||||
|
||||
if (!response.CreatePlayerObject || (response.PlayerPrefabHash == null && NetworkManager.NetworkConfig.PlayerPrefab == null))
|
||||
@@ -730,12 +733,10 @@ namespace Unity.Netcode
|
||||
internal NetworkClient AddClient(ulong clientId)
|
||||
{
|
||||
var networkClient = LocalClient;
|
||||
if (clientId != NetworkManager.ServerClientId)
|
||||
{
|
||||
networkClient = new NetworkClient();
|
||||
networkClient.SetRole(isServer: false, isClient: true, NetworkManager);
|
||||
networkClient.ClientId = clientId;
|
||||
}
|
||||
|
||||
networkClient = new NetworkClient();
|
||||
networkClient.SetRole(clientId == NetworkManager.ServerClientId, isClient: true, NetworkManager);
|
||||
networkClient.ClientId = clientId;
|
||||
|
||||
ConnectedClients.Add(clientId, networkClient);
|
||||
ConnectedClientsList.Add(networkClient);
|
||||
@@ -798,8 +799,7 @@ namespace Unity.Netcode
|
||||
}
|
||||
else
|
||||
{
|
||||
// Handle changing ownership and prefab handlers
|
||||
// TODO-2023: Look into whether in-scene placed NetworkObjects could be destroyed if ownership changes to a client
|
||||
// Handle changing ownership and prefab handlers
|
||||
for (int i = clientOwnedObjects.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var ownedObject = clientOwnedObjects[i];
|
||||
|
||||
Reference in New Issue
Block a user