From 4da4b225309e51737961ad2fe50b3eb05e9bcbd5 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 3 Jun 2021 09:57:43 -0500 Subject: [PATCH 01/38] refactor This removes NetworkSpawnManager.PendingSoftSynchObjects and replaces it with NetworkSceneManager.ScenePlacedObjects. The primary difference between the two is that the ScenePlacedObjects is populated immediately after a level is loaded or when being approved and already within the current scene. --- .../Prototyping/NetworkTransform.cs | 31 ++++++++----- .../Runtime/Core/NetworkObject.cs | 2 +- .../Messaging/InternalMessageHandler.cs | 4 +- .../SceneManagement/NetworkSceneManager.cs | 40 ++++++++++++++++- .../Runtime/Spawning/NetworkSpawnManager.cs | 44 +++---------------- .../NetworkObjectSceneSerializationTests.cs | 4 +- testproject/Assets/Prefabs/Player.prefab | 9 ++-- 7 files changed, 75 insertions(+), 59 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs b/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs index 2e7ab08182..db83c60d09 100644 --- a/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs +++ b/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs @@ -282,19 +282,26 @@ private void FixedUpdate() m_NetworkRotation.Value = m_CurrentRotation; m_NetworkWorldScale.Value = m_CurrentScale; } - else if (m_CurrentPosition != m_OldPosition || - m_CurrentRotation != m_OldRotation || - m_CurrentScale != m_OldScale - ) + else { - Debug.LogError($"Trying to update transform's position for object {gameObject.name} with ID {NetworkObjectId} when you're not allowed, please validate your {nameof(NetworkTransform)}'s authority settings", gameObject); - m_CurrentPosition = m_NetworkPosition.Value; - m_CurrentRotation = m_NetworkRotation.Value; - m_CurrentScale = m_NetworkWorldScale.Value; - - m_OldPosition = m_CurrentPosition; - m_OldRotation = m_CurrentRotation; - m_OldScale = m_CurrentScale; + var deltaPosition = Vector3.Distance(m_CurrentPosition, m_OldPosition); + if(deltaPosition >= MinMeters) + { + Debug.LogError($"Trying to update transform's position for object {gameObject.name} with ID {NetworkObjectId} when you're not allowed, please validate your {nameof(NetworkTransform)}'s authority settings", gameObject); + m_CurrentPosition = m_NetworkPosition.Value; + } + var deltaRotation = Vector3.Distance(m_CurrentRotation.eulerAngles, m_OldRotation.eulerAngles); + if (deltaRotation >= MinDegrees) + { + Debug.LogError($"Trying to update transform's rotation for object {gameObject.name} with ID {NetworkObjectId} when you're not allowed, please validate your {nameof(NetworkTransform)}'s authority settings", gameObject); + m_CurrentRotation = m_NetworkRotation.Value; + } + + if (m_CurrentScale != m_OldScale) + { + Debug.LogError($"Trying to update transform's scale for object {gameObject.name} with ID {NetworkObjectId} when you're not allowed, please validate your {nameof(NetworkTransform)}'s authority settings", gameObject); + m_CurrentScale = m_NetworkWorldScale.Value; + } } } diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkObject.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkObject.cs index d1e62c92f0..3790bcb66a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkObject.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkObject.cs @@ -50,7 +50,7 @@ internal void GenerateGlobalObjectIdHash() return; } - // do NOT regenerate GlobalObjectIdHash if Editor is transitining into or out of PlayMode + // do NOT regenerate GlobalObjectIdHash if Editor is transitioning into or out of PlayMode if (!UnityEditor.EditorApplication.isPlaying && UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode) { return; diff --git a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs index 8dccf5bc95..31d50437c4 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs @@ -118,6 +118,7 @@ public void HandleConnectionApproved(ulong clientId, Stream stream, float receiv void DelayedSpawnAction(Stream continuationStream) { + using (var continuationReader = PooledNetworkReader.Get(continuationStream)) { if (!NetworkManager.NetworkConfig.EnableSceneManagement) @@ -126,7 +127,7 @@ void DelayedSpawnAction(Stream continuationStream) } else { - NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(null); + NetworkManager.SceneManager.PopulateScenePlacedObjects(); } var objectCount = continuationReader.ReadUInt32Packed(); @@ -135,7 +136,6 @@ void DelayedSpawnAction(Stream continuationStream) NetworkObject.DeserializeSceneObject(continuationStream as NetworkBuffer, continuationReader, m_NetworkManager); } - NetworkManager.SpawnManager.CleanDiffedSceneObjects(); NetworkManager.IsConnectedClient = true; NetworkManager.InvokeOnClientConnectedCallback(NetworkManager.LocalClientId); } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index 3aeefc8889..3f75d2424e 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs @@ -273,12 +273,45 @@ internal void OnFirstSceneSwitchSync(uint sceneIndex, Guid switchSceneGuid) s_IsSwitching = false; } + + internal Dictionary ScenePlacedObjects = new Dictionary(); + + /// + /// Should be invoked on both the client and server side after: + /// -- A new scene has been loaded + /// -- Before any "DontDestroyOnLoad" NetworkObjects have been added back into the scene. + /// Added the ability to choose not to clear the scene placed objects for additive scene loading. + /// + internal void PopulateScenePlacedObjects(bool clearScenePlacedObjects = true) + { + if (clearScenePlacedObjects) + { + ScenePlacedObjects.Clear(); + } + + var networkObjects = UnityEngine.Object.FindObjectsOfType(); + + // Just add every NetworkObject found that isn't already in the list + // If any "non-in-scene placed NetworkObjects" are added to this list it shouldn't matter + // The only thing that matters is making sure each NetworkObject is keyed off of their GlobalObjectIdHash + foreach(var networkObjectInstance in networkObjects) + { + if (!ScenePlacedObjects.ContainsKey(networkObjectInstance.GlobalObjectIdHash)) + { + ScenePlacedObjects.Add(networkObjectInstance.GlobalObjectIdHash, networkObjectInstance); + } + } + } + private void OnSceneLoaded(Guid switchSceneGuid, Stream objectStream) { CurrentActiveSceneIndex = SceneNameToIndex[s_NextSceneName]; var nextScene = SceneManager.GetSceneByName(s_NextSceneName); SceneManager.SetActiveScene(nextScene); + //Get all NetworkObjects loaded by the scene + PopulateScenePlacedObjects(); + // Move all objects to the new scene MoveObjectsToScene(nextScene); @@ -311,6 +344,11 @@ private void OnSceneUnloadServer(Guid switchSceneGuid) { m_NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObjects[i], m_NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true); newSceneObjects.Add(networkObjects[i]); + + if(!ScenePlacedObjects.ContainsKey(networkObjects[i].GlobalObjectIdHash)) + { + Debug.LogWarning($"Missing Scene Object: {networkObjects[i].name} with GlobalObjectIdHash ({networkObjects[i].GlobalObjectIdHash})"); + } } } } @@ -366,7 +404,7 @@ private void OnSceneUnloadClient(Guid switchSceneGuid, Stream objectStream) { var networkObjects = UnityEngine.Object.FindObjectsOfType(); - m_NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects); + //m_NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects); using (var reader = PooledNetworkReader.Get(objectStream)) { diff --git a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs index 8a19ba9e1f..c0aa813917 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs @@ -245,17 +245,18 @@ internal NetworkObject CreateLocalNetworkObject(bool softCreate, uint prefabHash } else { - // SoftSync them by mapping - if (!PendingSoftSyncObjects.TryGetValue(prefabHash, out NetworkObject networkObject)) + if (!NetworkManager.SceneManager.ScenePlacedObjects.TryGetValue(prefabHash, out NetworkObject networkObject)) { if (NetworkLog.CurrentLogLevel <= LogLevel.Error) { NetworkLog.LogError($"{nameof(NetworkPrefab)} hash was not found! In-Scene placed {nameof(NetworkObject)} soft synchronization failure for Hash: {prefabHash}!"); + return null; } - return null; } - - PendingSoftSyncObjects.Remove(prefabHash); + else + { + NetworkManager.SceneManager.ScenePlacedObjects.Remove(prefabHash); + } if (parentNetworkObject != null) { @@ -549,20 +550,6 @@ internal void DestroySceneObjects() } } - internal void CleanDiffedSceneObjects() - { - // Clean up any in-scene objects that had been destroyed - if (PendingSoftSyncObjects.Count > 0) - { - foreach (var pair in PendingSoftSyncObjects) - { - UnityEngine.Object.Destroy(pair.Value.gameObject); - } - - // Make sure to clear this once done destroying all remaining NetworkObjects - PendingSoftSyncObjects.Clear(); - } - } internal void ServerSpawnSceneObjectsOnStartSweep() { @@ -580,25 +567,6 @@ internal void ServerSpawnSceneObjectsOnStartSweep() } } - internal void ClientCollectSoftSyncSceneObjectSweep(NetworkObject[] networkObjects) - { - if (networkObjects == null) - { - networkObjects = UnityEngine.Object.FindObjectsOfType(); - } - - for (int i = 0; i < networkObjects.Length; i++) - { - if (networkObjects[i].NetworkManager == NetworkManager) - { - if (networkObjects[i].IsSceneObject == null) - { - PendingSoftSyncObjects.Add(networkObjects[i].GlobalObjectIdHash, networkObjects[i]); - } - } - } - } - internal void OnDestroyObject(ulong networkId, bool destroyGameObject) { if (NetworkManager == null) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObjectSceneSerializationTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObjectSceneSerializationTests.cs index 7315522576..b6f95ec802 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObjectSceneSerializationTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObjectSceneSerializationTests.cs @@ -84,8 +84,8 @@ public void NetworkObjectSceneSerializationFailure() // Serialize the valid NetworkObject networkObject.SerializeSceneObject(writer, 0); - // Add this valid NetworkObject into the PendinigSoftSyncObjects list - NetworkManagerHelper.NetworkManagerObject.SpawnManager.PendingSoftSyncObjects.Add(networkObject.GlobalObjectIdHash, networkObject); + // Add this valid NetworkObject into the ScenePlacedObjects list + NetworkManagerHelper.NetworkManagerObject.SceneManager.ScenePlacedObjects.Add(networkObject.GlobalObjectIdHash, networkObject); } } diff --git a/testproject/Assets/Prefabs/Player.prefab b/testproject/Assets/Prefabs/Player.prefab index bdea40472b..b9f7e6b43b 100644 --- a/testproject/Assets/Prefabs/Player.prefab +++ b/testproject/Assets/Prefabs/Player.prefab @@ -52,14 +52,16 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: TransformAuthority: 1 - FixedSendsPerSecond: 5 + FixedSendsPerSecond: 15 InterpolatePosition: 1 SnapDistance: 10 InterpolateServer: 1 - MinMeters: 0.16 + MinMeters: 0.15 MinDegrees: 1.5 MinSize: 0.15 - Channel: 0 + Channel: 2 + m_UseLocal: + m_InternalValue: 0 --- !u!114 &-3775814466963834669 MonoBehaviour: m_ObjectHideFlags: 0 @@ -73,6 +75,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: GlobalObjectIdHash: 951099334 + m_MarkedAsSceneObject: 0 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 --- !u!33 &4079352819444256610 From cfe461af03f603e63e5c8b67207e5eb63f8e1300 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 3 Jun 2021 15:01:46 -0500 Subject: [PATCH 02/38] style and refactor Migrating the ScenePlacedObjects dictionary up to the rest of the NetworkkSceneManager's dictionary definitions. Removing the PendingSoftSyncObjects dictionary from NetworkSpawnManager. --- .../Runtime/SceneManagement/NetworkSceneManager.cs | 7 ++++++- .../Runtime/Spawning/NetworkSpawnManager.cs | 3 --- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index 3f75d2424e..d4d8cf000b 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs @@ -79,6 +79,7 @@ public class NetworkSceneManager internal readonly Dictionary SceneNameToIndex = new Dictionary(); internal readonly Dictionary SceneIndexToString = new Dictionary(); internal readonly Dictionary SceneSwitchProgresses = new Dictionary(); + internal readonly Dictionary ScenePlacedObjects = new Dictionary(); private static Scene s_LastScene; private static string s_NextSceneName; @@ -274,7 +275,7 @@ internal void OnFirstSceneSwitchSync(uint sceneIndex, Guid switchSceneGuid) } - internal Dictionary ScenePlacedObjects = new Dictionary(); + /// /// Should be invoked on both the client and server side after: @@ -299,6 +300,10 @@ internal void PopulateScenePlacedObjects(bool clearScenePlacedObjects = true) if (!ScenePlacedObjects.ContainsKey(networkObjectInstance.GlobalObjectIdHash)) { ScenePlacedObjects.Add(networkObjectInstance.GlobalObjectIdHash, networkObjectInstance); + if(networkObjectInstance.IsSceneObject == null) + { + networkObjectInstance.IsSceneObject = true; + } } } } diff --git a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs index c0aa813917..055e551861 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs @@ -24,9 +24,6 @@ public class NetworkSpawnManager /// public readonly Dictionary SpawnedObjects = new Dictionary(); - // Pending SoftSync objects - internal readonly Dictionary PendingSoftSyncObjects = new Dictionary(); - /// /// A list of the spawned objects /// From 70e07e810b37bed856ec5d2ced8d837ce8c37bf6 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 3 Jun 2021 16:58:01 -0500 Subject: [PATCH 03/38] refactor Use the ScenePlacedObjects dictionary to generate the client(s) switch scene stream buffer. Refactored PopulateScenePlacedObjects method to not set the IsSceneObject to true and to also check and make sure the NetworkObject instance's NetworkManager reference is the same NetworkManager instance as the NetworkSceneManager's NetworkManager instance in question in order to maintain compatibility with the MultiInstanceHelper class for Mult-Instance unit tests. --- .../SceneManagement/NetworkSceneManager.cs | 44 +++++-------------- 1 file changed, 12 insertions(+), 32 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index d4d8cf000b..8a133bfc07 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs @@ -299,10 +299,10 @@ internal void PopulateScenePlacedObjects(bool clearScenePlacedObjects = true) { if (!ScenePlacedObjects.ContainsKey(networkObjectInstance.GlobalObjectIdHash)) { - ScenePlacedObjects.Add(networkObjectInstance.GlobalObjectIdHash, networkObjectInstance); - if(networkObjectInstance.IsSceneObject == null) + // We check to make sure the NetworkManager instance is the same one to be "MultiInstanceHelpers" compatible + if (networkObjectInstance.IsSceneObject == null && networkObjectInstance.NetworkManager == m_NetworkManager) { - networkObjectInstance.IsSceneObject = true; + ScenePlacedObjects.Add(networkObjectInstance.GlobalObjectIdHash, networkObjectInstance); } } } @@ -336,27 +336,10 @@ private void OnSceneLoaded(Guid switchSceneGuid, Stream objectStream) private void OnSceneUnloadServer(Guid switchSceneGuid) { - // Justification: Rare alloc, could(should?) reuse - var newSceneObjects = new List(); + // Register in-scene placed NetworkObjects with MLAPI + foreach (var keyValuePair in ScenePlacedObjects) { - var networkObjects = UnityEngine.Object.FindObjectsOfType(); - - for (int i = 0; i < networkObjects.Length; i++) - { - if (networkObjects[i].NetworkManager == m_NetworkManager) - { - if (networkObjects[i].IsSceneObject == null) - { - m_NetworkManager.SpawnManager.SpawnNetworkObjectLocally(networkObjects[i], m_NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true); - newSceneObjects.Add(networkObjects[i]); - - if(!ScenePlacedObjects.ContainsKey(networkObjects[i].GlobalObjectIdHash)) - { - Debug.LogWarning($"Missing Scene Object: {networkObjects[i].name} with GlobalObjectIdHash ({networkObjects[i].GlobalObjectIdHash})"); - } - } - } - } + m_NetworkManager.SpawnManager.SpawnNetworkObjectLocally(keyValuePair.Value, m_NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true); } for (int j = 0; j < m_NetworkManager.ConnectedClientsList.Count; j++) @@ -370,9 +353,10 @@ private void OnSceneUnloadServer(Guid switchSceneGuid) writer.WriteByteArray(switchSceneGuid.ToByteArray()); uint sceneObjectsToSpawn = 0; - for (int i = 0; i < newSceneObjects.Count; i++) + + foreach(var keyValuePair in ScenePlacedObjects) { - if (newSceneObjects[i].Observers.Contains(m_NetworkManager.ConnectedClientsList[j].ClientId)) + if (keyValuePair.Value.Observers.Contains(m_NetworkManager.ConnectedClientsList[j].ClientId)) { sceneObjectsToSpawn++; } @@ -380,15 +364,13 @@ private void OnSceneUnloadServer(Guid switchSceneGuid) // Write number of scene objects to spawn writer.WriteUInt32Packed(sceneObjectsToSpawn); - - for (int i = 0; i < newSceneObjects.Count; i++) + foreach (var keyValuePair in ScenePlacedObjects) { - if (newSceneObjects[i].Observers.Contains(m_NetworkManager.ConnectedClientsList[j].ClientId)) + if (keyValuePair.Value.Observers.Contains(m_NetworkManager.ConnectedClientsList[j].ClientId)) { - newSceneObjects[i].SerializeSceneObject(writer, m_NetworkManager.ConnectedClientsList[j].ClientId); + keyValuePair.Value.SerializeSceneObject(writer, m_NetworkManager.ConnectedClientsList[j].ClientId); } } - m_NetworkManager.MessageSender.Send(m_NetworkManager.ConnectedClientsList[j].ClientId, NetworkConstants.SWITCH_SCENE, NetworkChannel.Internal, buffer); } } @@ -409,8 +391,6 @@ private void OnSceneUnloadClient(Guid switchSceneGuid, Stream objectStream) { var networkObjects = UnityEngine.Object.FindObjectsOfType(); - //m_NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects); - using (var reader = PooledNetworkReader.Get(objectStream)) { var newObjectsCount = reader.ReadUInt32Packed(); From 4cfbafd6fa9ed94f81abb7e167721dc3f9b14e1c Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 8 Jun 2021 16:31:47 -0500 Subject: [PATCH 04/38] refactor A non-functional version of the SceneRegistration, SceneRegistrationEntry, and AdditiveSceneGroup assets as they would be used within the editor. This isn't a full implementation, but just a POC. --- .../Editor/NetworkManagerEditor.cs | 7 ++ .../Runtime/Configuration/NetworkConfig.cs | 4 ++ .../SceneManagement/AddtiveSceneGroup.cs | 64 +++++++++++++++++++ .../SceneManagement/AddtiveSceneGroup.cs.meta | 11 ++++ .../SceneManagement/SceneRegistration.cs | 24 +++++++ .../SceneManagement/SceneRegistration.cs.meta | 11 ++++ .../SceneManagement/SceneRegistrationEntry.cs | 46 +++++++++++++ .../SceneRegistrationEntry.cs.meta | 11 ++++ .../Assets/Samples/SceneRegistration.meta | 8 +++ .../MyAdditiveSceneGroup.asset | 17 +++++ .../MyAdditiveSceneGroup.asset.meta | 8 +++ .../MySceneRegistration.asset | 16 +++++ .../MySceneRegistration.asset.meta | 8 +++ .../MySceneRegistrationEntry.asset | 18 ++++++ .../MySceneRegistrationEntry.asset.meta | 8 +++ .../MySecondAdditiveSceneGroup.asset | 17 +++++ .../MySecondAdditiveSceneGroup.asset.meta | 8 +++ testproject/Assets/Scripts.meta | 8 +++ 18 files changed, 294 insertions(+) create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs.meta create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs.meta create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta create mode 100644 testproject/Assets/Samples/SceneRegistration.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta create mode 100644 testproject/Assets/Scripts.meta diff --git a/com.unity.multiplayer.mlapi/Editor/NetworkManagerEditor.cs b/com.unity.multiplayer.mlapi/Editor/NetworkManagerEditor.cs index 960d1fa1ba..9ca4425a86 100644 --- a/com.unity.multiplayer.mlapi/Editor/NetworkManagerEditor.cs +++ b/com.unity.multiplayer.mlapi/Editor/NetworkManagerEditor.cs @@ -44,6 +44,7 @@ public class NetworkManagerEditor : UnityEditor.Editor private SerializedProperty m_LoadSceneTimeOutProperty; private SerializedProperty m_EnableMessageBufferingProperty; private SerializedProperty m_MessageBufferTimeoutProperty; + private SerializedProperty m_SceneRegistrationProperty; private ReorderableList m_NetworkPrefabsList; private ReorderableList m_RegisteredScenesList; @@ -157,6 +158,7 @@ private void CheckNullProperties() m_LoadSceneTimeOutProperty = m_NetworkConfigProperty.FindPropertyRelative("LoadSceneTimeOut"); m_EnableMessageBufferingProperty = m_NetworkConfigProperty.FindPropertyRelative("EnableMessageBuffering"); m_MessageBufferTimeoutProperty = m_NetworkConfigProperty.FindPropertyRelative("MessageBufferTimeout"); + m_SceneRegistrationProperty = m_NetworkConfigProperty.FindPropertyRelative("SceneRegistration"); } private void OnEnable() @@ -269,6 +271,8 @@ public override void OnInspectorGUI() m_NetworkPrefabsList.DoLayoutList(); EditorGUILayout.Space(); + + using (new EditorGUI.DisabledScope(!m_NetworkManager.NetworkConfig.EnableSceneManagement)) { m_RegisteredScenesList.DoLayoutList(); @@ -276,6 +280,8 @@ public override void OnInspectorGUI() } + + EditorGUILayout.LabelField("General", EditorStyles.boldLabel); EditorGUILayout.PropertyField(m_ProtocolVersionProperty); @@ -358,6 +364,7 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(m_RpcHashSizeProperty); EditorGUILayout.LabelField("Scene Management", EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_SceneRegistrationProperty); EditorGUILayout.PropertyField(m_EnableSceneManagementProperty); using (new EditorGUI.DisabledScope(!m_NetworkManager.NetworkConfig.EnableSceneManagement)) diff --git a/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs index 2e74c3f7fe..c9434ee3e6 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs @@ -6,6 +6,7 @@ using MLAPI.Hashing; using MLAPI.Serialization; using MLAPI.Serialization.Pooled; +using MLAPI.SceneManagement; namespace MLAPI.Configuration { @@ -27,6 +28,9 @@ public class NetworkConfig [Tooltip("The NetworkTransport to use")] public NetworkTransport NetworkTransport = null; + [Tooltip("Scene registration object that defines the scenes to be used for this MLAPI project.")] + public SceneRegistration SceneRegistration; + /// /// A list of SceneNames that can be used during networked games. /// diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs new file mode 100644 index 0000000000..9387de4323 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace MLAPI.SceneManagement +{ + [CreateAssetMenu(fileName = "AdditiveSceneGroup", menuName = "MLAPI/SceneManagement/AdditiveSceneGroup")] + [Serializable] + public class AddtiveSceneGroup : ScriptableObject, IAdditiveSceneGroup + { + public List AdditiveSceneGroups; + + [HideInInspector] + [SerializeField] + private List m_AdditiveSceneNames; + +#if UNITY_EDITOR + [SerializeField] + private List m_AdditiveScenes; + private void OnValidate() + { + if (m_AdditiveSceneNames == null) + { + m_AdditiveSceneNames = new List(); + } + else + { + m_AdditiveSceneNames.Clear(); + } + + foreach (var includedScene in m_AdditiveScenes) + { + if (includedScene != null) + { + m_AdditiveSceneNames.Add(includedScene.name); + } + } + + } +#endif + + protected virtual List OnGetAdditiveScenes() + { + return m_AdditiveSceneNames; + } + + public List GetAdditiveScenes() + { + return OnGetAdditiveScenes(); + } + } + + + public interface IAdditiveSceneGroup + { + List GetAdditiveScenes(); + } + +} + + diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs.meta new file mode 100644 index 0000000000..2a9f0f463c --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b9f97901b434bd84bb2a433719183485 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs new file mode 100644 index 0000000000..a886438bd1 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace MLAPI.SceneManagement +{ + [CreateAssetMenu(fileName = "SceneRegistration", menuName = "MLAPI/SceneManagement/SceneRegistration")] + [Serializable] + public class SceneRegistration : ScriptableObject + { + [SerializeField] + private List m_SceneRegistrations; + +#if UNITY_EDITOR + private void OnValidate() + { + + } +#endif + } +} diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs.meta new file mode 100644 index 0000000000..73d9959796 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 180fe42d996da264ab3d32e3fc9033ca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs new file mode 100644 index 0000000000..69b157807a --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace MLAPI.SceneManagement +{ + [CreateAssetMenu(fileName = "SceneRegistrationEntry", menuName = "MLAPI/SceneManagement/SceneRegistrationEntry")] + [Serializable] + public class SceneRegistrationEntry : ScriptableObject, ISceneRegistrationEntry + { + [HideInInspector] + [SerializeField] + private string m_PrimarySceneName; + + [SerializeField] + private AddtiveSceneGroup m_AddtiveSceneGroup; + +#if UNITY_EDITOR + [SerializeField] + private SceneAsset m_PrimaryScene; + + private void OnValidate() + { + if (m_PrimaryScene != null) + { + m_PrimarySceneName = m_PrimaryScene.name; + } + } +#endif + public string GetPrimaryScene() + { + return m_PrimarySceneName; + } + } + + public interface ISceneRegistrationEntry + { + string GetPrimaryScene(); + } + +} + + diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta new file mode 100644 index 0000000000..f931424018 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c4b50146588e074881aa52f9648adf9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration.meta b/testproject/Assets/Samples/SceneRegistration.meta new file mode 100644 index 0000000000..46d0310b70 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1aa8970026d543344a1ed7dcc62a5a44 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset new file mode 100644 index 0000000000..60a9a8e73b --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} + m_Name: MyAdditiveSceneGroup + m_EditorClassIdentifier: + AdditiveSceneGroups: [] + m_AdditiveSceneNames: [] + m_AdditiveScenes: [] diff --git a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta b/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta new file mode 100644 index 0000000000..7a30c87538 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f3d7105e5ceb0914ea4769284cc7147c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset new file mode 100644 index 0000000000..d72bacceed --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: MySceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - {fileID: 11400000, guid: eaed0b3453e8bb84dae5cb34ce54a851, type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta b/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta new file mode 100644 index 0000000000..319cae25a6 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5fda3bf0e91de404f81c9b95e1a591e4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset new file mode 100644 index 0000000000..0460fe509f --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: MySceneRegistrationEntry + m_EditorClassIdentifier: + m_PrimarySceneName: EnableDisableSceneNetworkObject + m_AddtiveSceneGroup: {fileID: 11400000, guid: f3d7105e5ceb0914ea4769284cc7147c, + type: 2} + m_PrimaryScene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta new file mode 100644 index 0000000000..ed97c64a5a --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: eaed0b3453e8bb84dae5cb34ce54a851 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset new file mode 100644 index 0000000000..60a9a8e73b --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} + m_Name: MyAdditiveSceneGroup + m_EditorClassIdentifier: + AdditiveSceneGroups: [] + m_AdditiveSceneNames: [] + m_AdditiveScenes: [] diff --git a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta new file mode 100644 index 0000000000..c3256cadd1 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7b66567611954e64db46bf706302b6d7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Scripts.meta b/testproject/Assets/Scripts.meta new file mode 100644 index 0000000000..fbdac1c07d --- /dev/null +++ b/testproject/Assets/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7d4cd8efbd22842fb88268393e9d06a2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From d47281e619bce068c72735fb5567a7c6d878d8de Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Wed, 16 Jun 2021 19:15:42 -0500 Subject: [PATCH 05/38] refactor Renaming OnSceneUnloadClient and OnSceneUnloadServer to OnClientLoadedScene and OnServerLoadedScene --- .../SceneManagement/NetworkSceneManager.cs | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index 8a133bfc07..776901ca16 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs @@ -275,7 +275,7 @@ internal void OnFirstSceneSwitchSync(uint sceneIndex, Guid switchSceneGuid) } - + /// /// Should be invoked on both the client and server side after: @@ -295,7 +295,7 @@ internal void PopulateScenePlacedObjects(bool clearScenePlacedObjects = true) // Just add every NetworkObject found that isn't already in the list // If any "non-in-scene placed NetworkObjects" are added to this list it shouldn't matter // The only thing that matters is making sure each NetworkObject is keyed off of their GlobalObjectIdHash - foreach(var networkObjectInstance in networkObjects) + foreach (var networkObjectInstance in networkObjects) { if (!ScenePlacedObjects.ContainsKey(networkObjectInstance.GlobalObjectIdHash)) { @@ -326,20 +326,23 @@ private void OnSceneLoaded(Guid switchSceneGuid, Stream objectStream) if (m_NetworkManager.IsServer) { - OnSceneUnloadServer(switchSceneGuid); + OnServerLoadedScene(switchSceneGuid); } else { - OnSceneUnloadClient(switchSceneGuid, objectStream); + OnClientLoadedScene(switchSceneGuid, objectStream); } } - private void OnSceneUnloadServer(Guid switchSceneGuid) + private void OnServerLoadedScene(Guid switchSceneGuid) { // Register in-scene placed NetworkObjects with MLAPI foreach (var keyValuePair in ScenePlacedObjects) { - m_NetworkManager.SpawnManager.SpawnNetworkObjectLocally(keyValuePair.Value, m_NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true); + if (!keyValuePair.Value.IsPlayerObject) + { + m_NetworkManager.SpawnManager.SpawnNetworkObjectLocally(keyValuePair.Value, m_NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true); + } } for (int j = 0; j < m_NetworkManager.ConnectedClientsList.Count; j++) @@ -353,8 +356,8 @@ private void OnSceneUnloadServer(Guid switchSceneGuid) writer.WriteByteArray(switchSceneGuid.ToByteArray()); uint sceneObjectsToSpawn = 0; - - foreach(var keyValuePair in ScenePlacedObjects) + + foreach (var keyValuePair in ScenePlacedObjects) { if (keyValuePair.Value.Observers.Contains(m_NetworkManager.ConnectedClientsList[j].ClientId)) { @@ -387,7 +390,7 @@ private void OnSceneUnloadServer(Guid switchSceneGuid) OnSceneSwitched?.Invoke(); } - private void OnSceneUnloadClient(Guid switchSceneGuid, Stream objectStream) + private void OnClientLoadedScene(Guid switchSceneGuid, Stream objectStream) { var networkObjects = UnityEngine.Object.FindObjectsOfType(); From 6466d6c0a9f10d2f272f58d3c17559358a81e13d Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 17 Jun 2021 15:31:15 -0500 Subject: [PATCH 06/38] refactor and fix Fixed some remaining checks (player prefab) as to whether the rigid body should be kinematic or not to prevent the mega spam. During the revert changes of the NetworkTransform changes to better reflect what is in the develop branch, missed the else if. Fixed a minor issue with the slider in the SceneTransitioning manual test to better visually reflect what the value is as well as handle the scenario if it starts at 0 boxes per second it needed to start the coroutine and if set to zero and the coroutine was running it terminates the coroutine. --- .../Prototyping/NetworkTransform.cs | 5 ++++- .../Tests/Manual/Scripts/NetworkPrefabPool.cs | 20 ++++++++++++++++--- .../Manual/Scripts/PlayerMovementManager.cs | 18 +++++++++++++++-- .../ProjectSettings/ProjectVersion.txt | 4 ++-- 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs b/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs index 249e89cd49..65adab6d35 100644 --- a/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs +++ b/com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs @@ -282,7 +282,10 @@ private void FixedUpdate() m_NetworkRotation.Value = m_CurrentRotation; m_NetworkWorldScale.Value = m_CurrentScale; } - else + else if (m_CurrentPosition != m_OldPosition || + m_CurrentRotation != m_OldRotation || + m_CurrentScale != m_OldScale + ) { Debug.LogError($"Trying to update transform's position for object {gameObject.name} with ID {NetworkObjectId} when you're not allowed, please validate your {nameof(NetworkTransform)}'s authority settings. It's also possible you have other systems updating your transform's position, such as a rigid body for example.", gameObject); m_CurrentPosition = m_NetworkPosition.Value; diff --git a/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs b/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs index 522b8c7d53..ac792f8760 100644 --- a/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs +++ b/testproject/Assets/Tests/Manual/Scripts/NetworkPrefabPool.cs @@ -21,7 +21,7 @@ public class NetworkPrefabPool : NetworkBehaviour [Tooltip("When enabled, this will utilize the NetworkPrefabHandler to register a custom INetworkPrefabInstanceHandler")] public bool EnableHandler; - [Tooltip("When enabled, this will register register a custom INetworkPrefabInstanceHandler using a NetworkObject reference")] + [Tooltip("When enabled, this will register a custom INetworkPrefabInstanceHandler using a NetworkObject reference")] public bool RegisterUsingNetworkObject; [Tooltip("What is going to be spawned on the server side from the pool.")] @@ -167,6 +167,9 @@ public override void OnNetworkSpawn() { m_DelaySpawning = Time.realtimeSinceStartup + InitialSpawnDelay; StartSpawningBoxes(); + + //Make sure our slider reflects the current spawn rate + UpdateSpawnsPerSecond(); } } } @@ -233,7 +236,6 @@ private GameObject AddNewInstance() /// private void StartSpawningBoxes() { - if (NetworkManager.IsHost && SpawnSlider != null) { SpawnSlider.gameObject.SetActive(true); @@ -246,7 +248,7 @@ private void StartSpawningBoxes() } /// - /// Checks to detemrine if we need to update our spawns per second calculations + /// Checks to determine if we need to update our spawns per second calculations /// public void UpdateSpawnsPerSecond() { @@ -254,6 +256,18 @@ public void UpdateSpawnsPerSecond() { SpawnsPerSecond = (int)SpawnSlider.value; SpawnSliderValueText.text = SpawnsPerSecond.ToString(); + + // Handle case where the initial value is set to zero and so coroutine needs to be started + if(SpawnsPerSecond > 0 && !m_IsSpawningObjects) + { + StartSpawningBoxes(); + } + else //Handle case where spawning coroutine is running but we set our spawn rate to zero + if (SpawnsPerSecond == 0 && m_IsSpawningObjects) + { + m_IsSpawningObjects = false; + StopCoroutine(SpawnObjects()); + } } } diff --git a/testproject/Assets/Tests/Manual/Scripts/PlayerMovementManager.cs b/testproject/Assets/Tests/Manual/Scripts/PlayerMovementManager.cs index cc765780fc..4e732f7db1 100644 --- a/testproject/Assets/Tests/Manual/Scripts/PlayerMovementManager.cs +++ b/testproject/Assets/Tests/Manual/Scripts/PlayerMovementManager.cs @@ -1,12 +1,13 @@ -using MLAPI; using UnityEngine; +using MLAPI; + namespace TestProject.ManualTests { /// /// Used to simulate a player moving around /// - public class PlayerMovementManager : MonoBehaviour + public class PlayerMovementManager : NetworkBehaviour { public int MoveSpeed = 10; @@ -14,12 +15,24 @@ public class PlayerMovementManager : MonoBehaviour private RandomMovement m_RandomMovement; + private Rigidbody m_Rigidbody; + // Start is called before the first frame update private void Start() { m_NetworkedObject = GetComponent(); m_RandomMovement = GetComponent(); + + } + + public override void OnNetworkSpawn() + { + m_Rigidbody = GetComponent(); + if (m_Rigidbody != null) + { + m_Rigidbody.isKinematic = !NetworkObject.IsOwner; + } } private void Update() @@ -37,6 +50,7 @@ private void FixedUpdate() { if (m_NetworkedObject && m_NetworkedObject.NetworkManager && m_NetworkedObject.NetworkManager.IsListening) { + if (!m_NetworkedObject.IsOwner) { return; diff --git a/testproject/ProjectSettings/ProjectVersion.txt b/testproject/ProjectSettings/ProjectVersion.txt index 143b639ca2..79c7dbee32 100644 --- a/testproject/ProjectSettings/ProjectVersion.txt +++ b/testproject/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.1.1f1 -m_EditorVersionWithRevision: 2021.1.1f1 (6fdc41dfa55a) +m_EditorVersion: 2021.1.3f1 +m_EditorVersionWithRevision: 2021.1.3f1 (4bef613afd59) From bdfe6b5b0f82984302dadce544df2da3d9eb6ee2 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 21 Jun 2021 09:18:03 -0500 Subject: [PATCH 07/38] Fix This is a fix for the NetworkObjectOnSpawnTest where it was spawning a GameObject twice that contained a component that would throw an exception if you spawned a NetworkObject. --- .../Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs index 0bf6720dad..1e6930041d 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs @@ -27,11 +27,12 @@ public IEnumerator InstantiateDestroySpawnNotCalled() yield return null; // instantiate - var instance = Object.Instantiate(gameObject); + //var instance = Object.Instantiate(gameObject); yield return null; // destroy - Object.Destroy(instance); + Object.Destroy(gameObject); + yield return null; } From ab30892d09072f10e14fdc272f0b4f68dc4d8ff2 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 21 Jun 2021 09:31:41 -0500 Subject: [PATCH 08/38] fix An unintended project version change --- testproject/ProjectSettings/ProjectVersion.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testproject/ProjectSettings/ProjectVersion.txt b/testproject/ProjectSettings/ProjectVersion.txt index 79c7dbee32..143b639ca2 100644 --- a/testproject/ProjectSettings/ProjectVersion.txt +++ b/testproject/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.1.3f1 -m_EditorVersionWithRevision: 2021.1.3f1 (4bef613afd59) +m_EditorVersion: 2021.1.1f1 +m_EditorVersionWithRevision: 2021.1.1f1 (6fdc41dfa55a) From 34b33b70b6f45f73ad704864d1fc6d0f4a5eb8a4 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 21 Jun 2021 11:09:23 -0500 Subject: [PATCH 09/38] bug test Checking to see if Yamato fails on this... --- .../Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs | 2 +- testproject/Packages/manifest.json | 2 +- testproject/Packages/packages-lock.json | 2 +- testproject/ProjectSettings/ProjectVersion.txt | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs index 1e6930041d..c94ebb7bb0 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs @@ -27,7 +27,7 @@ public IEnumerator InstantiateDestroySpawnNotCalled() yield return null; // instantiate - //var instance = Object.Instantiate(gameObject); + var instance = Object.Instantiate(gameObject); yield return null; // destroy diff --git a/testproject/Packages/manifest.json b/testproject/Packages/manifest.json index 36af887ba2..c9c226e0fb 100644 --- a/testproject/Packages/manifest.json +++ b/testproject/Packages/manifest.json @@ -9,7 +9,7 @@ "com.unity.package-validation-suite": "0.19.2-preview", "com.unity.test-framework": "1.1.24", "com.unity.textmeshpro": "3.0.4", - "com.unity.timeline": "1.5.2", + "com.unity.timeline": "1.5.4", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/testproject/Packages/packages-lock.json b/testproject/Packages/packages-lock.json index 253421d55c..fdfb85e3d9 100644 --- a/testproject/Packages/packages-lock.json +++ b/testproject/Packages/packages-lock.json @@ -147,7 +147,7 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.5.2", + "version": "1.5.4", "depth": 0, "source": "registry", "dependencies": { diff --git a/testproject/ProjectSettings/ProjectVersion.txt b/testproject/ProjectSettings/ProjectVersion.txt index 143b639ca2..79c7dbee32 100644 --- a/testproject/ProjectSettings/ProjectVersion.txt +++ b/testproject/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.1.1f1 -m_EditorVersionWithRevision: 2021.1.1f1 (6fdc41dfa55a) +m_EditorVersion: 2021.1.3f1 +m_EditorVersionWithRevision: 2021.1.3f1 (4bef613afd59) From 83afebc9ba211d8d35c3e5bfe81e3791fec81dda Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 21 Jun 2021 13:20:22 -0500 Subject: [PATCH 10/38] test This test verifies that "cleaning in-scene placed network objects" within the connection approved method was hiding potential bugs from other unit tests. --- .../Messaging/InternalMessageHandler.cs | 3 +++ .../SceneManagement/NetworkSceneManager.cs | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs index 49f58ecd69..243c2223d2 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs @@ -104,6 +104,9 @@ void DelayedSpawnAction(Stream continuationStream) NetworkObject.DeserializeSceneObject(continuationStream as NetworkBuffer, continuationReader, m_NetworkManager); } + // Should "hide" any bug from a unit test that does not clean up all of its runtime generated NetworkObjects + NetworkManager.SceneManager.CleanDiffedSceneObjectsHideUnitTestBugs(); + NetworkManager.IsConnectedClient = true; NetworkManager.InvokeOnClientConnectedCallback(NetworkManager.LocalClientId); } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index 776901ca16..40737e193a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs @@ -95,6 +95,26 @@ internal NetworkSceneManager(NetworkManager networkManager) m_NetworkManager = networkManager; } + + /// + /// Temporary method to prove out this was hiding other potential unit test bugs + /// + internal void CleanDiffedSceneObjectsHideUnitTestBugs() + { + // Clean up any in-scene objects that had been destroyed + if (ScenePlacedObjects.Count > 0) + { + foreach (var pair in ScenePlacedObjects) + { + UnityEngine.Object.Destroy(pair.Value.gameObject); + } + + // Make sure to clear this once done destroying all remaining NetworkObjects + ScenePlacedObjects.Clear(); + } + } + + internal void SetCurrentSceneIndex() { if (!SceneNameToIndex.TryGetValue(SceneManager.GetActiveScene().name, out CurrentSceneIndex)) From 242ac60979cf0a36963c48a8e8c6dbc2fba4d812 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 21 Jun 2021 13:42:53 -0500 Subject: [PATCH 11/38] fix Removing the unit test duplicated GameObject instance and all of the associated code to verify this was how the bug was missed by TestRunner and Yamato. --- .../Messaging/InternalMessageHandler.cs | 3 --- .../SceneManagement/NetworkSceneManager.cs | 20 ------------------- .../NetworkObjectOnSpawnTests.cs | 4 ---- 3 files changed, 27 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs index 243c2223d2..49f58ecd69 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs @@ -104,9 +104,6 @@ void DelayedSpawnAction(Stream continuationStream) NetworkObject.DeserializeSceneObject(continuationStream as NetworkBuffer, continuationReader, m_NetworkManager); } - // Should "hide" any bug from a unit test that does not clean up all of its runtime generated NetworkObjects - NetworkManager.SceneManager.CleanDiffedSceneObjectsHideUnitTestBugs(); - NetworkManager.IsConnectedClient = true; NetworkManager.InvokeOnClientConnectedCallback(NetworkManager.LocalClientId); } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index 40737e193a..776901ca16 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs @@ -95,26 +95,6 @@ internal NetworkSceneManager(NetworkManager networkManager) m_NetworkManager = networkManager; } - - /// - /// Temporary method to prove out this was hiding other potential unit test bugs - /// - internal void CleanDiffedSceneObjectsHideUnitTestBugs() - { - // Clean up any in-scene objects that had been destroyed - if (ScenePlacedObjects.Count > 0) - { - foreach (var pair in ScenePlacedObjects) - { - UnityEngine.Object.Destroy(pair.Value.gameObject); - } - - // Make sure to clear this once done destroying all remaining NetworkObjects - ScenePlacedObjects.Clear(); - } - } - - internal void SetCurrentSceneIndex() { if (!SceneNameToIndex.TryGetValue(SceneManager.GetActiveScene().name, out CurrentSceneIndex)) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs index c94ebb7bb0..5c3360e64d 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs @@ -26,10 +26,6 @@ public IEnumerator InstantiateDestroySpawnNotCalled() yield return null; - // instantiate - var instance = Object.Instantiate(gameObject); - yield return null; - // destroy Object.Destroy(gameObject); From c31e9a0e76c2ad7352b4c182e39fb1166cc30950 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 22 Jun 2021 11:27:31 -0500 Subject: [PATCH 12/38] fix reverting back to the original values for these 3 files that were mistakenly committed. --- testproject/Packages/manifest.json | 2 +- testproject/Packages/packages-lock.json | 2 +- testproject/ProjectSettings/ProjectVersion.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/testproject/Packages/manifest.json b/testproject/Packages/manifest.json index c9c226e0fb..36af887ba2 100644 --- a/testproject/Packages/manifest.json +++ b/testproject/Packages/manifest.json @@ -9,7 +9,7 @@ "com.unity.package-validation-suite": "0.19.2-preview", "com.unity.test-framework": "1.1.24", "com.unity.textmeshpro": "3.0.4", - "com.unity.timeline": "1.5.4", + "com.unity.timeline": "1.5.2", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/testproject/Packages/packages-lock.json b/testproject/Packages/packages-lock.json index fdfb85e3d9..253421d55c 100644 --- a/testproject/Packages/packages-lock.json +++ b/testproject/Packages/packages-lock.json @@ -147,7 +147,7 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.5.4", + "version": "1.5.2", "depth": 0, "source": "registry", "dependencies": { diff --git a/testproject/ProjectSettings/ProjectVersion.txt b/testproject/ProjectSettings/ProjectVersion.txt index 79c7dbee32..143b639ca2 100644 --- a/testproject/ProjectSettings/ProjectVersion.txt +++ b/testproject/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.1.3f1 -m_EditorVersionWithRevision: 2021.1.3f1 (4bef613afd59) +m_EditorVersion: 2021.1.1f1 +m_EditorVersionWithRevision: 2021.1.1f1 (6fdc41dfa55a) From 44060eda0a3db94f7b0492ea9881464c3abeeebb Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 22 Jun 2021 11:29:50 -0500 Subject: [PATCH 13/38] wip This is just work in progress, need to merge 819 back into this branch. --- .../Runtime/Configuration/NetworkConfig.cs | 9 +++++++-- .../SceneManagement/AddtiveSceneGroup.cs | 19 ++++++++++++++++++- .../SceneManagement/SceneRegistration.cs | 10 ++++++++++ .../SceneManagement/SceneRegistrationEntry.cs | 12 ++++++++++++ .../MySecondAdditiveSceneGroup.asset | 2 +- 5 files changed, 48 insertions(+), 4 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs index c9434ee3e6..05570f77a1 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs @@ -297,9 +297,14 @@ public ulong GetConfig(bool cache = true) if (EnableSceneManagement && !AllowRuntimeSceneChanges) { - for (int i = 0; i < RegisteredScenes.Count; i++) + //for (int i = 0; i < RegisteredScenes.Count; i++) + //{ + // writer.WriteString(RegisteredScenes[i]); + //} + + if(SceneRegistration != null) { - writer.WriteString(RegisteredScenes[i]); + writer.WriteString(SceneRegistration.GetAllScenesForHash()); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index 9387de4323..78f0da111a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -38,7 +38,6 @@ private void OnValidate() m_AdditiveSceneNames.Add(includedScene.name); } } - } #endif @@ -51,12 +50,30 @@ public List GetAdditiveScenes() { return OnGetAdditiveScenes(); } + + public void GenerateScenesHashString() + { + var scenesHashBase = string.Empty; + foreach (var sceneEntry in OnGetAdditiveScenes()) + { + scenesHashBase += sceneEntry; + } + + foreach (var additiveSceneGroup in AdditiveSceneGroups) + { + scenesHashBase += additiveSceneGroup.GetAllScenesForHash(); + } + + return scenesHashBase; + } } public interface IAdditiveSceneGroup { List GetAdditiveScenes(); + + string GetAllScenesForHash(); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index a886438bd1..75f7e394ee 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -20,5 +20,15 @@ private void OnValidate() } #endif + public string GetAllScenesForHash() + { + var scenesHashBase = string.Empty; + foreach(var sceneRegistrationEntry in m_SceneRegistrations) + { + scenesHashBase += sceneRegistrationEntry.GetAllScenesForHash(); + } + return scenesHashBase; + } + } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index 69b157807a..32f1b192f4 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -34,11 +34,23 @@ public string GetPrimaryScene() { return m_PrimarySceneName; } + + public string GetAllScenesForHash() + { + var scenesHashBase = m_PrimarySceneName; + if(m_AddtiveSceneGroup != null) + { + scenesHashBase += m_AddtiveSceneGroup.GetAllScenesForHash(); + } + return scenesHashBase; + } } public interface ISceneRegistrationEntry { string GetPrimaryScene(); + + string GetAllScenesForHash(); } } diff --git a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset index 60a9a8e73b..e2d8a508cb 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset +++ b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: MyAdditiveSceneGroup + m_Name: MySecondAdditiveSceneGroup m_EditorClassIdentifier: AdditiveSceneGroups: [] m_AdditiveSceneNames: [] From 9c2d2b4f7eeb303f588ca64016fa3260d0118b74 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 22 Jun 2021 16:36:15 -0500 Subject: [PATCH 14/38] feat-wip Getting the build settings populating. This is still wip, but is starting to populate and/or depopulate the build settings scenes list --- .../SceneManagement/AddtiveSceneGroup.cs | 42 ++- .../SceneManagement/SceneRegistration.cs | 64 +++- .../SceneManagement/SceneRegistrationEntry.cs | 37 ++- .../SceneRegistration/AnotherScene.unity | 301 ++++++++++++++++++ .../SceneRegistration/AnotherScene.unity.meta | 7 + .../SceneRegistration/AnotherScene2.unity | 301 ++++++++++++++++++ .../AnotherScene2.unity.meta | 7 + .../SceneRegistration/AnotherScene3.unity | 301 ++++++++++++++++++ .../AnotherScene3.unity.meta | 7 + .../MyAdditiveSceneGroup.asset | 8 +- .../MySceneRegistrationEntry2.asset | 20 ++ .../MySceneRegistrationEntry2.asset.meta | 8 + 12 files changed, 1090 insertions(+), 13 deletions(-) create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index 78f0da111a..c42fb277c1 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -19,7 +19,8 @@ public class AddtiveSceneGroup : ScriptableObject, IAdditiveSceneGroup #if UNITY_EDITOR [SerializeField] - private List m_AdditiveScenes; + private List m_AdditiveScenes; + private void OnValidate() { if (m_AdditiveSceneNames == null) @@ -35,12 +36,38 @@ private void OnValidate() { if (includedScene != null) { - m_AdditiveSceneNames.Add(includedScene.name); + if (includedScene.Scene != null) + { + m_AdditiveSceneNames.Add(includedScene.Scene.name); + } } } + + ValidateBuildSettingsScenes(); + } + internal void ValidateBuildSettingsScenes() + { + foreach (var includedScene in m_AdditiveScenes) + { + if (includedScene != null) + { + SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, includedScene.AutoIncludeInBuild); + } + } + + foreach(var additveSceneGroup in AdditiveSceneGroups) + { + additveSceneGroup.ValidateBuildSettingsScenes(); + } } + #endif + [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] + [SerializeField] + private bool m_AutoIncludeInBuild = true; //Default to true + + protected virtual List OnGetAdditiveScenes() { return m_AdditiveSceneNames; @@ -51,7 +78,7 @@ public List GetAdditiveScenes() return OnGetAdditiveScenes(); } - public void GenerateScenesHashString() + public string GetAllScenesForHash() { var scenesHashBase = string.Empty; foreach (var sceneEntry in OnGetAdditiveScenes()) @@ -68,6 +95,15 @@ public void GenerateScenesHashString() } } + [Serializable] + public class AdditiveSceneEntry + { + public SceneAsset Scene; + + [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] + public bool AutoIncludeInBuild = true; //Default to true + } + public interface IAdditiveSceneGroup { diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 75f7e394ee..fa745f741d 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR @@ -15,9 +16,69 @@ public class SceneRegistration : ScriptableObject private List m_SceneRegistrations; #if UNITY_EDITOR + + static private Dictionary s_BuildSettingsSceneLookUpTable = new Dictionary(); + + + public static string GetSceneNameFromPath(string scenePath) + { + var begin = scenePath.LastIndexOf("/", StringComparison.Ordinal) + 1; + var end = scenePath.LastIndexOf(".", StringComparison.Ordinal); + return scenePath.Substring(begin, end - begin); + } + + private static void BuildLookupTableFromEditorBuildSettings() + { + s_BuildSettingsSceneLookUpTable.Clear(); + foreach (var editorBuildSettingsScene in EditorBuildSettings.scenes) + { + var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); + + if(!s_BuildSettingsSceneLookUpTable.ContainsKey(sceneName)) + { + s_BuildSettingsSceneLookUpTable.Add(sceneName, editorBuildSettingsScene); + } + else + { + //Error + } + } + } + + internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) + { + if(s_BuildSettingsSceneLookUpTable.Count != EditorBuildSettings.scenes.Length) + { + BuildLookupTableFromEditorBuildSettings(); + } + + if(addScene) + { + // If the scene does not exist in our local list, then add it and update the build settings + if(!s_BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + { + s_BuildSettingsSceneLookUpTable.Add(scene.name, new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true)); + EditorBuildSettings.scenes = s_BuildSettingsSceneLookUpTable.Values.ToArray(); + } + } + else + { + // If the scene does exist in our local list, then remove it + if (s_BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + { + s_BuildSettingsSceneLookUpTable.Remove(scene.name); + EditorBuildSettings.scenes = s_BuildSettingsSceneLookUpTable.Values.ToArray(); + } + } + } + + private void OnValidate() { - + foreach(var sceneRegistrationEntry in m_SceneRegistrations) + { + sceneRegistrationEntry.ValidateBuildSettingsScenes(); + } } #endif public string GetAllScenesForHash() @@ -29,6 +90,5 @@ public string GetAllScenesForHash() } return scenesHashBase; } - } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index 32f1b192f4..766f7d1f75 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -3,6 +3,7 @@ using UnityEngine; #if UNITY_EDITOR using UnityEditor; +using UnityEditor.SceneManagement; #endif namespace MLAPI.SceneManagement @@ -11,12 +12,6 @@ namespace MLAPI.SceneManagement [Serializable] public class SceneRegistrationEntry : ScriptableObject, ISceneRegistrationEntry { - [HideInInspector] - [SerializeField] - private string m_PrimarySceneName; - - [SerializeField] - private AddtiveSceneGroup m_AddtiveSceneGroup; #if UNITY_EDITOR [SerializeField] @@ -29,7 +24,37 @@ private void OnValidate() m_PrimarySceneName = m_PrimaryScene.name; } } + + internal void ValidateBuildSettingsScenes() + { + if(m_PrimaryScene != null) + { + SceneRegistration.AddOrRemoveSceneAsset(m_PrimaryScene, m_AutoIncludeInBuild); + } + + if(m_AddtiveSceneGroup != null) + { + m_AddtiveSceneGroup.ValidateBuildSettingsScenes(); + } + } #endif + + [Tooltip("When set to true, this will automatically register the primary scene with the build settings scenes in build list. If false, then the scene has to be manually added or will not be included in the build.")] + [SerializeField] + private bool m_AutoIncludeInBuild = true; //Default to true + + [SerializeField] + [HideInInspector] + internal uint SceneIdentifier; + + [HideInInspector] + [SerializeField] + private string m_PrimarySceneName; + + [SerializeField] + private AddtiveSceneGroup m_AddtiveSceneGroup; + + public string GetPrimaryScene() { return m_PrimarySceneName; diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity b/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity new file mode 100644 index 0000000000..3515a0ae02 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &306382597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306382600} + - component: {fileID: 306382599} + - component: {fileID: 306382598} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &306382598 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 +--- !u!20 &306382599 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &306382600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1697751730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697751732} + - component: {fileID: 1697751731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1697751731 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1697751732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity.meta new file mode 100644 index 0000000000..1cdc9d2ce5 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 77297684364241b4381ec1f650426e17 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity b/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity new file mode 100644 index 0000000000..3515a0ae02 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &306382597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306382600} + - component: {fileID: 306382599} + - component: {fileID: 306382598} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &306382598 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 +--- !u!20 &306382599 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &306382600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1697751730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697751732} + - component: {fileID: 1697751731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1697751731 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1697751732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity.meta b/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity.meta new file mode 100644 index 0000000000..a5c53f1f63 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 68615f585c69ff246add2c8ee92f9944 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity b/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity new file mode 100644 index 0000000000..3515a0ae02 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &306382597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306382600} + - component: {fileID: 306382599} + - component: {fileID: 306382598} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &306382598 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 +--- !u!20 &306382599 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &306382600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1697751730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697751732} + - component: {fileID: 1697751731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1697751731 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1697751732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity.meta b/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity.meta new file mode 100644 index 0000000000..f05f3352d2 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c86e224bb10fd984f98618c5afe3f4a1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset index 60a9a8e73b..97b00e609e 100644 --- a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset +++ b/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset @@ -13,5 +13,9 @@ MonoBehaviour: m_Name: MyAdditiveSceneGroup m_EditorClassIdentifier: AdditiveSceneGroups: [] - m_AdditiveSceneNames: [] - m_AdditiveScenes: [] + m_AdditiveSceneNames: + - AnotherScene + m_AdditiveScenes: + - Scene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} + AutoIncludeInBuild: 0 + m_AutoIncludeInBuild: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset new file mode 100644 index 0000000000..a1bd5ba64a --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: MySceneRegistrationEntry2 + m_EditorClassIdentifier: + m_PrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: AnotherScene2 + m_AddtiveSceneGroup: {fileID: 11400000, guid: f3d7105e5ceb0914ea4769284cc7147c, + type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta new file mode 100644 index 0000000000..81a78abf89 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b91050c85062ca42851690474bab4ab +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: From a4b760400c799671cedeaba8c3855d79f17b4f30 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 22 Jun 2021 17:59:34 -0500 Subject: [PATCH 15/38] SceneRegistration parenting (wip) This update handles adding or removing the associated scenes marked to auto populate the build settings when a SceneRegistration asset is assigned or deleted to/from the NetworkManager.NetworkConfig.SceneRegistration property. This also handles only adding or removing the SceneRegistrationEntries and AdditiveSceneEntries marked to auto populate the build settings with additional consideration of AdditiveSceneGroups nested within AdditiveSceneGroups. Auto-populating the build settings portion is still a work in progress, but is getting closer to being completed. --- .../Runtime/Core/NetworkManager.cs | 18 +++++++++++ .../SceneManagement/AddtiveSceneGroup.cs | 30 +++++++++++++++---- .../SceneManagement/SceneRegistration.cs | 22 ++++++++++++-- .../SceneManagement/SceneRegistrationEntry.cs | 29 ++++++++++++++---- 4 files changed, 86 insertions(+), 13 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 207ba51fb0..2851672987 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -226,6 +226,9 @@ public ulong LocalClientId internal static event Action OnSingletonReady; #if UNITY_EDITOR + + // Only used in the editor to handle removing scenes marked to auto populate the build settings + private SceneRegistration m_SceneRegistration; private void OnValidate() { if (NetworkConfig == null) @@ -241,6 +244,21 @@ private void OnValidate() } } + // Trap for when the SceneRegistration is set or deleted to determine if the scenes associated with the SceneRegistration + // should be included in the build settings. + if(NetworkConfig.SceneRegistration != null) + { + m_SceneRegistration = NetworkConfig.SceneRegistration; + NetworkConfig.SceneRegistration.SetAssignedToNetworkManager(true); + NetworkConfig.SceneRegistration.ValidateBuildSettingsScenes(); + } + else if (m_SceneRegistration != null) + { + m_SceneRegistration.SetAssignedToNetworkManager(false); + m_SceneRegistration.ValidateBuildSettingsScenes(); + m_SceneRegistration = null; + } + var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); var activeSceneName = activeScene.name; if (!NetworkConfig.RegisteredScenes.Contains(activeSceneName)) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index c42fb277c1..46a5631b5e 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -21,6 +21,8 @@ public class AddtiveSceneGroup : ScriptableObject, IAdditiveSceneGroup [SerializeField] private List m_AdditiveScenes; + private List m_SceneRegistrationEntryParents; + private void OnValidate() { if (m_AdditiveSceneNames == null) @@ -42,22 +44,40 @@ private void OnValidate() } } } - - ValidateBuildSettingsScenes(); } - internal void ValidateBuildSettingsScenes() + internal void ValidateBuildSettingsScenes(SceneRegistrationEntry sceneRegistrationEntry) { + if(!m_SceneRegistrationEntryParents.Contains(sceneRegistrationEntry)) + { + m_SceneRegistrationEntryParents.Add(sceneRegistrationEntry); + } + + var includeInBuildSettings = false; + foreach(var sceneRegistrationEntryItem in m_SceneRegistrationEntryParents) + { + // We only need one SceneRegistrationEntry to respond with true in order to include additive scenes or groups + if (sceneRegistrationEntryItem.ShouldIncludeInBuildSettings()) + { + includeInBuildSettings = true; + break; + } + } + foreach (var includedScene in m_AdditiveScenes) { if (includedScene != null) { - SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, includedScene.AutoIncludeInBuild); + // Only filter out the referenced AdditiveSceneEntries if we shouldn't include this specific AdditiveSceneGroup's reference scene assets + // Note: Other AdditiveSceneGroups could have other associated SceneRegistrationEntries that might qualify it to be added to the build settings + // so we only apply this to the current AddtiveSceneGroup's referenced AdditiveSceneEntries + SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, includeInBuildSettings && includedScene.AutoIncludeInBuild); } } + // Now validate the build settings includsion for any reference additive scene groups foreach(var additveSceneGroup in AdditiveSceneGroups) { - additveSceneGroup.ValidateBuildSettingsScenes(); + additveSceneGroup.ValidateBuildSettingsScenes(sceneRegistrationEntry); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index fa745f741d..dbec801d12 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -19,7 +19,6 @@ public class SceneRegistration : ScriptableObject static private Dictionary s_BuildSettingsSceneLookUpTable = new Dictionary(); - public static string GetSceneNameFromPath(string scenePath) { var begin = scenePath.LastIndexOf("/", StringComparison.Ordinal) + 1; @@ -72,14 +71,33 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) } } + [SerializeField] + [HideInInspector] + private bool m_AssignedToNetworkManager; + + internal bool IncludeInBuildSettings() + { + return m_AssignedToNetworkManager; + } private void OnValidate() { - foreach(var sceneRegistrationEntry in m_SceneRegistrations) + ValidateBuildSettingsScenes(); + } + + internal void ValidateBuildSettingsScenes() + { + foreach (var sceneRegistrationEntry in m_SceneRegistrations) { + sceneRegistrationEntry.AssignSceneRegistrationParent(this); sceneRegistrationEntry.ValidateBuildSettingsScenes(); } } + + internal void SetAssignedToNetworkManager(bool isAssigned) + { + m_AssignedToNetworkManager = isAssigned; + } #endif public string GetAllScenesForHash() { diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index 766f7d1f75..ab442878df 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -17,6 +17,22 @@ public class SceneRegistrationEntry : ScriptableObject, ISceneRegistrationEntry [SerializeField] private SceneAsset m_PrimaryScene; + [SerializeField] + private SceneRegistration m_SceneRegistrationParent; + + [Tooltip("When set to true, this will automatically register the primary scene with the build settings scenes in build list. If false, then the scene has to be manually added or will not be included in the build.")] + [SerializeField] + private bool m_AutoIncludeInBuild = true; //Default to true + + internal bool ShouldIncludeInBuildSettings() + { + if(m_SceneRegistrationParent != null && m_SceneRegistrationParent.IncludeInBuildSettings() && m_AutoIncludeInBuild) + { + return true; + } + return false; + } + private void OnValidate() { if (m_PrimaryScene != null) @@ -25,24 +41,25 @@ private void OnValidate() } } + internal void AssignSceneRegistrationParent(SceneRegistration sceneRegistration) + { + m_SceneRegistrationParent = sceneRegistration; + } + internal void ValidateBuildSettingsScenes() { if(m_PrimaryScene != null) { - SceneRegistration.AddOrRemoveSceneAsset(m_PrimaryScene, m_AutoIncludeInBuild); + SceneRegistration.AddOrRemoveSceneAsset(m_PrimaryScene, ShouldIncludeInBuildSettings()); } if(m_AddtiveSceneGroup != null) { - m_AddtiveSceneGroup.ValidateBuildSettingsScenes(); + m_AddtiveSceneGroup.ValidateBuildSettingsScenes(this); } } #endif - [Tooltip("When set to true, this will automatically register the primary scene with the build settings scenes in build list. If false, then the scene has to be manually added or will not be included in the build.")] - [SerializeField] - private bool m_AutoIncludeInBuild = true; //Default to true - [SerializeField] [HideInInspector] internal uint SceneIdentifier; From acf4e8d41d33d78b1951b3cf0e3c17420d1288c3 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Wed, 23 Jun 2021 17:40:36 -0500 Subject: [PATCH 16/38] refactor After reviewing my first approach, I decided that I needed to do a little refactoring that would provide the ability to have notifications on asset dependencies. Added a new AssetDepedency class that derives from ScriptableObject and then made that the base class for SceneRegistration, SceneRegistrationEntry, and AdditiveSceneGroup. Worked through/manually test the various combinations of adding and removing various scene registration related objects. Still building a reference table to make sure this will cover all scenarios. Still needs further testing. --- .../Runtime/Core/NetworkManager.cs | 8 +- .../SceneManagement/AddtiveSceneGroup.cs | 115 ++++--- .../SceneManagement/AssetDependency.cs | 175 ++++++++++ .../SceneManagement/AssetDependency.cs.meta | 11 + .../SceneManagement/SceneRegistration.cs | 65 +++- .../SceneManagement/SceneRegistrationEntry.cs | 82 +++-- ...Group.asset => AdditiveSceneGroup 1.asset} | 12 +- ...t.meta => AdditiveSceneGroup 1.asset.meta} | 2 +- ...neGroup.asset => AdditiveSceneGroup.asset} | 6 +- ...set.meta => AdditiveSceneGroup.asset.meta} | 2 +- .../SceneRegistration/AnotherScene4.unity | 301 ++++++++++++++++++ .../AnotherScene4.unity.meta | 7 + .../MySceneRegistrationEntry.asset | 18 -- .../MySecondAdditiveSceneGroup.asset.meta | 8 - ...stration.asset => SceneRegistration.asset} | 7 +- ...sset.meta => SceneRegistration.asset.meta} | 2 +- ...ry2.asset => SceneRegistrationEntry.asset} | 7 +- ...meta => SceneRegistrationEntry.asset.meta} | 2 +- .../SceneTransitioningTest.unity | 4 + 19 files changed, 713 insertions(+), 121 deletions(-) create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs.meta rename testproject/Assets/Samples/SceneRegistration/{MyAdditiveSceneGroup.asset => AdditiveSceneGroup 1.asset} (60%) rename testproject/Assets/Samples/SceneRegistration/{MySceneRegistrationEntry.asset.meta => AdditiveSceneGroup 1.asset.meta} (79%) rename testproject/Assets/Samples/SceneRegistration/{MySecondAdditiveSceneGroup.asset => AdditiveSceneGroup.asset} (81%) rename testproject/Assets/Samples/SceneRegistration/{MyAdditiveSceneGroup.asset.meta => AdditiveSceneGroup.asset.meta} (79%) create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta rename testproject/Assets/Samples/SceneRegistration/{MySceneRegistration.asset => SceneRegistration.asset} (64%) rename testproject/Assets/Samples/SceneRegistration/{MySceneRegistrationEntry2.asset.meta => SceneRegistration.asset.meta} (79%) rename testproject/Assets/Samples/SceneRegistration/{MySceneRegistrationEntry2.asset => SceneRegistrationEntry.asset} (76%) rename testproject/Assets/Samples/SceneRegistration/{MySceneRegistration.asset.meta => SceneRegistrationEntry.asset.meta} (79%) diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 2851672987..6a7a153562 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -246,15 +246,15 @@ private void OnValidate() // Trap for when the SceneRegistration is set or deleted to determine if the scenes associated with the SceneRegistration // should be included in the build settings. - if(NetworkConfig.SceneRegistration != null) + if(NetworkConfig.SceneRegistration != null && !NetworkConfig.SceneRegistration.AssignedToNetworkManager) { m_SceneRegistration = NetworkConfig.SceneRegistration; - NetworkConfig.SceneRegistration.SetAssignedToNetworkManager(true); + NetworkConfig.SceneRegistration.AssignedToNetworkManager = true; NetworkConfig.SceneRegistration.ValidateBuildSettingsScenes(); } - else if (m_SceneRegistration != null) + else if (m_SceneRegistration != null && m_SceneRegistration.AssignedToNetworkManager) { - m_SceneRegistration.SetAssignedToNetworkManager(false); + m_SceneRegistration.AssignedToNetworkManager = false; m_SceneRegistration.ValidateBuildSettingsScenes(); m_SceneRegistration = null; } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index 46a5631b5e..3709d4b233 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -9,91 +9,117 @@ namespace MLAPI.SceneManagement { [CreateAssetMenu(fileName = "AdditiveSceneGroup", menuName = "MLAPI/SceneManagement/AdditiveSceneGroup")] [Serializable] - public class AddtiveSceneGroup : ScriptableObject, IAdditiveSceneGroup + public class AddtiveSceneGroup : AssetDependency, IAdditiveSceneGroup { - public List AdditiveSceneGroups; + [SerializeField] + private List m_AdditiveSceneGroups; + // Since Unity does not support observable collections there are two ways to approach this: + // 1.) Make a duplicate list that adjusts itself during OnValidate + // 2.) Make a customizable property editor that can handle the serialization process (which you will end up with two lists in the end anyway) + // For this pass, I opted for solution #1 [HideInInspector] [SerializeField] - private List m_AdditiveSceneNames; + private List m_KnownAdditiveSceneGroups = new List(); -#if UNITY_EDITOR [SerializeField] private List m_AdditiveScenes; - private List m_SceneRegistrationEntryParents; +#if UNITY_EDITOR - private void OnValidate() + /// + /// + /// + /// + protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) { - if (m_AdditiveSceneNames == null) - { - m_AdditiveSceneNames = new List(); - } - else - { - m_AdditiveSceneNames.Clear(); - } + ValidateBuildSettingsScenes(); + } + + /// + /// + /// + /// + protected override void OnDependecyAdded(IAssetDependency dependencyAdded) + { + ValidateBuildSettingsScenes(); + } + + private void OnValidate() + { + // Assure our included additive scene entries' names are all valid + // If not, then assign the proper scene name to the AdditiveSceneEntry.SceneEntryName foreach (var includedScene in m_AdditiveScenes) { if (includedScene != null) { - if (includedScene.Scene != null) + if (includedScene.Scene != null && includedScene.Scene.name != includedScene.SceneEntryName) { - m_AdditiveSceneNames.Add(includedScene.Scene.name); + includedScene.SceneEntryName = includedScene.Scene.name; } } } - } - internal void ValidateBuildSettingsScenes(SceneRegistrationEntry sceneRegistrationEntry) - { - if(!m_SceneRegistrationEntryParents.Contains(sceneRegistrationEntry)) + + foreach (var entry in m_AdditiveSceneGroups) { - m_SceneRegistrationEntryParents.Add(sceneRegistrationEntry); + if (entry != null) + { + entry.AddDependency(this); + } } - var includeInBuildSettings = false; - foreach(var sceneRegistrationEntryItem in m_SceneRegistrationEntryParents) + foreach (var entry in m_KnownAdditiveSceneGroups) { - // We only need one SceneRegistrationEntry to respond with true in order to include additive scenes or groups - if (sceneRegistrationEntryItem.ShouldIncludeInBuildSettings()) - { - includeInBuildSettings = true; - break; + if (entry != null) + { + if (!m_AdditiveSceneGroups.Contains(entry)) + { + entry.RemoveDependency(this); + } } } + m_KnownAdditiveSceneGroups.Clear(); + m_KnownAdditiveSceneGroups.AddRange(m_AdditiveSceneGroups); + ValidateBuildSettingsScenes(); + } + + + internal void ValidateBuildSettingsScenes() + { + var shouldInclude = ShouldAssetBeIncluded(); + var partOfRootBranch = BelongsToRootAssetBranch(); + foreach (var includedScene in m_AdditiveScenes) { - if (includedScene != null) + if (includedScene != null && includedScene.Scene != null) { // Only filter out the referenced AdditiveSceneEntries if we shouldn't include this specific AdditiveSceneGroup's reference scene assets // Note: Other AdditiveSceneGroups could have other associated SceneRegistrationEntries that might qualify it to be added to the build settings // so we only apply this to the current AddtiveSceneGroup's referenced AdditiveSceneEntries - SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, includeInBuildSettings && includedScene.AutoIncludeInBuild); + SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, shouldInclude && partOfRootBranch && includedScene.AutoIncludeInBuild); } } // Now validate the build settings includsion for any reference additive scene groups - foreach(var additveSceneGroup in AdditiveSceneGroups) + foreach(var additveSceneGroup in m_AdditiveSceneGroups) { - additveSceneGroup.ValidateBuildSettingsScenes(sceneRegistrationEntry); + if (additveSceneGroup != null) + { + additveSceneGroup.ValidateBuildSettingsScenes(); + } } } #endif - [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] - [SerializeField] - private bool m_AutoIncludeInBuild = true; //Default to true - - - protected virtual List OnGetAdditiveScenes() + protected virtual List OnGetAdditiveScenes() { - return m_AdditiveSceneNames; + return m_AdditiveScenes; } - public List GetAdditiveScenes() + public List GetAdditiveScenes() { return OnGetAdditiveScenes(); } @@ -106,7 +132,7 @@ public string GetAllScenesForHash() scenesHashBase += sceneEntry; } - foreach (var additiveSceneGroup in AdditiveSceneGroups) + foreach (var additiveSceneGroup in m_AdditiveSceneGroups) { scenesHashBase += additiveSceneGroup.GetAllScenesForHash(); } @@ -118,16 +144,21 @@ public string GetAllScenesForHash() [Serializable] public class AdditiveSceneEntry { +#if UNITY_EDITOR public SceneAsset Scene; [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] public bool AutoIncludeInBuild = true; //Default to true +#endif + [HideInInspector] + public string SceneEntryName; + } public interface IAdditiveSceneGroup { - List GetAdditiveScenes(); + List GetAdditiveScenes(); string GetAllScenesForHash(); } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs new file mode 100644 index 0000000000..1238cd334a --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs @@ -0,0 +1,175 @@ +using System; +using System.Linq; +using System.Collections.Generic; + +using UnityEngine; +#if UNITY_EDITOR +using System.Collections.ObjectModel; +using System.Collections.Specialized; +#endif + +namespace MLAPI.SceneManagement +{ + [ExecuteInEditMode] + [Serializable] + public class AssetDependency : ScriptableObject, IAssetDependency + { +#if UNITY_EDITOR + [HideInInspector] + [SerializeField] + protected ObservableCollection m_Dependencies = new ObservableCollection(); + + public void AddDependency(IAssetDependency assetDependency) + { + if(!m_Dependencies.Contains(assetDependency)) + { + m_Dependencies.Add(assetDependency); + } + } + public void RemoveDependency(IAssetDependency assetDependency) + { + if (m_Dependencies.Contains(assetDependency)) + { + m_Dependencies.Remove(assetDependency); + } + } + + + protected virtual void OnDependecyAdded(IAssetDependency dependencyAdded) + { + + } + + protected virtual void OnDependecyRemoved(IAssetDependency dependencyRemoved) + { + + } + + private void DependencyRemoved(NotifyCollectionChangedEventArgs e) + { + foreach (var item in e.OldItems) + { + OnDependecyRemoved(item as IAssetDependency); + } + } + + private void DependencyAdded(NotifyCollectionChangedEventArgs e) + { + foreach (var item in e.NewItems) + { + OnDependecyAdded(item as IAssetDependency); + } + } + + private void Dependencies_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + switch(e.Action) + { + case NotifyCollectionChangedAction.Add: + { + DependencyAdded(e); + break; + } + case NotifyCollectionChangedAction.Remove: + { + DependencyRemoved(e); + break; + } + } + } + + protected virtual bool OnIsRootAssetDependency() + { + return false; + } + + public bool IsRootAssetDependency() + { + return OnIsRootAssetDependency(); + } + + protected virtual bool OnHasDependencies() + { + return (m_Dependencies.Count > 0); + } + + public bool HasDependencies() + { + return OnHasDependencies(); + } + + public bool BelongsToRootAssetBranch() + { + if(m_Dependencies.Count == 0) + { + return IsRootAssetDependency(); + } + foreach(var dependency in m_Dependencies) + { + if(dependency.BelongsToRootAssetBranch()) + { + return true; + } + } + return false; + } + + /// + /// Virtual method to allow for customizing the logic that determines if + /// an asset dependency should be included (defaults to true unless overridden + /// + /// + protected virtual bool OnShouldAssetBeIncluded() + { + return true; + } + + /// + /// Determines if the asset has any dependencies that are marked to be included + /// + /// true or false + public bool ShouldAssetBeIncluded() + { + if(IsRootAssetDependency()) + { + return true; + } + if (HasDependencies()) + { + foreach (var dependency in m_Dependencies) + { + if (dependency.ShouldAssetBeIncluded()) + { + return true; + } + } + } + return false; + } + +#endif + private void Awake() + { +#if UNITY_EDITOR + m_Dependencies.CollectionChanged += Dependencies_CollectionChanged; +#endif + } + } + + public interface IAssetDependency + { +#if UNITY_EDITOR + void AddDependency(IAssetDependency assetDependency); + void RemoveDependency(IAssetDependency assetDependency); + + bool HasDependencies(); + + bool IsRootAssetDependency(); + + bool BelongsToRootAssetBranch(); + + bool ShouldAssetBeIncluded(); + +#endif + } +} diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs.meta new file mode 100644 index 0000000000..1b40018689 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 93bc46e0b9c61d644b4908bf0b10257e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index dbec801d12..e66cd4d91a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Collections.Generic; + using UnityEngine; #if UNITY_EDITOR using UnityEditor; @@ -10,12 +11,20 @@ namespace MLAPI.SceneManagement { [CreateAssetMenu(fileName = "SceneRegistration", menuName = "MLAPI/SceneManagement/SceneRegistration")] [Serializable] - public class SceneRegistration : ScriptableObject + public class SceneRegistration : AssetDependency { [SerializeField] private List m_SceneRegistrations; + #if UNITY_EDITOR + // Since Unity does not support observable collections there are two ways to approach this: + // 1.) Make a duplicate list that adjusts itself during OnValidate + // 2.) Make a customizable property editor that can handle the serialization process (which you will end up with two lists in the end anyway) + // For this pass, I opted for solution #1 + [HideInInspector] + [SerializeField] + private List m_KnownSceneRegistrations; static private Dictionary s_BuildSettingsSceneLookUpTable = new Dictionary(); @@ -73,30 +82,66 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) [SerializeField] [HideInInspector] - private bool m_AssignedToNetworkManager; + internal bool AssignedToNetworkManager; + + internal void SetAssignedToNetworkManager(bool isAssigned) + { + AssignedToNetworkManager = isAssigned; + } - internal bool IncludeInBuildSettings() + protected override bool OnShouldAssetBeIncluded() { - return m_AssignedToNetworkManager; + return AssignedToNetworkManager; } private void OnValidate() { + foreach (var entry in m_SceneRegistrations) + { + if (entry != null) + { + entry.AddDependency(this); + } + } + + foreach (var entry in m_KnownSceneRegistrations) + { + if (entry != null) + { + if (!m_SceneRegistrations.Contains(entry)) + { + entry.RemoveDependency(this); + } + } + } + + m_KnownSceneRegistrations.Clear(); + m_KnownSceneRegistrations.AddRange(m_SceneRegistrations); ValidateBuildSettingsScenes(); } internal void ValidateBuildSettingsScenes() { - foreach (var sceneRegistrationEntry in m_SceneRegistrations) + //Cycle through all scenes registered and validate the build settings scenes list + if (m_SceneRegistrations != null) { - sceneRegistrationEntry.AssignSceneRegistrationParent(this); - sceneRegistrationEntry.ValidateBuildSettingsScenes(); + foreach (var sceneRegistrationEntry in m_SceneRegistrations) + { + if (sceneRegistrationEntry != null) + { + sceneRegistrationEntry.ValidateBuildSettingsScenes(); + } + } } } - internal void SetAssignedToNetworkManager(bool isAssigned) + + // This will always return true which signifies any dependency that is contained + // within this branch of potential dependencies should be considered when checking + // to see if it should be added to the build settings + protected override bool OnIsRootAssetDependency() { - m_AssignedToNetworkManager = isAssigned; + return true; } #endif public string GetAllScenesForHash() @@ -109,4 +154,6 @@ public string GetAllScenesForHash() return scenesHashBase; } } + + } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index ab442878df..51c17ba762 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -1,24 +1,26 @@ using System; -using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR using UnityEditor; -using UnityEditor.SceneManagement; #endif namespace MLAPI.SceneManagement { [CreateAssetMenu(fileName = "SceneRegistrationEntry", menuName = "MLAPI/SceneManagement/SceneRegistrationEntry")] [Serializable] - public class SceneRegistrationEntry : ScriptableObject, ISceneRegistrationEntry + public class SceneRegistrationEntry : AssetDependency, ISceneRegistrationEntry { - #if UNITY_EDITOR + [HideInInspector] [SerializeField] - private SceneAsset m_PrimaryScene; + private SceneAsset m_PreviousPrimaryScene; + + [HideInInspector] + [SerializeField] + private AddtiveSceneGroup m_PreviousAddtiveSceneGroup; [SerializeField] - private SceneRegistration m_SceneRegistrationParent; + private SceneAsset m_PrimaryScene; [Tooltip("When set to true, this will automatically register the primary scene with the build settings scenes in build list. If false, then the scene has to be manually added or will not be included in the build.")] [SerializeField] @@ -26,36 +28,76 @@ public class SceneRegistrationEntry : ScriptableObject, ISceneRegistrationEntry internal bool ShouldIncludeInBuildSettings() { - if(m_SceneRegistrationParent != null && m_SceneRegistrationParent.IncludeInBuildSettings() && m_AutoIncludeInBuild) - { - return true; - } - return false; + var belongsToRoot = BelongsToRootAssetBranch(); + return (belongsToRoot && m_AutoIncludeInBuild); + } + + protected override bool OnShouldAssetBeIncluded() + { + return m_AutoIncludeInBuild; } private void OnValidate() { - if (m_PrimaryScene != null) - { - m_PrimarySceneName = m_PrimaryScene.name; - } + ValidateBuildSettingsScenes(); } - internal void AssignSceneRegistrationParent(SceneRegistration sceneRegistration) + /// + /// + /// + /// + protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) { - m_SceneRegistrationParent = sceneRegistration; + ValidateBuildSettingsScenes(); + } + + /// + /// + /// + /// + protected override void OnDependecyAdded(IAssetDependency dependencyAdded) + { + ValidateBuildSettingsScenes(); } internal void ValidateBuildSettingsScenes() { - if(m_PrimaryScene != null) + if (m_PrimaryScene != m_PreviousPrimaryScene) + { + // If we had a different scene, then remove it from the build settings + if (m_PreviousPrimaryScene != null) + { + SceneRegistration.AddOrRemoveSceneAsset(m_PreviousPrimaryScene, false); + } + } + + // If the newly assigned scene is not null + if (m_PrimaryScene != null) { + // As long as we should include this scnee registration entry, then add it to the build settings list of scenes to be included SceneRegistration.AddOrRemoveSceneAsset(m_PrimaryScene, ShouldIncludeInBuildSettings()); } - if(m_AddtiveSceneGroup != null) + m_PreviousPrimaryScene = m_PrimaryScene; + + if (m_PrimaryScene != null) + { + m_PrimarySceneName = m_PrimaryScene.name; + } + + if (m_AddtiveSceneGroup != null) + { + m_AddtiveSceneGroup.AddDependency(this); + m_AddtiveSceneGroup.ValidateBuildSettingsScenes(); + } + if(m_PreviousAddtiveSceneGroup != m_AddtiveSceneGroup) { - m_AddtiveSceneGroup.ValidateBuildSettingsScenes(this); + if(m_PreviousAddtiveSceneGroup != null) + { + m_PreviousAddtiveSceneGroup.RemoveDependency(this); + m_PreviousAddtiveSceneGroup.ValidateBuildSettingsScenes(); + } + m_PreviousAddtiveSceneGroup = m_AddtiveSceneGroup; } } #endif diff --git a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset similarity index 60% rename from testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset rename to testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset index 97b00e609e..62ef4c1684 100644 --- a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset @@ -10,12 +10,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: MyAdditiveSceneGroup + m_Name: AdditiveSceneGroup 1 m_EditorClassIdentifier: - AdditiveSceneGroups: [] - m_AdditiveSceneNames: - - AnotherScene - m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} - AutoIncludeInBuild: 0 - m_AutoIncludeInBuild: 1 + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] + m_AdditiveScenes: [] diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset.meta index ed97c64a5a..b564040d7a 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: eaed0b3453e8bb84dae5cb34ce54a851 +guid: e2512bf9d5b16c74bba76d57ba757911 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset similarity index 81% rename from testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset rename to testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset index e2d8a508cb..ab2a477c43 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset @@ -10,8 +10,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: MySecondAdditiveSceneGroup + m_Name: AdditiveSceneGroup m_EditorClassIdentifier: - AdditiveSceneGroups: [] - m_AdditiveSceneNames: [] + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] m_AdditiveScenes: [] diff --git a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset.meta index 7a30c87538..9867acbef0 100644 --- a/testproject/Assets/Samples/SceneRegistration/MyAdditiveSceneGroup.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f3d7105e5ceb0914ea4769284cc7147c +guid: 836cd2be89c079a438eb7550fe4a3f09 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity b/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity new file mode 100644 index 0000000000..3515a0ae02 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &306382597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306382600} + - component: {fileID: 306382599} + - component: {fileID: 306382598} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &306382598 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 +--- !u!20 &306382599 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &306382600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1697751730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697751732} + - component: {fileID: 1697751731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1697751731 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1697751732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity.meta b/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity.meta new file mode 100644 index 0000000000..a362b27b3b --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2f7f4fdd9b3496246a9614d112d159f2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset b/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset deleted file mode 100644 index 0460fe509f..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry.asset +++ /dev/null @@ -1,18 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: MySceneRegistrationEntry - m_EditorClassIdentifier: - m_PrimarySceneName: EnableDisableSceneNetworkObject - m_AddtiveSceneGroup: {fileID: 11400000, guid: f3d7105e5ceb0914ea4769284cc7147c, - type: 2} - m_PrimaryScene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta b/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta deleted file mode 100644 index c3256cadd1..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/MySecondAdditiveSceneGroup.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 7b66567611954e64db46bf706302b6d7 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset similarity index 64% rename from testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset rename to testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index d72bacceed..b59681f96d 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -10,7 +10,10 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} - m_Name: MySceneRegistration + m_Name: SceneRegistration m_EditorClassIdentifier: m_SceneRegistrations: - - {fileID: 11400000, guid: eaed0b3453e8bb84dae5cb34ce54a851, type: 2} + - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} + m_KnownSceneRegistrations: + - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} + AssignedToNetworkManager: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta index 81a78abf89..735797a057 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8b91050c85062ca42851690474bab4ab +guid: 73f6dc1861e493e4196cab8466ea0d80 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset similarity index 76% rename from testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset rename to testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset index a1bd5ba64a..0907894eb3 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySceneRegistrationEntry2.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset @@ -10,11 +10,12 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: MySceneRegistrationEntry2 + m_Name: SceneRegistrationEntry m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, + type: 3} m_PrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 m_PrimarySceneName: AnotherScene2 - m_AddtiveSceneGroup: {fileID: 11400000, guid: f3d7105e5ceb0914ea4769284cc7147c, - type: 2} + m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset.meta index 319cae25a6..d55a132d82 100644 --- a/testproject/Assets/Samples/SceneRegistration/MySceneRegistration.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5fda3bf0e91de404f81c9b95e1a591e4 +guid: 133689a675e9849438b94f75e1e479b3 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity index de97ee675c..6cb4a81a0b 100644 --- a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity @@ -1008,6 +1008,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1024114719} + SceneRegistration: {fileID: 11400000, guid: 73f6dc1861e493e4196cab8466ea0d80, + type: 2} RegisteredScenes: - SceneTransitioningTest - SecondSceneToLoad @@ -1155,6 +1157,7 @@ MonoBehaviour: GlobalObjectIdHash: 2782806529 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!1 &1332123091 GameObject: m_ObjectHideFlags: 0 @@ -2553,6 +2556,7 @@ MonoBehaviour: GlobalObjectIdHash: 2267100048 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!1001 &2848221156282925290 PrefabInstance: m_ObjectHideFlags: 0 From 549d82bb866abff9dfd3c3700a5ea853f7513ebb Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Wed, 23 Jun 2021 18:05:19 -0500 Subject: [PATCH 17/38] refactor and style Minor adjustments and added comments. --- .../SceneManagement/AddtiveSceneGroup.cs | 7 ++-- .../SceneManagement/AssetDependency.cs | 34 +++++++++++++++++-- .../SceneManagement/SceneRegistration.cs | 19 ++++++----- .../SceneManagement/SceneRegistrationEntry.cs | 9 +++-- .../AdditiveSceneGroup 1.asset | 5 ++- .../AdditiveSceneGroup.asset | 5 ++- .../SceneRegistrationEntry.asset | 5 ++- 7 files changed, 65 insertions(+), 19 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index 3709d4b233..9df1b7c99b 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -141,6 +141,10 @@ public string GetAllScenesForHash() } } + /// + /// A container class to hold the editor specific assets and + /// the scene name that it is pointing to for runtime + /// [Serializable] public class AdditiveSceneEntry { @@ -148,11 +152,10 @@ public class AdditiveSceneEntry public SceneAsset Scene; [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] - public bool AutoIncludeInBuild = true; //Default to true + public bool AutoIncludeInBuild; #endif [HideInInspector] public string SceneEntryName; - } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs index 1238cd334a..6a4c6f61ec 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs @@ -1,6 +1,4 @@ using System; -using System.Linq; -using System.Collections.Generic; using UnityEngine; #if UNITY_EDITOR @@ -10,6 +8,18 @@ namespace MLAPI.SceneManagement { + /// + /// This class is designed primarily as an editor based helper class + /// that will shed itself of all editor specific properties during runtime + /// but will allow other classes to derive from it in order to maintain a + /// list of asset dependencies. Dependencies are ordered in a top down fashion + /// such that any parents that depend upon any child-relative AssetDependency + /// will notify the child-relative AssetDependency that it "depends upon" this asset + /// Notes: + /// ExecuteInEditMode attribute is required in order to assure the ObservableCollection + /// CollectionChanged event is registered so changes in dependencies can be more easily + /// managed. + /// [ExecuteInEditMode] [Serializable] public class AssetDependency : ScriptableObject, IAssetDependency @@ -19,6 +29,10 @@ public class AssetDependency : ScriptableObject, IAssetDependency [SerializeField] protected ObservableCollection m_Dependencies = new ObservableCollection(); + /// + /// Parent assets can use this to notify any child assets that it "depends" upon this asset + /// + /// public void AddDependency(IAssetDependency assetDependency) { if(!m_Dependencies.Contains(assetDependency)) @@ -26,6 +40,11 @@ public void AddDependency(IAssetDependency assetDependency) m_Dependencies.Add(assetDependency); } } + + /// + /// Parent assets can use this to notify any child assets that it no longer "depends" upon this asset + /// + /// public void RemoveDependency(IAssetDependency assetDependency) { if (m_Dependencies.Contains(assetDependency)) @@ -34,12 +53,21 @@ public void RemoveDependency(IAssetDependency assetDependency) } } - + /// + /// Child derived classes can override this method to recieve notifications of a + /// dependency addition + /// + /// protected virtual void OnDependecyAdded(IAssetDependency dependencyAdded) { } + /// + /// Child derived classes can override this method to recieve notifications of a + /// dependency removal + /// + /// protected virtual void OnDependecyRemoved(IAssetDependency dependencyRemoved) { diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index e66cd4d91a..3a3b10537f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -16,7 +16,6 @@ public class SceneRegistration : AssetDependency [SerializeField] private List m_SceneRegistrations; - #if UNITY_EDITOR // Since Unity does not support observable collections there are two ways to approach this: // 1.) Make a duplicate list that adjusts itself during OnValidate @@ -46,10 +45,6 @@ private static void BuildLookupTableFromEditorBuildSettings() { s_BuildSettingsSceneLookUpTable.Add(sceneName, editorBuildSettingsScene); } - else - { - //Error - } } } @@ -120,6 +115,10 @@ private void OnValidate() ValidateBuildSettingsScenes(); } + /// + /// Called to determine if there needs to be any adjustments to the build settings + /// scenes in build list. + /// internal void ValidateBuildSettingsScenes() { //Cycle through all scenes registered and validate the build settings scenes list @@ -135,10 +134,12 @@ internal void ValidateBuildSettingsScenes() } } - - // This will always return true which signifies any dependency that is contained - // within this branch of potential dependencies should be considered when checking - // to see if it should be added to the build settings + /// + /// This will always return true which signifies any dependency that is contained + /// within this branch of potential dependencies should be considered when checking + /// to see if it should be added to the build settings + /// + /// protected override bool OnIsRootAssetDependency() { return true; diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index 51c17ba762..3aa407c99a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -43,7 +43,9 @@ private void OnValidate() } /// - /// + /// For scene management related usage, currently this only needs to invoke the + /// ValidateBuildSettingsScenes method. + /// Note: more complex logic could be added here to provide additional clean up /// /// protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) @@ -52,7 +54,10 @@ protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) } /// - /// + /// For scene management related usage, currently this only needs to invoke the + /// ValidateBuildSettingsScenes method. + /// Note: more complex logic could be added here to provide additional dependency + /// registration related actions. /// /// protected override void OnDependecyAdded(IAssetDependency dependencyAdded) diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset index 62ef4c1684..9660c0dcdd 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset @@ -14,4 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] - m_AdditiveScenes: [] + m_AdditiveScenes: + - Scene: {fileID: 102900000, guid: 2f7f4fdd9b3496246a9614d112d159f2, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AnotherScene4 diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset index ab2a477c43..ae8814eb69 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset @@ -14,4 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] - m_AdditiveScenes: [] + m_AdditiveScenes: + - Scene: {fileID: 102900000, guid: c86e224bb10fd984f98618c5afe3f4a1, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AnotherScene3 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset index 0907894eb3..11b798e606 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset @@ -14,8 +14,11 @@ MonoBehaviour: m_EditorClassIdentifier: m_PreviousPrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} m_PrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 m_PrimarySceneName: AnotherScene2 - m_AddtiveSceneGroup: {fileID: 0} + m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} From 432bfa94e6e3c726836dcf0a975c2b0a84f6c2fc Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 24 Jun 2021 09:29:30 -0500 Subject: [PATCH 18/38] fix Fixing an issue with the SceneRegistration asset where removing it from a NetworkManager would not cause the referenced scene assets to be included. --- .../Runtime/Core/NetworkManager.cs | 3 ++- .../Runtime/SceneManagement/SceneRegistration.cs | 10 ++++++---- .../Samples/SceneRegistration/AdditiveSceneGroup.asset | 6 ++++-- .../SceneTransitioning/SceneTransitioningTest.unity | 2 ++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 6a7a153562..a68222951c 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -226,7 +226,8 @@ public ulong LocalClientId internal static event Action OnSingletonReady; #if UNITY_EDITOR - + [HideInInspector] + [SerializeField] // Only used in the editor to handle removing scenes marked to auto populate the build settings private SceneRegistration m_SceneRegistration; private void OnValidate() diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 3a3b10537f..815d2c6a52 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -135,14 +135,16 @@ internal void ValidateBuildSettingsScenes() } /// - /// This will always return true which signifies any dependency that is contained - /// within this branch of potential dependencies should be considered when checking - /// to see if it should be added to the build settings + /// This is the root deciding factor for all checks to determine if assets referenced + /// within this specific branch of scene asset references should be included. + /// Note: if there are other SceneRegistration instances assigned to other NetworkManagers + /// then all or some (depending upon what is included in the other SceneRegistration branches) + /// will still be included. /// /// protected override bool OnIsRootAssetDependency() { - return true; + return OnShouldAssetBeIncluded(); } #endif public string GetAllScenesForHash() diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset index ae8814eb69..0d1c9041cb 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset @@ -12,8 +12,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} m_Name: AdditiveSceneGroup m_EditorClassIdentifier: - m_AdditiveSceneGroups: [] - m_KnownAdditiveSceneGroups: [] + m_AdditiveSceneGroups: + - {fileID: 11400000, guid: e2512bf9d5b16c74bba76d57ba757911, type: 2} + m_KnownAdditiveSceneGroups: + - {fileID: 11400000, guid: e2512bf9d5b16c74bba76d57ba757911, type: 2} m_AdditiveScenes: - Scene: {fileID: 102900000, guid: c86e224bb10fd984f98618c5afe3f4a1, type: 3} AutoIncludeInBuild: 1 diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity index 6cb4a81a0b..826c137fd4 100644 --- a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity @@ -1046,6 +1046,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: 73f6dc1861e493e4196cab8466ea0d80, + type: 2} --- !u!114 &1024114719 MonoBehaviour: m_ObjectHideFlags: 0 From 6fc92839b19be1cd01a73b17a00d0237c8ae2f50 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 24 Jun 2021 09:48:48 -0500 Subject: [PATCH 19/38] refactor Re-organizing naming of assets for new scene registration process in order more easily demonstrate various usages patterns. --- .../SceneRegistration/SceneBranch_A.meta | 8 + .../AdditiveSceneGroupA_1.asset} | 0 .../AdditiveSceneGroupA_1.asset.meta} | 0 .../SceneBranch_A/AdditiveSceneGroupA_2.asset | 20 ++ .../AdditiveSceneGroupA_2.asset.meta} | 0 .../SceneRegistrationEntryA.asset} | 6 +- .../SceneRegistrationEntryA.asset.meta} | 0 .../SceneRegistration/SceneBranch_B.meta | 8 + .../SceneBranch_B/AdditiveSceneGroupB_1.asset | 20 ++ .../AdditiveSceneGroupB_1.asset.meta | 8 + .../SceneRegistrationEntryB.asset | 24 ++ .../SceneRegistrationEntryB.asset.meta | 8 + .../Samples/SceneRegistration/Scenes.meta | 8 + .../{ => Scenes}/AnotherScene.unity | 0 .../{ => Scenes}/AnotherScene.unity.meta | 0 .../{ => Scenes}/AnotherScene2.unity | 0 .../{ => Scenes}/AnotherScene2.unity.meta | 0 .../{ => Scenes}/AnotherScene3.unity | 0 .../{ => Scenes}/AnotherScene3.unity.meta | 0 .../AnotherScene5.unity} | 0 .../Scenes/AnotherScene5.unity.meta | 7 + .../SharedAdditiveGroups.meta | 8 + .../SharedAdditiveGroup1.asset} | 2 +- .../SharedAdditiveGroup1.asset.meta | 8 + .../SharedAdditiveScenes.meta | 8 + .../SharedAdditiveScene1.unity | 301 ++++++++++++++++++ .../SharedAdditiveScene1.unity.meta} | 0 27 files changed, 440 insertions(+), 4 deletions(-) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta rename testproject/Assets/Samples/SceneRegistration/{AdditiveSceneGroup.asset => SceneBranch_A/AdditiveSceneGroupA_1.asset} (100%) rename testproject/Assets/Samples/SceneRegistration/{AdditiveSceneGroup.asset.meta => SceneBranch_A/AdditiveSceneGroupA_1.asset.meta} (100%) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset rename testproject/Assets/Samples/SceneRegistration/{AdditiveSceneGroup 1.asset.meta => SceneBranch_A/AdditiveSceneGroupA_2.asset.meta} (100%) rename testproject/Assets/Samples/SceneRegistration/{SceneRegistrationEntry.asset => SceneBranch_A/SceneRegistrationEntryA.asset} (76%) rename testproject/Assets/Samples/SceneRegistration/{SceneRegistrationEntry.asset.meta => SceneBranch_A/SceneRegistrationEntryA.asset.meta} (100%) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes.meta rename testproject/Assets/Samples/SceneRegistration/{ => Scenes}/AnotherScene.unity (100%) rename testproject/Assets/Samples/SceneRegistration/{ => Scenes}/AnotherScene.unity.meta (100%) rename testproject/Assets/Samples/SceneRegistration/{ => Scenes}/AnotherScene2.unity (100%) rename testproject/Assets/Samples/SceneRegistration/{ => Scenes}/AnotherScene2.unity.meta (100%) rename testproject/Assets/Samples/SceneRegistration/{ => Scenes}/AnotherScene3.unity (100%) rename testproject/Assets/Samples/SceneRegistration/{ => Scenes}/AnotherScene3.unity.meta (100%) rename testproject/Assets/Samples/SceneRegistration/{AnotherScene4.unity => Scenes/AnotherScene5.unity} (100%) create mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta rename testproject/Assets/Samples/SceneRegistration/{AdditiveSceneGroup 1.asset => SharedAdditiveGroups/SharedAdditiveGroup1.asset} (95%) create mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity rename testproject/Assets/Samples/SceneRegistration/{AnotherScene4.unity.meta => SharedAdditiveScenes/SharedAdditiveScene1.unity.meta} (100%) diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta new file mode 100644 index 0000000000..a7f01699e1 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3b051eaf368aa943a9c45ed94d017b4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset new file mode 100644 index 0000000000..ca857b2371 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} + m_Name: AdditiveSceneGroup 1 + m_EditorClassIdentifier: + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] + m_AdditiveScenes: + - Scene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AnotherScene2 diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset similarity index 76% rename from testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset index 11b798e606..e0270b2c05 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset @@ -12,13 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} m_Name: SceneRegistrationEntry m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, + m_PreviousPrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, type: 2} - m_PrimaryScene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} + m_PrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 - m_PrimarySceneName: AnotherScene2 + m_PrimarySceneName: AnotherScene m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/SceneRegistrationEntry.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta new file mode 100644 index 0000000000..dbf1688b50 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d14c778bd560dc428a3dd95587fb6eb +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset new file mode 100644 index 0000000000..b41595a6a9 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset @@ -0,0 +1,20 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} + m_Name: AdditiveSceneGroup 2 + m_EditorClassIdentifier: + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] + m_AdditiveScenes: + - Scene: {fileID: 102900000, guid: c86e224bb10fd984f98618c5afe3f4a1, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AnotherScene3 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta new file mode 100644 index 0000000000..85a3abf2e4 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 541492da35e7e904ca0ff013fe7449bc +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset new file mode 100644 index 0000000000..e0270b2c05 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: SceneRegistrationEntry + m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, + type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} + m_PrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: AnotherScene + m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta new file mode 100644 index 0000000000..dbee4de540 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 868c31ba31be71c43801cecb19b3631c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes.meta b/testproject/Assets/Samples/SceneRegistration/Scenes.meta new file mode 100644 index 0000000000..ba4705b5e3 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 680111df93c4b0e47a75bb9fc4652ffc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene2.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene3.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta new file mode 100644 index 0000000000..f88d701c3c --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4ef3024adf84afe429a143463b04de19 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta new file mode 100644 index 0000000000..18c3d25cae --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2068a2dbcf75a284c87bb297ffe347ee +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset similarity index 95% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset rename to testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset index 9660c0dcdd..f900e9d646 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup 1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroup 1 + m_Name: AdditiveSceneGroup 3 m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta new file mode 100644 index 0000000000..a934d575e5 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18cfeab1fd0509e46b827b44b4cf48fb +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta new file mode 100644 index 0000000000..ccb29f9787 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9a90dae335695f74d9d46025045583b9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity new file mode 100644 index 0000000000..3515a0ae02 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &306382597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306382600} + - component: {fileID: 306382599} + - component: {fileID: 306382598} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &306382598 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 +--- !u!20 &306382599 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &306382600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1697751730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697751732} + - component: {fileID: 1697751731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1697751731 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1697751732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AnotherScene4.unity.meta rename to testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity.meta From 27130acc3184331ce7575a926cc8f93264658fec Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 24 Jun 2021 09:50:11 -0500 Subject: [PATCH 20/38] refactor Minor updates to names --- .../Scenes/{AnotherScene.unity => AnotherScene1.unity} | 0 .../Scenes/{AnotherScene.unity.meta => AnotherScene1.unity.meta} | 0 .../Scenes/{AnotherScene5.unity => AnotherScene4.unity} | 0 .../Scenes/{AnotherScene5.unity.meta => AnotherScene4.unity.meta} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene.unity => AnotherScene1.unity} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene.unity.meta => AnotherScene1.unity.meta} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene5.unity => AnotherScene4.unity} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene5.unity.meta => AnotherScene4.unity.meta} (100%) diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity.meta From 14eb18dbb5b613bb7426beabbaa774b5cfe3998e Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 24 Jun 2021 15:54:20 -0500 Subject: [PATCH 21/38] refactor SceneRegistration load or find the scene that contains the NetworkManager relative to the SceneRegistration asset assigned to the NetworkManager. --- .../Editor/ReadOnlyPropertyDrawer.cs | 68 +++++++++++++++++++ .../Editor/ReadOnlyPropertyDrawer.cs.meta | 11 +++ .../Runtime/Core/NetworkManager.cs | 15 ++-- .../ReadOnlyPropertyAttribute.cs | 14 ++++ .../ReadOnlyPropertyAttribute.cs.meta | 11 +++ .../SceneManagement/SceneRegistration.cs | 34 ++++++++-- .../EnableDisableSceneNetworkObject.unity | 4 ++ .../SceneBranch_A/AdditiveSceneGroupA_1.asset | 2 +- .../SceneBranch_A/AdditiveSceneGroupA_2.asset | 8 ++- .../SceneRegistrationEntryA.asset | 4 +- .../SceneBranch_B/AdditiveSceneGroupB_1.asset | 8 ++- .../SceneRegistrationEntryB.asset | 12 ++-- ...tration.asset => SceneRegistration1.asset} | 4 +- ...set.meta => SceneRegistration1.asset.meta} | 0 .../SceneRegistration2.asset | 21 ++++++ .../SceneRegistration2.asset.meta | 8 +++ .../SharedAdditiveGroup1.asset | 4 +- 17 files changed, 198 insertions(+), 30 deletions(-) create mode 100644 com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs create mode 100644 com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs.meta create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs create mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs.meta rename testproject/Assets/Samples/SceneRegistration/{SceneRegistration.asset => SceneRegistration1.asset} (77%) rename testproject/Assets/Samples/SceneRegistration/{SceneRegistration.asset.meta => SceneRegistration1.asset.meta} (100%) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta diff --git a/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs new file mode 100644 index 0000000000..3b05de85f4 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs @@ -0,0 +1,68 @@ +using UnityEngine; +using UnityEngine.SceneManagement; +using UnityEditor; +using UnityEditor.SceneManagement; +using MLAPI.SceneManagement; +using UnityEditor.UIElements; +using UnityEngine.UIElements; + +namespace MLAPI.Editor +{ + [CustomPropertyDrawer(typeof(ReadOnlyPropertyAttribute))] + public class ReadOnlyPropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + + } + } + + [CustomPropertyDrawer(typeof(SceneReadOnlyPropertyAttribute))] + public class SceneRegistrationReadOnlyPropertyDrawer : PropertyDrawer + { + private const int k_ButtonWidth = 85; + + private const bool k_LoadScene = true; + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + // Disable the read only field + GUI.enabled = false; + try + { + EditorGUI.PropertyField(new Rect(position.x + k_ButtonWidth + 3, position.y, position.width - (k_ButtonWidth + 3), position.height), property, label); + } + catch (System.Exception ex) + { + Debug.LogError(ex); + } + + GUI.enabled = true; + EditorGUI.EndProperty(); + + var buttonTitle = k_LoadScene == true ? "Load Scene" : "Find Asset"; + // Add a button to open the scene containing the network manager referencing the SceneRegistration + if (GUI.Button(new Rect(position.x, position.y, k_ButtonWidth, 20), buttonTitle)) + { + var value = property.objectReferenceValue as SceneAsset; + if (value != null) + { + if (!k_LoadScene) + { + //Selection.SetActiveObjectWithContext(value, Selection.activeObject); + ProjectWindowUtil.ShowCreatedAsset(value); + } + else + { + EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(value), OpenSceneMode.Single); + } + } + } + } + } + + + + +} diff --git a/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs.meta b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs.meta new file mode 100644 index 0000000000..fd9957a2e9 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef128662b4c28e447b9f5ecd7aa3b92f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index a68222951c..cea4aa5d9b 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -226,9 +226,10 @@ public ulong LocalClientId internal static event Action OnSingletonReady; #if UNITY_EDITOR + // Only used in the editor to handle removing scenes marked to auto populate the build settings + // Needs to be serialized to keep the state of the NetworkManager instance and the SceneRegistration entry [HideInInspector] [SerializeField] - // Only used in the editor to handle removing scenes marked to auto populate the build settings private SceneRegistration m_SceneRegistration; private void OnValidate() { @@ -245,18 +246,18 @@ private void OnValidate() } } - // Trap for when the SceneRegistration is set or deleted to determine if the scenes associated with the SceneRegistration + + // Detect when SceneRegistration is assigned or deleted to determine if the scenes associated with the SceneRegistration // should be included in the build settings. if(NetworkConfig.SceneRegistration != null && !NetworkConfig.SceneRegistration.AssignedToNetworkManager) { m_SceneRegistration = NetworkConfig.SceneRegistration; - NetworkConfig.SceneRegistration.AssignedToNetworkManager = true; - NetworkConfig.SceneRegistration.ValidateBuildSettingsScenes(); + NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); + } - else if (m_SceneRegistration != null && m_SceneRegistration.AssignedToNetworkManager) + else if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) { - m_SceneRegistration.AssignedToNetworkManager = false; - m_SceneRegistration.ValidateBuildSettingsScenes(); + m_SceneRegistration.AssignNetworkManagerScene(false); m_SceneRegistration = null; } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs new file mode 100644 index 0000000000..809bd09448 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs @@ -0,0 +1,14 @@ +using UnityEngine; + +namespace MLAPI.SceneManagement +{ + public class ReadOnlyPropertyAttribute : PropertyAttribute + { + } + + + + public class SceneReadOnlyPropertyAttribute : PropertyAttribute + { + } +} diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs.meta new file mode 100644 index 0000000000..e87572f146 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/ReadOnlyPropertyAttribute.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9f8408e1dcb808747a4571e7e9a91cd4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 815d2c6a52..990b8acf59 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -5,6 +5,7 @@ using UnityEngine; #if UNITY_EDITOR using UnityEditor; +using UnityEngine.SceneManagement; #endif namespace MLAPI.SceneManagement @@ -41,7 +42,7 @@ private static void BuildLookupTableFromEditorBuildSettings() { var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); - if(!s_BuildSettingsSceneLookUpTable.ContainsKey(sceneName)) + if (!s_BuildSettingsSceneLookUpTable.ContainsKey(sceneName)) { s_BuildSettingsSceneLookUpTable.Add(sceneName, editorBuildSettingsScene); } @@ -50,15 +51,15 @@ private static void BuildLookupTableFromEditorBuildSettings() internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) { - if(s_BuildSettingsSceneLookUpTable.Count != EditorBuildSettings.scenes.Length) + if (s_BuildSettingsSceneLookUpTable.Count != EditorBuildSettings.scenes.Length) { BuildLookupTableFromEditorBuildSettings(); } - if(addScene) + if (addScene) { // If the scene does not exist in our local list, then add it and update the build settings - if(!s_BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + if (!s_BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) { s_BuildSettingsSceneLookUpTable.Add(scene.name, new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true)); EditorBuildSettings.scenes = s_BuildSettingsSceneLookUpTable.Values.ToArray(); @@ -79,11 +80,34 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) [HideInInspector] internal bool AssignedToNetworkManager; - internal void SetAssignedToNetworkManager(bool isAssigned) + [SceneReadOnlyProperty] + [SerializeField] + internal SceneAsset NetworkManagerScene; + + + + internal static void OnGuiHandler(Rect position, SerializedProperty property, GUIContent label) + { + + } + + + internal void AssignNetworkManagerScene(bool isAssigned = true) { AssignedToNetworkManager = isAssigned; + if (isAssigned) + { + var currentScene = SceneManager.GetActiveScene(); + NetworkManagerScene = AssetDatabase.LoadAssetAtPath(currentScene.path); + } + else + { + NetworkManagerScene = null; + } + ValidateBuildSettingsScenes(); } + protected override bool OnShouldAssetBeIncluded() { return AssignedToNetworkManager; diff --git a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity index bdb5cb5791..0eefbe3fb2 100644 --- a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity @@ -1433,6 +1433,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1706952616} + SceneRegistration: {fileID: 11400000, guid: d0802b9bd4210f34f90d94073bdfbc7d, + type: 2} RegisteredScenes: - TestEnableDisableSceneNetworkObject - EnableDisableSceneNetworkObject @@ -1460,6 +1462,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: d0802b9bd4210f34f90d94073bdfbc7d, + type: 2} --- !u!114 &1706952616 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset index 0d1c9041cb..d029965e1b 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroup + m_Name: AdditiveSceneGroupA_1 m_EditorClassIdentifier: m_AdditiveSceneGroups: - {fileID: 11400000, guid: e2512bf9d5b16c74bba76d57ba757911, type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset index ca857b2371..c3b529509d 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset @@ -10,10 +10,12 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroup 1 + m_Name: AdditiveSceneGroupA_2 m_EditorClassIdentifier: - m_AdditiveSceneGroups: [] - m_KnownAdditiveSceneGroups: [] + m_AdditiveSceneGroups: + - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} + m_KnownAdditiveSceneGroups: + - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} m_AdditiveScenes: - Scene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} AutoIncludeInBuild: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset index e0270b2c05..425362d7a5 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset @@ -10,7 +10,7 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntry + m_Name: SceneRegistrationEntryA m_EditorClassIdentifier: m_PreviousPrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} @@ -19,6 +19,6 @@ MonoBehaviour: m_PrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 - m_PrimarySceneName: AnotherScene + m_PrimarySceneName: AnotherScene1 m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset index b41595a6a9..0b22eed529 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset @@ -10,10 +10,12 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroup 2 + m_Name: AdditiveSceneGroupB_1 m_EditorClassIdentifier: - m_AdditiveSceneGroups: [] - m_KnownAdditiveSceneGroups: [] + m_AdditiveSceneGroups: + - {fileID: 0} + m_KnownAdditiveSceneGroups: + - {fileID: 0} m_AdditiveScenes: - Scene: {fileID: 102900000, guid: c86e224bb10fd984f98618c5afe3f4a1, type: 3} AutoIncludeInBuild: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset index e0270b2c05..f4f168087b 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset @@ -10,15 +10,15 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntry + m_Name: SceneRegistrationEntryB m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, + m_PreviousPrimaryScene: {fileID: 102900000, guid: 4ef3024adf84afe429a143463b04de19, type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 541492da35e7e904ca0ff013fe7449bc, type: 2} - m_PrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} + m_PrimaryScene: {fileID: 102900000, guid: 4ef3024adf84afe429a143463b04de19, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 - m_PrimarySceneName: AnotherScene - m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + m_PrimarySceneName: AnotherScene4 + m_AddtiveSceneGroup: {fileID: 11400000, guid: 541492da35e7e904ca0ff013fe7449bc, type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset similarity index 77% rename from testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset rename to testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset index b59681f96d..d76867bea4 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset @@ -10,10 +10,12 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} - m_Name: SceneRegistration + m_Name: SceneRegistration1 m_EditorClassIdentifier: m_SceneRegistrations: - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} + - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} m_KnownSceneRegistrations: - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} + - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} AssignedToNetworkManager: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset new file mode 100644 index 0000000000..5984126b8a --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: SceneRegistration2 + m_EditorClassIdentifier: + m_SceneRegistrations: + - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} + m_KnownSceneRegistrations: + - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} + AssignedToNetworkManager: 1 + NetworkManagerScene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, + type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta new file mode 100644 index 0000000000..bd9b2556cd --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0802b9bd4210f34f90d94073bdfbc7d +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset index f900e9d646..fa1e0d1efc 100644 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset @@ -10,11 +10,11 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroup 3 + m_Name: SharedAdditiveGroup1 m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] m_AdditiveScenes: - Scene: {fileID: 102900000, guid: 2f7f4fdd9b3496246a9614d112d159f2, type: 3} AutoIncludeInBuild: 1 - SceneEntryName: AnotherScene4 + SceneEntryName: SharedAdditiveScene1 From c095ddddb703d5ee91cfc8236c522820621303e7 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 24 Jun 2021 18:10:12 -0500 Subject: [PATCH 22/38] feat This use the new scene registration framework to generate the hash used to compare configurations between the client and the server. This also has temporary SceneRegistrationEntries to assure all scenes used in TestProject are included. --- .../Runtime/Configuration/NetworkConfig.cs | 2 +- .../SceneManagement/AddtiveSceneGroup.cs | 19 ++++++----- .../SceneManagement/AssetDependency.cs | 30 ++++++++++++----- .../SceneManagement/SceneRegistration.cs | 33 +++++++++++-------- .../SceneManagement/SceneRegistrationEntry.cs | 20 ++++++----- ...A.asset => SceneRegistrationEntryA1.asset} | 8 ++--- ...ta => SceneRegistrationEntryA1.asset.meta} | 0 .../SceneRegistrationEntryA2.asset | 24 ++++++++++++++ .../SceneRegistrationEntryA2.asset.meta | 8 +++++ .../SceneRegistrationEntryA3.asset | 24 ++++++++++++++ .../SceneRegistrationEntryA3.asset.meta | 8 +++++ .../SceneRegistrationEntryA4.asset | 24 ++++++++++++++ .../SceneRegistrationEntryA4.asset.meta | 8 +++++ .../SceneRegistrationEntryA5.asset | 24 ++++++++++++++ .../SceneRegistrationEntryA5.asset.meta | 8 +++++ .../SceneBranch_B/AdditiveSceneGroupB_1.asset | 4 +-- .../SceneRegistration1.asset | 12 +++++-- 17 files changed, 207 insertions(+), 49 deletions(-) rename testproject/Assets/Samples/SceneRegistration/SceneBranch_A/{SceneRegistrationEntryA.asset => SceneRegistrationEntryA1.asset} (72%) rename testproject/Assets/Samples/SceneRegistration/SceneBranch_A/{SceneRegistrationEntryA.asset.meta => SceneRegistrationEntryA1.asset.meta} (100%) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs index 05570f77a1..e9e605628a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs @@ -304,7 +304,7 @@ public ulong GetConfig(bool cache = true) if(SceneRegistration != null) { - writer.WriteString(SceneRegistration.GetAllScenesForHash()); + SceneRegistration.WriteHashSynchValues(writer); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index 9df1b7c99b..d6e65095eb 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using UnityEngine; +using MLAPI.Serialization; #if UNITY_EDITOR using UnityEditor; #endif @@ -45,7 +46,6 @@ protected override void OnDependecyAdded(IAssetDependency dependencyAdded) ValidateBuildSettingsScenes(); } - private void OnValidate() { // Assure our included additive scene entries' names are all valid @@ -124,20 +124,23 @@ public List GetAdditiveScenes() return OnGetAdditiveScenes(); } - public string GetAllScenesForHash() + protected override void OnWriteHashSynchValues(NetworkWriter writer) { - var scenesHashBase = string.Empty; foreach (var sceneEntry in OnGetAdditiveScenes()) { - scenesHashBase += sceneEntry; + if (sceneEntry != null) + { + writer.WriteString(sceneEntry.SceneEntryName); + } } foreach (var additiveSceneGroup in m_AdditiveSceneGroups) { - scenesHashBase += additiveSceneGroup.GetAllScenesForHash(); + if (additiveSceneGroup != null) + { + additiveSceneGroup.WriteHashSynchValues(writer); + } } - - return scenesHashBase; } } @@ -162,8 +165,6 @@ public class AdditiveSceneEntry public interface IAdditiveSceneGroup { List GetAdditiveScenes(); - - string GetAllScenesForHash(); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs index 6a4c6f61ec..67eee3269a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs @@ -1,23 +1,22 @@ using System; - using UnityEngine; #if UNITY_EDITOR using System.Collections.ObjectModel; using System.Collections.Specialized; #endif +using MLAPI.Serialization; + namespace MLAPI.SceneManagement { /// - /// This class is designed primarily as an editor based helper class - /// that will shed itself of all editor specific properties during runtime - /// but will allow other classes to derive from it in order to maintain a - /// list of asset dependencies. Dependencies are ordered in a top down fashion - /// such that any parents that depend upon any child-relative AssetDependency - /// will notify the child-relative AssetDependency that it "depends upon" this asset + /// This class is designed primarily as an editor based helper class that will shed itself of all editor specific + /// properties during runtime but will allow other classes to derive from it in order to maintain a list of asset + /// dependencies. Dependencies are ordered in a top down fashion such that any parents that depend upon any + /// child-relative AssetDependency will notify the child-relative AssetDependency that it "depends upon" this asset. /// Notes: - /// ExecuteInEditMode attribute is required in order to assure the ObservableCollection - /// CollectionChanged event is registered so changes in dependencies can be more easily + /// ExecuteInEditMode attribute is required in order to assure the ObservableCollection CollectionChanged event is + /// registered so changes in dependencies can be more easily /// managed. /// [ExecuteInEditMode] @@ -176,6 +175,17 @@ public bool ShouldAssetBeIncluded() } #endif + + protected virtual void OnWriteHashSynchValues(NetworkWriter writer) + { + + } + + public void WriteHashSynchValues(NetworkWriter writer) + { + OnWriteHashSynchValues(writer); + } + private void Awake() { #if UNITY_EDITOR @@ -186,6 +196,8 @@ private void Awake() public interface IAssetDependency { + void WriteHashSynchValues(NetworkWriter writer); + #if UNITY_EDITOR void AddDependency(IAssetDependency assetDependency); void RemoveDependency(IAssetDependency assetDependency); diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 990b8acf59..14e2ccd0d6 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -1,6 +1,7 @@ using System; using System.Linq; using System.Collections.Generic; +using MLAPI.Serialization; using UnityEngine; #if UNITY_EDITOR @@ -17,6 +18,10 @@ public class SceneRegistration : AssetDependency [SerializeField] private List m_SceneRegistrations; + [HideInInspector] + [SerializeField] + private string m_NetworkManagerScene; + #if UNITY_EDITOR // Since Unity does not support observable collections there are two ways to approach this: // 1.) Make a duplicate list that adjusts itself during OnValidate @@ -84,14 +89,6 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) [SerializeField] internal SceneAsset NetworkManagerScene; - - - internal static void OnGuiHandler(Rect position, SerializedProperty property, GUIContent label) - { - - } - - internal void AssignNetworkManagerScene(bool isAssigned = true) { AssignedToNetworkManager = isAssigned; @@ -99,10 +96,17 @@ internal void AssignNetworkManagerScene(bool isAssigned = true) { var currentScene = SceneManager.GetActiveScene(); NetworkManagerScene = AssetDatabase.LoadAssetAtPath(currentScene.path); + if(NetworkManagerScene != null) + { + m_NetworkManagerScene = NetworkManagerScene.name; + AddOrRemoveSceneAsset(NetworkManagerScene, true); + } } else { + AddOrRemoveSceneAsset(NetworkManagerScene, false); NetworkManagerScene = null; + m_NetworkManagerScene = string.Empty; } ValidateBuildSettingsScenes(); } @@ -171,14 +175,17 @@ protected override bool OnIsRootAssetDependency() return OnShouldAssetBeIncluded(); } #endif - public string GetAllScenesForHash() + protected override void OnWriteHashSynchValues(NetworkWriter writer) { - var scenesHashBase = string.Empty; - foreach(var sceneRegistrationEntry in m_SceneRegistrations) + if(m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) { - scenesHashBase += sceneRegistrationEntry.GetAllScenesForHash(); + writer.WriteString(m_NetworkManagerScene); } - return scenesHashBase; + + foreach(var sceneRegistrationEntry in m_SceneRegistrations) + { + sceneRegistrationEntry.WriteHashSynchValues(writer); + } } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index 3aa407c99a..5a454f30db 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -1,5 +1,6 @@ using System; using UnityEngine; +using MLAPI.Serialization; #if UNITY_EDITOR using UnityEditor; #endif @@ -95,9 +96,9 @@ internal void ValidateBuildSettingsScenes() m_AddtiveSceneGroup.AddDependency(this); m_AddtiveSceneGroup.ValidateBuildSettingsScenes(); } - if(m_PreviousAddtiveSceneGroup != m_AddtiveSceneGroup) + if (m_PreviousAddtiveSceneGroup != m_AddtiveSceneGroup) { - if(m_PreviousAddtiveSceneGroup != null) + if (m_PreviousAddtiveSceneGroup != null) { m_PreviousAddtiveSceneGroup.RemoveDependency(this); m_PreviousAddtiveSceneGroup.ValidateBuildSettingsScenes(); @@ -124,22 +125,23 @@ public string GetPrimaryScene() return m_PrimarySceneName; } - public string GetAllScenesForHash() + protected override void OnWriteHashSynchValues(NetworkWriter writer) { - var scenesHashBase = m_PrimarySceneName; - if(m_AddtiveSceneGroup != null) + if (m_PrimarySceneName != null || m_PrimarySceneName != string.Empty) { - scenesHashBase += m_AddtiveSceneGroup.GetAllScenesForHash(); + writer.WriteString(m_PrimarySceneName); + } + + if (m_AddtiveSceneGroup != null) + { + m_AddtiveSceneGroup.WriteHashSynchValues(writer); } - return scenesHashBase; } } public interface ISceneRegistrationEntry { string GetPrimaryScene(); - - string GetAllScenesForHash(); } } diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset similarity index 72% rename from testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset index 425362d7a5..9414635f1c 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset @@ -10,15 +10,15 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA + m_Name: SceneRegistrationEntryA1 m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, + m_PreviousPrimaryScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, type: 2} - m_PrimaryScene: {fileID: 102900000, guid: 77297684364241b4381ec1f650426e17, type: 3} + m_PrimaryScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 - m_PrimarySceneName: AnotherScene1 + m_PrimarySceneName: SampleScene m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset new file mode 100644 index 0000000000..60e1abbbf7 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: SceneRegistrationEntryA2 + m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, + type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} + m_PrimaryScene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: SecondSceneToLoad + m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta new file mode 100644 index 0000000000..ec2e2fcd77 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 946766aff777fc94fb8606754b9e607c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset new file mode 100644 index 0000000000..4ae6eee96c --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: SceneRegistrationEntryA3 + m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, + type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} + m_PrimaryScene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: ThirdSceneToLoad + m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta new file mode 100644 index 0000000000..5546c6205a --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 24325287a1d490140b5ae7fd0aa6d2d9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset new file mode 100644 index 0000000000..49346cfa8c --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: SceneRegistrationEntryA4 + m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, + type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} + m_PrimaryScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: ConnectionApprovalTest + m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta new file mode 100644 index 0000000000..a78092be3e --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2a943daa8d74c884d9ad9fff17c4dba4 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset new file mode 100644 index 0000000000..137d6ea5e3 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: SceneRegistrationEntryA5 + m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, + type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} + m_PrimaryScene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: RpcTesting + m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, + type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta new file mode 100644 index 0000000000..04c5faecf9 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 789b2655c7107d54889c7f0b4db1681f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset index 0b22eed529..f3409c8f1b 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset @@ -17,6 +17,6 @@ MonoBehaviour: m_KnownAdditiveSceneGroups: - {fileID: 0} m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: c86e224bb10fd984f98618c5afe3f4a1, type: 3} + - Scene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} AutoIncludeInBuild: 1 - SceneEntryName: AnotherScene3 + SceneEntryName: EnableDisableSceneNetworkObject diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset index d76867bea4..a5e2ff1062 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset @@ -14,8 +14,16 @@ MonoBehaviour: m_EditorClassIdentifier: m_SceneRegistrations: - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} - - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} + - {fileID: 11400000, guid: 946766aff777fc94fb8606754b9e607c, type: 2} + - {fileID: 11400000, guid: 24325287a1d490140b5ae7fd0aa6d2d9, type: 2} + - {fileID: 11400000, guid: 2a943daa8d74c884d9ad9fff17c4dba4, type: 2} + - {fileID: 11400000, guid: 789b2655c7107d54889c7f0b4db1681f, type: 2} + m_NetworkManagerScene: m_KnownSceneRegistrations: - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} - - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} + - {fileID: 11400000, guid: 946766aff777fc94fb8606754b9e607c, type: 2} + - {fileID: 11400000, guid: 24325287a1d490140b5ae7fd0aa6d2d9, type: 2} + - {fileID: 11400000, guid: 2a943daa8d74c884d9ad9fff17c4dba4, type: 2} + - {fileID: 11400000, guid: 789b2655c7107d54889c7f0b4db1681f, type: 2} AssignedToNetworkManager: 1 + NetworkManagerScene: {fileID: 0} From ee67d97e67e754f8d8ba457bedfd96b64e4ec2d1 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Fri, 25 Jun 2021 14:49:02 -0500 Subject: [PATCH 23/38] refactor and fix Some minor refactoring along and saving the current asset states. Working version, but too complex in a few ways. --- .../Runtime/Core/NetworkManager.cs | 4 +- .../SceneManagement/AddtiveSceneGroup.cs | 6 +- .../SceneManagement/AssetDependency.cs | 10 +- .../SceneManagement/SceneRegistration.cs | 27 +- .../SceneManagement/SceneRegistrationEntry.cs | 2 +- .../EnableDisableSceneNetworkObject.unity | 6 +- .../SceneBranch_A/AdditiveSceneGroupA_2.asset | 4 +- .../SceneRegistrationEntryA1.asset | 6 +- .../SceneRegistrationEntryA2.asset | 6 +- .../SceneRegistrationEntryA3.asset | 6 +- .../SceneRegistrationEntryA4.asset | 6 +- .../SceneRegistrationEntryA6.asset | 22 ++ .../SceneRegistrationEntryA6.asset.meta | 8 + .../SceneBranch_B/AdditiveSceneGroupB_1.asset | 8 +- .../SceneRegistration1.asset | 3 +- .../SceneRegistration2.asset | 5 +- .../SceneRegistration2.asset.meta | 2 +- ...otherScene1.unity => AdditiveScene1.unity} | 0 ...1.unity.meta => AdditiveScene1.unity.meta} | 0 ...otherScene2.unity => AdditiveScene2.unity} | 0 ...2.unity.meta => AdditiveScene2.unity.meta} | 0 ...otherScene3.unity => AdditiveScene3.unity} | 0 ...3.unity.meta => AdditiveScene3.unity.meta} | 0 .../Scenes/AnotherScene5.unity | 301 ++++++++++++++++++ .../Scenes/AnotherScene5.unity.meta | 7 + testproject/Assets/Scenes/SampleScene.unity | 14 +- .../SceneTransitioningTest.unity | 6 +- .../ProjectSettings/ProjectVersion.txt | 4 +- 28 files changed, 403 insertions(+), 60 deletions(-) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene1.unity => AdditiveScene1.unity} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene1.unity.meta => AdditiveScene1.unity.meta} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene2.unity => AdditiveScene2.unity} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene2.unity.meta => AdditiveScene2.unity.meta} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene3.unity => AdditiveScene3.unity} (100%) rename testproject/Assets/Samples/SceneRegistration/Scenes/{AnotherScene3.unity.meta => AdditiveScene3.unity.meta} (100%) create mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index cea4aa5d9b..e60dba916a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -252,8 +252,8 @@ private void OnValidate() if(NetworkConfig.SceneRegistration != null && !NetworkConfig.SceneRegistration.AssignedToNetworkManager) { m_SceneRegistration = NetworkConfig.SceneRegistration; - NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); - + NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); + } else if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) { diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index d6e65095eb..23e213afb1 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -29,7 +29,7 @@ public class AddtiveSceneGroup : AssetDependency, IAdditiveSceneGroup #if UNITY_EDITOR /// - /// + /// /// /// protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) @@ -38,7 +38,7 @@ protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) } /// - /// + /// /// /// protected override void OnDependecyAdded(IAssetDependency dependencyAdded) @@ -102,7 +102,7 @@ internal void ValidateBuildSettingsScenes() } } - // Now validate the build settings includsion for any reference additive scene groups + // Now validate the build settings inclusion for any reference additive scene groups foreach(var additveSceneGroup in m_AdditiveSceneGroups) { if (additveSceneGroup != null) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs index 67eee3269a..209addc5d1 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs @@ -15,7 +15,7 @@ namespace MLAPI.SceneManagement /// dependencies. Dependencies are ordered in a top down fashion such that any parents that depend upon any /// child-relative AssetDependency will notify the child-relative AssetDependency that it "depends upon" this asset. /// Notes: - /// ExecuteInEditMode attribute is required in order to assure the ObservableCollection CollectionChanged event is + /// ExecuteInEditMode attribute is required in order to assure the ObservableCollection CollectionChanged event is /// registered so changes in dependencies can be more easily /// managed. /// @@ -53,8 +53,8 @@ public void RemoveDependency(IAssetDependency assetDependency) } /// - /// Child derived classes can override this method to recieve notifications of a - /// dependency addition + /// Child derived classes can override this method to receive notifications of a + /// dependency addition /// /// protected virtual void OnDependecyAdded(IAssetDependency dependencyAdded) @@ -63,8 +63,8 @@ protected virtual void OnDependecyAdded(IAssetDependency dependencyAdded) } /// - /// Child derived classes can override this method to recieve notifications of a - /// dependency removal + /// Child derived classes can override this method to receive notifications of a + /// dependency removal /// /// protected virtual void OnDependecyRemoved(IAssetDependency dependencyRemoved) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 14e2ccd0d6..f81b093170 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -81,9 +81,18 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) } } - [SerializeField] - [HideInInspector] - internal bool AssignedToNetworkManager; + + internal bool AssignedToNetworkManager + { + get + { + if(NetworkManagerScene != null) + { + return true; + } + return false; + } + } [SceneReadOnlyProperty] [SerializeField] @@ -91,7 +100,6 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) internal void AssignNetworkManagerScene(bool isAssigned = true) { - AssignedToNetworkManager = isAssigned; if (isAssigned) { var currentScene = SceneManager.GetActiveScene(); @@ -100,11 +108,14 @@ internal void AssignNetworkManagerScene(bool isAssigned = true) { m_NetworkManagerScene = NetworkManagerScene.name; AddOrRemoveSceneAsset(NetworkManagerScene, true); - } + } } else { - AddOrRemoveSceneAsset(NetworkManagerScene, false); + if (NetworkManagerScene != null) + { + AddOrRemoveSceneAsset(NetworkManagerScene, false); + } NetworkManagerScene = null; m_NetworkManagerScene = string.Empty; } @@ -139,7 +150,7 @@ private void OnValidate() } m_KnownSceneRegistrations.Clear(); - m_KnownSceneRegistrations.AddRange(m_SceneRegistrations); + m_KnownSceneRegistrations.AddRange(m_SceneRegistrations); ValidateBuildSettingsScenes(); } @@ -185,7 +196,7 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) foreach(var sceneRegistrationEntry in m_SceneRegistrations) { sceneRegistrationEntry.WriteHashSynchValues(writer); - } + } } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index 5a454f30db..d0736f4d4d 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -80,7 +80,7 @@ internal void ValidateBuildSettingsScenes() // If the newly assigned scene is not null if (m_PrimaryScene != null) { - // As long as we should include this scnee registration entry, then add it to the build settings list of scenes to be included + // As long as we should include this scene registration entry, then add it to the build settings list of scenes to be included SceneRegistration.AddOrRemoveSceneAsset(m_PrimaryScene, ShouldIncludeInBuildSettings()); } diff --git a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity index 0eefbe3fb2..310c47310f 100644 --- a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity @@ -1433,8 +1433,7 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1706952616} - SceneRegistration: {fileID: 11400000, guid: d0802b9bd4210f34f90d94073bdfbc7d, - type: 2} + SceneRegistration: {fileID: 0} RegisteredScenes: - TestEnableDisableSceneNetworkObject - EnableDisableSceneNetworkObject @@ -1462,8 +1461,7 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 11400000, guid: d0802b9bd4210f34f90d94073bdfbc7d, - type: 2} + m_SceneRegistration: {fileID: 0} --- !u!114 &1706952616 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset index c3b529509d..6a4f4d0bfa 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset @@ -13,9 +13,9 @@ MonoBehaviour: m_Name: AdditiveSceneGroupA_2 m_EditorClassIdentifier: m_AdditiveSceneGroups: - - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} + - {fileID: 0} m_KnownAdditiveSceneGroups: - - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} + - {fileID: 0} m_AdditiveScenes: - Scene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} AutoIncludeInBuild: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset index 9414635f1c..322b9e97b7 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset @@ -14,11 +14,9 @@ MonoBehaviour: m_EditorClassIdentifier: m_PreviousPrimaryScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_PreviousAddtiveSceneGroup: {fileID: 0} m_PrimaryScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 m_PrimarySceneName: SampleScene - m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset index 60e1abbbf7..c6b60464ae 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset @@ -14,11 +14,9 @@ MonoBehaviour: m_EditorClassIdentifier: m_PreviousPrimaryScene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_PreviousAddtiveSceneGroup: {fileID: 0} m_PrimaryScene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 m_PrimarySceneName: SecondSceneToLoad - m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset index 4ae6eee96c..f4055b4c71 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset @@ -14,11 +14,9 @@ MonoBehaviour: m_EditorClassIdentifier: m_PreviousPrimaryScene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_PreviousAddtiveSceneGroup: {fileID: 0} m_PrimaryScene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 m_PrimarySceneName: ThirdSceneToLoad - m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset index 49346cfa8c..e22403b359 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset @@ -14,11 +14,9 @@ MonoBehaviour: m_EditorClassIdentifier: m_PreviousPrimaryScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_PreviousAddtiveSceneGroup: {fileID: 0} m_PrimaryScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} m_AutoIncludeInBuild: 1 SceneIdentifier: 0 m_PrimarySceneName: ConnectionApprovalTest - m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} + m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset new file mode 100644 index 0000000000..e428ae7e45 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} + m_Name: SceneRegistrationEntryA6 + m_EditorClassIdentifier: + m_PreviousPrimaryScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, + type: 3} + m_PreviousAddtiveSceneGroup: {fileID: 0} + m_PrimaryScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} + m_AutoIncludeInBuild: 1 + SceneIdentifier: 0 + m_PrimarySceneName: SceneTransitioningTest + m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta new file mode 100644 index 0000000000..459f547788 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 58a2d845885b03a4b897baa6a746207f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset index f3409c8f1b..40c19eb5f8 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset @@ -13,10 +13,10 @@ MonoBehaviour: m_Name: AdditiveSceneGroupB_1 m_EditorClassIdentifier: m_AdditiveSceneGroups: - - {fileID: 0} + - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} m_KnownAdditiveSceneGroups: - - {fileID: 0} + - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} + - Scene: {fileID: 102900000, guid: 60b648de486f45640b2f898d15ccebd4, type: 3} AutoIncludeInBuild: 1 - SceneEntryName: EnableDisableSceneNetworkObject + SceneEntryName: AnotherScene5 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset index a5e2ff1062..ffd16a7ead 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset @@ -18,6 +18,7 @@ MonoBehaviour: - {fileID: 11400000, guid: 24325287a1d490140b5ae7fd0aa6d2d9, type: 2} - {fileID: 11400000, guid: 2a943daa8d74c884d9ad9fff17c4dba4, type: 2} - {fileID: 11400000, guid: 789b2655c7107d54889c7f0b4db1681f, type: 2} + - {fileID: 11400000, guid: 58a2d845885b03a4b897baa6a746207f, type: 2} m_NetworkManagerScene: m_KnownSceneRegistrations: - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} @@ -25,5 +26,5 @@ MonoBehaviour: - {fileID: 11400000, guid: 24325287a1d490140b5ae7fd0aa6d2d9, type: 2} - {fileID: 11400000, guid: 2a943daa8d74c884d9ad9fff17c4dba4, type: 2} - {fileID: 11400000, guid: 789b2655c7107d54889c7f0b4db1681f, type: 2} - AssignedToNetworkManager: 1 + - {fileID: 11400000, guid: 58a2d845885b03a4b897baa6a746207f, type: 2} NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset index 5984126b8a..319175e99f 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset @@ -14,8 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: m_SceneRegistrations: - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} + m_NetworkManagerScene: m_KnownSceneRegistrations: - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} - AssignedToNetworkManager: 1 - NetworkManagerScene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, - type: 3} + NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta index bd9b2556cd..4b0057c8b0 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d0802b9bd4210f34f90d94073bdfbc7d +guid: 0879e9433e57cfb40b54632fe5518664 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene1.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene2.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity rename to testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene3.unity.meta rename to testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity new file mode 100644 index 0000000000..3515a0ae02 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &306382597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 306382600} + - component: {fileID: 306382599} + - component: {fileID: 306382598} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &306382598 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 +--- !u!20 &306382599 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &306382600 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 306382597} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1697751730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1697751732} + - component: {fileID: 1697751731} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1697751731 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1697751732 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1697751730} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta new file mode 100644 index 0000000000..0122d33d6d --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 60b648de486f45640b2f898d15ccebd4 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Scenes/SampleScene.unity b/testproject/Assets/Scenes/SampleScene.unity index fa5231a972..4fd4f74f6f 100644 --- a/testproject/Assets/Scenes/SampleScene.unity +++ b/testproject/Assets/Scenes/SampleScene.unity @@ -38,7 +38,7 @@ RenderSettings: m_ReflectionIntensity: 1 m_CustomReflection: {fileID: 0} m_Sun: {fileID: 705507994} - m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} m_UseRadianceAmbientProbe: 0 --- !u!157 &3 LightmapSettings: @@ -509,6 +509,7 @@ MonoBehaviour: GlobalObjectIdHash: 3604669530 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!114 &402668304 MonoBehaviour: m_ObjectHideFlags: 0 @@ -888,6 +889,7 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 620561610} + SceneRegistration: {fileID: 0} RegisteredScenes: - SampleScene AllowRuntimeSceneChanges: 0 @@ -920,6 +922,7 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 0} --- !u!4 &620561612 Transform: m_ObjectHideFlags: 0 @@ -927,8 +930,8 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 620561609} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalRotation: {x: 0.06661005, y: 0.9301148, z: -0.29262593, w: 0.21170676} + m_LocalPosition: {x: -1.0347366, y: 2.9539723, z: 9.135599} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} @@ -1833,6 +1836,7 @@ MonoBehaviour: GlobalObjectIdHash: 3972363333 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!65 &963826007 BoxCollider: m_ObjectHideFlags: 0 @@ -2341,6 +2345,7 @@ MonoBehaviour: GlobalObjectIdHash: 1445980162 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!54 &1397037320 Rigidbody: m_ObjectHideFlags: 0 @@ -2606,6 +2611,7 @@ MonoBehaviour: GlobalObjectIdHash: 1148320762 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!54 &1402467447 Rigidbody: m_ObjectHideFlags: 0 @@ -3020,6 +3026,7 @@ MonoBehaviour: GlobalObjectIdHash: 2710131580 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!114 &1475593096 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3474,4 +3481,3 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2036456027} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} - \ No newline at end of file diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity index 826c137fd4..7439f48f59 100644 --- a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity @@ -1008,8 +1008,7 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1024114719} - SceneRegistration: {fileID: 11400000, guid: 73f6dc1861e493e4196cab8466ea0d80, - type: 2} + SceneRegistration: {fileID: 0} RegisteredScenes: - SceneTransitioningTest - SecondSceneToLoad @@ -1046,8 +1045,7 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 11400000, guid: 73f6dc1861e493e4196cab8466ea0d80, - type: 2} + m_SceneRegistration: {fileID: 0} --- !u!114 &1024114719 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/ProjectSettings/ProjectVersion.txt b/testproject/ProjectSettings/ProjectVersion.txt index 143b639ca2..79c7dbee32 100644 --- a/testproject/ProjectSettings/ProjectVersion.txt +++ b/testproject/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.1.1f1 -m_EditorVersionWithRevision: 2021.1.1f1 (6fdc41dfa55a) +m_EditorVersion: 2021.1.3f1 +m_EditorVersionWithRevision: 2021.1.3f1 (4bef613afd59) From 5062baf13103b42fcdff4611dce99bf492d23640 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Fri, 25 Jun 2021 14:50:45 -0500 Subject: [PATCH 24/38] refactor keeping minimal scenes in build --- .../ProjectSettings/EditorBuildSettings.asset | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 0f1a066d92..2321b7d22a 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -14,27 +14,6 @@ EditorBuildSettings: - enabled: 1 path: Assets/Tests/Manual/ManualTestsMenu.unity guid: 197ba614e9ae3054a8dea7b2bdacad6a - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity - guid: 1c2375a896b2e8c4a841aa61224b8494 - - enabled: 1 - path: Assets/Scenes/SampleScene.unity - guid: 9fc0d4010bbf28b4594072e72b8655ab - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity - guid: 79c2bf7d6b7a06a42a94982aaf1904d8 - - enabled: 1 - path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity - guid: 931469794d88a874998f1d5edd265522 - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity - guid: 637ab8340e96a2949adfe5bfdd42b924 - - enabled: 1 - path: Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity - guid: dd570b5916593cb41bab8beb1c9d9315 - - enabled: 1 - path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity - guid: 619b9eba5892d5a4e9dd1d6cafb0059a - enabled: 1 path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingTo.unity guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f From e389eae6f79966799802cff2fb4148ba52b7d25c Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Fri, 25 Jun 2021 19:29:24 -0500 Subject: [PATCH 25/38] refactor Improved and more simplified scene registration. --- .../Editor/ReadOnlyPropertyDrawer.cs | 9 +- .../SceneManagement/AddtiveSceneGroup.cs | 27 +- .../SceneManagement/AssetDependency.cs | 1 + .../SceneManagement/SceneRegistration.cs | 122 +++++-- ...Group1.asset => AddiriveSceneGroup2.asset} | 7 +- ...et.meta => AddiriveSceneGroup2.asset.meta} | 2 +- .../AdditiveSceneGroup1.asset | 35 ++ ...et.meta => AdditiveSceneGroup1.asset.meta} | 2 +- ...SceneBranch_A.meta => AdditiveScenes.meta} | 2 +- .../AdditiveScene 1.unity} | 180 +++++------ .../AdditiveScene 1.unity.meta} | 2 +- .../AdditiveScene 2.unity} | 180 +++++------ .../AdditiveScene 2.unity.meta} | 2 +- .../AdditiveScene 3.unity} | 180 +++++------ .../AdditiveScene 3.unity.meta} | 2 +- .../AdditiveScene 4.unity} | 180 +++++------ .../AdditiveScene 4.unity.meta} | 2 +- .../AdditiveScenes/AdditiveScene 5.unity | 301 ++++++++++++++++++ .../AdditiveScenes/AdditiveScene 5.unity.meta | 7 + .../AdditiveScenes/AdditiveScene 6.unity | 301 ++++++++++++++++++ .../AdditiveScenes/AdditiveScene 6.unity.meta | 7 + .../SceneBranch_A/AdditiveSceneGroupA_1.asset | 22 -- .../SceneBranch_A/AdditiveSceneGroupA_2.asset | 22 -- .../SceneRegistrationEntryA1.asset | 22 -- .../SceneRegistrationEntryA1.asset.meta | 8 - .../SceneRegistrationEntryA2.asset | 22 -- .../SceneRegistrationEntryA3.asset | 22 -- .../SceneRegistrationEntryA3.asset.meta | 8 - .../SceneRegistrationEntryA4.asset | 22 -- .../SceneRegistrationEntryA4.asset.meta | 8 - .../SceneRegistrationEntryA5.asset | 24 -- .../SceneRegistrationEntryA5.asset.meta | 8 - .../SceneRegistrationEntryA6.asset | 22 -- .../SceneRegistrationEntryA6.asset.meta | 8 - .../SceneRegistration/SceneBranch_B.meta | 8 - .../SceneBranch_B/AdditiveSceneGroupB_1.asset | 22 -- .../AdditiveSceneGroupB_1.asset.meta | 8 - .../SceneRegistrationEntryB.asset | 24 -- .../SceneRegistrationEntryB.asset.meta | 8 - .../SceneRegistration/SceneRegistration.asset | 33 ++ ...sset.meta => SceneRegistration.asset.meta} | 2 +- .../SceneRegistration1.asset | 30 -- .../SceneRegistration1.asset.meta | 8 - .../SceneRegistration2.asset | 20 -- .../SceneRegistration2.asset.meta | 8 - .../Samples/SceneRegistration/Scenes.meta | 8 - .../Scenes/AnotherScene5.unity | 301 ------------------ .../Scenes/AnotherScene5.unity.meta | 7 - .../SharedAdditiveGroups.meta | 8 - .../SharedAdditiveGroup1.asset.meta | 8 - .../SharedAdditiveScenes.meta | 8 - .../SharedAdditiveScene1.unity | 301 ------------------ .../SharedAdditiveScene1.unity.meta | 7 - 53 files changed, 1166 insertions(+), 1422 deletions(-) rename testproject/Assets/Samples/SceneRegistration/{SharedAdditiveGroups/SharedAdditiveGroup1.asset => AddiriveSceneGroup2.asset} (68%) rename testproject/Assets/Samples/SceneRegistration/{SceneBranch_A/SceneRegistrationEntryA2.asset.meta => AddiriveSceneGroup2.asset.meta} (79%) create mode 100644 testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset rename testproject/Assets/Samples/SceneRegistration/{SceneBranch_A/AdditiveSceneGroupA_2.asset.meta => AdditiveSceneGroup1.asset.meta} (79%) rename testproject/Assets/Samples/SceneRegistration/{SceneBranch_A.meta => AdditiveScenes.meta} (77%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AdditiveScene1.unity => AdditiveScenes/AdditiveScene 1.unity} (93%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AdditiveScene2.unity.meta => AdditiveScenes/AdditiveScene 1.unity.meta} (74%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AdditiveScene2.unity => AdditiveScenes/AdditiveScene 2.unity} (93%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AdditiveScene3.unity.meta => AdditiveScenes/AdditiveScene 2.unity.meta} (74%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AdditiveScene3.unity => AdditiveScenes/AdditiveScene 3.unity} (93%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AnotherScene4.unity.meta => AdditiveScenes/AdditiveScene 3.unity.meta} (74%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AnotherScene4.unity => AdditiveScenes/AdditiveScene 4.unity} (93%) rename testproject/Assets/Samples/SceneRegistration/{Scenes/AdditiveScene1.unity.meta => AdditiveScenes/AdditiveScene 4.unity.meta} (74%) create mode 100644 testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset rename testproject/Assets/Samples/SceneRegistration/{SceneBranch_A/AdditiveSceneGroupA_1.asset.meta => SceneRegistration.asset.meta} (79%) delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset delete mode 100644 testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity delete mode 100644 testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta delete mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity delete mode 100644 testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity.meta diff --git a/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs index 3b05de85f4..779a6eff3c 100644 --- a/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs +++ b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs @@ -13,7 +13,12 @@ public class ReadOnlyPropertyDrawer : PropertyDrawer { public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { - + EditorGUI.BeginProperty(position, label, property); + // Disable the read only field + GUI.enabled = false; + EditorGUI.PropertyField(new Rect(position.x, position.y, position.width, position.height), property, label); + GUI.enabled = true; + EditorGUI.EndProperty(); } } @@ -25,7 +30,7 @@ public class SceneRegistrationReadOnlyPropertyDrawer : PropertyDrawer private const bool k_LoadScene = true; public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) - { + { EditorGUI.BeginProperty(position, label, property); // Disable the read only field GUI.enabled = false; diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index 23e213afb1..fbf8624c77 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -48,19 +48,6 @@ protected override void OnDependecyAdded(IAssetDependency dependencyAdded) private void OnValidate() { - // Assure our included additive scene entries' names are all valid - // If not, then assign the proper scene name to the AdditiveSceneEntry.SceneEntryName - foreach (var includedScene in m_AdditiveScenes) - { - if (includedScene != null) - { - if (includedScene.Scene != null && includedScene.Scene.name != includedScene.SceneEntryName) - { - includedScene.SceneEntryName = includedScene.Scene.name; - } - } - } - foreach (var entry in m_AdditiveSceneGroups) { if (entry != null) @@ -149,7 +136,7 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) /// the scene name that it is pointing to for runtime /// [Serializable] - public class AdditiveSceneEntry + public class AdditiveSceneEntry: ISerializationCallbackReceiver { #if UNITY_EDITOR public SceneAsset Scene; @@ -159,6 +146,18 @@ public class AdditiveSceneEntry #endif [HideInInspector] public string SceneEntryName; + + public void OnAfterDeserialize() + { + + } + public void OnBeforeSerialize() + { + if(Scene != null && SceneEntryName != Scene.name) + { + SceneEntryName = Scene.name; + } + } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs index 209addc5d1..2abb6a2c44 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs @@ -131,6 +131,7 @@ public bool BelongsToRootAssetBranch() { return IsRootAssetDependency(); } + foreach(var dependency in m_Dependencies) { if(dependency.BelongsToRootAssetBranch()) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index f81b093170..885fe5b2d6 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -16,7 +16,7 @@ namespace MLAPI.SceneManagement public class SceneRegistration : AssetDependency { [SerializeField] - private List m_SceneRegistrations; + private List m_SceneRegistrations; [HideInInspector] [SerializeField] @@ -29,7 +29,7 @@ public class SceneRegistration : AssetDependency // For this pass, I opted for solution #1 [HideInInspector] [SerializeField] - private List m_KnownSceneRegistrations; + private List m_KnownSceneRegistrations; static private Dictionary s_BuildSettingsSceneLookUpTable = new Dictionary(); @@ -86,7 +86,7 @@ internal bool AssignedToNetworkManager { get { - if(NetworkManagerScene != null) + if (NetworkManagerScene != null) { return true; } @@ -104,7 +104,7 @@ internal void AssignNetworkManagerScene(bool isAssigned = true) { var currentScene = SceneManager.GetActiveScene(); NetworkManagerScene = AssetDatabase.LoadAssetAtPath(currentScene.path); - if(NetworkManagerScene != null) + if (NetworkManagerScene != null) { m_NetworkManagerScene = NetworkManagerScene.name; AddOrRemoveSceneAsset(NetworkManagerScene, true); @@ -130,27 +130,6 @@ protected override bool OnShouldAssetBeIncluded() private void OnValidate() { - foreach (var entry in m_SceneRegistrations) - { - if (entry != null) - { - entry.AddDependency(this); - } - } - - foreach (var entry in m_KnownSceneRegistrations) - { - if (entry != null) - { - if (!m_SceneRegistrations.Contains(entry)) - { - entry.RemoveDependency(this); - } - } - } - - m_KnownSceneRegistrations.Clear(); - m_KnownSceneRegistrations.AddRange(m_SceneRegistrations); ValidateBuildSettingsScenes(); } @@ -161,13 +140,23 @@ private void OnValidate() internal void ValidateBuildSettingsScenes() { //Cycle through all scenes registered and validate the build settings scenes list - if (m_SceneRegistrations != null) + if (m_SceneRegistrations != null && m_SceneRegistrations.Count > 0) { + var shouldInclude = ShouldAssetBeIncluded(); + var partOfRootBranch = BelongsToRootAssetBranch(); + foreach (var sceneRegistrationEntry in m_SceneRegistrations) { - if (sceneRegistrationEntry != null) + if (sceneRegistrationEntry != null && sceneRegistrationEntry.Scene != null) { - sceneRegistrationEntry.ValidateBuildSettingsScenes(); + if (sceneRegistrationEntry.SceneEntryName != sceneRegistrationEntry.Scene.name) + { + sceneRegistrationEntry.SceneEntryName = sceneRegistrationEntry.Scene.name; + } + + AddOrRemoveSceneAsset(sceneRegistrationEntry.Scene, shouldInclude && partOfRootBranch && sceneRegistrationEntry.AutoIncludeInBuild); + + sceneRegistrationEntry.UpdateAdditiveSceneGroup(this); } } } @@ -188,16 +177,87 @@ protected override bool OnIsRootAssetDependency() #endif protected override void OnWriteHashSynchValues(NetworkWriter writer) { - if(m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) + if (m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) { writer.WriteString(m_NetworkManagerScene); } - foreach(var sceneRegistrationEntry in m_SceneRegistrations) + foreach (var sceneRegistrationEntry in m_SceneRegistrations) + { + if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) + { + writer.WriteString(sceneRegistrationEntry.SceneEntryName); + if (sceneRegistrationEntry.AdditiveSceneGroup != null ) + { + sceneRegistrationEntry.AdditiveSceneGroup.WriteHashSynchValues(writer); + } + } + } + } + } + + /// + /// A container class to hold the editor specific assets and + /// the scene name that it is pointing to for runtime + /// + [Serializable] + public class SceneEntry : ISerializationCallbackReceiver + { +#if UNITY_EDITOR + public SceneAsset Scene; + + [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] + public bool AutoIncludeInBuild; + + public AddtiveSceneGroup AdditiveSceneGroup; + + [SerializeField] + [HideInInspector] + private AddtiveSceneGroup m_KnownAdditiveSceneGroup; + + internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) + { + if (AdditiveSceneGroup != m_KnownAdditiveSceneGroup) + { + if (m_KnownAdditiveSceneGroup != null) + { + m_KnownAdditiveSceneGroup.RemoveDependency(assetDependency); + m_KnownAdditiveSceneGroup.ValidateBuildSettingsScenes(); + } + } + + if (AdditiveSceneGroup != null) + { + AdditiveSceneGroup.AddDependency(assetDependency); + AdditiveSceneGroup.ValidateBuildSettingsScenes(); + } + + + if (m_KnownAdditiveSceneGroup != AdditiveSceneGroup) + { + m_KnownAdditiveSceneGroup = AdditiveSceneGroup; + } + + + } + + public void OnAfterDeserialize() + { + } + + public void OnBeforeSerialize() + { + if (Scene != null && SceneEntryName != Scene.name) { - sceneRegistrationEntry.WriteHashSynchValues(writer); + SceneEntryName = Scene.name; } } + +#endif + [HideInInspector] + public string SceneEntryName; + + } diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset similarity index 68% rename from testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset rename to testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset index fa1e0d1efc..60da4fbdae 100644 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset @@ -10,11 +10,8 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: SharedAdditiveGroup1 + m_Name: AddiriveSceneGroup2 m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] - m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: 2f7f4fdd9b3496246a9614d112d159f2, type: 3} - AutoIncludeInBuild: 1 - SceneEntryName: SharedAdditiveScene1 + m_AdditiveScenes: [] diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta rename to testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset.meta index ec2e2fcd77..be5fb1112c 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 946766aff777fc94fb8606754b9e607c +guid: b4d16e1c84f7d6b44a88701c32e102a7 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset new file mode 100644 index 0000000000..8aeea3b9f5 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} + m_Name: AdditiveSceneGroup1 + m_EditorClassIdentifier: + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] + m_AdditiveScenes: + - Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AdditiveScene 1 + - Scene: {fileID: 102900000, guid: ddb4e18dbd30daf4ab011d3232a63786, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AdditiveScene 2 + - Scene: {fileID: 102900000, guid: c4ebb19d1542fdb4a8fe49b774ab16a0, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AdditiveScene 3 + - Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AdditiveScene 4 + - Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AdditiveScene 5 + - Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} + AutoIncludeInBuild: 1 + SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset.meta index b564040d7a..68900fe3eb 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e2512bf9d5b16c74bba76d57ba757911 +guid: 863734e265d8f81478833cbf1902f460 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes.meta similarity index 77% rename from testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes.meta index a7f01699e1..1c37b30a31 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a3b051eaf368aa943a9c45ed94d017b4 +guid: 80c4604b9ca1e844fb6bbfe3d20a916f folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity similarity index 93% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity index 3515a0ae02..9451afbee4 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &306382597 +--- !u!1 &594180789 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,91 +131,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 306382600} - - component: {fileID: 306382599} - - component: {fileID: 306382598} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &306382598 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 ---- !u!20 &306382599 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &306382600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1697751730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1697751732} - - component: {fileID: 1697751731} + - component: {fileID: 594180791} + - component: {fileID: 594180790} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -223,13 +140,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &1697751731 +--- !u!108 &594180790 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -285,13 +202,13 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1697751732 +--- !u!4 &594180791 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -299,3 +216,86 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &945668414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945668417} + - component: {fileID: 945668416} + - component: {fileID: 945668415} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &945668415 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 +--- !u!20 &945668416 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &945668417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity.meta similarity index 74% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity.meta index a5c53f1f63..f6dcc06f78 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 68615f585c69ff246add2c8ee92f9944 +guid: 466e828eb554ee44c900882db6c9d3a7 DefaultImporter: externalObjects: {} userData: diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity similarity index 93% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity index 3515a0ae02..9451afbee4 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene2.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &306382597 +--- !u!1 &594180789 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,91 +131,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 306382600} - - component: {fileID: 306382599} - - component: {fileID: 306382598} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &306382598 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 ---- !u!20 &306382599 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &306382600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1697751730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1697751732} - - component: {fileID: 1697751731} + - component: {fileID: 594180791} + - component: {fileID: 594180790} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -223,13 +140,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &1697751731 +--- !u!108 &594180790 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -285,13 +202,13 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1697751732 +--- !u!4 &594180791 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -299,3 +216,86 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &945668414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945668417} + - component: {fileID: 945668416} + - component: {fileID: 945668415} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &945668415 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 +--- !u!20 &945668416 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &945668417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity.meta similarity index 74% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity.meta index f05f3352d2..929b98da20 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c86e224bb10fd984f98618c5afe3f4a1 +guid: ddb4e18dbd30daf4ab011d3232a63786 DefaultImporter: externalObjects: {} userData: diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity similarity index 93% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity index 3515a0ae02..9451afbee4 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene3.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &306382597 +--- !u!1 &594180789 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,91 +131,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 306382600} - - component: {fileID: 306382599} - - component: {fileID: 306382598} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &306382598 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 ---- !u!20 &306382599 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &306382600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1697751730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1697751732} - - component: {fileID: 1697751731} + - component: {fileID: 594180791} + - component: {fileID: 594180790} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -223,13 +140,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &1697751731 +--- !u!108 &594180790 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -285,13 +202,13 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1697751732 +--- !u!4 &594180791 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -299,3 +216,86 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &945668414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945668417} + - component: {fileID: 945668416} + - component: {fileID: 945668415} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &945668415 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 +--- !u!20 &945668416 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &945668417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity.meta similarity index 74% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity.meta index f88d701c3c..b2e3d19865 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4ef3024adf84afe429a143463b04de19 +guid: c4ebb19d1542fdb4a8fe49b774ab16a0 DefaultImporter: externalObjects: {} userData: diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity similarity index 93% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity index 3515a0ae02..9451afbee4 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene4.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &306382597 +--- !u!1 &594180789 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,91 +131,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 306382600} - - component: {fileID: 306382599} - - component: {fileID: 306382598} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &306382598 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 ---- !u!20 &306382599 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &306382600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1697751730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1697751732} - - component: {fileID: 1697751731} + - component: {fileID: 594180791} + - component: {fileID: 594180790} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -223,13 +140,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &1697751731 +--- !u!108 &594180790 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -285,13 +202,13 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1697751732 +--- !u!4 &594180791 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} + m_GameObject: {fileID: 594180789} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -299,3 +216,86 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &945668414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945668417} + - component: {fileID: 945668416} + - component: {fileID: 945668415} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &945668415 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 +--- !u!20 &945668416 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &945668417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity.meta similarity index 74% rename from testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity.meta index 1cdc9d2ce5..6a3518640c 100644 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AdditiveScene1.unity.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 77297684364241b4381ec1f650426e17 +guid: b12634a7636aba845801ca83d4ba61c2 DefaultImporter: externalObjects: {} userData: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity new file mode 100644 index 0000000000..9451afbee4 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &594180789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 594180791} + - component: {fileID: 594180790} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &594180790 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 594180789} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &594180791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 594180789} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &945668414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945668417} + - component: {fileID: 945668416} + - component: {fileID: 945668415} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &945668415 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 +--- !u!20 &945668416 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &945668417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity.meta new file mode 100644 index 0000000000..6e32d23009 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9904940443bdd09489233649a5b6e0b8 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity new file mode 100644 index 0000000000..9451afbee4 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &594180789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 594180791} + - component: {fileID: 594180790} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &594180790 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 594180789} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &594180791 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 594180789} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &945668414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 945668417} + - component: {fileID: 945668416} + - component: {fileID: 945668415} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &945668415 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 +--- !u!20 &945668416 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &945668417 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 945668414} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity.meta new file mode 100644 index 0000000000..887f4a152d --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2fc7efd990522b74caaa4cc1b42dfdc5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset deleted file mode 100644 index d029965e1b..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroupA_1 - m_EditorClassIdentifier: - m_AdditiveSceneGroups: - - {fileID: 11400000, guid: e2512bf9d5b16c74bba76d57ba757911, type: 2} - m_KnownAdditiveSceneGroups: - - {fileID: 11400000, guid: e2512bf9d5b16c74bba76d57ba757911, type: 2} - m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: c86e224bb10fd984f98618c5afe3f4a1, type: 3} - AutoIncludeInBuild: 1 - SceneEntryName: AnotherScene3 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset deleted file mode 100644 index 6a4f4d0bfa..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_2.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroupA_2 - m_EditorClassIdentifier: - m_AdditiveSceneGroups: - - {fileID: 0} - m_KnownAdditiveSceneGroups: - - {fileID: 0} - m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: 68615f585c69ff246add2c8ee92f9944, type: 3} - AutoIncludeInBuild: 1 - SceneEntryName: AnotherScene2 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset deleted file mode 100644 index 322b9e97b7..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA1 - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 0} - m_PrimaryScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: SampleScene - m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset.meta deleted file mode 100644 index d55a132d82..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA1.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 133689a675e9849438b94f75e1e479b3 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset deleted file mode 100644 index c6b60464ae..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA2.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA2 - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 0} - m_PrimaryScene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: SecondSceneToLoad - m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset deleted file mode 100644 index f4055b4c71..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA3 - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 0} - m_PrimaryScene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: ThirdSceneToLoad - m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta deleted file mode 100644 index 5546c6205a..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA3.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 24325287a1d490140b5ae7fd0aa6d2d9 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset deleted file mode 100644 index e22403b359..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA4 - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 0} - m_PrimaryScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: ConnectionApprovalTest - m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta deleted file mode 100644 index a78092be3e..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA4.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2a943daa8d74c884d9ad9fff17c4dba4 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset deleted file mode 100644 index 137d6ea5e3..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset +++ /dev/null @@ -1,24 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA5 - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} - m_PrimaryScene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: RpcTesting - m_AddtiveSceneGroup: {fileID: 11400000, guid: 836cd2be89c079a438eb7550fe4a3f09, - type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta deleted file mode 100644 index 04c5faecf9..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA5.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 789b2655c7107d54889c7f0b4db1681f -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset deleted file mode 100644 index e428ae7e45..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryA6 - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 0} - m_PrimaryScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: SceneTransitioningTest - m_AddtiveSceneGroup: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta deleted file mode 100644 index 459f547788..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/SceneRegistrationEntryA6.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 58a2d845885b03a4b897baa6a746207f -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta deleted file mode 100644 index dbf1688b50..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 8d14c778bd560dc428a3dd95587fb6eb -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset deleted file mode 100644 index 40c19eb5f8..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset +++ /dev/null @@ -1,22 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AdditiveSceneGroupB_1 - m_EditorClassIdentifier: - m_AdditiveSceneGroups: - - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} - m_KnownAdditiveSceneGroups: - - {fileID: 11400000, guid: 18cfeab1fd0509e46b827b44b4cf48fb, type: 2} - m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: 60b648de486f45640b2f898d15ccebd4, type: 3} - AutoIncludeInBuild: 1 - SceneEntryName: AnotherScene5 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta deleted file mode 100644 index 85a3abf2e4..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/AdditiveSceneGroupB_1.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 541492da35e7e904ca0ff013fe7449bc -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset deleted file mode 100644 index f4f168087b..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset +++ /dev/null @@ -1,24 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9c4b50146588e074881aa52f9648adf9, type: 3} - m_Name: SceneRegistrationEntryB - m_EditorClassIdentifier: - m_PreviousPrimaryScene: {fileID: 102900000, guid: 4ef3024adf84afe429a143463b04de19, - type: 3} - m_PreviousAddtiveSceneGroup: {fileID: 11400000, guid: 541492da35e7e904ca0ff013fe7449bc, - type: 2} - m_PrimaryScene: {fileID: 102900000, guid: 4ef3024adf84afe429a143463b04de19, type: 3} - m_AutoIncludeInBuild: 1 - SceneIdentifier: 0 - m_PrimarySceneName: AnotherScene4 - m_AddtiveSceneGroup: {fileID: 11400000, guid: 541492da35e7e904ca0ff013fe7449bc, - type: 2} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta deleted file mode 100644 index dbee4de540..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_B/SceneRegistrationEntryB.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 868c31ba31be71c43801cecb19b3631c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset new file mode 100644 index 0000000000..4108eaef11 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -0,0 +1,33 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: SceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} + AutoIncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: SceneTransitioningTest + - Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} + AutoIncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: SecondSceneToLoad + - Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} + AutoIncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: ThirdSceneToLoad + m_NetworkManagerScene: + m_KnownSceneRegistrations: [] + NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset.meta rename to testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta index 9867acbef0..fd73f27601 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneBranch_A/AdditiveSceneGroupA_1.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 836cd2be89c079a438eb7550fe4a3f09 +guid: f5cae5b40c257174696afebbf4bc0e15 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset deleted file mode 100644 index ffd16a7ead..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset +++ /dev/null @@ -1,30 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} - m_Name: SceneRegistration1 - m_EditorClassIdentifier: - m_SceneRegistrations: - - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} - - {fileID: 11400000, guid: 946766aff777fc94fb8606754b9e607c, type: 2} - - {fileID: 11400000, guid: 24325287a1d490140b5ae7fd0aa6d2d9, type: 2} - - {fileID: 11400000, guid: 2a943daa8d74c884d9ad9fff17c4dba4, type: 2} - - {fileID: 11400000, guid: 789b2655c7107d54889c7f0b4db1681f, type: 2} - - {fileID: 11400000, guid: 58a2d845885b03a4b897baa6a746207f, type: 2} - m_NetworkManagerScene: - m_KnownSceneRegistrations: - - {fileID: 11400000, guid: 133689a675e9849438b94f75e1e479b3, type: 2} - - {fileID: 11400000, guid: 946766aff777fc94fb8606754b9e607c, type: 2} - - {fileID: 11400000, guid: 24325287a1d490140b5ae7fd0aa6d2d9, type: 2} - - {fileID: 11400000, guid: 2a943daa8d74c884d9ad9fff17c4dba4, type: 2} - - {fileID: 11400000, guid: 789b2655c7107d54889c7f0b4db1681f, type: 2} - - {fileID: 11400000, guid: 58a2d845885b03a4b897baa6a746207f, type: 2} - NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset.meta deleted file mode 100644 index 735797a057..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration1.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 73f6dc1861e493e4196cab8466ea0d80 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset deleted file mode 100644 index 319175e99f..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset +++ /dev/null @@ -1,20 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} - m_Name: SceneRegistration2 - m_EditorClassIdentifier: - m_SceneRegistrations: - - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} - m_NetworkManagerScene: - m_KnownSceneRegistrations: - - {fileID: 11400000, guid: 868c31ba31be71c43801cecb19b3631c, type: 2} - NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta deleted file mode 100644 index 4b0057c8b0..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration2.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0879e9433e57cfb40b54632fe5518664 -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes.meta b/testproject/Assets/Samples/SceneRegistration/Scenes.meta deleted file mode 100644 index ba4705b5e3..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/Scenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 680111df93c4b0e47a75bb9fc4652ffc -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity deleted file mode 100644 index 3515a0ae02..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity +++ /dev/null @@ -1,301 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &306382597 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 306382600} - - component: {fileID: 306382599} - - component: {fileID: 306382598} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &306382598 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 ---- !u!20 &306382599 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &306382600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1697751730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1697751732} - - component: {fileID: 1697751731} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1697751731 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1697751732 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta b/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta deleted file mode 100644 index 0122d33d6d..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/Scenes/AnotherScene5.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 60b648de486f45640b2f898d15ccebd4 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta deleted file mode 100644 index 18c3d25cae..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 2068a2dbcf75a284c87bb297ffe347ee -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta deleted file mode 100644 index a934d575e5..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveGroups/SharedAdditiveGroup1.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 18cfeab1fd0509e46b827b44b4cf48fb -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 11400000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta deleted file mode 100644 index ccb29f9787..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 9a90dae335695f74d9d46025045583b9 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity deleted file mode 100644 index 3515a0ae02..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity +++ /dev/null @@ -1,301 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 9 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - m_GIWorkflowMode: 1 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 2 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - accuratePlacement: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &306382597 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 306382600} - - component: {fileID: 306382599} - - component: {fileID: 306382598} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &306382598 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 ---- !u!20 &306382599 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &306382600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 306382597} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1697751730 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1697751732} - - component: {fileID: 1697751731} - m_Layer: 0 - m_Name: Directional Light - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!108 &1697751731 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &1697751732 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1697751730} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity.meta b/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity.meta deleted file mode 100644 index a362b27b3b..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/SharedAdditiveScenes/SharedAdditiveScene1.unity.meta +++ /dev/null @@ -1,7 +0,0 @@ -fileFormatVersion: 2 -guid: 2f7f4fdd9b3496246a9614d112d159f2 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: From b3d230a41c81a966cbbb5e2c0f34ede7d5e0bbb5 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sat, 26 Jun 2021 12:50:11 -0500 Subject: [PATCH 26/38] fix Fixing runtime compilation bugs as well as issues with losing scenes in the Build Settings during the build. --- .../Runtime/Core/NetworkManager.cs | 28 +++++----- .../SceneManagement/AddtiveSceneGroup.cs | 9 +++- .../SceneManagement/SceneRegistration.cs | 54 +++++++++---------- .../EnableDisableSceneNetworkObject.unity | 6 ++- .../EnableDisableSceneRegistration.asset | 22 ++++++++ .../EnableDisableSceneRegistration.asset.meta | 8 +++ .../AdditiveSceneGroup1.asset | 6 ++- .../SceneRegistration/SceneRegistration.asset | 11 ++-- testproject/Assets/Scenes/SampleScene.unity | 6 ++- .../Scenes/SampleSceneRegistration.asset | 23 ++++++++ .../Scenes/SampleSceneRegistration.asset.meta | 8 +++ .../ConnectionApprovalSceneRegistration.asset | 23 ++++++++ ...ectionApprovalSceneRegistration.asset.meta | 8 +++ .../ConnectionApprovalTest.unity | 5 ++ ...eneManagerCallbacksSceneRegistration.asset | 27 ++++++++++ ...nagerCallbacksSceneRegistration.asset.meta | 8 +++ .../SceneWeAreSwitchingFrom.unity | 5 ++ .../RpcTesting/RpcSceneRegistration.asset | 23 ++++++++ .../RpcSceneRegistration.asset.meta | 8 +++ .../Tests/Manual/RpcTesting/RpcTesting.unity | 5 ++ .../SceneTransitioningRegistration.asset | 33 ++++++++++++ .../SceneTransitioningRegistration.asset.meta | 8 +++ .../SceneTransitioningTest.unity | 6 ++- .../ProjectSettings/EditorBuildSettings.asset | 25 ++++++++- 24 files changed, 310 insertions(+), 55 deletions(-) create mode 100644 testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset create mode 100644 testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset.meta create mode 100644 testproject/Assets/Scenes/SampleSceneRegistration.asset create mode 100644 testproject/Assets/Scenes/SampleSceneRegistration.asset.meta create mode 100644 testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset create mode 100644 testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset.meta create mode 100644 testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset create mode 100644 testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset.meta create mode 100644 testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset create mode 100644 testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset.meta create mode 100644 testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset create mode 100644 testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index e60dba916a..c4e1efa84f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -231,6 +231,9 @@ public ulong LocalClientId [HideInInspector] [SerializeField] private SceneRegistration m_SceneRegistration; + + static internal Dictionary BuildSettingsSceneLookUpTable; + private void OnValidate() { if (NetworkConfig == null) @@ -246,19 +249,20 @@ private void OnValidate() } } - - // Detect when SceneRegistration is assigned or deleted to determine if the scenes associated with the SceneRegistration - // should be included in the build settings. - if(NetworkConfig.SceneRegistration != null && !NetworkConfig.SceneRegistration.AssignedToNetworkManager) - { - m_SceneRegistration = NetworkConfig.SceneRegistration; - NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); - - } - else if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) + if (!UnityEditor.BuildPipeline.isBuildingPlayer) { - m_SceneRegistration.AssignNetworkManagerScene(false); - m_SceneRegistration = null; + // Detect when SceneRegistration is assigned or deleted to determine if the scenes associated with the SceneRegistration + // should be included in the build settings. + if (NetworkConfig.SceneRegistration != null && (!NetworkConfig.SceneRegistration.AssignedToNetworkManager)) + { + m_SceneRegistration = NetworkConfig.SceneRegistration; + NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); + } + else if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) + { + m_SceneRegistration.AssignNetworkManagerScene(false); + m_SceneRegistration = null; + } } var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index fbf8624c77..b90e739670 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -48,6 +48,11 @@ protected override void OnDependecyAdded(IAssetDependency dependencyAdded) private void OnValidate() { + if(BuildPipeline.isBuildingPlayer) + { + return; + } + foreach (var entry in m_AdditiveSceneGroups) { if (entry != null) @@ -153,10 +158,12 @@ public void OnAfterDeserialize() } public void OnBeforeSerialize() { - if(Scene != null && SceneEntryName != Scene.name) +#if UNITY_EDITOR + if (Scene != null && SceneEntryName != Scene.name) { SceneEntryName = Scene.name; } +#endif } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 885fe5b2d6..9e74fba9c2 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -23,15 +23,7 @@ public class SceneRegistration : AssetDependency private string m_NetworkManagerScene; #if UNITY_EDITOR - // Since Unity does not support observable collections there are two ways to approach this: - // 1.) Make a duplicate list that adjusts itself during OnValidate - // 2.) Make a customizable property editor that can handle the serialization process (which you will end up with two lists in the end anyway) - // For this pass, I opted for solution #1 - [HideInInspector] - [SerializeField] - private List m_KnownSceneRegistrations; - static private Dictionary s_BuildSettingsSceneLookUpTable = new Dictionary(); public static string GetSceneNameFromPath(string scenePath) { @@ -42,21 +34,25 @@ public static string GetSceneNameFromPath(string scenePath) private static void BuildLookupTableFromEditorBuildSettings() { - s_BuildSettingsSceneLookUpTable.Clear(); + //s_BuildSettingsSceneLookUpTable.Clear(); foreach (var editorBuildSettingsScene in EditorBuildSettings.scenes) { var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); - if (!s_BuildSettingsSceneLookUpTable.ContainsKey(sceneName)) + if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(sceneName)) { - s_BuildSettingsSceneLookUpTable.Add(sceneName, editorBuildSettingsScene); + NetworkManager.BuildSettingsSceneLookUpTable.Add(sceneName, editorBuildSettingsScene); } } } internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) { - if (s_BuildSettingsSceneLookUpTable.Count != EditorBuildSettings.scenes.Length) + if (NetworkManager.BuildSettingsSceneLookUpTable == null) + { + NetworkManager.BuildSettingsSceneLookUpTable = new Dictionary(); + } + if (NetworkManager.BuildSettingsSceneLookUpTable.Count != EditorBuildSettings.scenes.Length) { BuildLookupTableFromEditorBuildSettings(); } @@ -64,24 +60,23 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) if (addScene) { // If the scene does not exist in our local list, then add it and update the build settings - if (!s_BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) { - s_BuildSettingsSceneLookUpTable.Add(scene.name, new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true)); - EditorBuildSettings.scenes = s_BuildSettingsSceneLookUpTable.Values.ToArray(); + NetworkManager.BuildSettingsSceneLookUpTable.Add(scene.name, new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true)); + EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); } } else { // If the scene does exist in our local list, then remove it - if (s_BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + if (NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) { - s_BuildSettingsSceneLookUpTable.Remove(scene.name); - EditorBuildSettings.scenes = s_BuildSettingsSceneLookUpTable.Values.ToArray(); + NetworkManager.BuildSettingsSceneLookUpTable.Remove(scene.name); + EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); } } } - internal bool AssignedToNetworkManager { get @@ -130,7 +125,10 @@ protected override bool OnShouldAssetBeIncluded() private void OnValidate() { - ValidateBuildSettingsScenes(); + if (!BuildPipeline.isBuildingPlayer) + { + ValidateBuildSettingsScenes(); + } } /// @@ -154,7 +152,7 @@ internal void ValidateBuildSettingsScenes() sceneRegistrationEntry.SceneEntryName = sceneRegistrationEntry.Scene.name; } - AddOrRemoveSceneAsset(sceneRegistrationEntry.Scene, shouldInclude && partOfRootBranch && sceneRegistrationEntry.AutoIncludeInBuild); + AddOrRemoveSceneAsset(sceneRegistrationEntry.Scene, shouldInclude && partOfRootBranch && sceneRegistrationEntry.IncludeInBuild); sceneRegistrationEntry.UpdateAdditiveSceneGroup(this); } @@ -187,7 +185,7 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) { writer.WriteString(sceneRegistrationEntry.SceneEntryName); - if (sceneRegistrationEntry.AdditiveSceneGroup != null ) + if (sceneRegistrationEntry.AdditiveSceneGroup != null) { sceneRegistrationEntry.AdditiveSceneGroup.WriteHashSynchValues(writer); } @@ -207,9 +205,7 @@ public class SceneEntry : ISerializationCallbackReceiver public SceneAsset Scene; [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] - public bool AutoIncludeInBuild; - - public AddtiveSceneGroup AdditiveSceneGroup; + public bool IncludeInBuild; [SerializeField] [HideInInspector] @@ -237,9 +233,11 @@ internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) { m_KnownAdditiveSceneGroup = AdditiveSceneGroup; } + } +#endif + public AddtiveSceneGroup AdditiveSceneGroup; - } public void OnAfterDeserialize() { @@ -247,13 +245,13 @@ public void OnAfterDeserialize() public void OnBeforeSerialize() { +#if UNITY_EDITOR if (Scene != null && SceneEntryName != Scene.name) { SceneEntryName = Scene.name; } - } - #endif + } [HideInInspector] public string SceneEntryName; diff --git a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity index 310c47310f..b8062acc6f 100644 --- a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity @@ -1433,7 +1433,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1706952616} - SceneRegistration: {fileID: 0} + SceneRegistration: {fileID: 11400000, guid: 600719e4f344cd24ba0f8b17e1a2ffbd, + type: 2} RegisteredScenes: - TestEnableDisableSceneNetworkObject - EnableDisableSceneNetworkObject @@ -1461,7 +1462,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 0} + m_SceneRegistration: {fileID: 11400000, guid: 600719e4f344cd24ba0f8b17e1a2ffbd, + type: 2} --- !u!114 &1706952616 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset new file mode 100644 index 0000000000..f07623ba37 --- /dev/null +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: EnableDisableSceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} + IncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: EnableDisableSceneNetworkObject + m_NetworkManagerScene: + NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset.meta b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset.meta new file mode 100644 index 0000000000..1adb00e956 --- /dev/null +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 600719e4f344cd24ba0f8b17e1a2ffbd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset index 8aeea3b9f5..d28117d5da 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -12,8 +12,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} m_Name: AdditiveSceneGroup1 m_EditorClassIdentifier: - m_AdditiveSceneGroups: [] - m_KnownAdditiveSceneGroups: [] + m_AdditiveSceneGroups: + - {fileID: 11400000, guid: b4d16e1c84f7d6b44a88701c32e102a7, type: 2} + m_KnownAdditiveSceneGroups: + - {fileID: 11400000, guid: b4d16e1c84f7d6b44a88701c32e102a7, type: 2} m_AdditiveScenes: - Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} AutoIncludeInBuild: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index 4108eaef11..0e456f0efd 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -20,14 +20,17 @@ MonoBehaviour: SceneEntryName: SceneTransitioningTest - Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} AutoIncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} - m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + m_KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} SceneEntryName: SecondSceneToLoad - Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} AutoIncludeInBuild: 1 AdditiveSceneGroup: {fileID: 0} m_KnownAdditiveSceneGroup: {fileID: 0} SceneEntryName: ThirdSceneToLoad - m_NetworkManagerScene: + m_NetworkManagerScene: SceneTransitioningTest m_KnownSceneRegistrations: [] - NetworkManagerScene: {fileID: 0} + NetworkManagerScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, + type: 3} diff --git a/testproject/Assets/Scenes/SampleScene.unity b/testproject/Assets/Scenes/SampleScene.unity index 4fd4f74f6f..5e0fd4582b 100644 --- a/testproject/Assets/Scenes/SampleScene.unity +++ b/testproject/Assets/Scenes/SampleScene.unity @@ -889,7 +889,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 620561610} - SceneRegistration: {fileID: 0} + SceneRegistration: {fileID: 11400000, guid: ec853362ca076094a8339b6e0f9288b0, + type: 2} RegisteredScenes: - SampleScene AllowRuntimeSceneChanges: 0 @@ -922,7 +923,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 0} + m_SceneRegistration: {fileID: 11400000, guid: ec853362ca076094a8339b6e0f9288b0, + type: 2} --- !u!4 &620561612 Transform: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Scenes/SampleSceneRegistration.asset b/testproject/Assets/Scenes/SampleSceneRegistration.asset new file mode 100644 index 0000000000..23c6d6aa30 --- /dev/null +++ b/testproject/Assets/Scenes/SampleSceneRegistration.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: SampleSceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} + IncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: SampleScene + m_NetworkManagerScene: SampleScene + NetworkManagerScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, + type: 3} diff --git a/testproject/Assets/Scenes/SampleSceneRegistration.asset.meta b/testproject/Assets/Scenes/SampleSceneRegistration.asset.meta new file mode 100644 index 0000000000..9bbef94e97 --- /dev/null +++ b/testproject/Assets/Scenes/SampleSceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ec853362ca076094a8339b6e0f9288b0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset new file mode 100644 index 0000000000..009f1ecbe3 --- /dev/null +++ b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: ConnectionApprovalSceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} + IncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: ConnectionApprovalTest + m_NetworkManagerScene: ConnectionApprovalTest + NetworkManagerScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, + type: 3} diff --git a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset.meta b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset.meta new file mode 100644 index 0000000000..563e4f92c8 --- /dev/null +++ b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3fad148b355dff543a438a47761fa8e6 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity index 233c049133..6b9c1a96d8 100644 --- a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity +++ b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity @@ -388,6 +388,7 @@ MonoBehaviour: GlobalObjectIdHash: 1327782974 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!4 &606367639 Transform: m_ObjectHideFlags: 0 @@ -524,6 +525,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 697639107} + SceneRegistration: {fileID: 11400000, guid: 3fad148b355dff543a438a47761fa8e6, + type: 2} RegisteredScenes: - ConnectionApprovalTest AllowRuntimeSceneChanges: 0 @@ -556,6 +559,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: 3fad148b355dff543a438a47761fa8e6, + type: 2} --- !u!114 &697639107 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset new file mode 100644 index 0000000000..7012602c74 --- /dev/null +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset @@ -0,0 +1,27 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: NetworkSceneManagerCallbacksSceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: 073bd2111475c0643be45b7abe6a97ad, type: 3} + IncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: SceneWeAreSwitchingFrom + - Scene: {fileID: 102900000, guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f, type: 3} + IncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: SceneWeAreSwitchingTo + m_NetworkManagerScene: + NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset.meta b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset.meta new file mode 100644 index 0000000000..147af37a92 --- /dev/null +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c4033f0f488998342a47ee9398b5c316 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity index 789bda3a7f..9d5d73c724 100644 --- a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity @@ -412,6 +412,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 746470208} + SceneRegistration: {fileID: 11400000, guid: c4033f0f488998342a47ee9398b5c316, + type: 2} RegisteredScenes: - SceneWeAreSwitchingFrom - SceneWeAreSwitchingTo @@ -439,6 +441,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: c4033f0f488998342a47ee9398b5c316, + type: 2} --- !u!4 &746470210 Transform: m_ObjectHideFlags: 0 @@ -586,6 +590,7 @@ MonoBehaviour: GlobalObjectIdHash: 4103035044 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!114 &1146788460 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset new file mode 100644 index 0000000000..c9b48e554a --- /dev/null +++ b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset @@ -0,0 +1,23 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: RpcSceneRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, type: 3} + IncludeInBuild: 1 + AdditiveSceneGroup: {fileID: 0} + m_KnownAdditiveSceneGroup: {fileID: 0} + SceneEntryName: RpcTesting + m_NetworkManagerScene: RpcTesting + NetworkManagerScene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, + type: 3} diff --git a/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset.meta b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset.meta new file mode 100644 index 0000000000..c7d9cddab5 --- /dev/null +++ b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c63687ca9a2e6b418b8770dde3c7b66 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity b/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity index 8abf854678..8582d1e47e 100644 --- a/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity +++ b/testproject/Assets/Tests/Manual/RpcTesting/RpcTesting.unity @@ -863,6 +863,7 @@ MonoBehaviour: GlobalObjectIdHash: 1844309308 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!114 &1207168974 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1035,6 +1036,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1574548685} + SceneRegistration: {fileID: 11400000, guid: 6c63687ca9a2e6b418b8770dde3c7b66, + type: 2} RegisteredScenes: - RpcTesting AllowRuntimeSceneChanges: 0 @@ -1061,6 +1064,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: 6c63687ca9a2e6b418b8770dde3c7b66, + type: 2} --- !u!4 &1574548687 Transform: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset new file mode 100644 index 0000000000..d7d5fbc636 --- /dev/null +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset @@ -0,0 +1,33 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: SceneTransitioningRegistration + m_EditorClassIdentifier: + m_SceneRegistrations: + - Scene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} + IncludeInBuild: 1 + m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + SceneEntryName: SceneTransitioningTest + - Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} + IncludeInBuild: 1 + m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + SceneEntryName: SecondSceneToLoad + - Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} + IncludeInBuild: 1 + m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + SceneEntryName: ThirdSceneToLoad + m_NetworkManagerScene: SceneTransitioningTest + NetworkManagerScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, + type: 3} diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset.meta b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset.meta new file mode 100644 index 0000000000..0f6bff9ca5 --- /dev/null +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 05b7cb8c99cbc3346b4d175e67c2d89c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity index 7439f48f59..504439bf40 100644 --- a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity @@ -1008,7 +1008,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 1024114719} - SceneRegistration: {fileID: 0} + SceneRegistration: {fileID: 11400000, guid: 05b7cb8c99cbc3346b4d175e67c2d89c, + type: 2} RegisteredScenes: - SceneTransitioningTest - SecondSceneToLoad @@ -1045,7 +1046,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 0} + m_SceneRegistration: {fileID: 11400000, guid: 05b7cb8c99cbc3346b4d175e67c2d89c, + type: 2} --- !u!114 &1024114719 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 2321b7d22a..5cdee30c9a 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -11,13 +11,34 @@ EditorBuildSettings: - enabled: 1 path: Assets/Samples/SamplesMenu.unity guid: 037562c9b1a469f498dfb34256ddf86f + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 9fc0d4010bbf28b4594072e72b8655ab - enabled: 1 path: Assets/Tests/Manual/ManualTestsMenu.unity guid: 197ba614e9ae3054a8dea7b2bdacad6a - enabled: 1 - path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingTo.unity - guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f + path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity + guid: 931469794d88a874998f1d5edd265522 + - enabled: 1 + path: Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity + guid: dd570b5916593cb41bab8beb1c9d9315 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity + guid: 1c2375a896b2e8c4a841aa61224b8494 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity + guid: 79c2bf7d6b7a06a42a94982aaf1904d8 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity + guid: 637ab8340e96a2949adfe5bfdd42b924 - enabled: 1 path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity guid: 073bd2111475c0643be45b7abe6a97ad + - enabled: 1 + path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingTo.unity + guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f + - enabled: 1 + path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity + guid: 619b9eba5892d5a4e9dd1d6cafb0059a m_configObjects: {} From 3c666e3b4e6ae5618d83d3037067b7f6127bfea7 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sat, 26 Jun 2021 13:33:34 -0500 Subject: [PATCH 27/38] fix Fixing issue with having multiple assembly definitions. The scenes were populating properly, but the test project's manual tests assembly scenes were being blown away by the primary project's assembly scenes during the build. --- .../Runtime/Core/NetworkManager.cs | 2 +- .../SceneManagement/AddtiveSceneGroup.cs | 8 +-- .../SceneManagement/SceneRegistration.cs | 50 +++++++++++++++++-- .../Scene/SceneTransitioningReference.asset | 4 +- .../Scripts/MenuManagement/SceneReference.cs | 24 +++++++-- .../ProjectSettings/EditorBuildSettings.asset | 6 +-- 6 files changed, 76 insertions(+), 18 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index c4e1efa84f..79ee131007 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -249,7 +249,7 @@ private void OnValidate() } } - if (!UnityEditor.BuildPipeline.isBuildingPlayer) + //if (!UnityEditor.BuildPipeline.isBuildingPlayer) { // Detect when SceneRegistration is assigned or deleted to determine if the scenes associated with the SceneRegistration // should be included in the build settings. diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index b90e739670..d874c8675f 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -48,10 +48,10 @@ protected override void OnDependecyAdded(IAssetDependency dependencyAdded) private void OnValidate() { - if(BuildPipeline.isBuildingPlayer) - { - return; - } + //if(BuildPipeline.isBuildingPlayer) + //{ + // return; + //} foreach (var entry in m_AdditiveSceneGroups) { diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 9e74fba9c2..6aef196069 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -34,7 +34,6 @@ public static string GetSceneNameFromPath(string scenePath) private static void BuildLookupTableFromEditorBuildSettings() { - //s_BuildSettingsSceneLookUpTable.Clear(); foreach (var editorBuildSettingsScene in EditorBuildSettings.scenes) { var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); @@ -46,6 +45,26 @@ private static void BuildLookupTableFromEditorBuildSettings() } } + internal static void SynchronizeScenes() + { + var currentScenes = new Dictionary(); + foreach (var sceneEntry in EditorBuildSettings.scenes) + { + currentScenes.Add(GetSceneNameFromPath(sceneEntry.path), sceneEntry); + } + + foreach (var keyPair in NetworkManager.BuildSettingsSceneLookUpTable) + { + if (!currentScenes.ContainsKey(keyPair.Key)) + { + currentScenes.Add(keyPair.Key,keyPair.Value); + } + } + EditorBuildSettings.scenes = currentScenes.Values.ToArray(); + + } + + internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) { if (NetworkManager.BuildSettingsSceneLookUpTable == null) @@ -63,7 +82,8 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) { NetworkManager.BuildSettingsSceneLookUpTable.Add(scene.name, new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true)); - EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); + SynchronizeScenes(); + //EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); } } else @@ -72,7 +92,9 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) if (NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) { NetworkManager.BuildSettingsSceneLookUpTable.Remove(scene.name); - EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); + + SynchronizeScenes(); + //EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); } } } @@ -125,7 +147,7 @@ protected override bool OnShouldAssetBeIncluded() private void OnValidate() { - if (!BuildPipeline.isBuildingPlayer) + //if (!BuildPipeline.isBuildingPlayer) { ValidateBuildSettingsScenes(); } @@ -192,6 +214,26 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) } } } + + public List GetAllScenes() + { + var allScenes = new List(); + + if (m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) + { + allScenes.Add(m_NetworkManagerScene); + } + + foreach (var sceneRegistrationEntry in m_SceneRegistrations) + { + if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) + { + allScenes.Add(sceneRegistrationEntry.SceneEntryName); + } + } + + return allScenes; + } } /// diff --git a/testproject/Assets/References/Scene/SceneTransitioningReference.asset b/testproject/Assets/References/Scene/SceneTransitioningReference.asset index 5f9c253ba9..b6a7def9f9 100644 --- a/testproject/Assets/References/Scene/SceneTransitioningReference.asset +++ b/testproject/Assets/References/Scene/SceneTransitioningReference.asset @@ -13,10 +13,12 @@ MonoBehaviour: m_Name: SceneTransitioningReference m_EditorClassIdentifier: SceneToReference: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} - m_DisplayName: Scene Transitioning Test m_IncludedScenes: - {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} - {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} + m_SceneRegistration: {fileID: 11400000, guid: 05b7cb8c99cbc3346b4d175e67c2d89c, + type: 2} + m_DisplayName: Scene Transitioning Test m_ReferencedScenes: - SceneTransitioningTest - SecondSceneToLoad diff --git a/testproject/Assets/Scripts/MenuManagement/SceneReference.cs b/testproject/Assets/Scripts/MenuManagement/SceneReference.cs index 0e79417b87..49480b4202 100644 --- a/testproject/Assets/Scripts/MenuManagement/SceneReference.cs +++ b/testproject/Assets/Scripts/MenuManagement/SceneReference.cs @@ -5,15 +5,20 @@ using UnityEditor; #endif +using MLAPI.SceneManagement; + [CreateAssetMenu(fileName = "SceneReference", menuName = "MLAPI/SceneReference")] [Serializable] -public class SceneReference : ScriptableObject,ISceneReference +public class SceneReference : ScriptableObject, ISceneReference { -#if UNITY_EDITOR +#if UNITY_EDITOR public SceneAsset SceneToReference; [SerializeField] private List m_IncludedScenes; #endif + [SerializeField] + private SceneRegistration m_SceneRegistration; + [SerializeField] private string m_DisplayName; @@ -21,7 +26,9 @@ public class SceneReference : ScriptableObject,ISceneReference [SerializeField] private List m_ReferencedScenes; -#if UNITY_EDITOR + + +#if UNITY_EDITOR private void OnValidate() { if (m_ReferencedScenes == null) @@ -55,7 +62,14 @@ public string GetDisplayName() public List GetReferencedScenes() { - return m_ReferencedScenes; + if (m_SceneRegistration != null) + { + return m_SceneRegistration.GetAllScenes(); + } + else + { + return m_ReferencedScenes; + } } @@ -63,7 +77,7 @@ public List GetReferencedScenes() public interface ISceneReference -{ +{ string GetDisplayName(); List GetReferencedScenes(); } diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 5cdee30c9a..110cde36c9 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -11,12 +11,12 @@ EditorBuildSettings: - enabled: 1 path: Assets/Samples/SamplesMenu.unity guid: 037562c9b1a469f498dfb34256ddf86f - - enabled: 1 - path: Assets/Scenes/SampleScene.unity - guid: 9fc0d4010bbf28b4594072e72b8655ab - enabled: 1 path: Assets/Tests/Manual/ManualTestsMenu.unity guid: 197ba614e9ae3054a8dea7b2bdacad6a + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 9fc0d4010bbf28b4594072e72b8655ab - enabled: 1 path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity guid: 931469794d88a874998f1d5edd265522 From 3345f424da9175f2584810f8a3d6637ace0764dd Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sat, 26 Jun 2021 13:51:14 -0500 Subject: [PATCH 28/38] fix Duplicate entries due to bug in checking scene name against path. --- .../SceneManagement/SceneRegistration.cs | 26 ++++++++++++------ .../ProjectSettings/EditorBuildSettings.asset | 27 ------------------- 2 files changed, 18 insertions(+), 35 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 6aef196069..dab9c4d1f5 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -36,11 +36,11 @@ private static void BuildLookupTableFromEditorBuildSettings() { foreach (var editorBuildSettingsScene in EditorBuildSettings.scenes) { - var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); + //var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); - if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(sceneName)) + if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(editorBuildSettingsScene.path)) { - NetworkManager.BuildSettingsSceneLookUpTable.Add(sceneName, editorBuildSettingsScene); + NetworkManager.BuildSettingsSceneLookUpTable.Add(editorBuildSettingsScene.path, editorBuildSettingsScene); } } } @@ -50,7 +50,15 @@ internal static void SynchronizeScenes() var currentScenes = new Dictionary(); foreach (var sceneEntry in EditorBuildSettings.scenes) { - currentScenes.Add(GetSceneNameFromPath(sceneEntry.path), sceneEntry); + if(!currentScenes.ContainsKey(sceneEntry.path)) + { + currentScenes.Add(sceneEntry.path, sceneEntry); + } + else + { + Debug.LogWarning($"{sceneEntry.path} already exists in dictionary!"); + } + } foreach (var keyPair in NetworkManager.BuildSettingsSceneLookUpTable) @@ -76,12 +84,14 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) BuildLookupTableFromEditorBuildSettings(); } + var assetPath = AssetDatabase.GetAssetPath(scene); + if (addScene) { // If the scene does not exist in our local list, then add it and update the build settings - if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(assetPath)) { - NetworkManager.BuildSettingsSceneLookUpTable.Add(scene.name, new EditorBuildSettingsScene(AssetDatabase.GetAssetPath(scene), true)); + NetworkManager.BuildSettingsSceneLookUpTable.Add(assetPath, new EditorBuildSettingsScene(assetPath, true)); SynchronizeScenes(); //EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); } @@ -89,9 +99,9 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) else { // If the scene does exist in our local list, then remove it - if (NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(scene.name)) + if (NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(assetPath)) { - NetworkManager.BuildSettingsSceneLookUpTable.Remove(scene.name); + NetworkManager.BuildSettingsSceneLookUpTable.Remove(assetPath); SynchronizeScenes(); //EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 110cde36c9..d1b7fb83a7 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -14,31 +14,4 @@ EditorBuildSettings: - enabled: 1 path: Assets/Tests/Manual/ManualTestsMenu.unity guid: 197ba614e9ae3054a8dea7b2bdacad6a - - enabled: 1 - path: Assets/Scenes/SampleScene.unity - guid: 9fc0d4010bbf28b4594072e72b8655ab - - enabled: 1 - path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity - guid: 931469794d88a874998f1d5edd265522 - - enabled: 1 - path: Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity - guid: dd570b5916593cb41bab8beb1c9d9315 - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity - guid: 1c2375a896b2e8c4a841aa61224b8494 - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity - guid: 79c2bf7d6b7a06a42a94982aaf1904d8 - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity - guid: 637ab8340e96a2949adfe5bfdd42b924 - - enabled: 1 - path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity - guid: 073bd2111475c0643be45b7abe6a97ad - - enabled: 1 - path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingTo.unity - guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f - - enabled: 1 - path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity - guid: 619b9eba5892d5a4e9dd1d6cafb0059a m_configObjects: {} From 697791f966ef011d3a6b0a577a3a5774171da21d Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sat, 26 Jun 2021 14:21:32 -0500 Subject: [PATCH 29/38] refactor Maintain the same build settings scenes in build list ordering. This will automatically order all of the scenes so that if something is excluded and then included in the build settings scenes in build list the ordering will remain the same. --- .../SceneManagement/SceneRegistration.cs | 58 +++++++++++++------ ...eneManagerCallbacksSceneRegistration.asset | 9 +-- .../ProjectSettings/EditorBuildSettings.asset | 27 +++++++++ 3 files changed, 71 insertions(+), 23 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index dab9c4d1f5..eb2e419b54 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -23,8 +23,6 @@ public class SceneRegistration : AssetDependency private string m_NetworkManagerScene; #if UNITY_EDITOR - - public static string GetSceneNameFromPath(string scenePath) { var begin = scenePath.LastIndexOf("/", StringComparison.Ordinal) + 1; @@ -36,8 +34,6 @@ private static void BuildLookupTableFromEditorBuildSettings() { foreach (var editorBuildSettingsScene in EditorBuildSettings.scenes) { - //var sceneName = GetSceneNameFromPath(editorBuildSettingsScene.path); - if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(editorBuildSettingsScene.path)) { NetworkManager.BuildSettingsSceneLookUpTable.Add(editorBuildSettingsScene.path, editorBuildSettingsScene); @@ -45,12 +41,24 @@ private static void BuildLookupTableFromEditorBuildSettings() } } - internal static void SynchronizeScenes() + /// + /// This is needed in the event you have multiple assembly definitions that all have SceneRegistrations within them + /// We have to make sure that we use the scene path as the key in order to allow for "the same scene name" to exist + /// but in a different path. As such, when we are synchronizing our build settings scenes in build list we need to + /// always do a full comparison against the existing scenes in build list and our current assembly's scenes in build + /// list. + /// + /// path to sceneAsset that will be excluding from build settings scenes in build list + internal static void SynchronizeScenes(string removeEntry = null) { var currentScenes = new Dictionary(); foreach (var sceneEntry in EditorBuildSettings.scenes) { - if(!currentScenes.ContainsKey(sceneEntry.path)) + if (removeEntry != null && sceneEntry.path == removeEntry) + { + continue; + } + if (!currentScenes.ContainsKey(sceneEntry.path)) { currentScenes.Add(sceneEntry.path, sceneEntry); } @@ -58,27 +66,32 @@ internal static void SynchronizeScenes() { Debug.LogWarning($"{sceneEntry.path} already exists in dictionary!"); } - } foreach (var keyPair in NetworkManager.BuildSettingsSceneLookUpTable) { if (!currentScenes.ContainsKey(keyPair.Key)) { - currentScenes.Add(keyPair.Key,keyPair.Value); + currentScenes.Add(keyPair.Key, keyPair.Value); } } - EditorBuildSettings.scenes = currentScenes.Values.ToArray(); + currentScenes = currentScenes.OrderBy(x => x.Key).ToDictionary((keyItem)=>keyItem.Key,(valueItem) => valueItem.Value); + EditorBuildSettings.scenes = currentScenes.Values.ToArray(); } - + /// + /// Adds or removes a scene asset to the build settings scenes in build list + /// + /// SceneAsset + /// true or false internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) { if (NetworkManager.BuildSettingsSceneLookUpTable == null) { NetworkManager.BuildSettingsSceneLookUpTable = new Dictionary(); } + if (NetworkManager.BuildSettingsSceneLookUpTable.Count != EditorBuildSettings.scenes.Length) { BuildLookupTableFromEditorBuildSettings(); @@ -93,7 +106,6 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) { NetworkManager.BuildSettingsSceneLookUpTable.Add(assetPath, new EditorBuildSettingsScene(assetPath, true)); SynchronizeScenes(); - //EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); } } else @@ -102,9 +114,7 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) if (NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(assetPath)) { NetworkManager.BuildSettingsSceneLookUpTable.Remove(assetPath); - - SynchronizeScenes(); - //EditorBuildSettings.scenes = NetworkManager.BuildSettingsSceneLookUpTable.Values.ToArray(); + SynchronizeScenes(assetPath); } } } @@ -149,7 +159,11 @@ internal void AssignNetworkManagerScene(bool isAssigned = true) ValidateBuildSettingsScenes(); } - + /// + /// For this asset dependency, we check to see if we have been added to a NetworkManager instance within a scene + /// that is contained within the project + /// + /// true or false protected override bool OnShouldAssetBeIncluded() { return AssignedToNetworkManager; @@ -205,6 +219,10 @@ protected override bool OnIsRootAssetDependency() return OnShouldAssetBeIncluded(); } #endif + /// + /// Invoked to generate the hash value for the NetworkConfig comparison when a client is connecting + /// + /// protected override void OnWriteHashSynchValues(NetworkWriter writer) { if (m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) @@ -225,6 +243,12 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) } } + /// + /// Gets all scene names within this scene registration's scope + /// NOTE: Scene names can be the same and this is not a good way to distinguish between scenes but is + /// used for backwards compatibility purposes until no longer needed + /// + /// public List GetAllScenes() { var allScenes = new List(); @@ -306,9 +330,5 @@ public void OnBeforeSerialize() } [HideInInspector] public string SceneEntryName; - - } - - } diff --git a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset index 7012602c74..c48417c8b4 100644 --- a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset @@ -15,13 +15,14 @@ MonoBehaviour: m_SceneRegistrations: - Scene: {fileID: 102900000, guid: 073bd2111475c0643be45b7abe6a97ad, type: 3} IncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} SceneEntryName: SceneWeAreSwitchingFrom - Scene: {fileID: 102900000, guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f, type: 3} IncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} SceneEntryName: SceneWeAreSwitchingTo - m_NetworkManagerScene: - NetworkManagerScene: {fileID: 0} + m_NetworkManagerScene: SceneWeAreSwitchingFrom + NetworkManagerScene: {fileID: 102900000, guid: 073bd2111475c0643be45b7abe6a97ad, + type: 3} diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index d1b7fb83a7..9c0c3c7d7d 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -14,4 +14,31 @@ EditorBuildSettings: - enabled: 1 path: Assets/Tests/Manual/ManualTestsMenu.unity guid: 197ba614e9ae3054a8dea7b2bdacad6a + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 9fc0d4010bbf28b4594072e72b8655ab + - enabled: 1 + path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity + guid: 931469794d88a874998f1d5edd265522 + - enabled: 1 + path: Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity + guid: dd570b5916593cb41bab8beb1c9d9315 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity + guid: 1c2375a896b2e8c4a841aa61224b8494 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity + guid: 79c2bf7d6b7a06a42a94982aaf1904d8 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity + guid: 637ab8340e96a2949adfe5bfdd42b924 + - enabled: 1 + path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity + guid: 619b9eba5892d5a4e9dd1d6cafb0059a + - enabled: 1 + path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingTo.unity + guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f + - enabled: 1 + path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity + guid: 073bd2111475c0643be45b7abe6a97ad m_configObjects: {} From 1a7d881144f548727ec064e1e75f6fc26e136f20 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sat, 26 Jun 2021 14:47:08 -0500 Subject: [PATCH 30/38] refactor Cleaned up some of the duplicate code shared between additive scene entries and scene entries by creating a SceneEntryBase. Include in Build property will now include/exclude a SceneEntry's reference base scene as well as the additive scene group (if assigned). Added some demonstration purposes assets. Cleaned up UI property order for SceneEntries. --- .../SceneManagement/AddtiveSceneGroup.cs | 40 +- .../SceneManagement/SceneRegistration.cs | 49 ++- .../AdditiveSceneGroup1.asset | 12 +- .../SceneRegistration/SceneLevel-1.unity | 301 +++++++++++++ .../SceneRegistration/SceneLevel-1.unity.meta | 7 + .../SceneRegistration/SceneLevel-2.unity | 301 +++++++++++++ .../SceneRegistration/SceneLevel-2.unity.meta | 7 + .../SceneRegistration/SceneLevel-3.unity | 301 +++++++++++++ .../SceneRegistration/SceneLevel-3.unity.meta | 7 + .../SceneRegistration/SceneLevel-4.unity | 301 +++++++++++++ .../SceneRegistration/SceneLevel-4.unity.meta | 7 + .../SceneRegistration/SceneRegistration.asset | 30 +- .../Samples/SceneRegistration/TestScene.unity | 404 ++++++++++++++++++ .../SceneRegistration/TestScene.unity.meta | 7 + .../ConnectionApprovalSceneRegistration.asset | 4 +- .../SceneTransitioningRegistration.asset | 6 +- .../ProjectSettings/EditorBuildSettings.asset | 49 ++- 17 files changed, 1746 insertions(+), 87 deletions(-) create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity.meta create mode 100644 testproject/Assets/Samples/SceneRegistration/TestScene.unity create mode 100644 testproject/Assets/Samples/SceneRegistration/TestScene.unity.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs index d874c8675f..cab5b01392 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs @@ -48,11 +48,8 @@ protected override void OnDependecyAdded(IAssetDependency dependencyAdded) private void OnValidate() { - //if(BuildPipeline.isBuildingPlayer) - //{ - // return; - //} - + // Always add all known dependencies during validation + // We can apply the same dependencies since AddDependency checks to assure that the dependency doesn't already exist before adding it foreach (var entry in m_AdditiveSceneGroups) { if (entry != null) @@ -61,6 +58,8 @@ private void OnValidate() } } + // Once all dependencies have been added, then check to see if we lost a dependency + // If so, then we remove that dependency foreach (var entry in m_KnownAdditiveSceneGroups) { if (entry != null) @@ -72,12 +71,15 @@ private void OnValidate() } } + // Next, keep m_KnownAdditiveSceneGroups in sync with m_AdditiveSceneGroups m_KnownAdditiveSceneGroups.Clear(); m_KnownAdditiveSceneGroups.AddRange(m_AdditiveSceneGroups); ValidateBuildSettingsScenes(); } - + /// + /// Validate that all scenes in the build list is in sync with the current relative AdditiveSceneGroup and its children + /// internal void ValidateBuildSettingsScenes() { var shouldInclude = ShouldAssetBeIncluded(); @@ -90,7 +92,7 @@ internal void ValidateBuildSettingsScenes() // Only filter out the referenced AdditiveSceneEntries if we shouldn't include this specific AdditiveSceneGroup's reference scene assets // Note: Other AdditiveSceneGroups could have other associated SceneRegistrationEntries that might qualify it to be added to the build settings // so we only apply this to the current AddtiveSceneGroup's referenced AdditiveSceneEntries - SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, shouldInclude && partOfRootBranch && includedScene.AutoIncludeInBuild); + SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, shouldInclude && partOfRootBranch && includedScene.IncludeInBuild); } } @@ -141,30 +143,8 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) /// the scene name that it is pointing to for runtime /// [Serializable] - public class AdditiveSceneEntry: ISerializationCallbackReceiver + public class AdditiveSceneEntry : SceneEntryBsase { -#if UNITY_EDITOR - public SceneAsset Scene; - - [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] - public bool AutoIncludeInBuild; -#endif - [HideInInspector] - public string SceneEntryName; - - public void OnAfterDeserialize() - { - - } - public void OnBeforeSerialize() - { -#if UNITY_EDITOR - if (Scene != null && SceneEntryName != Scene.name) - { - SceneEntryName = Scene.name; - } -#endif - } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index eb2e419b54..7d7dc210ab 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -171,10 +171,7 @@ protected override bool OnShouldAssetBeIncluded() private void OnValidate() { - //if (!BuildPipeline.isBuildingPlayer) - { - ValidateBuildSettingsScenes(); - } + ValidateBuildSettingsScenes(); } /// @@ -275,18 +272,17 @@ public List GetAllScenes() /// the scene name that it is pointing to for runtime /// [Serializable] - public class SceneEntry : ISerializationCallbackReceiver + public class SceneEntry : SceneEntryBsase { #if UNITY_EDITOR - public SceneAsset Scene; - - [Tooltip("When set to true, this will automatically register all of the additive scenes with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] - public bool IncludeInBuild; - [SerializeField] [HideInInspector] private AddtiveSceneGroup m_KnownAdditiveSceneGroup; + /// + /// Updates the dependencies for the additive scene group associated with this SceneEntry + /// + /// internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) { if (AdditiveSceneGroup != m_KnownAdditiveSceneGroup) @@ -300,25 +296,50 @@ internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) if (AdditiveSceneGroup != null) { - AdditiveSceneGroup.AddDependency(assetDependency); + if (IncludeInBuild) + { + AdditiveSceneGroup.AddDependency(assetDependency); + } + else + { + AdditiveSceneGroup.RemoveDependency(assetDependency); + } AdditiveSceneGroup.ValidateBuildSettingsScenes(); } - if (m_KnownAdditiveSceneGroup != AdditiveSceneGroup) { m_KnownAdditiveSceneGroup = AdditiveSceneGroup; } } #endif - public AddtiveSceneGroup AdditiveSceneGroup; + } + /// + /// A container class to hold the editor specific assets and + /// the scene name that it is pointing to for runtime + /// + [Serializable] + public class SceneEntryBsase : ISerializationCallbackReceiver + { +#if UNITY_EDITOR + [Tooltip("When set to true, this will automatically register all of the additive scenes (including groups) with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] + public bool IncludeInBuild; + public SceneAsset Scene; +#endif + + [HideInInspector] + public string SceneEntryName; + public void OnAfterDeserialize() { } + /// + /// This is used to extract the scene name from the SceneAsset + /// public void OnBeforeSerialize() { #if UNITY_EDITOR @@ -328,7 +349,5 @@ public void OnBeforeSerialize() } #endif } - [HideInInspector] - public string SceneEntryName; } } diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset index d28117d5da..2a1e5e44fa 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -18,20 +18,20 @@ MonoBehaviour: - {fileID: 11400000, guid: b4d16e1c84f7d6b44a88701c32e102a7, type: 2} m_AdditiveScenes: - Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} - AutoIncludeInBuild: 1 + IncludeInBuild: 1 SceneEntryName: AdditiveScene 1 - Scene: {fileID: 102900000, guid: ddb4e18dbd30daf4ab011d3232a63786, type: 3} - AutoIncludeInBuild: 1 + IncludeInBuild: 1 SceneEntryName: AdditiveScene 2 - Scene: {fileID: 102900000, guid: c4ebb19d1542fdb4a8fe49b774ab16a0, type: 3} - AutoIncludeInBuild: 1 + IncludeInBuild: 1 SceneEntryName: AdditiveScene 3 - Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} - AutoIncludeInBuild: 1 + IncludeInBuild: 1 SceneEntryName: AdditiveScene 4 - Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} - AutoIncludeInBuild: 1 + IncludeInBuild: 1 SceneEntryName: AdditiveScene 5 - Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} - AutoIncludeInBuild: 1 + IncludeInBuild: 1 SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity new file mode 100644 index 0000000000..ce0d701694 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &570856643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570856646} + - component: {fileID: 570856645} + - component: {fileID: 570856644} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &570856644 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 +--- !u!20 &570856645 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &570856646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1007049329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1007049331} + - component: {fileID: 1007049330} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1007049330 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1007049331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity.meta b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity.meta new file mode 100644 index 0000000000..e42099f099 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 228aa7771c79e6341a8fa9bc684c5766 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity b/testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity new file mode 100644 index 0000000000..ce0d701694 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &570856643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570856646} + - component: {fileID: 570856645} + - component: {fileID: 570856644} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &570856644 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 +--- !u!20 &570856645 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &570856646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1007049329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1007049331} + - component: {fileID: 1007049330} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1007049330 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1007049331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity.meta b/testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity.meta new file mode 100644 index 0000000000..e0f991b632 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-2.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5add0389cebf7fa438efb6c2ac0a6fe1 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity b/testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity new file mode 100644 index 0000000000..ce0d701694 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &570856643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570856646} + - component: {fileID: 570856645} + - component: {fileID: 570856644} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &570856644 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 +--- !u!20 &570856645 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &570856646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1007049329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1007049331} + - component: {fileID: 1007049330} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1007049330 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1007049331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity.meta b/testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity.meta new file mode 100644 index 0000000000..407894fe4a --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-3.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 45a35678967fd6744bae54a375eec459 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity b/testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity new file mode 100644 index 0000000000..ce0d701694 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity @@ -0,0 +1,301 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &570856643 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570856646} + - component: {fileID: 570856645} + - component: {fileID: 570856644} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &570856644 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 +--- !u!20 &570856645 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &570856646 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570856643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1007049329 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1007049331} + - component: {fileID: 1007049330} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1007049330 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1007049331 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1007049329} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity.meta b/testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity.meta new file mode 100644 index 0000000000..5298d79a1f --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-4.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 91c53cf6ac2a36447889e211d81d1e23 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index 0e456f0efd..49e29c5e71 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -13,24 +13,26 @@ MonoBehaviour: m_Name: SceneRegistration m_EditorClassIdentifier: m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} - AutoIncludeInBuild: 1 + - Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + IncludeInBuild: 1 + SceneEntryName: SceneLevel-1 + m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + - Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} + IncludeInBuild: 1 + SceneEntryName: SceneLevel-2 + m_KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} + - Scene: {fileID: 102900000, guid: 91c53cf6ac2a36447889e211d81d1e23, type: 3} + IncludeInBuild: 1 + SceneEntryName: SceneLevel-4 m_KnownAdditiveSceneGroup: {fileID: 0} - SceneEntryName: SceneTransitioningTest - - Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} - AutoIncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} - m_KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} - SceneEntryName: SecondSceneToLoad - - Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} - AutoIncludeInBuild: 1 AdditiveSceneGroup: {fileID: 0} + - Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} + IncludeInBuild: 0 + SceneEntryName: SceneLevel-3 m_KnownAdditiveSceneGroup: {fileID: 0} - SceneEntryName: ThirdSceneToLoad + AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: SceneTransitioningTest - m_KnownSceneRegistrations: [] NetworkManagerScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity b/testproject/Assets/Samples/SceneRegistration/TestScene.unity new file mode 100644 index 0000000000..b094a16a5b --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/TestScene.unity @@ -0,0 +1,404 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &97227791 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 97227794} + - component: {fileID: 97227793} + - component: {fileID: 97227792} + m_Layer: 0 + m_Name: NetworkManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &97227792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97227791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} + m_Name: + m_EditorClassIdentifier: + MessageBufferSize: 5120 + MaxConnections: 100 + MaxSentMessageQueueSize: 128 + ConnectAddress: 127.0.0.1 + ConnectPort: 7777 + ServerListenPort: 7777 + ServerWebsocketListenPort: 8887 + SupportWebsocket: 0 + Channels: [] + UseMLAPIRelay: 0 + MLAPIRelayAddress: 184.72.104.138 + MLAPIRelayPort: 8888 + MessageSendMode: 0 +--- !u!114 &97227793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97227791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} + m_Name: + m_EditorClassIdentifier: + DontDestroy: 1 + RunInBackground: 1 + LogLevel: 1 + NetworkConfig: + ProtocolVersion: 0 + NetworkTransport: {fileID: 97227792} + SceneRegistration: {fileID: 11400000, guid: f5cae5b40c257174696afebbf4bc0e15, + type: 2} + RegisteredScenes: + - TestScene + AllowRuntimeSceneChanges: 0 + PlayerPrefab: {fileID: 0} + NetworkPrefabs: [] + ReceiveTickrate: 64 + NetworkTickIntervalSec: 0.05 + MaxReceiveEventsPerTickRate: 500 + EventTickrate: 64 + ClientConnectionBufferTimeout: 10 + ConnectionApproval: 0 + ConnectionData: + EnableTimeResync: 0 + TimeResyncInterval: 30 + EnableNetworkVariable: 1 + EnsureNetworkVariableLengthSafety: 0 + EnableSceneManagement: 1 + ForceSamePrefabs: 1 + RecycleNetworkIds: 1 + NetworkIdRecycleDelay: 120 + RpcHashSize: 0 + LoadSceneTimeOut: 120 + EnableMessageBuffering: 1 + MessageBufferTimeout: 20 + EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 0} +--- !u!4 &97227794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97227791} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &597235108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 597235110} + - component: {fileID: 597235109} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &597235109 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597235108} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &597235110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597235108} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1069309381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1069309384} + - component: {fileID: 1069309383} + - component: {fileID: 1069309382} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1069309382 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069309381} + m_Enabled: 1 +--- !u!20 &1069309383 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069309381} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1069309384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069309381} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/TestScene.unity.meta new file mode 100644 index 0000000000..364df635b1 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/TestScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e729f848287dcb94c99ff859aefc8511 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset index 009f1ecbe3..76e2be0509 100644 --- a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset +++ b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset @@ -15,9 +15,9 @@ MonoBehaviour: m_SceneRegistrations: - Scene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} IncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} - m_KnownAdditiveSceneGroup: {fileID: 0} SceneEntryName: ConnectionApprovalTest + m_KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: ConnectionApprovalTest NetworkManagerScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset index d7d5fbc636..972e45eb31 100644 --- a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset @@ -15,19 +15,19 @@ MonoBehaviour: m_SceneRegistrations: - Scene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} IncludeInBuild: 1 + SceneEntryName: SceneTransitioningTest m_KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - SceneEntryName: SceneTransitioningTest - Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} IncludeInBuild: 1 + SceneEntryName: SecondSceneToLoad m_KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - SceneEntryName: SecondSceneToLoad - Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} IncludeInBuild: 1 + SceneEntryName: ThirdSceneToLoad m_KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - SceneEntryName: ThirdSceneToLoad m_NetworkManagerScene: SceneTransitioningTest NetworkManagerScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 9c0c3c7d7d..b5b99797bc 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -12,33 +12,48 @@ EditorBuildSettings: path: Assets/Samples/SamplesMenu.unity guid: 037562c9b1a469f498dfb34256ddf86f - enabled: 1 - path: Assets/Tests/Manual/ManualTestsMenu.unity - guid: 197ba614e9ae3054a8dea7b2bdacad6a + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity + guid: 466e828eb554ee44c900882db6c9d3a7 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + guid: ddb4e18dbd30daf4ab011d3232a63786 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity + guid: c4ebb19d1542fdb4a8fe49b774ab16a0 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity + guid: b12634a7636aba845801ca83d4ba61c2 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity + guid: 9904940443bdd09489233649a5b6e0b8 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity + guid: 2fc7efd990522b74caaa4cc1b42dfdc5 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-1.unity + guid: 228aa7771c79e6341a8fa9bc684c5766 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-2.unity + guid: 5add0389cebf7fa438efb6c2ac0a6fe1 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-4.unity + guid: 91c53cf6ac2a36447889e211d81d1e23 - enabled: 1 path: Assets/Scenes/SampleScene.unity guid: 9fc0d4010bbf28b4594072e72b8655ab - - enabled: 1 - path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity - guid: 931469794d88a874998f1d5edd265522 - enabled: 1 path: Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity guid: dd570b5916593cb41bab8beb1c9d9315 - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity - guid: 1c2375a896b2e8c4a841aa61224b8494 - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity - guid: 79c2bf7d6b7a06a42a94982aaf1904d8 - - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity - guid: 637ab8340e96a2949adfe5bfdd42b924 + path: Assets/Tests/Manual/ManualTestsMenu.unity + guid: 197ba614e9ae3054a8dea7b2bdacad6a - enabled: 1 - path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity - guid: 619b9eba5892d5a4e9dd1d6cafb0059a + path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity + guid: 073bd2111475c0643be45b7abe6a97ad - enabled: 1 path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingTo.unity guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f - enabled: 1 - path: Assets/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity - guid: 073bd2111475c0643be45b7abe6a97ad + path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity + guid: 931469794d88a874998f1d5edd265522 m_configObjects: {} From 588b3d0f381d3b12ed530fbdb029883cd73c1cf0 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sun, 27 Jun 2021 17:30:47 -0500 Subject: [PATCH 31/38] feat and refactor Working well, but still **WIP** Ended up adding a custom SceneRegistration editor to handle notifications for when list items are removed or added. Made the SceneEntryBase implement the IAssetDependency interface in order to handle dependencies between AdditiveSceneGroup and SceneEntry. Cleaned up some areas, but have a bunch of clean up to do (separate SceneEntry and SceneEntryBase classes from SceneRegistrationEntry). --- .../Editor/ReadOnlyPropertyDrawer.cs | 19 +- .../Editor/SceneRegistrationEditor.cs | 136 +++++++ .../Editor/SceneRegistrationEditor.cs.meta | 11 + .../Runtime/Core/NetworkManager.cs | 25 +- .../SceneManagement/SceneRegistration.cs | 379 ++++++++++++++++-- .../AdditiveSceneGroup1.asset | 24 +- .../SceneRegistration/SceneRegistration.asset | 46 ++- .../SceneRegistration.asset.meta | 2 +- .../Samples/SceneRegistration/TestScene.unity | 5 +- .../ProjectSettings/EditorBuildSettings.asset | 16 +- 10 files changed, 571 insertions(+), 92 deletions(-) create mode 100644 com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs create mode 100644 com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs.meta diff --git a/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs index 779a6eff3c..5eafd4d3b9 100644 --- a/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs +++ b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs @@ -25,9 +25,7 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten [CustomPropertyDrawer(typeof(SceneReadOnlyPropertyAttribute))] public class SceneRegistrationReadOnlyPropertyDrawer : PropertyDrawer { - private const int k_ButtonWidth = 85; - - private const bool k_LoadScene = true; + private const int k_ButtonWidth = 140; public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { @@ -36,7 +34,7 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten GUI.enabled = false; try { - EditorGUI.PropertyField(new Rect(position.x + k_ButtonWidth + 3, position.y, position.width - (k_ButtonWidth + 3), position.height), property, label); + EditorGUI.PropertyField(new Rect(position.x + k_ButtonWidth + 3, position.y, position.width - (k_ButtonWidth + 3), position.height), property); } catch (System.Exception ex) { @@ -46,22 +44,13 @@ public override void OnGUI(Rect position, SerializedProperty property, GUIConten GUI.enabled = true; EditorGUI.EndProperty(); - var buttonTitle = k_LoadScene == true ? "Load Scene" : "Find Asset"; // Add a button to open the scene containing the network manager referencing the SceneRegistration - if (GUI.Button(new Rect(position.x, position.y, k_ButtonWidth, 20), buttonTitle)) + if (GUI.Button(new Rect(position.x, position.y, k_ButtonWidth, 20), "Load Referencing NetworkManager Scene")) { var value = property.objectReferenceValue as SceneAsset; if (value != null) { - if (!k_LoadScene) - { - //Selection.SetActiveObjectWithContext(value, Selection.activeObject); - ProjectWindowUtil.ShowCreatedAsset(value); - } - else - { - EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(value), OpenSceneMode.Single); - } + EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(value), OpenSceneMode.Single); } } } diff --git a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs new file mode 100644 index 0000000000..31c1b59fdf --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs @@ -0,0 +1,136 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEditor; +using UnityEditorInternal; +using UnityEditor.SceneManagement; + +using MLAPI.SceneManagement; + +namespace MLAPI.Editor +{ + [CustomEditor(typeof(SceneRegistration), true)] + [CanEditMultipleObjects] + public class SceneRegistrationEditor : UnityEditor.Editor + { + private ReorderableList m_SceneEntryList; + + private SceneRegistration m_SceneRegistration; + + private SerializedProperty m_NetworkManagerScene; + + + private void OnEnable() + { + m_SceneRegistration = serializedObject.targetObject as SceneRegistration; + + m_NetworkManagerScene = serializedObject.FindProperty(nameof(SceneRegistration.NetworkManagerScene)); + + m_SceneEntryList = new ReorderableList(serializedObject, serializedObject.FindProperty(nameof(SceneRegistration.SceneRegistrations)), true, true, true, true); + m_SceneEntryList.multiSelect = true; + m_SceneEntryList.onAddCallback = AddEntry; + m_SceneEntryList.onRemoveCallback = RemoveEntry; + + m_SceneEntryList.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "Scene Entries"); + + m_SceneEntryList.elementHeight = (4 * (EditorGUIUtility.singleLineHeight + 5)); + m_SceneEntryList.drawElementCallback = DrawSceneEntryItem; + } + + public override bool RequiresConstantRepaint() + { + return true; + } + + public override void OnInspectorGUI() + { + + serializedObject.Update(); + + + if (m_NetworkManagerScene != null) + { + + var value = m_NetworkManagerScene.objectReferenceValue as SceneAsset; + if (value != null) + { + if (EditorGUILayout.LinkButton($"Open Referencing NetworManager Scene: {value.name}")) + { + EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(value), OpenSceneMode.Single); + } + } + } + + EditorGUILayout.Space(); + EditorGUILayout.Space(); + + try + { + if (m_SceneEntryList != null) + { + m_SceneEntryList.DoLayoutList(); + } + } + catch + { + } + serializedObject.ApplyModifiedProperties(); + Repaint(); + } + + private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocused) + { + var sceneEntryItem = m_SceneEntryList.serializedProperty.GetArrayElementAtIndex(index); + var includeInBuild = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.IncludeInBuild)); + var sceneEntryItemSceneAsset = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.Scene)); + var sceneEntryItemAdditiveSceneGroup = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.AdditiveSceneGroup)); + + var labelWidth = 130; + var xpadding = 2; + + EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), $"Scene Entry - {index}"); + + rect.y += EditorGUIUtility.singleLineHeight + 5; + + //Draw include in build property + EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Include In Build"); + EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth - xpadding, EditorGUIUtility.singleLineHeight), includeInBuild, GUIContent.none); + + rect.y += EditorGUIUtility.singleLineHeight + 5; + + EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Base Scene"); + EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth - xpadding, EditorGUIUtility.singleLineHeight), sceneEntryItemSceneAsset, GUIContent.none); + + + rect.y += EditorGUIUtility.singleLineHeight + 5; + + EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Additive Scenes"); + EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth - xpadding, EditorGUIUtility.singleLineHeight), sceneEntryItemAdditiveSceneGroup, GUIContent.none); + } + + private void AddEntry(ReorderableList list) + { + var newSceneEntry = new SceneEntry(); + newSceneEntry.IncludeInBuild = true; + newSceneEntry.AddedToList(); + m_SceneRegistration.SceneRegistrations.Add(newSceneEntry); + } + + + private void RemoveEntry(ReorderableList list) + { + var selectedItems = new List(); + + foreach(var index in list.selectedIndices) + { + selectedItems.Add(m_SceneRegistration.SceneRegistrations[index]); + } + + foreach(var sceneEntry in selectedItems) + { + sceneEntry.RemovedFromList(); + m_SceneRegistration.SceneRegistrations.Remove(sceneEntry); + + } + } + } +} diff --git a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs.meta b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs.meta new file mode 100644 index 0000000000..7a2da12d2a --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6677b4f9bfeeaf748b26a644bfbe867c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 79ee131007..aae36ebbb6 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -249,20 +249,19 @@ private void OnValidate() } } - //if (!UnityEditor.BuildPipeline.isBuildingPlayer) + + // Detect when SceneRegistration is assigned or deleted to determine if the scenes associated with the SceneRegistration + // should be included in the build settings. + if (NetworkConfig.SceneRegistration != null && (!NetworkConfig.SceneRegistration.AssignedToNetworkManager)) { - // Detect when SceneRegistration is assigned or deleted to determine if the scenes associated with the SceneRegistration - // should be included in the build settings. - if (NetworkConfig.SceneRegistration != null && (!NetworkConfig.SceneRegistration.AssignedToNetworkManager)) - { - m_SceneRegistration = NetworkConfig.SceneRegistration; - NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); - } - else if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) - { - m_SceneRegistration.AssignNetworkManagerScene(false); - m_SceneRegistration = null; - } + m_SceneRegistration = NetworkConfig.SceneRegistration; + NetworkConfig.SceneRegistration.AssignNetworkManagerScene(); + } + + if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) + { + m_SceneRegistration.AssignNetworkManagerScene(false); + m_SceneRegistration = NetworkConfig.SceneRegistration; } var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 7d7dc210ab..16a215b4c5 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -2,11 +2,12 @@ using System.Linq; using System.Collections.Generic; using MLAPI.Serialization; - using UnityEngine; #if UNITY_EDITOR using UnityEditor; using UnityEngine.SceneManagement; +using System.Collections.ObjectModel; +using System.Collections.Specialized; #endif namespace MLAPI.SceneManagement @@ -16,13 +17,17 @@ namespace MLAPI.SceneManagement public class SceneRegistration : AssetDependency { [SerializeField] - private List m_SceneRegistrations; + internal List SceneRegistrations; [HideInInspector] [SerializeField] private string m_NetworkManagerScene; #if UNITY_EDITOR + + [HideInInspector] + [SerializeField] + private List m_KnownSceneRegistrations; public static string GetSceneNameFromPath(string scenePath) { var begin = scenePath.LastIndexOf("/", StringComparison.Ordinal) + 1; @@ -75,7 +80,7 @@ internal static void SynchronizeScenes(string removeEntry = null) currentScenes.Add(keyPair.Key, keyPair.Value); } } - currentScenes = currentScenes.OrderBy(x => x.Key).ToDictionary((keyItem)=>keyItem.Key,(valueItem) => valueItem.Value); + currentScenes = currentScenes.OrderBy(x => x.Key).ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value); EditorBuildSettings.scenes = currentScenes.Values.ToArray(); } @@ -181,23 +186,17 @@ private void OnValidate() internal void ValidateBuildSettingsScenes() { //Cycle through all scenes registered and validate the build settings scenes list - if (m_SceneRegistrations != null && m_SceneRegistrations.Count > 0) + if (SceneRegistrations != null && SceneRegistrations.Count > 0) { var shouldInclude = ShouldAssetBeIncluded(); var partOfRootBranch = BelongsToRootAssetBranch(); - - foreach (var sceneRegistrationEntry in m_SceneRegistrations) + foreach (var sceneEntry in SceneRegistrations) { - if (sceneRegistrationEntry != null && sceneRegistrationEntry.Scene != null) + if (sceneEntry != null && sceneEntry.Scene != null) { - if (sceneRegistrationEntry.SceneEntryName != sceneRegistrationEntry.Scene.name) - { - sceneRegistrationEntry.SceneEntryName = sceneRegistrationEntry.Scene.name; - } - - AddOrRemoveSceneAsset(sceneRegistrationEntry.Scene, shouldInclude && partOfRootBranch && sceneRegistrationEntry.IncludeInBuild); - - sceneRegistrationEntry.UpdateAdditiveSceneGroup(this); + sceneEntry.AddDependency(this); + AddOrRemoveSceneAsset(sceneEntry.Scene, shouldInclude && partOfRootBranch && sceneEntry.IncludeInBuild); + sceneEntry.UpdateAdditiveSceneGroup(); } } } @@ -227,7 +226,7 @@ protected override void OnWriteHashSynchValues(NetworkWriter writer) writer.WriteString(m_NetworkManagerScene); } - foreach (var sceneRegistrationEntry in m_SceneRegistrations) + foreach (var sceneRegistrationEntry in SceneRegistrations) { if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) { @@ -255,7 +254,7 @@ public List GetAllScenes() allScenes.Add(m_NetworkManagerScene); } - foreach (var sceneRegistrationEntry in m_SceneRegistrations) + foreach (var sceneRegistrationEntry in SceneRegistrations) { if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) { @@ -277,20 +276,20 @@ public class SceneEntry : SceneEntryBsase #if UNITY_EDITOR [SerializeField] [HideInInspector] - private AddtiveSceneGroup m_KnownAdditiveSceneGroup; + internal AddtiveSceneGroup KnownAdditiveSceneGroup; /// /// Updates the dependencies for the additive scene group associated with this SceneEntry /// /// - internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) + internal void UpdateAdditiveSceneGroup() { - if (AdditiveSceneGroup != m_KnownAdditiveSceneGroup) + if (AdditiveSceneGroup != KnownAdditiveSceneGroup) { - if (m_KnownAdditiveSceneGroup != null) + if (KnownAdditiveSceneGroup != null) { - m_KnownAdditiveSceneGroup.RemoveDependency(assetDependency); - m_KnownAdditiveSceneGroup.ValidateBuildSettingsScenes(); + KnownAdditiveSceneGroup.RemoveDependency(this); + KnownAdditiveSceneGroup.ValidateBuildSettingsScenes(); } } @@ -298,20 +297,37 @@ internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) { if (IncludeInBuild) { - AdditiveSceneGroup.AddDependency(assetDependency); + AdditiveSceneGroup.AddDependency(this); } else { - AdditiveSceneGroup.RemoveDependency(assetDependency); + AdditiveSceneGroup.RemoveDependency(this); } AdditiveSceneGroup.ValidateBuildSettingsScenes(); } - if (m_KnownAdditiveSceneGroup != AdditiveSceneGroup) + if (KnownAdditiveSceneGroup != AdditiveSceneGroup) + { + KnownAdditiveSceneGroup = AdditiveSceneGroup; + } + } + + protected override void OnAddedToList() + { + + base.OnAddedToList(); + } + + protected override void OnRemovedFromList() + { + IncludeInBuild = false; + if (Scene != null) { - m_KnownAdditiveSceneGroup = AdditiveSceneGroup; + SceneRegistration.AddOrRemoveSceneAsset(Scene, false); } + UpdateAdditiveSceneGroup(); } + #endif public AddtiveSceneGroup AdditiveSceneGroup; } @@ -322,14 +338,13 @@ internal void UpdateAdditiveSceneGroup(SceneRegistration assetDependency) /// the scene name that it is pointing to for runtime /// [Serializable] - public class SceneEntryBsase : ISerializationCallbackReceiver + public class SceneEntryBsase : ISerializationCallbackReceiver, ISmartItem, IAssetDependency { #if UNITY_EDITOR [Tooltip("When set to true, this will automatically register all of the additive scenes (including groups) with the build settings scenes in build list. If false, then the scene(s) have to be manually added or will not be included in the build.")] public bool IncludeInBuild; public SceneAsset Scene; #endif - [HideInInspector] public string SceneEntryName; @@ -349,5 +364,311 @@ public void OnBeforeSerialize() } #endif } + + protected virtual void OnAddedToList() + { + + } + + public void AddedToList() + { +#if UNITY_EDITOR + m_Dependencies.CollectionChanged += Dependencies_CollectionChanged; +#endif + OnAddedToList(); + } + + protected virtual void OnRemovedFromList() + { + + } + + public void RemovedFromList() + { + OnRemovedFromList(); +#if UNITY_EDITOR + m_Dependencies.CollectionChanged -= Dependencies_CollectionChanged; +#endif + } + + + protected virtual void OnWriteHashSynchValues(NetworkWriter writer) + { + if (SceneEntryName != null && SceneEntryName != string.Empty) + { + writer.WriteString(SceneEntryName); + } + } + + public void WriteHashSynchValues(NetworkWriter writer) + { + OnWriteHashSynchValues(writer); + } + + +#if UNITY_EDITOR + [HideInInspector] + [SerializeField] + protected ObservableCollection m_Dependencies = new ObservableCollection(); + + /// + /// Parent assets can use this to notify any child assets that it "depends" upon this asset + /// + /// + public void AddDependency(IAssetDependency assetDependency) + { + if (!m_Dependencies.Contains(assetDependency)) + { + m_Dependencies.Add(assetDependency); + } + } + + /// + /// Parent assets can use this to notify any child assets that it no longer "depends" upon this asset + /// + /// + public void RemoveDependency(IAssetDependency assetDependency) + { + if (m_Dependencies.Contains(assetDependency)) + { + m_Dependencies.Remove(assetDependency); + } + } + + /// + /// Child derived classes can override this method to receive notifications of a + /// dependency addition + /// + /// + protected virtual void OnDependecyAdded(IAssetDependency dependencyAdded) + { + + } + + /// + /// Child derived classes can override this method to receive notifications of a + /// dependency removal + /// + /// + protected virtual void OnDependecyRemoved(IAssetDependency dependencyRemoved) + { + + } + + private void DependencyRemoved(NotifyCollectionChangedEventArgs e) + { + foreach (var item in e.OldItems) + { + OnDependecyRemoved(item as IAssetDependency); + } + } + + private void DependencyAdded(NotifyCollectionChangedEventArgs e) + { + foreach (var item in e.NewItems) + { + OnDependecyAdded(item as IAssetDependency); + } + } + + private void Dependencies_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + switch (e.Action) + { + case NotifyCollectionChangedAction.Add: + { + DependencyAdded(e); + break; + } + case NotifyCollectionChangedAction.Remove: + { + DependencyRemoved(e); + break; + } + } + } + + protected virtual bool OnIsRootAssetDependency() + { + return false; + } + + public bool IsRootAssetDependency() + { + return OnIsRootAssetDependency(); + } + + protected virtual bool OnHasDependencies() + { + return (m_Dependencies.Count > 0); + } + + public bool HasDependencies() + { + return OnHasDependencies(); + } + + public bool BelongsToRootAssetBranch() + { + if (m_Dependencies.Count == 0) + { + return IsRootAssetDependency(); + } + + foreach (var dependency in m_Dependencies) + { + if (dependency.BelongsToRootAssetBranch()) + { + return true; + } + } + return false; + } + + /// + /// Virtual method to allow for customizing the logic that determines if + /// an asset dependency should be included (defaults to true unless overridden + /// + /// + protected virtual bool OnShouldAssetBeIncluded() + { + return true; + } + + /// + /// Determines if the asset has any dependencies that are marked to be included + /// + /// true or false + public bool ShouldAssetBeIncluded() + { + if (IsRootAssetDependency()) + { + return true; + } + if (HasDependencies()) + { + foreach (var dependency in m_Dependencies) + { + if (dependency.ShouldAssetBeIncluded()) + { + return true; + } + } + } + return false; + } +#endif + } + + public interface ISmartItem + { + void AddedToList(); + void RemovedFromList(); + } + + + public class SmartItemList : List where T : ISmartItem + { + private readonly IList m_List = new List(); + + public delegate void OnItemChangeDelegateHandler(T itemThatChanged); + public event OnItemChangeDelegateHandler OnItemAddedNotification; + public event OnItemChangeDelegateHandler OnItemRemovedNotification; + + public new IEnumerator GetEnumerator() + { + return m_List.GetEnumerator(); + } + + protected virtual void OnItemAdded(T item) + { + if (OnItemAddedNotification != null) + { + OnItemAddedNotification.Invoke(item); + } + } + + protected virtual void OnItemRemoved(T item) + { + if (OnItemRemovedNotification != null) + { + OnItemRemovedNotification.Invoke(item); + } + } + + public new void Add(T item) + { + m_List.Add(item); + item.AddedToList(); + } + + public new void Clear() + { + foreach (var item in m_List) + { + item.RemovedFromList(); + } + m_List.Clear(); + } + + public new bool Contains(T item) + { + return m_List.Contains(item); + } + + public new void CopyTo(T[] array, int arrayIndex) + { + m_List.CopyTo(array, arrayIndex); + } + + public new bool Remove(T item) + { + if (m_List.Remove(item)) + { + item.RemovedFromList(); + return true; + } + return false; + } + + public new int Count + { + get { return m_List.Count; } + } + + public bool IsReadOnly + { + get { return m_List.IsReadOnly; } + } + + public new int IndexOf(T item) + { + return m_List.IndexOf(item); + } + + public new void Insert(int index, T item) + { + if (m_List.Count > index) + { + m_List.Insert(index, item); + item.AddedToList(); + } + } + + public new void RemoveAt(int index) + { + if (m_List.Count > index) + { + T item = m_List[index]; + m_List.RemoveAt(index); + item.RemovedFromList(); + } + } + + public new T this[int index] + { + get { return m_List[index]; } + set { m_List[index] = value; } + } } } diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset index 2a1e5e44fa..084dde44f5 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -17,21 +17,21 @@ MonoBehaviour: m_KnownAdditiveSceneGroups: - {fileID: 11400000, guid: b4d16e1c84f7d6b44a88701c32e102a7, type: 2} m_AdditiveScenes: - - Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} SceneEntryName: AdditiveScene 1 - - Scene: {fileID: 102900000, guid: ddb4e18dbd30daf4ab011d3232a63786, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: ddb4e18dbd30daf4ab011d3232a63786, type: 3} SceneEntryName: AdditiveScene 2 - - Scene: {fileID: 102900000, guid: c4ebb19d1542fdb4a8fe49b774ab16a0, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: c4ebb19d1542fdb4a8fe49b774ab16a0, type: 3} SceneEntryName: AdditiveScene 3 - - Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} SceneEntryName: AdditiveScene 4 - - Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} SceneEntryName: AdditiveScene 5 - - Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index 49e29c5e71..e3db8b8e9d 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -12,27 +12,37 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: SceneRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} - IncludeInBuild: 1 + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} SceneEntryName: SceneLevel-1 - m_KnownAdditiveSceneGroup: {fileID: 0} - AdditiveSceneGroup: {fileID: 0} - - Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} - IncludeInBuild: 1 + KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} SceneEntryName: SceneLevel-2 - m_KnownAdditiveSceneGroup: {fileID: 0} + KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} + SceneEntryName: SceneLevel-3 + KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - - Scene: {fileID: 102900000, guid: 91c53cf6ac2a36447889e211d81d1e23, type: 3} - IncludeInBuild: 1 - SceneEntryName: SceneLevel-4 - m_KnownAdditiveSceneGroup: {fileID: 0} + m_NetworkManagerScene: TestScene + m_KnownSceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + SceneEntryName: SceneLevel-1 + KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - - Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} - IncludeInBuild: 0 - SceneEntryName: SceneLevel-3 - m_KnownAdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + SceneEntryName: SceneLevel-1 + KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - m_NetworkManagerScene: SceneTransitioningTest - NetworkManagerScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, + NetworkManagerScene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta index fd73f27601..15710bcd9a 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f5cae5b40c257174696afebbf4bc0e15 +guid: ea4a0987e5ce32244af3b8e7699fc223 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity b/testproject/Assets/Samples/SceneRegistration/TestScene.unity index b094a16a5b..a1d1332353 100644 --- a/testproject/Assets/Samples/SceneRegistration/TestScene.unity +++ b/testproject/Assets/Samples/SceneRegistration/TestScene.unity @@ -184,7 +184,7 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 97227792} - SceneRegistration: {fileID: 11400000, guid: f5cae5b40c257174696afebbf4bc0e15, + SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, type: 2} RegisteredScenes: - TestScene @@ -211,7 +211,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 0} + m_SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, + type: 2} --- !u!4 &97227794 Transform: m_ObjectHideFlags: 0 diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index b5b99797bc..66a853231a 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -36,8 +36,11 @@ EditorBuildSettings: path: Assets/Samples/SceneRegistration/SceneLevel-2.unity guid: 5add0389cebf7fa438efb6c2ac0a6fe1 - enabled: 1 - path: Assets/Samples/SceneRegistration/SceneLevel-4.unity - guid: 91c53cf6ac2a36447889e211d81d1e23 + path: Assets/Samples/SceneRegistration/SceneLevel-3.unity + guid: 45a35678967fd6744bae54a375eec459 + - enabled: 1 + path: Assets/Samples/SceneRegistration/TestScene.unity + guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Scenes/SampleScene.unity guid: 9fc0d4010bbf28b4594072e72b8655ab @@ -56,4 +59,13 @@ EditorBuildSettings: - enabled: 1 path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity guid: 931469794d88a874998f1d5edd265522 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity + guid: 1c2375a896b2e8c4a841aa61224b8494 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity + guid: 79c2bf7d6b7a06a42a94982aaf1904d8 + - enabled: 1 + path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity + guid: 637ab8340e96a2949adfe5bfdd42b924 m_configObjects: {} From a7849a88432fec4e08d1b206a57dda99e36e8715 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Sun, 27 Jun 2021 21:37:34 -0500 Subject: [PATCH 32/38] fix Ran some assets through the serialization process due to the fact they were serialized with old-stale values from previous development updates. --- .../SceneRegistration/AddiriveSceneGroup2.asset | 11 ++++++++++- .../SceneRegistration/AdditiveSceneGroup1.asset | 9 --------- .../Samples/SceneRegistration/SceneRegistration.asset | 6 ++---- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset index 60da4fbdae..7acfc3a7ff 100644 --- a/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset +++ b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset @@ -14,4 +14,13 @@ MonoBehaviour: m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] - m_AdditiveScenes: [] + m_AdditiveScenes: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} + SceneEntryName: AdditiveScene 4 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} + SceneEntryName: AdditiveScene 5 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} + SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset index 084dde44f5..4654470732 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -26,12 +26,3 @@ MonoBehaviour: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: c4ebb19d1542fdb4a8fe49b774ab16a0, type: 3} SceneEntryName: AdditiveScene 3 - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} - SceneEntryName: AdditiveScene 4 - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} - SceneEntryName: AdditiveScene 5 - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} - SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index e3db8b8e9d..3218f25039 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -23,10 +23,8 @@ MonoBehaviour: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} SceneEntryName: SceneLevel-2 - KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} - AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} SceneEntryName: SceneLevel-3 From 80c5f44a9150d25766257d7fc25177df546e344d Mon Sep 17 00:00:00 2001 From: Noel Stephens <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 28 Jun 2021 10:43:35 -0500 Subject: [PATCH 33/38] Update com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs Co-authored-by: M. Fatih MAR --- .../Runtime/Spawning/NetworkSpawnManager.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs index e98bbc8239..5ce4156f4a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs @@ -248,8 +248,9 @@ internal NetworkObject CreateLocalNetworkObject(bool isSceneObject, uint globalO if (NetworkLog.CurrentLogLevel <= LogLevel.Error) { NetworkLog.LogError($"{nameof(NetworkPrefab)} hash was not found! In-Scene placed {nameof(NetworkObject)} soft synchronization failure for Hash: {globalObjectIdHash}!"); - return null; } + + return null; } else { From 0d8f5746bf9ddd177e5a6330482b958326464afd Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 28 Jun 2021 10:44:45 -0500 Subject: [PATCH 34/38] fix after demo fix. --- .../AddiriveSceneGroup2.asset | 26 ---------------- .../AdditiveSceneGroup1.asset | 6 ++-- .../AdditiveSceneGroup2.asset | 17 +++++++++++ ...et.meta => AdditiveSceneGroup2.asset.meta} | 2 +- .../SceneRegistration/SceneRegistration.asset | 24 ++------------- .../Samples/SceneRegistration/TestScene.unity | 6 ++-- .../ProjectSettings/EditorBuildSettings.asset | 30 ------------------- 7 files changed, 25 insertions(+), 86 deletions(-) delete mode 100644 testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset create mode 100644 testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset rename testproject/Assets/Samples/SceneRegistration/{AddiriveSceneGroup2.asset.meta => AdditiveSceneGroup2.asset.meta} (79%) diff --git a/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset b/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset deleted file mode 100644 index 7acfc3a7ff..0000000000 --- a/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset +++ /dev/null @@ -1,26 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &11400000 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} - m_Name: AddiriveSceneGroup2 - m_EditorClassIdentifier: - m_AdditiveSceneGroups: [] - m_KnownAdditiveSceneGroups: [] - m_AdditiveScenes: - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} - SceneEntryName: AdditiveScene 4 - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} - SceneEntryName: AdditiveScene 5 - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} - SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset index 4654470732..b25112b5b1 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -12,10 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} m_Name: AdditiveSceneGroup1 m_EditorClassIdentifier: - m_AdditiveSceneGroups: - - {fileID: 11400000, guid: b4d16e1c84f7d6b44a88701c32e102a7, type: 2} - m_KnownAdditiveSceneGroups: - - {fileID: 11400000, guid: b4d16e1c84f7d6b44a88701c32e102a7, type: 2} + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] m_AdditiveScenes: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset new file mode 100644 index 0000000000..603c0c46f0 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset @@ -0,0 +1,17 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} + m_Name: AdditiveSceneGroup2 + m_EditorClassIdentifier: + m_AdditiveSceneGroups: [] + m_KnownAdditiveSceneGroups: [] + m_AdditiveScenes: [] diff --git a/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset.meta similarity index 79% rename from testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset.meta rename to testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset.meta index be5fb1112c..b4accc2df6 100644 --- a/testproject/Assets/Samples/SceneRegistration/AddiriveSceneGroup2.asset.meta +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b4d16e1c84f7d6b44a88701c32e102a7 +guid: 6ad30cb0c1be4f44ba9b86d536988a50 NativeFormatImporter: externalObjects: {} mainObjectFileID: 11400000 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index 3218f25039..fe6fdd0872 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -12,25 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: SceneRegistration m_EditorClassIdentifier: - SceneRegistrations: - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} - SceneEntryName: SceneLevel-1 - KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} - AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} - SceneEntryName: SceneLevel-2 - KnownAdditiveSceneGroup: {fileID: 0} - AdditiveSceneGroup: {fileID: 0} - - IncludeInBuild: 1 - Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} - SceneEntryName: SceneLevel-3 - KnownAdditiveSceneGroup: {fileID: 0} - AdditiveSceneGroup: {fileID: 0} - m_NetworkManagerScene: TestScene + SceneRegistrations: [] + m_NetworkManagerScene: m_KnownSceneRegistrations: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} @@ -42,5 +25,4 @@ MonoBehaviour: SceneEntryName: SceneLevel-1 KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - NetworkManagerScene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, - type: 3} + NetworkManagerScene: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity b/testproject/Assets/Samples/SceneRegistration/TestScene.unity index a1d1332353..038b23b0d9 100644 --- a/testproject/Assets/Samples/SceneRegistration/TestScene.unity +++ b/testproject/Assets/Samples/SceneRegistration/TestScene.unity @@ -184,8 +184,7 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 97227792} - SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, - type: 2} + SceneRegistration: {fileID: 0} RegisteredScenes: - TestScene AllowRuntimeSceneChanges: 0 @@ -211,8 +210,7 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, - type: 2} + m_SceneRegistration: {fileID: 0} --- !u!4 &97227794 Transform: m_ObjectHideFlags: 0 diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 66a853231a..822be7b36e 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -11,36 +11,6 @@ EditorBuildSettings: - enabled: 1 path: Assets/Samples/SamplesMenu.unity guid: 037562c9b1a469f498dfb34256ddf86f - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity - guid: 466e828eb554ee44c900882db6c9d3a7 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity - guid: ddb4e18dbd30daf4ab011d3232a63786 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity - guid: c4ebb19d1542fdb4a8fe49b774ab16a0 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity - guid: b12634a7636aba845801ca83d4ba61c2 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity - guid: 9904940443bdd09489233649a5b6e0b8 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity - guid: 2fc7efd990522b74caaa4cc1b42dfdc5 - - enabled: 1 - path: Assets/Samples/SceneRegistration/SceneLevel-1.unity - guid: 228aa7771c79e6341a8fa9bc684c5766 - - enabled: 1 - path: Assets/Samples/SceneRegistration/SceneLevel-2.unity - guid: 5add0389cebf7fa438efb6c2ac0a6fe1 - - enabled: 1 - path: Assets/Samples/SceneRegistration/SceneLevel-3.unity - guid: 45a35678967fd6744bae54a375eec459 - - enabled: 1 - path: Assets/Samples/SceneRegistration/TestScene.unity - guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Scenes/SampleScene.unity guid: 9fc0d4010bbf28b4594072e72b8655ab From 77a87b5b21c99458099f426ab696b69d277a648e Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Mon, 28 Jun 2021 14:29:16 -0500 Subject: [PATCH 35/38] fix Recursion check and AdditiveSceneGroup children refactoring to account for null entries. --- ...iveSceneGroup.cs => AdditiveSceneGroup.cs} | 43 +++++++++++++++---- ...oup.cs.meta => AdditiveSceneGroup.cs.meta} | 0 .../SceneManagement/SceneRegistration.cs | 4 +- .../SceneManagement/SceneRegistrationEntry.cs | 4 +- 4 files changed, 39 insertions(+), 12 deletions(-) rename com.unity.multiplayer.mlapi/Runtime/SceneManagement/{AddtiveSceneGroup.cs => AdditiveSceneGroup.cs} (73%) rename com.unity.multiplayer.mlapi/Runtime/SceneManagement/{AddtiveSceneGroup.cs.meta => AdditiveSceneGroup.cs.meta} (100%) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs similarity index 73% rename from com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs rename to com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs index cab5b01392..3a576fd041 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs @@ -10,10 +10,10 @@ namespace MLAPI.SceneManagement { [CreateAssetMenu(fileName = "AdditiveSceneGroup", menuName = "MLAPI/SceneManagement/AdditiveSceneGroup")] [Serializable] - public class AddtiveSceneGroup : AssetDependency, IAdditiveSceneGroup + public class AdditiveSceneGroup : AssetDependency, IAdditiveSceneGroup { [SerializeField] - private List m_AdditiveSceneGroups; + private List m_AdditiveSceneGroups; // Since Unity does not support observable collections there are two ways to approach this: // 1.) Make a duplicate list that adjusts itself during OnValidate @@ -21,7 +21,7 @@ public class AddtiveSceneGroup : AssetDependency, IAdditiveSceneGroup // For this pass, I opted for solution #1 [HideInInspector] [SerializeField] - private List m_KnownAdditiveSceneGroups = new List(); + private List m_KnownAdditiveSceneGroups = new List(); [SerializeField] private List m_AdditiveScenes; @@ -48,16 +48,37 @@ protected override void OnDependecyAdded(IAssetDependency dependencyAdded) private void OnValidate() { + var additiveScenesDirty = m_KnownAdditiveSceneGroups.Count != m_AdditiveSceneGroups.Count; + // Used to catch the scenario where a user accidentally assigns an AdditiveSceneGroup to itself + AdditiveSceneGroup recursionTrap = null; // Always add all known dependencies during validation // We can apply the same dependencies since AddDependency checks to assure that the dependency doesn't already exist before adding it foreach (var entry in m_AdditiveSceneGroups) { if (entry != null) { - entry.AddDependency(this); + // Make sure the user has not added an AdditiveSceneGroup to itself + if (entry != this) + { + entry.AddDependency(this); + } + else + { + recursionTrap = entry; + } } } + // Remove this entry if it exists + if(recursionTrap != null) + { + var index = m_AdditiveSceneGroups.IndexOf(recursionTrap); + m_AdditiveSceneGroups[index] = null; + + Debug.LogError($"AdditiveSceneGroup {recursionTrap.name} cannot be added to the Additive Scene Groups of {name} (itself). Invalid assignment!"); + additiveScenesDirty = true; + } + // Once all dependencies have been added, then check to see if we lost a dependency // If so, then we remove that dependency foreach (var entry in m_KnownAdditiveSceneGroups) @@ -67,13 +88,19 @@ private void OnValidate() if (!m_AdditiveSceneGroups.Contains(entry)) { entry.RemoveDependency(this); + entry.ValidateBuildSettingsScenes(); + additiveScenesDirty = true; } } } - // Next, keep m_KnownAdditiveSceneGroups in sync with m_AdditiveSceneGroups - m_KnownAdditiveSceneGroups.Clear(); - m_KnownAdditiveSceneGroups.AddRange(m_AdditiveSceneGroups); + if (additiveScenesDirty) + { + // Next, keep m_KnownAdditiveSceneGroups in sync with m_AdditiveSceneGroups + m_KnownAdditiveSceneGroups.Clear(); + m_KnownAdditiveSceneGroups.AddRange(m_AdditiveSceneGroups); + } + ValidateBuildSettingsScenes(); } @@ -91,7 +118,7 @@ internal void ValidateBuildSettingsScenes() { // Only filter out the referenced AdditiveSceneEntries if we shouldn't include this specific AdditiveSceneGroup's reference scene assets // Note: Other AdditiveSceneGroups could have other associated SceneRegistrationEntries that might qualify it to be added to the build settings - // so we only apply this to the current AddtiveSceneGroup's referenced AdditiveSceneEntries + // so we only apply this to the current AdditiveSceneGroup's referenced AdditiveSceneEntries SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, shouldInclude && partOfRootBranch && includedScene.IncludeInBuild); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs.meta similarity index 100% rename from com.unity.multiplayer.mlapi/Runtime/SceneManagement/AddtiveSceneGroup.cs.meta rename to com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs.meta diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 16a215b4c5..6e95e6dc41 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -276,7 +276,7 @@ public class SceneEntry : SceneEntryBsase #if UNITY_EDITOR [SerializeField] [HideInInspector] - internal AddtiveSceneGroup KnownAdditiveSceneGroup; + internal AdditiveSceneGroup KnownAdditiveSceneGroup; /// /// Updates the dependencies for the additive scene group associated with this SceneEntry @@ -329,7 +329,7 @@ protected override void OnRemovedFromList() } #endif - public AddtiveSceneGroup AdditiveSceneGroup; + public AdditiveSceneGroup AdditiveSceneGroup; } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs index d0736f4d4d..072a4215c0 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs @@ -18,7 +18,7 @@ public class SceneRegistrationEntry : AssetDependency, ISceneRegistrationEntry [HideInInspector] [SerializeField] - private AddtiveSceneGroup m_PreviousAddtiveSceneGroup; + private AdditiveSceneGroup m_PreviousAddtiveSceneGroup; [SerializeField] private SceneAsset m_PrimaryScene; @@ -117,7 +117,7 @@ internal void ValidateBuildSettingsScenes() private string m_PrimarySceneName; [SerializeField] - private AddtiveSceneGroup m_AddtiveSceneGroup; + private AdditiveSceneGroup m_AddtiveSceneGroup; public string GetPrimaryScene() From 82fb5a028f085f07f265746eae7c41835e56636f Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Tue, 29 Jun 2021 11:37:20 -0500 Subject: [PATCH 36/38] fix Went through to re-assign scene assets to some of the SceneRegistration assets that were older versions that had lost their entries (the scenes remained in the build settings but this needed to be updated anyway). SceneRegistraitonEditor needed to make sure the entries list was allocated before trying to assign anything. Adding or already having assigned the same SceneAsset that also references the SceneRegistration could cause the primary scene asset (i.e. one that has the NetworkManager instance that references it) do be deleted from the list. This fixes that issue. --- .../Editor/SceneRegistrationEditor.cs | 7 ++++ .../SceneManagement/SceneRegistration.cs | 6 ++++ .../EnableDisableSceneRegistration.asset | 16 +++++---- .../AdditiveSceneGroup1.asset | 6 ++-- .../AdditiveSceneGroup2.asset | 11 ++++++- .../SceneRegistration/SceneRegistration.asset | 24 ++++++++++++-- .../Samples/SceneRegistration/TestScene.unity | 6 ++-- .../Scenes/SampleSceneRegistration.asset | 11 ++++--- .../ConnectionApprovalSceneRegistration.asset | 9 ++--- ...eneManagerCallbacksSceneRegistration.asset | 16 ++++----- .../RpcTesting/RpcSceneRegistration.asset | 11 ++++--- .../SceneTransitioningRegistration.asset | 20 +++++------ .../ProjectSettings/EditorBuildSettings.asset | 33 +++++++++++++++++++ 13 files changed, 125 insertions(+), 51 deletions(-) diff --git a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs index 31c1b59fdf..96b27192d4 100644 --- a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs +++ b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs @@ -112,7 +112,12 @@ private void AddEntry(ReorderableList list) var newSceneEntry = new SceneEntry(); newSceneEntry.IncludeInBuild = true; newSceneEntry.AddedToList(); + if(m_SceneRegistration.SceneRegistrations == null) + { + m_SceneRegistration.SceneRegistrations = new List(); + } m_SceneRegistration.SceneRegistrations.Add(newSceneEntry); + m_SceneRegistration.ValidateBuildSettingsScenes(); } @@ -131,6 +136,8 @@ private void RemoveEntry(ReorderableList list) m_SceneRegistration.SceneRegistrations.Remove(sceneEntry); } + + m_SceneRegistration.ValidateBuildSettingsScenes(); } } } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 6e95e6dc41..8e3d32f442 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -200,6 +200,12 @@ internal void ValidateBuildSettingsScenes() } } } + + if(NetworkManagerScene != null) + { + AddOrRemoveSceneAsset(NetworkManagerScene, true); + } + } /// diff --git a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset index f07623ba37..ece7923cda 100644 --- a/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.asset @@ -12,11 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: EnableDisableSceneRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} - IncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} - m_KnownAdditiveSceneGroup: {fileID: 0} + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} SceneEntryName: EnableDisableSceneNetworkObject - m_NetworkManagerScene: - NetworkManagerScene: {fileID: 0} + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + m_NetworkManagerScene: EnableDisableSceneNetworkObject + m_KnownSceneRegistrations: [] + NetworkManagerScene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, + type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset index b25112b5b1..5bdc473cf4 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset @@ -12,8 +12,10 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b9f97901b434bd84bb2a433719183485, type: 3} m_Name: AdditiveSceneGroup1 m_EditorClassIdentifier: - m_AdditiveSceneGroups: [] - m_KnownAdditiveSceneGroups: [] + m_AdditiveSceneGroups: + - {fileID: 11400000, guid: 6ad30cb0c1be4f44ba9b86d536988a50, type: 2} + m_KnownAdditiveSceneGroups: + - {fileID: 0} m_AdditiveScenes: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset index 603c0c46f0..d5ff8cb637 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset @@ -14,4 +14,13 @@ MonoBehaviour: m_EditorClassIdentifier: m_AdditiveSceneGroups: [] m_KnownAdditiveSceneGroups: [] - m_AdditiveScenes: [] + m_AdditiveScenes: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: b12634a7636aba845801ca83d4ba61c2, type: 3} + SceneEntryName: AdditiveScene 4 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 9904940443bdd09489233649a5b6e0b8, type: 3} + SceneEntryName: AdditiveScene 5 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 2fc7efd990522b74caaa4cc1b42dfdc5, type: 3} + SceneEntryName: AdditiveScene 6 diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index fe6fdd0872..3218f25039 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -12,8 +12,25 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: SceneRegistration m_EditorClassIdentifier: - SceneRegistrations: [] - m_NetworkManagerScene: + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + SceneEntryName: SceneLevel-1 + KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, + type: 2} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} + SceneEntryName: SceneLevel-2 + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} + SceneEntryName: SceneLevel-3 + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + m_NetworkManagerScene: TestScene m_KnownSceneRegistrations: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} @@ -25,4 +42,5 @@ MonoBehaviour: SceneEntryName: SceneLevel-1 KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - NetworkManagerScene: {fileID: 0} + NetworkManagerScene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, + type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity b/testproject/Assets/Samples/SceneRegistration/TestScene.unity index 038b23b0d9..a1d1332353 100644 --- a/testproject/Assets/Samples/SceneRegistration/TestScene.unity +++ b/testproject/Assets/Samples/SceneRegistration/TestScene.unity @@ -184,7 +184,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 97227792} - SceneRegistration: {fileID: 0} + SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, + type: 2} RegisteredScenes: - TestScene AllowRuntimeSceneChanges: 0 @@ -210,7 +211,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 0} + m_SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, + type: 2} --- !u!4 &97227794 Transform: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Scenes/SampleSceneRegistration.asset b/testproject/Assets/Scenes/SampleSceneRegistration.asset index 23c6d6aa30..8999129763 100644 --- a/testproject/Assets/Scenes/SampleSceneRegistration.asset +++ b/testproject/Assets/Scenes/SampleSceneRegistration.asset @@ -12,12 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: SampleSceneRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} - IncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} - m_KnownAdditiveSceneGroup: {fileID: 0} + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} SceneEntryName: SampleScene + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: SampleScene + m_KnownSceneRegistrations: [] NetworkManagerScene: {fileID: 102900000, guid: 9fc0d4010bbf28b4594072e72b8655ab, type: 3} diff --git a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset index 76e2be0509..d58d5d450c 100644 --- a/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset +++ b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset @@ -12,12 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: ConnectionApprovalSceneRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} - IncludeInBuild: 1 + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} SceneEntryName: ConnectionApprovalTest - m_KnownAdditiveSceneGroup: {fileID: 0} + KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: ConnectionApprovalTest + m_KnownSceneRegistrations: [] NetworkManagerScene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} diff --git a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset index c48417c8b4..c691ddc273 100644 --- a/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.asset @@ -12,17 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: NetworkSceneManagerCallbacksSceneRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 073bd2111475c0643be45b7abe6a97ad, type: 3} - IncludeInBuild: 1 - m_KnownAdditiveSceneGroup: {fileID: 0} - AdditiveSceneGroup: {fileID: 0} - SceneEntryName: SceneWeAreSwitchingFrom - - Scene: {fileID: 102900000, guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f, type: 3} - IncludeInBuild: 1 - m_KnownAdditiveSceneGroup: {fileID: 0} - AdditiveSceneGroup: {fileID: 0} + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: ee4d4a69e7f79bc4c861cd9a4b99dd0f, type: 3} SceneEntryName: SceneWeAreSwitchingTo + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: SceneWeAreSwitchingFrom + m_KnownSceneRegistrations: [] NetworkManagerScene: {fileID: 102900000, guid: 073bd2111475c0643be45b7abe6a97ad, type: 3} diff --git a/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset index c9b48e554a..2006185fb3 100644 --- a/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset +++ b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.asset @@ -12,12 +12,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: RpcSceneRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, type: 3} - IncludeInBuild: 1 - AdditiveSceneGroup: {fileID: 0} - m_KnownAdditiveSceneGroup: {fileID: 0} + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, type: 3} SceneEntryName: RpcTesting + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: RpcTesting + m_KnownSceneRegistrations: [] NetworkManagerScene: {fileID: 102900000, guid: 931469794d88a874998f1d5edd265522, type: 3} diff --git a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset index 972e45eb31..108fdbe08b 100644 --- a/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset @@ -12,22 +12,18 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 180fe42d996da264ab3d32e3fc9033ca, type: 3} m_Name: SceneTransitioningRegistration m_EditorClassIdentifier: - m_SceneRegistrations: - - Scene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} - IncludeInBuild: 1 - SceneEntryName: SceneTransitioningTest - m_KnownAdditiveSceneGroup: {fileID: 0} - AdditiveSceneGroup: {fileID: 0} - - Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} - IncludeInBuild: 1 + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} SceneEntryName: SecondSceneToLoad - m_KnownAdditiveSceneGroup: {fileID: 0} + KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} - - Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} - IncludeInBuild: 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} SceneEntryName: ThirdSceneToLoad - m_KnownAdditiveSceneGroup: {fileID: 0} + KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: SceneTransitioningTest + m_KnownSceneRegistrations: [] NetworkManagerScene: {fileID: 102900000, guid: 1c2375a896b2e8c4a841aa61224b8494, type: 3} diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 822be7b36e..2b1ac77359 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -8,9 +8,42 @@ EditorBuildSettings: - enabled: 1 path: Assets/MainMenu.unity guid: 21c7fd68cda9dd9488fc0cc01f885e39 + - enabled: 1 + path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity + guid: 619b9eba5892d5a4e9dd1d6cafb0059a - enabled: 1 path: Assets/Samples/SamplesMenu.unity guid: 037562c9b1a469f498dfb34256ddf86f + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity + guid: 466e828eb554ee44c900882db6c9d3a7 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + guid: ddb4e18dbd30daf4ab011d3232a63786 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity + guid: c4ebb19d1542fdb4a8fe49b774ab16a0 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity + guid: b12634a7636aba845801ca83d4ba61c2 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity + guid: 9904940443bdd09489233649a5b6e0b8 + - enabled: 1 + path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity + guid: 2fc7efd990522b74caaa4cc1b42dfdc5 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-1.unity + guid: 228aa7771c79e6341a8fa9bc684c5766 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-2.unity + guid: 5add0389cebf7fa438efb6c2ac0a6fe1 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-3.unity + guid: 45a35678967fd6744bae54a375eec459 + - enabled: 1 + path: Assets/Samples/SceneRegistration/TestScene.unity + guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Scenes/SampleScene.unity guid: 9fc0d4010bbf28b4594072e72b8655ab From 46a060cb6e8e7abd4fed9e392227a423d81aec26 Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 1 Jul 2021 12:52:32 -0500 Subject: [PATCH 37/38] refactor - wip This is a mid-way check-point of a new approach that utilizes the multi-scene editing design pattern to determine which additive scenes should be associated with a given SceneEntry. --- .../Editor/SceneHierarchyMonitor.cs | 42 ++ .../SceneHierarchyMonitor.cs.meta} | 2 +- .../Editor/SceneRegistrationEditor.cs | 138 +++++- .../Runtime/Core/NetworkManager.cs | 5 + .../SceneManagement/AdditiveSceneGroup.cs | 15 + .../SceneManagement/SceneRegistration.cs | 260 ++++++++++- .../SceneManagement/SceneRegistrationEntry.cs | 149 ------- .../AdditiveScenes/AdditiveScene 1.unity | 212 ++++----- .../AdditiveScenes/AdditiveScene 2.unity | 160 ++----- .../AdditiveScenes/AdditiveScene 3.unity | 293 ++++++++----- .../AdditiveScenes/AdditiveScene 4.unity | 244 ++++++----- .../AdditiveScenes/AdditiveScene 5.unity | 248 ++++++----- .../AdditiveScenes/AdditiveScene 6.unity | 385 ++++++++++++----- .../SceneRegistration/MLAPIBootStrap.unity | 408 ++++++++++++++++++ ...e.unity.meta => MLAPIBootStrap.unity.meta} | 0 .../SceneRegistration/SceneRegistration.asset | 87 +++- ...estScene.unity => TestNonMultiScene.unity} | 2 + .../TestNonMultiScene.unity.meta | 7 + .../ProjectSettings/EditorBuildSettings.asset | 25 +- 19 files changed, 1774 insertions(+), 908 deletions(-) create mode 100644 com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs rename com.unity.multiplayer.mlapi/{Runtime/SceneManagement/SceneRegistrationEntry.cs.meta => Editor/SceneHierarchyMonitor.cs.meta} (83%) delete mode 100644 com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs create mode 100644 testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity rename testproject/Assets/Samples/SceneRegistration/{TestScene.unity.meta => MLAPIBootStrap.unity.meta} (100%) rename testproject/Assets/Samples/SceneRegistration/{TestScene.unity => TestNonMultiScene.unity} (99%) create mode 100644 testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity.meta diff --git a/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs b/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs new file mode 100644 index 0000000000..e6e509943b --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace MLAPI.Editor +{ + [InitializeOnLoad] + public static class SceneHierarchyMonitor + { + static SceneHierarchyMonitor() + { + EditorApplication.hierarchyChanged += OnHierarchyChanged; + } + + public static readonly List CurrentScenesInHierarchy = new List(); + + public static void RefreshHierarchy() + { + OnHierarchyChanged(); + } + + + + static private void OnHierarchyChanged() + { + var all = Resources.FindObjectsOfTypeAll(typeof(SceneAsset)); + if (all.Count() != CurrentScenesInHierarchy.Count()) + { + CurrentScenesInHierarchy.Clear(); + foreach (var sceneAsset in all) + { + if (!CurrentScenesInHierarchy.Contains(sceneAsset)) + { + CurrentScenesInHierarchy.Add(sceneAsset as SceneAsset); + } + } + } + } + } +} diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta b/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs.meta similarity index 83% rename from com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta rename to com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs.meta index f931424018..63ba6a2fa1 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs.meta +++ b/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9c4b50146588e074881aa52f9648adf9 +guid: a93238e9279f8b14da50c335168eee37 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs index 96b27192d4..f2df77c32c 100644 --- a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs +++ b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using UnityEngine; +using UnityEngine.SceneManagement; using UnityEditor; using UnityEditorInternal; using UnityEditor.SceneManagement; @@ -26,13 +27,15 @@ private void OnEnable() m_NetworkManagerScene = serializedObject.FindProperty(nameof(SceneRegistration.NetworkManagerScene)); m_SceneEntryList = new ReorderableList(serializedObject, serializedObject.FindProperty(nameof(SceneRegistration.SceneRegistrations)), true, true, true, true); - m_SceneEntryList.multiSelect = true; + m_SceneEntryList.multiSelect = false; m_SceneEntryList.onAddCallback = AddEntry; m_SceneEntryList.onRemoveCallback = RemoveEntry; + m_SceneEntryList.onSelectCallback = SelectedItem; + m_SceneEntryList.onChangedCallback = ListChanged; m_SceneEntryList.drawHeaderCallback = rect => EditorGUI.LabelField(rect, "Scene Entries"); - m_SceneEntryList.elementHeight = (4 * (EditorGUIUtility.singleLineHeight + 5)); + m_SceneEntryList.elementHeight = (3 * (EditorGUIUtility.singleLineHeight + 5)) + 10; m_SceneEntryList.drawElementCallback = DrawSceneEntryItem; } @@ -43,10 +46,8 @@ public override bool RequiresConstantRepaint() public override void OnInspectorGUI() { - serializedObject.Update(); - if (m_NetworkManagerScene != null) { @@ -80,39 +81,144 @@ public override void OnInspectorGUI() private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocused) { var sceneEntryItem = m_SceneEntryList.serializedProperty.GetArrayElementAtIndex(index); + var sceneSetupItems = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.m_SavedSceneSetup)); + var sceneEntry = m_SceneRegistration.SceneRegistrations[index]; + sceneEntry.RefreshAdditiveScenes(); var includeInBuild = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.IncludeInBuild)); var sceneEntryItemSceneAsset = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.Scene)); + var sceneAssetLoadMode = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.Mode)); var sceneEntryItemAdditiveSceneGroup = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.AdditiveSceneGroup)); - var labelWidth = 130; - var xpadding = 2; + var labelWidth = 100; + var currentXPosition = rect.x; - EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), $"Scene Entry - {index}"); + EditorGUI.LabelField(new Rect(currentXPosition, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), $"Scene Entry - {index}"); - rect.y += EditorGUIUtility.singleLineHeight + 5; + + if (sceneEntry.IsNetworkManagerScene) + { + GUI.enabled = false; + } //Draw include in build property - EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Include In Build"); - EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth - xpadding, EditorGUIUtility.singleLineHeight), includeInBuild, GUIContent.none); + currentXPosition += labelWidth; + EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, 20, EditorGUIUtility.singleLineHeight), includeInBuild, GUIContent.none); + + if (sceneEntry.IsNetworkManagerScene) + { + GUI.enabled = true; + } + + //Draw include in build label + currentXPosition += 20; + EditorGUI.LabelField(new Rect(currentXPosition, rect.y, rect.width - (currentXPosition - rect.x), EditorGUIUtility.singleLineHeight), "Include In Build"); rect.y += EditorGUIUtility.singleLineHeight + 5; + currentXPosition = rect.x; + + //Draw base scene label + EditorGUI.LabelField(new Rect(currentXPosition, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Base Scene"); + currentXPosition += labelWidth; + + + if (sceneEntry.IsNetworkManagerScene) + { + GUI.enabled = false; + } + + //Draw base scene load mode property + EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, 75, EditorGUIUtility.singleLineHeight), sceneAssetLoadMode, GUIContent.none); + currentXPosition += 75; - EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Base Scene"); - EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth - xpadding, EditorGUIUtility.singleLineHeight), sceneEntryItemSceneAsset, GUIContent.none); + //Draw base scene asset property + EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, rect.width - (currentXPosition - rect.x), EditorGUIUtility.singleLineHeight), sceneEntryItemSceneAsset, GUIContent.none); + if (sceneEntry.IsNetworkManagerScene) + { + GUI.enabled = true; + } rect.y += EditorGUIUtility.singleLineHeight + 5; EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Additive Scenes"); - EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth - xpadding, EditorGUIUtility.singleLineHeight), sceneEntryItemAdditiveSceneGroup, GUIContent.none); + var content = string.Empty; + foreach(var contentVal in sceneEntry.m_SavedSceneSetup) + { + content += $"{SceneRegistration.GetSceneNameFromPath(contentVal.path)},"; + } + GUI.enabled = false; + EditorGUI.TextField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), content); + GUI.enabled = true; + //EditorGUI.MultiPropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), content.ToArray(), sceneSetupItems); + //EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, 100), sceneSetupItems, GUIContent.none); + //EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), sceneEntryItemAdditiveSceneGroup, GUIContent.none); + } + + private Dictionary m_SceneAssetToSceneTable = new Dictionary(); + + private void ListChanged(ReorderableList list) + { + Debug.Log("Things changed!"); } + private void SelectedItem(ReorderableList list) + { + //var currentScene = SceneManager.GetActiveScene(); + //if (m_SceneRegistration.SceneRegistrations != null) + //{ + // if (list.selectedIndices.Count > 0) + // { + // var sceneEntry = m_SceneRegistration.SceneRegistrations[list.selectedIndices[0]]; + // var sceneEntryPath = AssetDatabase.GetAssetPath(sceneEntry.Scene); + // if (sceneEntryPath == currentScene.path) + // { + // SceneHierarchyMonitor.RefreshHierarchy(); + + // var scenesInHierarchy = SceneHierarchyMonitor.CurrentScenesInHierarchy; + // if (sceneEntry.AdditiveSceneGroup != null) + // { + // var additiveScenes = sceneEntry.AdditiveSceneGroup.GetAdditiveSceneAssets(); + // foreach (var sceneAsset in additiveScenes) + // { + // var sceneLoaded = EditorSceneManager.OpenScene(AssetDatabase.GetAssetPath(sceneAsset), OpenSceneMode.Additive); + + // if (!m_SceneAssetToSceneTable.ContainsKey(sceneAsset) && sceneLoaded != null) + // { + // m_SceneAssetToSceneTable.Add(sceneAsset, sceneLoaded); + // } + // } + + // foreach (var sceneAsset in scenesInHierarchy) + // { + // if (sceneAsset == sceneEntry.Scene) + // { + // continue; + // } + // var isVisible = (sceneAsset.hideFlags & HideFlags.HideInHierarchy) != HideFlags.HideInHierarchy; + // if (!additiveScenes.Contains(sceneAsset)) + // { + // if (m_SceneAssetToSceneTable.ContainsKey(sceneAsset)) + // { + // if (EditorSceneManager.CloseScene(m_SceneAssetToSceneTable[sceneAsset], true)) + // { + // m_SceneAssetToSceneTable.Remove(sceneAsset); + // } + // } + // } + // } + // } + // } + // } + //} + } + + private void AddEntry(ReorderableList list) { var newSceneEntry = new SceneEntry(); newSceneEntry.IncludeInBuild = true; newSceneEntry.AddedToList(); - if(m_SceneRegistration.SceneRegistrations == null) + if (m_SceneRegistration.SceneRegistrations == null) { m_SceneRegistration.SceneRegistrations = new List(); } @@ -125,12 +231,12 @@ private void RemoveEntry(ReorderableList list) { var selectedItems = new List(); - foreach(var index in list.selectedIndices) + foreach (var index in list.selectedIndices) { selectedItems.Add(m_SceneRegistration.SceneRegistrations[index]); } - foreach(var sceneEntry in selectedItems) + foreach (var sceneEntry in selectedItems) { sceneEntry.RemovedFromList(); m_SceneRegistration.SceneRegistrations.Remove(sceneEntry); diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index aae36ebbb6..f02c77d755 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -264,6 +264,11 @@ private void OnValidate() m_SceneRegistration = NetworkConfig.SceneRegistration; } + if(m_SceneRegistration != null) + { + m_SceneRegistration.ValidateBuildSettingsScenes(); + } + var activeScene = UnityEngine.SceneManagement.SceneManager.GetActiveScene(); var activeSceneName = activeScene.name; if (!NetworkConfig.RegisteredScenes.Contains(activeSceneName)) diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs index 3a576fd041..22d080c550 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs @@ -133,6 +133,21 @@ internal void ValidateBuildSettingsScenes() } } + internal List GetAdditiveSceneAssets() + { + var additiveSceneAssets = new List(); + + foreach(var additiveSceneEntry in m_AdditiveScenes) + { + if(additiveSceneEntry != null && additiveSceneEntry.Scene != null) + { + additiveSceneAssets.Add(additiveSceneEntry.Scene); + } + } + + return additiveSceneAssets; + } + #endif protected virtual List OnGetAdditiveScenes() diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 8e3d32f442..878da86082 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -6,6 +6,7 @@ #if UNITY_EDITOR using UnityEditor; using UnityEngine.SceneManagement; +using UnityEditor.SceneManagement; using System.Collections.ObjectModel; using System.Collections.Specialized; #endif @@ -24,10 +25,12 @@ public class SceneRegistration : AssetDependency private string m_NetworkManagerScene; #if UNITY_EDITOR - [HideInInspector] [SerializeField] private List m_KnownSceneRegistrations; + + #region Static Methods and Properties + public static string GetSceneNameFromPath(string scenePath) { var begin = scenePath.LastIndexOf("/", StringComparison.Ordinal) + 1; @@ -123,6 +126,7 @@ internal static void AddOrRemoveSceneAsset(SceneAsset scene, bool addScene) } } } + #endregion internal bool AssignedToNetworkManager { @@ -149,14 +153,16 @@ internal void AssignNetworkManagerScene(bool isAssigned = true) if (NetworkManagerScene != null) { m_NetworkManagerScene = NetworkManagerScene.name; - AddOrRemoveSceneAsset(NetworkManagerScene, true); + UpdateNetworkManagerSceneEntry(NetworkManagerScene, true); + //AddOrRemoveSceneAsset(NetworkManagerScene, true); } } else { if (NetworkManagerScene != null) { - AddOrRemoveSceneAsset(NetworkManagerScene, false); + UpdateNetworkManagerSceneEntry(NetworkManagerScene, false); + //AddOrRemoveSceneAsset(NetworkManagerScene, false); } NetworkManagerScene = null; m_NetworkManagerScene = string.Empty; @@ -164,6 +170,44 @@ internal void AssignNetworkManagerScene(bool isAssigned = true) ValidateBuildSettingsScenes(); } + private SceneEntry GetAssociatedSceneEntry(SceneAsset sceneAsset) + { + foreach (var sceneEntry in SceneRegistrations) + { + if (sceneEntry != null && sceneEntry.Scene == sceneAsset) + { + return sceneEntry; + } + } + + return null; + } + + + private void UpdateNetworkManagerSceneEntry(SceneAsset sceneAsset, bool isAdding) + { + if (SceneRegistrations == null) + { + SceneRegistrations = new List(); + } + + var sceneEntry = GetAssociatedSceneEntry(sceneAsset); + + + if(isAdding && sceneEntry == null) + { + var newEntry = new SceneEntry(); + newEntry.IncludeInBuild = true; + newEntry.Scene = sceneAsset; + newEntry.IsNetworkManagerScene = true; + SceneRegistrations.Insert(0,newEntry); //Always make it the zero slot index + } + else if (!isAdding && sceneEntry != null) + { + SceneRegistrations.Remove(sceneEntry); + } + } + /// /// For this asset dependency, we check to see if we have been added to a NetworkManager instance within a scene /// that is contained within the project @@ -174,6 +218,8 @@ protected override bool OnShouldAssetBeIncluded() return AssignedToNetworkManager; } + private bool m_HasInitialized; + private void OnValidate() { ValidateBuildSettingsScenes(); @@ -185,6 +231,11 @@ private void OnValidate() /// internal void ValidateBuildSettingsScenes() { + //NSS TODO: Temporary hack to just assure we receive these messages + EditorSceneManager.sceneClosing -= EditorSceneManager_sceneClosing; + EditorSceneManager.sceneOpened -= EditorSceneManager_sceneOpened; + EditorSceneManager.sceneClosing += EditorSceneManager_sceneClosing; + EditorSceneManager.sceneOpened += EditorSceneManager_sceneOpened; //Cycle through all scenes registered and validate the build settings scenes list if (SceneRegistrations != null && SceneRegistrations.Count > 0) { @@ -201,7 +252,7 @@ internal void ValidateBuildSettingsScenes() } } - if(NetworkManagerScene != null) + if (NetworkManagerScene != null) { AddOrRemoveSceneAsset(NetworkManagerScene, true); } @@ -220,7 +271,92 @@ protected override bool OnIsRootAssetDependency() { return OnShouldAssetBeIncluded(); } + + + private SceneEntry GetSceneEntryFromScene(Scene scene) + { + foreach (var sceneEntry in SceneRegistrations) + { + if (sceneEntry != null && sceneEntry.Scene != null) + { + var sceneEntryPath = AssetDatabase.GetAssetPath(sceneEntry.Scene); + if(sceneEntryPath == scene.path) + { + return sceneEntry; + } + } + } + return null; + } + + private bool AreAnySceneEntriesCurrentlyLoaded() + { + return (GetCurrentlyOpenedSceneEntry() != null); + } + + private SceneEntry GetCurrentlyOpenedSceneEntry() + { + foreach (var sceneEntry in SceneRegistrations) + { + if (sceneEntry != null && sceneEntry.IsCurrentlyOpened) + { + return sceneEntry; + } + } + return null; + } + + + internal void RefreshCurrentlyOpenedSceneEntry() + { + var openedSceneEntry = GetCurrentlyOpenedSceneEntry(); + if (openedSceneEntry != null) + { + openedSceneEntry.RefreshAdditiveScenes(); + } + } + + + private void EditorSceneManager_sceneOpened(Scene scene, OpenSceneMode mode) + { + var sceneEntry = GetSceneEntryFromScene(scene); + if (sceneEntry != null) + { + // Circular reference check: + // A base (master) scene of a SceneEntry cannot reference another base scene that belongs to + // a SceneEntry of the same SceneRegistration. + if(!AreAnySceneEntriesCurrentlyLoaded()) + { + sceneEntry.BaseSceneLoaded(); + } + else + { + Debug.LogError($"Detected SceneEntry {scene.name} being added to another base(master) scene from another SceneEntry! Circular references are not allowed!"); + sceneEntry.IsCurrentlyOpened = false; + EditorSceneManager.CloseScene(scene, true); + } + } + else + { + RefreshCurrentlyOpenedSceneEntry(); + } + } + + /// + /// Trap to detect if there were any updates made to the scene hierarchy + /// + /// + /// + private void EditorSceneManager_sceneClosing(Scene scene, bool removingScene) + { + var sceneEntry = GetSceneEntryFromScene(scene); + if (sceneEntry != null) + { + sceneEntry.BaseSceneUnloadeding(); + } + } #endif + /// /// Invoked to generate the hash value for the NetworkConfig comparison when a client is connecting /// @@ -272,6 +408,18 @@ public List GetAllScenes() } } +#if UNITY_EDITOR + [Serializable] + public class NetworkSceneSetup:SceneSetup + { + + + public SceneAsset SceneAsset; + } + +#endif + + /// /// A container class to hold the editor specific assets and /// the scene name that it is pointing to for runtime @@ -279,11 +427,102 @@ public List GetAllScenes() [Serializable] public class SceneEntry : SceneEntryBsase { + + public AdditiveSceneGroup AdditiveSceneGroup; + #if UNITY_EDITOR + + internal bool IsCurrentlyOpened; + [SerializeField] + internal LoadSceneMode Mode; + + [ReadOnlyProperty] + [SerializeField] + internal List m_SavedSceneSetup; + [HideInInspector] + [SerializeField] + private Dictionary m_SceneSetupToSceneAssetTable = new Dictionary(); + + [HideInInspector] + [SerializeField] + internal bool IsNetworkManagerScene; + + [HideInInspector] + [SerializeField] internal AdditiveSceneGroup KnownAdditiveSceneGroup; + + private void ValidateSceneSetupToSceneAssetTable() + { + foreach(var keyPair in m_SceneSetupToSceneAssetTable) + { + var sceneAssetPath = AssetDatabase.GetAssetPath(keyPair.Value); + if(keyPair.Key.path != sceneAssetPath) + { + Debug.LogWarning($"Detected SceneAsset name or path change from {keyPair.Key.path} to {sceneAssetPath}"); + keyPair.Key.path = sceneAssetPath; + } + } + } + + internal void BaseSceneLoaded() + { + IsCurrentlyOpened = true; + ValidateSceneSetupToSceneAssetTable(); + var currentSceneSetup = EditorSceneManager.GetSceneManagerSetup(); + + var sceneEntryPath = AssetDatabase.GetAssetPath(Scene); + foreach (var sceneSetup in m_SavedSceneSetup) + { + if (sceneEntryPath != sceneSetup.path) + { + if (!currentSceneSetup.Contains(sceneSetup)) + { + if(sceneSetup.isLoaded) + { + EditorSceneManager.OpenScene(sceneSetup.path, OpenSceneMode.Additive); + } + else + { + EditorSceneManager.OpenScene(sceneSetup.path, OpenSceneMode.AdditiveWithoutLoading); + } + } + } + } + } + + private void RebuildSceneSetupToSceneAssetTable() + { + m_SceneSetupToSceneAssetTable = new Dictionary(); + foreach(var sceneSetup in m_SavedSceneSetup) + { + var sceneAsset = AssetDatabase.LoadAssetAtPath(sceneSetup.path); + m_SceneSetupToSceneAssetTable.Add(sceneSetup, sceneAsset); + } + } + + internal void BaseSceneUnloadeding() + { + if (IsCurrentlyOpened) + { + IsCurrentlyOpened = false; + RefreshAdditiveScenes(); + } + } + + internal void RefreshAdditiveScenes() + { + m_SavedSceneSetup = new List(EditorSceneManager.GetSceneManagerSetup()); + RebuildSceneSetupToSceneAssetTable(); + } + + internal void UpdateAdditiveScenes() + { + + } + /// /// Updates the dependencies for the additive scene group associated with this SceneEntry /// @@ -326,16 +565,19 @@ protected override void OnAddedToList() protected override void OnRemovedFromList() { - IncludeInBuild = false; - if (Scene != null) + if (!IsNetworkManagerScene) { - SceneRegistration.AddOrRemoveSceneAsset(Scene, false); + IncludeInBuild = false; + if (Scene != null) + { + SceneRegistration.AddOrRemoveSceneAsset(Scene, false); + } + UpdateAdditiveSceneGroup(); } - UpdateAdditiveSceneGroup(); } #endif - public AdditiveSceneGroup AdditiveSceneGroup; + } diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs deleted file mode 100644 index 072a4215c0..0000000000 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistrationEntry.cs +++ /dev/null @@ -1,149 +0,0 @@ -using System; -using UnityEngine; -using MLAPI.Serialization; -#if UNITY_EDITOR -using UnityEditor; -#endif - -namespace MLAPI.SceneManagement -{ - [CreateAssetMenu(fileName = "SceneRegistrationEntry", menuName = "MLAPI/SceneManagement/SceneRegistrationEntry")] - [Serializable] - public class SceneRegistrationEntry : AssetDependency, ISceneRegistrationEntry - { -#if UNITY_EDITOR - [HideInInspector] - [SerializeField] - private SceneAsset m_PreviousPrimaryScene; - - [HideInInspector] - [SerializeField] - private AdditiveSceneGroup m_PreviousAddtiveSceneGroup; - - [SerializeField] - private SceneAsset m_PrimaryScene; - - [Tooltip("When set to true, this will automatically register the primary scene with the build settings scenes in build list. If false, then the scene has to be manually added or will not be included in the build.")] - [SerializeField] - private bool m_AutoIncludeInBuild = true; //Default to true - - internal bool ShouldIncludeInBuildSettings() - { - var belongsToRoot = BelongsToRootAssetBranch(); - return (belongsToRoot && m_AutoIncludeInBuild); - } - - protected override bool OnShouldAssetBeIncluded() - { - return m_AutoIncludeInBuild; - } - - private void OnValidate() - { - ValidateBuildSettingsScenes(); - } - - /// - /// For scene management related usage, currently this only needs to invoke the - /// ValidateBuildSettingsScenes method. - /// Note: more complex logic could be added here to provide additional clean up - /// - /// - protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) - { - ValidateBuildSettingsScenes(); - } - - /// - /// For scene management related usage, currently this only needs to invoke the - /// ValidateBuildSettingsScenes method. - /// Note: more complex logic could be added here to provide additional dependency - /// registration related actions. - /// - /// - protected override void OnDependecyAdded(IAssetDependency dependencyAdded) - { - ValidateBuildSettingsScenes(); - } - - internal void ValidateBuildSettingsScenes() - { - if (m_PrimaryScene != m_PreviousPrimaryScene) - { - // If we had a different scene, then remove it from the build settings - if (m_PreviousPrimaryScene != null) - { - SceneRegistration.AddOrRemoveSceneAsset(m_PreviousPrimaryScene, false); - } - } - - // If the newly assigned scene is not null - if (m_PrimaryScene != null) - { - // As long as we should include this scene registration entry, then add it to the build settings list of scenes to be included - SceneRegistration.AddOrRemoveSceneAsset(m_PrimaryScene, ShouldIncludeInBuildSettings()); - } - - m_PreviousPrimaryScene = m_PrimaryScene; - - if (m_PrimaryScene != null) - { - m_PrimarySceneName = m_PrimaryScene.name; - } - - if (m_AddtiveSceneGroup != null) - { - m_AddtiveSceneGroup.AddDependency(this); - m_AddtiveSceneGroup.ValidateBuildSettingsScenes(); - } - if (m_PreviousAddtiveSceneGroup != m_AddtiveSceneGroup) - { - if (m_PreviousAddtiveSceneGroup != null) - { - m_PreviousAddtiveSceneGroup.RemoveDependency(this); - m_PreviousAddtiveSceneGroup.ValidateBuildSettingsScenes(); - } - m_PreviousAddtiveSceneGroup = m_AddtiveSceneGroup; - } - } -#endif - - [SerializeField] - [HideInInspector] - internal uint SceneIdentifier; - - [HideInInspector] - [SerializeField] - private string m_PrimarySceneName; - - [SerializeField] - private AdditiveSceneGroup m_AddtiveSceneGroup; - - - public string GetPrimaryScene() - { - return m_PrimarySceneName; - } - - protected override void OnWriteHashSynchValues(NetworkWriter writer) - { - if (m_PrimarySceneName != null || m_PrimarySceneName != string.Empty) - { - writer.WriteString(m_PrimarySceneName); - } - - if (m_AddtiveSceneGroup != null) - { - m_AddtiveSceneGroup.WriteHashSynchValues(writer); - } - } - } - - public interface ISceneRegistrationEntry - { - string GetPrimaryScene(); - } - -} - - diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity index 9451afbee4..44dedf19ee 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &594180789 +--- !u!1 &614498862 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,92 +131,89 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 594180791} - - component: {fileID: 594180790} + - component: {fileID: 614498863} m_Layer: 0 - m_Name: Directional Light + m_Name: AdditiveScene1_Art_Asset (4) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &594180790 -Light: +--- !u!4 &614498863 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &594180791 + m_GameObject: {fileID: 614498862} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &871741752 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 871741753} + m_Layer: 0 + m_Name: AdditiveScene1_Art_Asset (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &871741753 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 871741752} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1571509635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1571509636} + m_Layer: 0 + m_Name: AdditiveScene1_Art_Asset (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1571509636 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} + m_GameObject: {fileID: 1571509635} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &945668414 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1848777444 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -224,75 +221,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 945668417} - - component: {fileID: 945668416} - - component: {fileID: 945668415} + - component: {fileID: 1848777445} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: AdditiveScene1_Art_Asset (3) + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &945668415 -AudioListener: +--- !u!4 &1848777445 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_Enabled: 1 ---- !u!20 &945668416 -Camera: + m_GameObject: {fileID: 1848777444} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1998425712 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &945668417 + serializedVersion: 6 + m_Component: + - component: {fileID: 1998425713} + m_Layer: 0 + m_Name: AdditiveScene1_Art_Asset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1998425713 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 1998425712} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity index 9451afbee4..4dece53efb 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &594180789 +--- !u!1 &1345532957 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,92 +131,29 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 594180791} - - component: {fileID: 594180790} + - component: {fileID: 1345532958} m_Layer: 0 - m_Name: Directional Light + m_Name: AdditiveScene2_Art_Asset (1) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &594180790 -Light: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &594180791 +--- !u!4 &1345532958 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} + m_GameObject: {fileID: 1345532957} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &945668414 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1416688333 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -224,75 +161,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 945668417} - - component: {fileID: 945668416} - - component: {fileID: 945668415} + - component: {fileID: 1416688334} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: AdditiveScene2_Art_Asset (2) + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &945668415 -AudioListener: +--- !u!4 &1416688334 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_Enabled: 1 ---- !u!20 &945668416 -Camera: + m_GameObject: {fileID: 1416688333} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1565348952 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &945668417 + serializedVersion: 6 + m_Component: + - component: {fileID: 1565348953} + m_Layer: 0 + m_Name: AdditiveScene2_Art_Asset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1565348953 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 1565348952} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity index 9451afbee4..b09814c4d5 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &594180789 +--- !u!1 &578967051 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,92 +131,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 594180791} - - component: {fileID: 594180790} + - component: {fileID: 578967053} + - component: {fileID: 578967052} m_Layer: 0 - m_Name: Directional Light + m_Name: AdditiveScene3_NetworkObject (3) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &594180790 -Light: +--- !u!114 &578967052 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} + m_GameObject: {fileID: 578967051} m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &594180791 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 124254175 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &578967053 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} + m_GameObject: {fileID: 578967051} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &945668414 + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &694829232 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -224,78 +178,183 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 945668417} - - component: {fileID: 945668416} - - component: {fileID: 945668415} + - component: {fileID: 694829234} + - component: {fileID: 694829233} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: AdditiveScene3_NetworkObject (2) + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &945668415 -AudioListener: +--- !u!114 &694829233 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 694829232} m_Enabled: 1 ---- !u!20 &945668416 -Camera: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1944555412 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &694829234 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694829232} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &836867574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 836867576} + - component: {fileID: 836867575} + m_Layer: 0 + m_Name: AdditiveScene3_NetworkObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &836867575 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 836867574} m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &945668417 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1358940443 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &836867576 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 836867574} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1211865636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1211865638} + - component: {fileID: 1211865637} + m_Layer: 0 + m_Name: AdditiveScene3_NetworkObject (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1211865637 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1211865636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 4277240827 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1211865638 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1211865636} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1868470260 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1868470262} + - component: {fileID: 1868470261} + m_Layer: 0 + m_Name: AdditiveScene3_NetworkObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1868470261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868470260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 2566769445 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1868470262 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1868470260} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity index 9451afbee4..0bfc67f2e5 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &594180789 +--- !u!1 &20108313 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,92 +131,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 594180791} - - component: {fileID: 594180790} + - component: {fileID: 20108315} + - component: {fileID: 20108314} m_Layer: 0 - m_Name: Directional Light + m_Name: AdditiveScene4_NetworkObject (1) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &594180790 -Light: +--- !u!114 &20108314 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} + m_GameObject: {fileID: 20108313} m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &594180791 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1357329845 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &20108315 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} + m_GameObject: {fileID: 20108313} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &945668414 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &107897982 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -224,76 +178,134 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 945668417} - - component: {fileID: 945668416} - - component: {fileID: 945668415} + - component: {fileID: 107897984} + - component: {fileID: 107897983} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: AdditiveScene4_NetworkObject (3) + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &945668415 -AudioListener: +--- !u!114 &107897983 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 107897982} m_Enabled: 1 ---- !u!20 &945668416 -Camera: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3675555766 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &107897984 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107897982} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1203076993 +GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + serializedVersion: 6 + m_Component: + - component: {fileID: 1203076995} + - component: {fileID: 1203076994} + m_Layer: 0 + m_Name: AdditiveScene4_NetworkObject (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1203076994 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203076993} m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &945668417 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1494453370 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1203076995 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1203076993} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1734227085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1734227087} + - component: {fileID: 1734227086} + m_Layer: 0 + m_Name: AdditiveScene4_NetworkObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1734227086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734227085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3210072936 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1734227087 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 1734227085} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity index 9451afbee4..e8f4f12c77 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &594180789 +--- !u!1 &735085061 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,92 +131,46 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 594180791} - - component: {fileID: 594180790} + - component: {fileID: 735085063} + - component: {fileID: 735085062} m_Layer: 0 - m_Name: Directional Light + m_Name: AdditiveScene5_NetworkObject (3) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &594180790 -Light: +--- !u!114 &735085062 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} + m_GameObject: {fileID: 735085061} m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &594180791 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1184078900 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &735085063 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} + m_GameObject: {fileID: 735085061} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &945668414 + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1477172254 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -224,78 +178,136 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 945668417} - - component: {fileID: 945668416} - - component: {fileID: 945668415} + - component: {fileID: 1477172256} + - component: {fileID: 1477172255} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: AdditiveScene5_NetworkObject + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &945668415 -AudioListener: +--- !u!114 &1477172255 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 1477172254} m_Enabled: 1 ---- !u!20 &945668416 -Camera: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1332301483 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1477172256 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 1477172254} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1623957997 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1623957999} + - component: {fileID: 1623957998} + m_Layer: 0 + m_Name: AdditiveScene5_NetworkObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1623957998 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1623957997} m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &945668417 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3355738660 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1623957999 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 1623957997} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2031397121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2031397123} + - component: {fileID: 2031397122} + m_Layer: 0 + m_Name: AdditiveScene5_NetworkObject (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2031397122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2031397121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 111649761 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &2031397123 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2031397121} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity index 9451afbee4..7193bd9183 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &594180789 +--- !u!1 &69588872 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,92 +131,93 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 594180791} - - component: {fileID: 594180790} + - component: {fileID: 69588874} + - component: {fileID: 69588873} m_Layer: 0 - m_Name: Directional Light + m_Name: AdditiveScene6_NetworkObject (6) m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &594180790 -Light: +--- !u!114 &69588873 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} + m_GameObject: {fileID: 69588872} m_Enabled: 1 - serializedVersion: 10 - m_Type: 1 - m_Shape: 0 - m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} - m_Intensity: 1 - m_Range: 10 - m_SpotAngle: 30 - m_InnerSpotAngle: 21.80208 - m_CookieSize: 10 - m_Shadows: - m_Type: 2 - m_Resolution: -1 - m_CustomResolution: -1 - m_Strength: 1 - m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 - m_CullingMatrixOverride: - e00: 1 - e01: 0 - e02: 0 - e03: 0 - e10: 0 - e11: 1 - e12: 0 - e13: 0 - e20: 0 - e21: 0 - e22: 1 - e23: 0 - e30: 0 - e31: 0 - e32: 0 - e33: 1 - m_UseCullingMatrixOverride: 0 - m_Cookie: {fileID: 0} - m_DrawHalo: 0 - m_Flare: {fileID: 0} - m_RenderMode: 0 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingLayerMask: 1 - m_Lightmapping: 4 - m_LightShadowCasterMode: 0 - m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 - m_ColorTemperature: 6570 - m_UseColorTemperature: 0 - m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} - m_UseBoundingSphereOverride: 0 - m_UseViewFrustumForShadowCasterCull: 1 - m_ShadowRadius: 0 - m_ShadowAngle: 0 ---- !u!4 &594180791 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3932520616 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &69588874 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69588872} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &281956619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 281956621} + - component: {fileID: 281956620} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &281956620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 281956619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 2121431249 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &281956621 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 594180789} - m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} - m_LocalPosition: {x: 0, y: 3, z: 0} + m_GameObject: {fileID: 281956619} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &945668414 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &305931844 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -224,78 +225,230 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 945668417} - - component: {fileID: 945668416} - - component: {fileID: 945668415} + - component: {fileID: 305931846} + - component: {fileID: 305931845} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: AdditiveScene6_NetworkObject (4) + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!81 &945668415 -AudioListener: +--- !u!114 &305931845 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 305931844} m_Enabled: 1 ---- !u!20 &945668416 -Camera: + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 242497069 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &305931846 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} + m_GameObject: {fileID: 305931844} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &474122727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 474122729} + - component: {fileID: 474122728} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &474122728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 474122727} m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &945668417 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1264880708 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &474122729 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 474122727} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &905652537 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 905652539} + - component: {fileID: 905652538} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &905652538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 905652537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3861672200 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &905652539 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 945668414} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 905652537} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1235898086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1235898088} + - component: {fileID: 1235898087} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1235898087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1235898086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1859951412 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1235898088 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1235898086} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1390329126 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1390329128} + - component: {fileID: 1390329127} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1390329127 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390329126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 1346082943 + AlwaysReplicateAsRoot: 0 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 +--- !u!4 &1390329128 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1390329126} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity new file mode 100644 index 0000000000..4bf6e4cb30 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity @@ -0,0 +1,408 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &97227791 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 97227794} + - component: {fileID: 97227793} + - component: {fileID: 97227792} + m_Layer: 0 + m_Name: NetworkManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &97227792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97227791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} + m_Name: + m_EditorClassIdentifier: + MessageBufferSize: 5120 + MaxConnections: 100 + MaxSentMessageQueueSize: 128 + ConnectAddress: 127.0.0.1 + ConnectPort: 7777 + ServerListenPort: 7777 + ServerWebsocketListenPort: 8887 + SupportWebsocket: 0 + Channels: [] + UseMLAPIRelay: 0 + MLAPIRelayAddress: 184.72.104.138 + MLAPIRelayPort: 8888 + MessageSendMode: 0 +--- !u!114 &97227793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97227791} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} + m_Name: + m_EditorClassIdentifier: + DontDestroy: 1 + RunInBackground: 1 + LogLevel: 1 + NetworkConfig: + ProtocolVersion: 0 + NetworkTransport: {fileID: 97227792} + SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, + type: 2} + RegisteredScenes: + - TestScene + - AdditiveScene 1 + - MLAPIBootStrap + - MLAPIBootStrap_A + AllowRuntimeSceneChanges: 0 + PlayerPrefab: {fileID: 0} + NetworkPrefabs: [] + ReceiveTickrate: 64 + NetworkTickIntervalSec: 0.05 + MaxReceiveEventsPerTickRate: 500 + EventTickrate: 64 + ClientConnectionBufferTimeout: 10 + ConnectionApproval: 0 + ConnectionData: + EnableTimeResync: 0 + TimeResyncInterval: 30 + EnableNetworkVariable: 1 + EnsureNetworkVariableLengthSafety: 0 + EnableSceneManagement: 1 + ForceSamePrefabs: 1 + RecycleNetworkIds: 1 + NetworkIdRecycleDelay: 120 + RpcHashSize: 0 + LoadSceneTimeOut: 120 + EnableMessageBuffering: 1 + MessageBufferTimeout: 20 + EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, + type: 2} +--- !u!4 &97227794 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 97227791} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &597235108 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 597235110} + - component: {fileID: 597235109} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &597235109 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597235108} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &597235110 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 597235108} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1069309381 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1069309384} + - component: {fileID: 1069309383} + - component: {fileID: 1069309382} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1069309382 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069309381} + m_Enabled: 1 +--- !u!20 &1069309383 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069309381} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1069309384 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1069309381} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/TestScene.unity.meta rename to testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index 3218f25039..118340da74 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -13,34 +13,107 @@ MonoBehaviour: m_Name: SceneRegistration m_EditorClassIdentifier: SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, type: 3} + SceneEntryName: TestScene + AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: + - m_Path: Assets/Samples/SceneRegistration/TestScene.unity + m_IsLoaded: 1 + m_IsActive: 1 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + IsNetworkManagerScene: 1 + KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} SceneEntryName: SceneLevel-1 - KnownAdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} - AdditiveSceneGroup: {fileID: 11400000, guid: 863734e265d8f81478833cbf1902f460, - type: 2} + AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: + - m_Path: Assets/Samples/SceneRegistration/SceneLevel-1.unity + m_IsLoaded: 1 + m_IsActive: 1 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} SceneEntryName: SceneLevel-2 - KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: + - m_Path: Assets/Samples/SceneRegistration/SceneLevel-2.unity + m_IsLoaded: 1 + m_IsActive: 1 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 45a35678967fd6744bae54a375eec459, type: 3} SceneEntryName: SceneLevel-3 + AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: + - m_Path: Assets/Samples/SceneRegistration/SceneLevel-3.unity + m_IsLoaded: 1 + m_IsActive: 1 + m_IsSubScene: 0 + IsNetworkManagerScene: 0 KnownAdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 91c53cf6ac2a36447889e211d81d1e23, type: 3} + SceneEntryName: SceneLevel-4 AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: [] + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} m_NetworkManagerScene: TestScene m_KnownSceneRegistrations: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} SceneEntryName: SceneLevel-1 - KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: [] + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} SceneEntryName: SceneLevel-1 - KnownAdditiveSceneGroup: {fileID: 0} AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: [] + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} NetworkManagerScene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, type: 3} diff --git a/testproject/Assets/Samples/SceneRegistration/TestScene.unity b/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity similarity index 99% rename from testproject/Assets/Samples/SceneRegistration/TestScene.unity rename to testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity index a1d1332353..0970db391d 100644 --- a/testproject/Assets/Samples/SceneRegistration/TestScene.unity +++ b/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity @@ -188,6 +188,8 @@ MonoBehaviour: type: 2} RegisteredScenes: - TestScene + - TestWithAdditiveScenes + - TestNonMultiScene AllowRuntimeSceneChanges: 0 PlayerPrefab: {fileID: 0} NetworkPrefabs: [] diff --git a/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity.meta new file mode 100644 index 0000000000..16458012f2 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2cdf04b4670c9c042a7d467bf6c10821 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index 2b1ac77359..a4abc1d973 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -15,23 +15,11 @@ EditorBuildSettings: path: Assets/Samples/SamplesMenu.unity guid: 037562c9b1a469f498dfb34256ddf86f - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity - guid: 466e828eb554ee44c900882db6c9d3a7 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity - guid: ddb4e18dbd30daf4ab011d3232a63786 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity - guid: c4ebb19d1542fdb4a8fe49b774ab16a0 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity - guid: b12634a7636aba845801ca83d4ba61c2 - - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity - guid: 9904940443bdd09489233649a5b6e0b8 + path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity + guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 - path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity - guid: 2fc7efd990522b74caaa4cc1b42dfdc5 + path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity + guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Samples/SceneRegistration/SceneLevel-1.unity guid: 228aa7771c79e6341a8fa9bc684c5766 @@ -42,7 +30,10 @@ EditorBuildSettings: path: Assets/Samples/SceneRegistration/SceneLevel-3.unity guid: 45a35678967fd6744bae54a375eec459 - enabled: 1 - path: Assets/Samples/SceneRegistration/TestScene.unity + path: Assets/Samples/SceneRegistration/SceneLevel-4.unity + guid: 91c53cf6ac2a36447889e211d81d1e23 + - enabled: 1 + path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Scenes/SampleScene.unity From cc09a44cfaccff7402f967390c7123468aaadb0d Mon Sep 17 00:00:00 2001 From: NoelStephensUnity <73188597+NoelStephensUnity@users.noreply.github.com> Date: Thu, 1 Jul 2021 15:44:40 -0500 Subject: [PATCH 38/38] refactor-wip Some minor debug related changes and placed holder. --- .../Editor/SceneRegistrationEditor.cs | 31 +++-- .../SceneManagement/SceneRegistration.cs | 24 ++-- .../LegacySceneRegistrationAssets.meta | 8 ++ .../AdditiveSceneGroup1.asset | 0 .../AdditiveSceneGroup1.asset.meta | 0 .../AdditiveSceneGroup2.asset | 0 .../AdditiveSceneGroup2.asset.meta | 0 .../AdditiveScenes/AdditiveScene 5.unity | 4 +- .../SceneRegistration/MLAPIBootStrap.unity | 4 +- ...SceneLevel-1.unity => SceneLevel-1A.unity} | 0 ...-1.unity.meta => SceneLevel-1A.unity.meta} | 0 .../SceneRegistration/SceneRegistration.asset | 62 ++++++---- ...ltiScene.unity => UnregisteredScene.unity} | 106 ------------------ ...nity.meta => UnregisteredScene.unity.meta} | 0 .../BurstAotSettings_StandaloneWindows.json | 16 +++ .../ProjectSettings/EditorBuildSettings.asset | 9 +- 16 files changed, 103 insertions(+), 161 deletions(-) create mode 100644 testproject/Assets/Samples/LegacySceneRegistrationAssets.meta rename testproject/Assets/Samples/{SceneRegistration => LegacySceneRegistrationAssets}/AdditiveSceneGroup1.asset (100%) rename testproject/Assets/Samples/{SceneRegistration => LegacySceneRegistrationAssets}/AdditiveSceneGroup1.asset.meta (100%) rename testproject/Assets/Samples/{SceneRegistration => LegacySceneRegistrationAssets}/AdditiveSceneGroup2.asset (100%) rename testproject/Assets/Samples/{SceneRegistration => LegacySceneRegistrationAssets}/AdditiveSceneGroup2.asset.meta (100%) rename testproject/Assets/Samples/SceneRegistration/{SceneLevel-1.unity => SceneLevel-1A.unity} (100%) rename testproject/Assets/Samples/SceneRegistration/{SceneLevel-1.unity.meta => SceneLevel-1A.unity.meta} (100%) rename testproject/Assets/Samples/SceneRegistration/{TestNonMultiScene.unity => UnregisteredScene.unity} (72%) rename testproject/Assets/Samples/SceneRegistration/{TestNonMultiScene.unity.meta => UnregisteredScene.unity.meta} (100%) create mode 100644 testproject/ProjectSettings/BurstAotSettings_StandaloneWindows.json diff --git a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs index f2df77c32c..34a1c457ca 100644 --- a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs +++ b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs @@ -83,7 +83,7 @@ private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocu var sceneEntryItem = m_SceneEntryList.serializedProperty.GetArrayElementAtIndex(index); var sceneSetupItems = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.m_SavedSceneSetup)); var sceneEntry = m_SceneRegistration.SceneRegistrations[index]; - sceneEntry.RefreshAdditiveScenes(); + //sceneEntry.RefreshAdditiveScenes(); var includeInBuild = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.IncludeInBuild)); var sceneEntryItemSceneAsset = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.Scene)); var sceneAssetLoadMode = sceneEntryItem.FindPropertyRelative(nameof(SceneEntry.Mode)); @@ -94,8 +94,7 @@ private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocu EditorGUI.LabelField(new Rect(currentXPosition, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), $"Scene Entry - {index}"); - - if (sceneEntry.IsNetworkManagerScene) + if (sceneEntry != null && sceneEntry.IsNetworkManagerScene) { GUI.enabled = false; } @@ -104,7 +103,7 @@ private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocu currentXPosition += labelWidth; EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, 20, EditorGUIUtility.singleLineHeight), includeInBuild, GUIContent.none); - if (sceneEntry.IsNetworkManagerScene) + if (sceneEntry != null && sceneEntry.IsNetworkManagerScene) { GUI.enabled = true; } @@ -121,7 +120,7 @@ private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocu currentXPosition += labelWidth; - if (sceneEntry.IsNetworkManagerScene) + if (sceneEntry != null && sceneEntry.IsNetworkManagerScene) { GUI.enabled = false; } @@ -133,7 +132,7 @@ private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocu //Draw base scene asset property EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, rect.width - (currentXPosition - rect.x), EditorGUIUtility.singleLineHeight), sceneEntryItemSceneAsset, GUIContent.none); - if (sceneEntry.IsNetworkManagerScene) + if (sceneEntry != null && sceneEntry.IsNetworkManagerScene) { GUI.enabled = true; } @@ -141,14 +140,22 @@ private void DrawSceneEntryItem(Rect rect, int index, bool isActive, bool isFocu rect.y += EditorGUIUtility.singleLineHeight + 5; EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Additive Scenes"); - var content = string.Empty; - foreach(var contentVal in sceneEntry.m_SavedSceneSetup) + + if(sceneEntry != null) { - content += $"{SceneRegistration.GetSceneNameFromPath(contentVal.path)},"; + var content = string.Empty; + if (sceneEntry.m_SavedSceneSetup != null) + { + foreach (var contentVal in sceneEntry.m_SavedSceneSetup) + { + content += $"{SceneRegistration.GetSceneNameFromPath(contentVal.path)},"; + } + GUI.enabled = false; + EditorGUI.TextField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), content); + GUI.enabled = true; + } } - GUI.enabled = false; - EditorGUI.TextField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), content); - GUI.enabled = true; + //EditorGUI.MultiPropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), content.ToArray(), sceneSetupItems); //EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, 100), sceneSetupItems, GUIContent.none); //EditorGUI.PropertyField(new Rect(rect.x + labelWidth, rect.y, rect.width - labelWidth, EditorGUIUtility.singleLineHeight), sceneEntryItemAdditiveSceneGroup, GUIContent.none); diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs index 878da86082..3f6fee04b0 100644 --- a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -472,21 +472,23 @@ internal void BaseSceneLoaded() IsCurrentlyOpened = true; ValidateSceneSetupToSceneAssetTable(); var currentSceneSetup = EditorSceneManager.GetSceneManagerSetup(); - - var sceneEntryPath = AssetDatabase.GetAssetPath(Scene); - foreach (var sceneSetup in m_SavedSceneSetup) + if (Scene != null) { - if (sceneEntryPath != sceneSetup.path) + var sceneEntryPath = AssetDatabase.GetAssetPath(Scene); + foreach (var sceneSetup in m_SavedSceneSetup) { - if (!currentSceneSetup.Contains(sceneSetup)) + if (sceneEntryPath != sceneSetup.path) { - if(sceneSetup.isLoaded) - { - EditorSceneManager.OpenScene(sceneSetup.path, OpenSceneMode.Additive); - } - else + if (!currentSceneSetup.Contains(sceneSetup)) { - EditorSceneManager.OpenScene(sceneSetup.path, OpenSceneMode.AdditiveWithoutLoading); + if (sceneSetup.isLoaded) + { + EditorSceneManager.OpenScene(sceneSetup.path, OpenSceneMode.Additive); + } + else + { + EditorSceneManager.OpenScene(sceneSetup.path, OpenSceneMode.AdditiveWithoutLoading); + } } } } diff --git a/testproject/Assets/Samples/LegacySceneRegistrationAssets.meta b/testproject/Assets/Samples/LegacySceneRegistrationAssets.meta new file mode 100644 index 0000000000..1c88b5ae6c --- /dev/null +++ b/testproject/Assets/Samples/LegacySceneRegistrationAssets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 990217ee8a511894abc0b3d3b413b22c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset rename to testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset.meta b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup1.asset.meta rename to testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset rename to testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset.meta b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/AdditiveSceneGroup2.asset.meta rename to testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset.meta diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity index e8f4f12c77..f191822692 100644 --- a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity @@ -181,7 +181,7 @@ GameObject: - component: {fileID: 1477172256} - component: {fileID: 1477172255} m_Layer: 0 - m_Name: AdditiveScene5_NetworkObject + m_Name: AdditiveScene5_NetworkObjectA m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -199,7 +199,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} m_Name: m_EditorClassIdentifier: - GlobalObjectIdHash: 1332301483 + GlobalObjectIdHash: 3323398575 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 AutoObjectParentSync: 1 diff --git a/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity index 4bf6e4cb30..f63a4a7ded 100644 --- a/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity +++ b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity @@ -187,10 +187,8 @@ MonoBehaviour: SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, type: 2} RegisteredScenes: - - TestScene - - AdditiveScene 1 - MLAPIBootStrap - - MLAPIBootStrap_A + - MLAPIBootStrap AllowRuntimeSceneChanges: 0 PlayerPrefab: {fileID: 0} NetworkPrefabs: [] diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity rename to testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity.meta b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/SceneLevel-1.unity.meta rename to testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity.meta diff --git a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset index 118340da74..f59fd0d8e4 100644 --- a/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -15,31 +15,19 @@ MonoBehaviour: SceneRegistrations: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, type: 3} - SceneEntryName: TestScene + SceneEntryName: MLAPIBootStrap AdditiveSceneGroup: {fileID: 0} Mode: 0 m_SavedSceneSetup: - - m_Path: Assets/Samples/SceneRegistration/TestScene.unity + - m_Path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity m_IsLoaded: 1 m_IsActive: 1 m_IsSubScene: 0 - - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity - m_IsLoaded: 1 - m_IsActive: 0 - m_IsSubScene: 0 - - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity - m_IsLoaded: 1 - m_IsActive: 0 - m_IsSubScene: 0 - - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity - m_IsLoaded: 1 - m_IsActive: 0 - m_IsSubScene: 0 IsNetworkManagerScene: 1 KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} - SceneEntryName: SceneLevel-1 + SceneEntryName: SceneLevel-1A AdditiveSceneGroup: {fileID: 0} Mode: 0 m_SavedSceneSetup: @@ -51,7 +39,11 @@ MonoBehaviour: m_IsLoaded: 1 m_IsActive: 0 m_IsSubScene: 0 - - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity + m_IsLoaded: 0 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity m_IsLoaded: 1 m_IsActive: 0 m_IsSubScene: 0 @@ -67,7 +59,11 @@ MonoBehaviour: m_IsLoaded: 1 m_IsActive: 1 m_IsSubScene: 0 - - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity m_IsLoaded: 1 m_IsActive: 0 m_IsSubScene: 0 @@ -87,6 +83,14 @@ MonoBehaviour: m_IsLoaded: 1 m_IsActive: 1 m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 IsNetworkManagerScene: 0 KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 @@ -94,14 +98,30 @@ MonoBehaviour: SceneEntryName: SceneLevel-4 AdditiveSceneGroup: {fileID: 0} Mode: 0 - m_SavedSceneSetup: [] + m_SavedSceneSetup: + - m_Path: Assets/Samples/SceneRegistration/SceneLevel-4.unity + m_IsLoaded: 1 + m_IsActive: 1 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 + - m_Path: Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity + m_IsLoaded: 1 + m_IsActive: 0 + m_IsSubScene: 0 IsNetworkManagerScene: 0 KnownAdditiveSceneGroup: {fileID: 0} - m_NetworkManagerScene: TestScene + m_NetworkManagerScene: MLAPIBootStrap m_KnownSceneRegistrations: - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} - SceneEntryName: SceneLevel-1 + SceneEntryName: SceneLevel-1A AdditiveSceneGroup: {fileID: 0} Mode: 0 m_SavedSceneSetup: [] @@ -109,7 +129,7 @@ MonoBehaviour: KnownAdditiveSceneGroup: {fileID: 0} - IncludeInBuild: 1 Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} - SceneEntryName: SceneLevel-1 + SceneEntryName: SceneLevel-1A AdditiveSceneGroup: {fileID: 0} Mode: 0 m_SavedSceneSetup: [] diff --git a/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity similarity index 72% rename from testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity rename to testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity index 0970db391d..871b071355 100644 --- a/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity +++ b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity @@ -123,112 +123,6 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &97227791 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 97227794} - - component: {fileID: 97227793} - - component: {fileID: 97227792} - m_Layer: 0 - m_Name: NetworkManager - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &97227792 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 97227791} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b84c2d8dfe509a34fb59e2b81f8e1319, type: 3} - m_Name: - m_EditorClassIdentifier: - MessageBufferSize: 5120 - MaxConnections: 100 - MaxSentMessageQueueSize: 128 - ConnectAddress: 127.0.0.1 - ConnectPort: 7777 - ServerListenPort: 7777 - ServerWebsocketListenPort: 8887 - SupportWebsocket: 0 - Channels: [] - UseMLAPIRelay: 0 - MLAPIRelayAddress: 184.72.104.138 - MLAPIRelayPort: 8888 - MessageSendMode: 0 ---- !u!114 &97227793 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 97227791} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} - m_Name: - m_EditorClassIdentifier: - DontDestroy: 1 - RunInBackground: 1 - LogLevel: 1 - NetworkConfig: - ProtocolVersion: 0 - NetworkTransport: {fileID: 97227792} - SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, - type: 2} - RegisteredScenes: - - TestScene - - TestWithAdditiveScenes - - TestNonMultiScene - AllowRuntimeSceneChanges: 0 - PlayerPrefab: {fileID: 0} - NetworkPrefabs: [] - ReceiveTickrate: 64 - NetworkTickIntervalSec: 0.05 - MaxReceiveEventsPerTickRate: 500 - EventTickrate: 64 - ClientConnectionBufferTimeout: 10 - ConnectionApproval: 0 - ConnectionData: - EnableTimeResync: 0 - TimeResyncInterval: 30 - EnableNetworkVariable: 1 - EnsureNetworkVariableLengthSafety: 0 - EnableSceneManagement: 1 - ForceSamePrefabs: 1 - RecycleNetworkIds: 1 - NetworkIdRecycleDelay: 120 - RpcHashSize: 0 - LoadSceneTimeOut: 120 - EnableMessageBuffering: 1 - MessageBufferTimeout: 20 - EnableNetworkLogs: 1 - m_SceneRegistration: {fileID: 11400000, guid: ea4a0987e5ce32244af3b8e7699fc223, - type: 2} ---- !u!4 &97227794 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 97227791} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 3, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &597235108 GameObject: m_ObjectHideFlags: 0 diff --git a/testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity.meta similarity index 100% rename from testproject/Assets/Samples/SceneRegistration/TestNonMultiScene.unity.meta rename to testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity.meta diff --git a/testproject/ProjectSettings/BurstAotSettings_StandaloneWindows.json b/testproject/ProjectSettings/BurstAotSettings_StandaloneWindows.json new file mode 100644 index 0000000000..2144f6dc76 --- /dev/null +++ b/testproject/ProjectSettings/BurstAotSettings_StandaloneWindows.json @@ -0,0 +1,16 @@ +{ + "MonoBehaviour": { + "Version": 3, + "EnableBurstCompilation": true, + "EnableOptimisations": true, + "EnableSafetyChecks": false, + "EnableDebugInAllBuilds": false, + "UsePlatformSDKLinker": false, + "CpuMinTargetX32": 0, + "CpuMaxTargetX32": 0, + "CpuMinTargetX64": 0, + "CpuMaxTargetX64": 0, + "CpuTargetsX32": 6, + "CpuTargetsX64": 72 + } +} diff --git a/testproject/ProjectSettings/EditorBuildSettings.asset b/testproject/ProjectSettings/EditorBuildSettings.asset index a4abc1d973..6b41853332 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -17,12 +17,12 @@ EditorBuildSettings: - enabled: 1 path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity guid: e729f848287dcb94c99ff859aefc8511 - - enabled: 1 - path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity - guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Samples/SceneRegistration/SceneLevel-1.unity guid: 228aa7771c79e6341a8fa9bc684c5766 + - enabled: 1 + path: Assets/Samples/SceneRegistration/SceneLevel-1A.unity + guid: 228aa7771c79e6341a8fa9bc684c5766 - enabled: 1 path: Assets/Samples/SceneRegistration/SceneLevel-2.unity guid: 5add0389cebf7fa438efb6c2ac0a6fe1 @@ -32,9 +32,6 @@ EditorBuildSettings: - enabled: 1 path: Assets/Samples/SceneRegistration/SceneLevel-4.unity guid: 91c53cf6ac2a36447889e211d81d1e23 - - enabled: 1 - path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity - guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 path: Assets/Scenes/SampleScene.unity guid: 9fc0d4010bbf28b4594072e72b8655ab