com.unity.netcode.gameobjects@1.0.0-pre.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). ## [1.0.0-pre.4] - 2021-01-04 ### Added - Added `com.unity.modules.physics` and `com.unity.modules.physics2d` package dependencies (#1565) ### Removed - Removed `com.unity.modules.ai` package dependency (#1565) - Removed `FixedQueue`, `StreamExtensions`, `TypeExtensions` (#1398) ### Fixed - Fixed in-scene NetworkObjects that are moved into the DDOL scene not getting restored to their original active state (enabled/disabled) after a full scene transition (#1354) - Fixed invalid IL code being generated when using `this` instead of `this ref` for the FastBufferReader/FastBufferWriter parameter of an extension method. (#1393) - Fixed an issue where if you are running as a server (not host) the LoadEventCompleted and UnloadEventCompleted events would fire early by the NetworkSceneManager (#1379) - Fixed a runtime error when sending an array of an INetworkSerializable type that's implemented as a struct (#1402) - NetworkConfig will no longer throw an OverflowException in GetConfig() when ForceSamePrefabs is enabled and the number of prefabs causes the config blob size to exceed 1300 bytes. (#1385) - Fixed NetworkVariable not calling NetworkSerialize on INetworkSerializable types (#1383) - Fixed NullReferenceException on ImportReferences call in NetworkBehaviourILPP (#1434) - Fixed NetworkObjects not being despawned before they are destroyed during shutdown for client, host, and server instances. (#1390) - Fixed KeyNotFound exception when removing ownership of a newly spawned NetworkObject that is already owned by the server. (#1500) - Fixed NetworkManager.LocalClient not being set when starting as a host. (#1511) - Fixed a few memory leak cases when shutting down NetworkManager during Incoming Message Queue processing. (#1323) ### Changed - The SDK no longer limits message size to 64k. (The transport may still impose its own limits, but the SDK no longer does.) (#1384) - Updated com.unity.collections to 1.1.0 (#1451)
This commit is contained in:
@@ -1028,8 +1028,8 @@ namespace Unity.Netcode
|
||||
// despawned that no longer exists
|
||||
SendSceneEventData(sceneEventId, m_NetworkManager.ConnectedClientsIds.Where(c => c != m_NetworkManager.ServerClientId).ToArray());
|
||||
|
||||
//Second, server sets itself as having finished unloading
|
||||
if (SceneEventProgressTracking.ContainsKey(sceneEventData.SceneEventProgressId))
|
||||
//Only if we are a host do we want register having loaded for the associated SceneEventProgress
|
||||
if (SceneEventProgressTracking.ContainsKey(sceneEventData.SceneEventProgressId) && m_NetworkManager.IsHost)
|
||||
{
|
||||
SceneEventProgressTracking[sceneEventData.SceneEventProgressId].AddClientAsDone(m_NetworkManager.ServerClientId);
|
||||
}
|
||||
@@ -1344,8 +1344,8 @@ namespace Unity.Netcode
|
||||
|
||||
OnLoadComplete?.Invoke(m_NetworkManager.ServerClientId, SceneNameFromHash(sceneEventData.SceneHash), sceneEventData.LoadSceneMode);
|
||||
|
||||
//Second, set the server as having loaded for the associated SceneEventProgress
|
||||
if (SceneEventProgressTracking.ContainsKey(sceneEventData.SceneEventProgressId))
|
||||
//Second, only if we are a host do we want register having loaded for the associated SceneEventProgress
|
||||
if (SceneEventProgressTracking.ContainsKey(sceneEventData.SceneEventProgressId) && m_NetworkManager.IsHost)
|
||||
{
|
||||
SceneEventProgressTracking[sceneEventData.SceneEventProgressId].AddClientAsDone(m_NetworkManager.ServerClientId);
|
||||
}
|
||||
@@ -1830,21 +1830,18 @@ namespace Unity.Netcode
|
||||
/// Moves all NetworkObjects that don't have the <see cref="NetworkObject.DestroyWithScene"/> set to
|
||||
/// the "Do not destroy on load" scene.
|
||||
/// </summary>
|
||||
private void MoveObjectsToDontDestroyOnLoad()
|
||||
internal void MoveObjectsToDontDestroyOnLoad()
|
||||
{
|
||||
// Move ALL NetworkObjects to the temp scene
|
||||
// Move ALL NetworkObjects marked to persist scene transitions into the DDOL scene
|
||||
var objectsToKeep = new HashSet<NetworkObject>(m_NetworkManager.SpawnManager.SpawnedObjectsList);
|
||||
|
||||
foreach (var sobj in objectsToKeep)
|
||||
{
|
||||
if (!sobj.DestroyWithScene || (sobj.IsSceneObject != null && sobj.IsSceneObject.Value && sobj.gameObject.scene == DontDestroyOnLoadScene))
|
||||
if (!sobj.DestroyWithScene || sobj.gameObject.scene == DontDestroyOnLoadScene)
|
||||
{
|
||||
// Only move objects with no parent as child objects will follow
|
||||
if (sobj.gameObject.transform.parent == null)
|
||||
// Only move dynamically spawned network objects with no parent as child objects will follow
|
||||
if (sobj.gameObject.transform.parent == null && sobj.IsSceneObject != null && !sobj.IsSceneObject.Value)
|
||||
{
|
||||
UnityEngine.Object.DontDestroyOnLoad(sobj.gameObject);
|
||||
// Since we are doing a scene transition, disable the GameObject until the next scene is loaded
|
||||
sobj.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
else if (m_NetworkManager.IsServer)
|
||||
@@ -1907,24 +1904,22 @@ namespace Unity.Netcode
|
||||
/// Moves all spawned NetworkObjects (from do not destroy on load) to the scene specified
|
||||
/// </summary>
|
||||
/// <param name="scene">scene to move the NetworkObjects to</param>
|
||||
private void MoveObjectsFromDontDestroyOnLoadToScene(Scene scene)
|
||||
internal void MoveObjectsFromDontDestroyOnLoadToScene(Scene scene)
|
||||
{
|
||||
// Move ALL NetworkObjects to the temp scene
|
||||
var objectsToKeep = m_NetworkManager.SpawnManager.SpawnedObjectsList;
|
||||
|
||||
foreach (var sobj in objectsToKeep)
|
||||
{
|
||||
if (sobj.gameObject.scene == DontDestroyOnLoadScene && (sobj.IsSceneObject == null || sobj.IsSceneObject.Value))
|
||||
// If it is in the DDOL then
|
||||
if (sobj.gameObject.scene == DontDestroyOnLoadScene)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// Only move objects with no parent as child objects will follow
|
||||
if (sobj.gameObject.transform.parent == null)
|
||||
{
|
||||
// set it back to active at this point
|
||||
sobj.gameObject.SetActive(true);
|
||||
SceneManager.MoveGameObjectToScene(sobj.gameObject, scene);
|
||||
// only move dynamically spawned network objects, with no parent as child objects will follow,
|
||||
// back into the currently active scene
|
||||
if (sobj.gameObject.transform.parent == null && sobj.IsSceneObject != null && !sobj.IsSceneObject.Value)
|
||||
{
|
||||
SceneManager.MoveGameObjectToScene(sobj.gameObject, scene);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user