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/Editor/ReadOnlyPropertyDrawer.cs b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs new file mode 100644 index 0000000000..5eafd4d3b9 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/ReadOnlyPropertyDrawer.cs @@ -0,0 +1,62 @@ +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) + { + 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(); + } + } + + [CustomPropertyDrawer(typeof(SceneReadOnlyPropertyAttribute))] + public class SceneRegistrationReadOnlyPropertyDrawer : PropertyDrawer + { + private const int k_ButtonWidth = 140; + + 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); + } + catch (System.Exception ex) + { + Debug.LogError(ex); + } + + GUI.enabled = true; + EditorGUI.EndProperty(); + + // 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), "Load Referencing NetworkManager Scene")) + { + var value = property.objectReferenceValue as SceneAsset; + if (value != null) + { + 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/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/Editor/SceneHierarchyMonitor.cs.meta b/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs.meta new file mode 100644 index 0000000000..63ba6a2fa1 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/SceneHierarchyMonitor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a93238e9279f8b14da50c335168eee37 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs new file mode 100644 index 0000000000..34a1c457ca --- /dev/null +++ b/com.unity.multiplayer.mlapi/Editor/SceneRegistrationEditor.cs @@ -0,0 +1,256 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.SceneManagement; +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 = 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 = (3 * (EditorGUIUtility.singleLineHeight + 5)) + 10; + 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 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 = 100; + var currentXPosition = rect.x; + + EditorGUI.LabelField(new Rect(currentXPosition, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), $"Scene Entry - {index}"); + + if (sceneEntry != null && sceneEntry.IsNetworkManagerScene) + { + GUI.enabled = false; + } + + //Draw include in build property + currentXPosition += labelWidth; + EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, 20, EditorGUIUtility.singleLineHeight), includeInBuild, GUIContent.none); + + if (sceneEntry != null && 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 != null && 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; + + //Draw base scene asset property + EditorGUI.PropertyField(new Rect(currentXPosition, rect.y, rect.width - (currentXPosition - rect.x), EditorGUIUtility.singleLineHeight), sceneEntryItemSceneAsset, GUIContent.none); + + if (sceneEntry != null && sceneEntry.IsNetworkManagerScene) + { + GUI.enabled = true; + } + + rect.y += EditorGUIUtility.singleLineHeight + 5; + + EditorGUI.LabelField(new Rect(rect.x, rect.y, labelWidth, EditorGUIUtility.singleLineHeight), "Additive Scenes"); + + if(sceneEntry != null) + { + 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; + } + } + + //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) + { + m_SceneRegistration.SceneRegistrations = new List(); + } + m_SceneRegistration.SceneRegistrations.Add(newSceneEntry); + m_SceneRegistration.ValidateBuildSettingsScenes(); + } + + + 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); + + } + + m_SceneRegistration.ValidateBuildSettingsScenes(); + } + } +} 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/Configuration/NetworkConfig.cs b/com.unity.multiplayer.mlapi/Runtime/Configuration/NetworkConfig.cs index 2e74c3f7fe..e9e605628a 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. /// @@ -293,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]); + SceneRegistration.WriteHashSynchValues(writer); } } diff --git a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs index 207ba51fb0..f02c77d755 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkManager.cs @@ -226,6 +226,14 @@ 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] + private SceneRegistration m_SceneRegistration; + + static internal Dictionary BuildSettingsSceneLookUpTable; + private void OnValidate() { if (NetworkConfig == null) @@ -241,6 +249,26 @@ 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(); + } + + if (m_SceneRegistration != null && NetworkConfig.SceneRegistration != m_SceneRegistration && m_SceneRegistration.AssignedToNetworkManager) + { + m_SceneRegistration.AssignNetworkManagerScene(false); + 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/Core/NetworkObject.cs b/com.unity.multiplayer.mlapi/Runtime/Core/NetworkObject.cs index 1194c87ae0..554d849bac 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 82a8be7f1e..49f58ecd69 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Messaging/InternalMessageHandler.cs @@ -86,6 +86,7 @@ public void HandleConnectionApproved(ulong clientId, Stream stream, float receiv void DelayedSpawnAction(Stream continuationStream) { + using (var continuationReader = PooledNetworkReader.Get(continuationStream)) { if (!NetworkManager.NetworkConfig.EnableSceneManagement) @@ -94,7 +95,7 @@ void DelayedSpawnAction(Stream continuationStream) } else { - NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(null); + NetworkManager.SceneManager.PopulateScenePlacedObjects(); } var objectCount = continuationReader.ReadUInt32Packed(); @@ -103,7 +104,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/AdditiveSceneGroup.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs new file mode 100644 index 0000000000..22d080c550 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs @@ -0,0 +1,200 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using MLAPI.Serialization; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace MLAPI.SceneManagement +{ + [CreateAssetMenu(fileName = "AdditiveSceneGroup", menuName = "MLAPI/SceneManagement/AdditiveSceneGroup")] + [Serializable] + public class AdditiveSceneGroup : AssetDependency, IAdditiveSceneGroup + { + [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_KnownAdditiveSceneGroups = new List(); + + [SerializeField] + private List m_AdditiveScenes; + +#if UNITY_EDITOR + + /// + /// + /// + /// + protected override void OnDependecyRemoved(IAssetDependency dependencyRemoved) + { + ValidateBuildSettingsScenes(); + } + + /// + /// + /// + /// + protected override void OnDependecyAdded(IAssetDependency dependencyAdded) + { + ValidateBuildSettingsScenes(); + } + + 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) + { + // 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) + { + if (entry != null) + { + if (!m_AdditiveSceneGroups.Contains(entry)) + { + entry.RemoveDependency(this); + entry.ValidateBuildSettingsScenes(); + additiveScenesDirty = true; + } + } + } + + if (additiveScenesDirty) + { + // 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(); + var partOfRootBranch = BelongsToRootAssetBranch(); + + foreach (var includedScene in m_AdditiveScenes) + { + 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 AdditiveSceneGroup's referenced AdditiveSceneEntries + SceneRegistration.AddOrRemoveSceneAsset(includedScene.Scene, shouldInclude && partOfRootBranch && includedScene.IncludeInBuild); + } + } + + // Now validate the build settings inclusion for any reference additive scene groups + foreach(var additveSceneGroup in m_AdditiveSceneGroups) + { + if (additveSceneGroup != null) + { + additveSceneGroup.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() + { + return m_AdditiveScenes; + } + + public List GetAdditiveScenes() + { + return OnGetAdditiveScenes(); + } + + protected override void OnWriteHashSynchValues(NetworkWriter writer) + { + foreach (var sceneEntry in OnGetAdditiveScenes()) + { + if (sceneEntry != null) + { + writer.WriteString(sceneEntry.SceneEntryName); + } + } + + foreach (var additiveSceneGroup in m_AdditiveSceneGroups) + { + if (additiveSceneGroup != null) + { + 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 AdditiveSceneEntry : SceneEntryBsase + { + } + + + public interface IAdditiveSceneGroup + { + List GetAdditiveScenes(); + } + +} + + diff --git a/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs.meta b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.cs.meta new file mode 100644 index 0000000000..2a9f0f463c --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AdditiveSceneGroup.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/AssetDependency.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs new file mode 100644 index 0000000000..2abb6a2c44 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/AssetDependency.cs @@ -0,0 +1,216 @@ +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. + /// 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 + { +#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 + + protected virtual void OnWriteHashSynchValues(NetworkWriter writer) + { + + } + + public void WriteHashSynchValues(NetworkWriter writer) + { + OnWriteHashSynchValues(writer); + } + + private void Awake() + { +#if UNITY_EDITOR + m_Dependencies.CollectionChanged += Dependencies_CollectionChanged; +#endif + } + } + + public interface IAssetDependency + { + void WriteHashSynchValues(NetworkWriter writer); + +#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/NetworkSceneManager.cs b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/NetworkSceneManager.cs index 3aeefc8889..776901ca16 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; @@ -273,12 +274,49 @@ internal void OnFirstSceneSwitchSync(uint sceneIndex, Guid switchSceneGuid) s_IsSwitching = false; } + + + + /// + /// 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)) + { + // We check to make sure the NetworkManager instance is the same one to be "MultiInstanceHelpers" compatible + if (networkObjectInstance.IsSceneObject == null && networkObjectInstance.NetworkManager == m_NetworkManager) + { + 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); @@ -288,31 +326,22 @@ 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) { - // 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 (!keyValuePair.Value.IsPlayerObject) { - 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]); - } - } + m_NetworkManager.SpawnManager.SpawnNetworkObjectLocally(keyValuePair.Value, m_NetworkManager.SpawnManager.GetNetworkObjectId(), true, false, null, null, false, 0, false, true); } } @@ -327,9 +356,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++; } @@ -337,15 +367,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); } } @@ -362,12 +390,10 @@ 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(); - m_NetworkManager.SpawnManager.ClientCollectSoftSyncSceneObjectSweep(networkObjects); - using (var reader = PooledNetworkReader.Get(objectStream)) { var newObjectsCount = reader.ReadUInt32Packed(); 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 new file mode 100644 index 0000000000..3f6fee04b0 --- /dev/null +++ b/com.unity.multiplayer.mlapi/Runtime/SceneManagement/SceneRegistration.cs @@ -0,0 +1,924 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using MLAPI.Serialization; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +using UnityEngine.SceneManagement; +using UnityEditor.SceneManagement; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +#endif + +namespace MLAPI.SceneManagement +{ + [CreateAssetMenu(fileName = "SceneRegistration", menuName = "MLAPI/SceneManagement/SceneRegistration")] + [Serializable] + public class SceneRegistration : AssetDependency + { + [SerializeField] + internal List SceneRegistrations; + + [HideInInspector] + [SerializeField] + 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; + var end = scenePath.LastIndexOf(".", StringComparison.Ordinal); + return scenePath.Substring(begin, end - begin); + } + + private static void BuildLookupTableFromEditorBuildSettings() + { + foreach (var editorBuildSettingsScene in EditorBuildSettings.scenes) + { + if (!NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(editorBuildSettingsScene.path)) + { + NetworkManager.BuildSettingsSceneLookUpTable.Add(editorBuildSettingsScene.path, editorBuildSettingsScene); + } + } + } + + /// + /// 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 (removeEntry != null && sceneEntry.path == removeEntry) + { + continue; + } + 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) + { + if (!currentScenes.ContainsKey(keyPair.Key)) + { + currentScenes.Add(keyPair.Key, keyPair.Value); + } + } + 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(); + } + + 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(assetPath)) + { + NetworkManager.BuildSettingsSceneLookUpTable.Add(assetPath, new EditorBuildSettingsScene(assetPath, true)); + SynchronizeScenes(); + } + } + else + { + // If the scene does exist in our local list, then remove it + if (NetworkManager.BuildSettingsSceneLookUpTable.ContainsKey(assetPath)) + { + NetworkManager.BuildSettingsSceneLookUpTable.Remove(assetPath); + SynchronizeScenes(assetPath); + } + } + } + #endregion + + internal bool AssignedToNetworkManager + { + get + { + if (NetworkManagerScene != null) + { + return true; + } + return false; + } + } + + [SceneReadOnlyProperty] + [SerializeField] + internal SceneAsset NetworkManagerScene; + + internal void AssignNetworkManagerScene(bool isAssigned = true) + { + if (isAssigned) + { + var currentScene = SceneManager.GetActiveScene(); + NetworkManagerScene = AssetDatabase.LoadAssetAtPath(currentScene.path); + if (NetworkManagerScene != null) + { + m_NetworkManagerScene = NetworkManagerScene.name; + UpdateNetworkManagerSceneEntry(NetworkManagerScene, true); + //AddOrRemoveSceneAsset(NetworkManagerScene, true); + } + } + else + { + if (NetworkManagerScene != null) + { + UpdateNetworkManagerSceneEntry(NetworkManagerScene, false); + //AddOrRemoveSceneAsset(NetworkManagerScene, false); + } + NetworkManagerScene = null; + m_NetworkManagerScene = string.Empty; + } + 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 + /// + /// true or false + protected override bool OnShouldAssetBeIncluded() + { + return AssignedToNetworkManager; + } + + private bool m_HasInitialized; + + 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() + { + //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) + { + var shouldInclude = ShouldAssetBeIncluded(); + var partOfRootBranch = BelongsToRootAssetBranch(); + foreach (var sceneEntry in SceneRegistrations) + { + if (sceneEntry != null && sceneEntry.Scene != null) + { + sceneEntry.AddDependency(this); + AddOrRemoveSceneAsset(sceneEntry.Scene, shouldInclude && partOfRootBranch && sceneEntry.IncludeInBuild); + sceneEntry.UpdateAdditiveSceneGroup(); + } + } + } + + if (NetworkManagerScene != null) + { + AddOrRemoveSceneAsset(NetworkManagerScene, true); + } + + } + + /// + /// 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 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 + /// + /// + protected override void OnWriteHashSynchValues(NetworkWriter writer) + { + if (m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) + { + writer.WriteString(m_NetworkManagerScene); + } + + foreach (var sceneRegistrationEntry in SceneRegistrations) + { + if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) + { + writer.WriteString(sceneRegistrationEntry.SceneEntryName); + if (sceneRegistrationEntry.AdditiveSceneGroup != null) + { + sceneRegistrationEntry.AdditiveSceneGroup.WriteHashSynchValues(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(); + + if (m_NetworkManagerScene != null && m_NetworkManagerScene != string.Empty) + { + allScenes.Add(m_NetworkManagerScene); + } + + foreach (var sceneRegistrationEntry in SceneRegistrations) + { + if (sceneRegistrationEntry != null && sceneRegistrationEntry.SceneEntryName != null && sceneRegistrationEntry.SceneEntryName != string.Empty) + { + allScenes.Add(sceneRegistrationEntry.SceneEntryName); + } + } + + return allScenes; + } + } + +#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 + /// + [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(); + if (Scene != null) + { + 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 + /// + /// + internal void UpdateAdditiveSceneGroup() + { + if (AdditiveSceneGroup != KnownAdditiveSceneGroup) + { + if (KnownAdditiveSceneGroup != null) + { + KnownAdditiveSceneGroup.RemoveDependency(this); + KnownAdditiveSceneGroup.ValidateBuildSettingsScenes(); + } + } + + if (AdditiveSceneGroup != null) + { + if (IncludeInBuild) + { + AdditiveSceneGroup.AddDependency(this); + } + else + { + AdditiveSceneGroup.RemoveDependency(this); + } + AdditiveSceneGroup.ValidateBuildSettingsScenes(); + } + + if (KnownAdditiveSceneGroup != AdditiveSceneGroup) + { + KnownAdditiveSceneGroup = AdditiveSceneGroup; + } + } + + protected override void OnAddedToList() + { + + base.OnAddedToList(); + } + + protected override void OnRemovedFromList() + { + if (!IsNetworkManagerScene) + { + IncludeInBuild = false; + if (Scene != null) + { + SceneRegistration.AddOrRemoveSceneAsset(Scene, false); + } + UpdateAdditiveSceneGroup(); + } + } + +#endif + + } + + + /// + /// 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, 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; + + public void OnAfterDeserialize() + { + } + + /// + /// This is used to extract the scene name from the SceneAsset + /// + public void OnBeforeSerialize() + { +#if UNITY_EDITOR + if (Scene != null && SceneEntryName != Scene.name) + { + SceneEntryName = Scene.name; + } +#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/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/Spawning/NetworkSpawnManager.cs b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs index 593bdd521e..5ce4156f4a 100644 --- a/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs +++ b/com.unity.multiplayer.mlapi/Runtime/Spawning/NetworkSpawnManager.cs @@ -25,9 +25,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 /// @@ -246,17 +243,19 @@ internal NetworkObject CreateLocalNetworkObject(bool isSceneObject, uint globalO } else { - // SoftSync them by mapping - if (!PendingSoftSyncObjects.TryGetValue(globalObjectIdHash, out NetworkObject networkObject)) + if (!NetworkManager.SceneManager.ScenePlacedObjects.TryGetValue(globalObjectIdHash, 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: {globalObjectIdHash}!"); } + return null; } - - PendingSoftSyncObjects.Remove(globalObjectIdHash); + else + { + NetworkManager.SceneManager.ScenePlacedObjects.Remove(globalObjectIdHash); + } if (parentNetworkObject != null) { @@ -557,20 +556,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() { @@ -588,25 +573,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 OnDespawnObject(ulong networkObjectId, bool destroyGameObject) { if (NetworkManager == null) diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs index 0bf6720dad..5c3360e64d 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectOnSpawnTests.cs @@ -26,12 +26,9 @@ public IEnumerator InstantiateDestroySpawnNotCalled() yield return null; - // instantiate - var instance = Object.Instantiate(gameObject); - yield return null; - // destroy - Object.Destroy(instance); + Object.Destroy(gameObject); + yield return null; } diff --git a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectSceneSerializationTests.cs b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectSceneSerializationTests.cs index 7315522576..b6f95ec802 100644 --- a/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/NetworkObjectSceneSerializationTests.cs +++ b/com.unity.multiplayer.mlapi/Tests/Runtime/NetworkObject/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 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/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity index bdb5cb5791..b8062acc6f 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: 600719e4f344cd24ba0f8b17e1a2ffbd, + type: 2} RegisteredScenes: - TestEnableDisableSceneNetworkObject - EnableDisableSceneNetworkObject @@ -1460,6 +1462,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + 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..ece7923cda --- /dev/null +++ b/testproject/Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneRegistration.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: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: EnableDisableSceneRegistration + m_EditorClassIdentifier: + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, type: 3} + SceneEntryName: EnableDisableSceneNetworkObject + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + m_NetworkManagerScene: EnableDisableSceneNetworkObject + m_KnownSceneRegistrations: [] + NetworkManagerScene: {fileID: 102900000, guid: 619b9eba5892d5a4e9dd1d6cafb0059a, + type: 3} 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/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/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset new file mode 100644 index 0000000000..5bdc473cf4 --- /dev/null +++ b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset @@ -0,0 +1,28 @@ +%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: + - {fileID: 11400000, guid: 6ad30cb0c1be4f44ba9b86d536988a50, type: 2} + m_KnownAdditiveSceneGroups: + - {fileID: 0} + m_AdditiveScenes: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 466e828eb554ee44c900882db6c9d3a7, type: 3} + SceneEntryName: AdditiveScene 1 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: ddb4e18dbd30daf4ab011d3232a63786, type: 3} + SceneEntryName: AdditiveScene 2 + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: c4ebb19d1542fdb4a8fe49b774ab16a0, type: 3} + SceneEntryName: AdditiveScene 3 diff --git a/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset.meta b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset.meta new file mode 100644 index 0000000000..68900fe3eb --- /dev/null +++ b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup1.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 863734e265d8f81478833cbf1902f460 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset new file mode 100644 index 0000000000..d5ff8cb637 --- /dev/null +++ b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset @@ -0,0 +1,26 @@ +%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: + - 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/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset.meta b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset.meta new file mode 100644 index 0000000000..b4accc2df6 --- /dev/null +++ b/testproject/Assets/Samples/LegacySceneRegistrationAssets/AdditiveSceneGroup2.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6ad30cb0c1be4f44ba9b86d536988a50 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + 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/AdditiveScenes.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes.meta new file mode 100644 index 0000000000..1c37b30a31 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 80c4604b9ca1e844fb6bbfe3d20a916f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity new file mode 100644 index 0000000000..44dedf19ee --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity @@ -0,0 +1,275 @@ +%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 &614498862 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 614498863} + m_Layer: 0 + m_Name: AdditiveScene1_Art_Asset (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &614498863 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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: 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: 0, y: 0, z: 0} +--- !u!1 &1848777444 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1848777445} + m_Layer: 0 + m_Name: AdditiveScene1_Art_Asset (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1848777445 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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} + 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: 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: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity.meta new file mode 100644 index 0000000000..f6dcc06f78 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 1.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 466e828eb554ee44c900882db6c9d3a7 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity new file mode 100644 index 0000000000..4dece53efb --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity @@ -0,0 +1,215 @@ +%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 &1345532957 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1345532958} + m_Layer: 0 + m_Name: AdditiveScene2_Art_Asset (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1345532958 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 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: 0, y: 0, z: 0} +--- !u!1 &1416688333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1416688334} + m_Layer: 0 + m_Name: AdditiveScene2_Art_Asset (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1416688334 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + 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} + 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: 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: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity.meta new file mode 100644 index 0000000000..929b98da20 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 2.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ddb4e18dbd30daf4ab011d3232a63786 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity new file mode 100644 index 0000000000..b09814c4d5 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity @@ -0,0 +1,360 @@ +%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 &578967051 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 578967053} + - component: {fileID: 578967052} + m_Layer: 0 + m_Name: AdditiveScene3_NetworkObject (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &578967052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578967051} + m_Enabled: 1 + 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: 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: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &694829232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 694829234} + - component: {fileID: 694829233} + m_Layer: 0 + m_Name: AdditiveScene3_NetworkObject (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &694829233 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 694829232} + m_Enabled: 1 + 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: 836867574} + m_Enabled: 1 + 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: 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 3.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity.meta new file mode 100644 index 0000000000..b2e3d19865 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 3.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c4ebb19d1542fdb4a8fe49b774ab16a0 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity new file mode 100644 index 0000000000..0bfc67f2e5 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity @@ -0,0 +1,313 @@ +%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 &20108313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 20108315} + - component: {fileID: 20108314} + m_Layer: 0 + m_Name: AdditiveScene4_NetworkObject (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &20108314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 20108313} + m_Enabled: 1 + 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: 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: 0, y: 0, z: 0} +--- !u!1 &107897982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 107897984} + - component: {fileID: 107897983} + m_Layer: 0 + m_Name: AdditiveScene4_NetworkObject (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &107897983 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 107897982} + m_Enabled: 1 + 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} + 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 + 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: 1734227085} + 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} diff --git a/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity.meta b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity.meta new file mode 100644 index 0000000000..6a3518640c --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 4.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b12634a7636aba845801ca83d4ba61c2 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: 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..f191822692 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 5.unity @@ -0,0 +1,313 @@ +%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 &735085061 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 735085063} + - component: {fileID: 735085062} + m_Layer: 0 + m_Name: AdditiveScene5_NetworkObject (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &735085062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 735085061} + m_Enabled: 1 + 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: 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: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1477172254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1477172256} + - component: {fileID: 1477172255} + m_Layer: 0 + m_Name: AdditiveScene5_NetworkObjectA + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1477172255 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477172254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Name: + m_EditorClassIdentifier: + GlobalObjectIdHash: 3323398575 + 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: 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 + 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: 1623957997} + 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: 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 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..7193bd9183 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/AdditiveScenes/AdditiveScene 6.unity @@ -0,0 +1,454 @@ +%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 &69588872 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 69588874} + - component: {fileID: 69588873} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject (6) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &69588873 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69588872} + m_Enabled: 1 + 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: 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: 0, y: 0, z: 0} +--- !u!1 &305931844 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 305931846} + - component: {fileID: 305931845} + m_Layer: 0 + m_Name: AdditiveScene6_NetworkObject (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &305931845 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 305931844} + m_Enabled: 1 + 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: 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 + 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: 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/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/MLAPIBootStrap.unity b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity new file mode 100644 index 0000000000..f63a4a7ded --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity @@ -0,0 +1,406 @@ +%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: + - MLAPIBootStrap + - MLAPIBootStrap + 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/MLAPIBootStrap.unity.meta b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity.meta new file mode 100644 index 0000000000..364df635b1 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/MLAPIBootStrap.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e729f848287dcb94c99ff859aefc8511 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity new file mode 100644 index 0000000000..ce0d701694 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.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-1A.unity.meta b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.unity.meta new file mode 100644 index 0000000000..e42099f099 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneLevel-1A.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 new file mode 100644 index 0000000000..f59fd0d8e4 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset @@ -0,0 +1,139 @@ +%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: + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: e729f848287dcb94c99ff859aefc8511, type: 3} + SceneEntryName: MLAPIBootStrap + AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: + - m_Path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity + m_IsLoaded: 1 + m_IsActive: 1 + m_IsSubScene: 0 + IsNetworkManagerScene: 1 + KnownAdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + SceneEntryName: SceneLevel-1A + 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 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 + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 5add0389cebf7fa438efb6c2ac0a6fe1, type: 3} + SceneEntryName: SceneLevel-2 + 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 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 + - 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 + - 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 + Scene: {fileID: 102900000, guid: 91c53cf6ac2a36447889e211d81d1e23, type: 3} + SceneEntryName: SceneLevel-4 + AdditiveSceneGroup: {fileID: 0} + Mode: 0 + 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: MLAPIBootStrap + m_KnownSceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + SceneEntryName: SceneLevel-1A + AdditiveSceneGroup: {fileID: 0} + Mode: 0 + m_SavedSceneSetup: [] + IsNetworkManagerScene: 0 + KnownAdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 228aa7771c79e6341a8fa9bc684c5766, type: 3} + SceneEntryName: SceneLevel-1A + 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/SceneRegistration.asset.meta b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta new file mode 100644 index 0000000000..15710bcd9a --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/SceneRegistration.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea4a0987e5ce32244af3b8e7699fc223 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity new file mode 100644 index 0000000000..871b071355 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.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.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 &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/UnregisteredScene.unity.meta b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity.meta new file mode 100644 index 0000000000..16458012f2 --- /dev/null +++ b/testproject/Assets/Samples/SceneRegistration/UnregisteredScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2cdf04b4670c9c042a7d467bf6c10821 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/testproject/Assets/Scenes/SampleScene.unity b/testproject/Assets/Scenes/SampleScene.unity index fa5231a972..5e0fd4582b 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,8 @@ MonoBehaviour: NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 620561610} + SceneRegistration: {fileID: 11400000, guid: ec853362ca076094a8339b6e0f9288b0, + type: 2} RegisteredScenes: - SampleScene AllowRuntimeSceneChanges: 0 @@ -920,6 +923,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: ec853362ca076094a8339b6e0f9288b0, + type: 2} --- !u!4 &620561612 Transform: m_ObjectHideFlags: 0 @@ -927,8 +932,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 +1838,7 @@ MonoBehaviour: GlobalObjectIdHash: 3972363333 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!65 &963826007 BoxCollider: m_ObjectHideFlags: 0 @@ -2341,6 +2347,7 @@ MonoBehaviour: GlobalObjectIdHash: 1445980162 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!54 &1397037320 Rigidbody: m_ObjectHideFlags: 0 @@ -2606,6 +2613,7 @@ MonoBehaviour: GlobalObjectIdHash: 1148320762 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!54 &1402467447 Rigidbody: m_ObjectHideFlags: 0 @@ -3020,6 +3028,7 @@ MonoBehaviour: GlobalObjectIdHash: 2710131580 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!114 &1475593096 MonoBehaviour: m_ObjectHideFlags: 0 @@ -3474,4 +3483,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/Scenes/SampleSceneRegistration.asset b/testproject/Assets/Scenes/SampleSceneRegistration.asset new file mode 100644 index 0000000000..8999129763 --- /dev/null +++ b/testproject/Assets/Scenes/SampleSceneRegistration.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: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: SampleSceneRegistration + m_EditorClassIdentifier: + 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/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/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/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.asset new file mode 100644 index 0000000000..d58d5d450c --- /dev/null +++ b/testproject/Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalSceneRegistration.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: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: ConnectionApprovalSceneRegistration + m_EditorClassIdentifier: + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: dd570b5916593cb41bab8beb1c9d9315, type: 3} + SceneEntryName: ConnectionApprovalTest + 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/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..c691ddc273 --- /dev/null +++ b/testproject/Assets/Tests/Manual/NetworkSceneManagerCallbacks/NetworkSceneManagerCallbacksSceneRegistration.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: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: NetworkSceneManagerCallbacksSceneRegistration + m_EditorClassIdentifier: + 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/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..2006185fb3 --- /dev/null +++ b/testproject/Assets/Tests/Manual/RpcTesting/RpcSceneRegistration.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: 180fe42d996da264ab3d32e3fc9033ca, type: 3} + m_Name: RpcSceneRegistration + m_EditorClassIdentifier: + 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/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..108fdbe08b --- /dev/null +++ b/testproject/Assets/Tests/Manual/SceneTransitioning/SceneTransitioningRegistration.asset @@ -0,0 +1,29 @@ +%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: + SceneRegistrations: + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 79c2bf7d6b7a06a42a94982aaf1904d8, type: 3} + SceneEntryName: SecondSceneToLoad + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + - IncludeInBuild: 1 + Scene: {fileID: 102900000, guid: 637ab8340e96a2949adfe5bfdd42b924, type: 3} + SceneEntryName: ThirdSceneToLoad + KnownAdditiveSceneGroup: {fileID: 0} + AdditiveSceneGroup: {fileID: 0} + m_NetworkManagerScene: SceneTransitioningTest + m_KnownSceneRegistrations: [] + 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 de97ee675c..504439bf40 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: 05b7cb8c99cbc3346b4d175e67c2d89c, + type: 2} RegisteredScenes: - SceneTransitioningTest - SecondSceneToLoad @@ -1044,6 +1046,8 @@ MonoBehaviour: EnableMessageBuffering: 1 MessageBufferTimeout: 20 EnableNetworkLogs: 1 + m_SceneRegistration: {fileID: 11400000, guid: 05b7cb8c99cbc3346b4d175e67c2d89c, + type: 2} --- !u!114 &1024114719 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1155,6 +1159,7 @@ MonoBehaviour: GlobalObjectIdHash: 2782806529 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!1 &1332123091 GameObject: m_ObjectHideFlags: 0 @@ -2553,6 +2558,7 @@ MonoBehaviour: GlobalObjectIdHash: 2267100048 AlwaysReplicateAsRoot: 0 DontDestroyWithOwner: 0 + AutoObjectParentSync: 1 --- !u!1001 &2848221156282925290 PrefabInstance: m_ObjectHideFlags: 0 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/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 0f1a066d92..6b41853332 100644 --- a/testproject/ProjectSettings/EditorBuildSettings.asset +++ b/testproject/ProjectSettings/EditorBuildSettings.asset @@ -8,37 +8,55 @@ 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/Tests/Manual/ManualTestsMenu.unity - guid: 197ba614e9ae3054a8dea7b2bdacad6a + path: Assets/Samples/SceneRegistration/MLAPIBootStrap.unity + guid: e729f848287dcb94c99ff859aefc8511 - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SceneTransitioningTest.unity - guid: 1c2375a896b2e8c4a841aa61224b8494 + path: Assets/Samples/SceneRegistration/SceneLevel-1.unity + guid: 228aa7771c79e6341a8fa9bc684c5766 - enabled: 1 - path: Assets/Scenes/SampleScene.unity - guid: 9fc0d4010bbf28b4594072e72b8655ab + path: Assets/Samples/SceneRegistration/SceneLevel-1A.unity + guid: 228aa7771c79e6341a8fa9bc684c5766 - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/SecondSceneToLoad.unity - guid: 79c2bf7d6b7a06a42a94982aaf1904d8 + path: Assets/Samples/SceneRegistration/SceneLevel-2.unity + guid: 5add0389cebf7fa438efb6c2ac0a6fe1 - enabled: 1 - path: Assets/Tests/Manual/RpcTesting/RpcTesting.unity - guid: 931469794d88a874998f1d5edd265522 + path: Assets/Samples/SceneRegistration/SceneLevel-3.unity + guid: 45a35678967fd6744bae54a375eec459 - enabled: 1 - path: Assets/Tests/Manual/SceneTransitioning/ThirdSceneToLoad.unity - guid: 637ab8340e96a2949adfe5bfdd42b924 + path: Assets/Samples/SceneRegistration/SceneLevel-4.unity + guid: 91c53cf6ac2a36447889e211d81d1e23 + - enabled: 1 + path: Assets/Scenes/SampleScene.unity + guid: 9fc0d4010bbf28b4594072e72b8655ab - enabled: 1 path: Assets/Tests/Manual/ConnectionApproval/ConnectionApprovalTest.unity guid: dd570b5916593cb41bab8beb1c9d9315 - enabled: 1 - path: Assets/Samples/EnableDisableNetworkObject/EnableDisableSceneNetworkObject.unity - guid: 619b9eba5892d5a4e9dd1d6cafb0059a + path: Assets/Tests/Manual/ManualTestsMenu.unity + guid: 197ba614e9ae3054a8dea7b2bdacad6a + - 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/Tests/Manual/NetworkSceneManagerCallbacks/SceneWeAreSwitchingFrom.unity - guid: 073bd2111475c0643be45b7abe6a97ad + 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: {} 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)