void CreateSceneBundleCommand(string bundleName, string internalName, GUID scene, List <GUID> bundledScenes, Dictionary <GUID, string> assetToMainFile) { var fileObjects = m_WriteData.FileToObjects[internalName]; #if !UNITY_2019_1_OR_NEWER // ContentBuildInterface.PrepareScene was not returning stable sorted references, causing a indeterminism and loading errors in some cases // Add correct sorting here until patch lands to fix the API. fileObjects = GetSortedSceneObjectIdentifiers(fileObjects); #endif var command = CreateWriteCommand(internalName, fileObjects, new LinearPackedIdentifiers(3)); // Start at 3: PreloadData = 1, AssetBundle = 2 var usageSet = new BuildUsageTagSet(); var referenceMap = new BuildReferenceMap(); var preloadObjects = new List <ObjectIdentifier>(); var bundleScenes = new List <SceneLoadInfo>(); var dependencyInfo = m_DependencyData.SceneInfo[scene]; var fileObjectSet = new HashSet <ObjectIdentifier>(fileObjects); usageSet.UnionWith(m_DependencyData.SceneUsage[scene]); referenceMap.AddMappings(command.internalName, command.serializeObjects.ToArray()); foreach (var referencedObject in dependencyInfo.referencedObjects) { if (fileObjectSet.Contains(referencedObject)) { continue; } preloadObjects.Add(referencedObject); } foreach (var bundledScene in bundledScenes) { var loadInfo = new SceneLoadInfo(); loadInfo.asset = bundledScene; loadInfo.internalName = Path.GetFileNameWithoutExtension(assetToMainFile[bundledScene]); loadInfo.address = m_BuildContent.Addresses[bundledScene]; bundleScenes.Add(loadInfo); } var operation = new SceneBundleWriteOperation(); operation.Command = command; operation.UsageSet = usageSet; operation.ReferenceMap = referenceMap; operation.DependencyHash = m_DependencyData.DependencyHash.TryGetValue(scene, out var hash) ? hash : new Hash128(); operation.Scene = dependencyInfo.scene; #if !UNITY_2019_3_OR_NEWER operation.ProcessedScene = dependencyInfo.processedScene; #endif operation.PreloadInfo = new PreloadInfo(); operation.PreloadInfo.preloadObjects = preloadObjects; operation.Info = new SceneBundleInfo(); operation.Info.bundleName = bundleName; operation.Info.bundleScenes = bundleScenes; m_WriteData.WriteOperations.Add(operation); m_WriteData.FileToUsageSet.Add(command.internalName, usageSet); m_WriteData.FileToReferenceMap.Add(command.internalName, referenceMap); }
protected override void OnUpdate() { Entity loaderSingleton = GetSingletonEntity <SceneLoadInfo>(); SceneLoadInfo loadInfo = EntityManager.GetComponentData <SceneLoadInfo>(loaderSingleton); string toLoad = loadInfo.sceneToLoad.ToString().Trim(); string toUnload = loadInfo.sceneToUnload.ToString().Trim(); PostUpdateCommands.DestroyEntity(loaderSingleton); bool isClient = World.GetExistingSystem <ClientSimulationSystemGroup>() != null; UnityEngine.Debug.Log($"client: {isClient}, Processing scene request - load {toLoad} - unload {toUnload}"); if (toLoad.Length > 0 && SubSceneReferences.Instance.ContainsScene(toLoad)) { SubSceneReferences.Instance.LoadScene(toLoad, this.sceneSystem); GameFlow flow = toLoad == GameStateSystem.LobbySceneName ? GameFlow.Lobby : GameFlow.InGame; Entity entity = GetSingletonEntity <GameStateSystem.GameState>(); PostUpdateCommands.SetComponent(entity, new GameStateSystem.GameState { loadedScene = toLoad, stage = flow, }); } if (toUnload.Length > 0 && SubSceneReferences.Instance.ContainsScene(toUnload)) { SubSceneReferences.Instance.UnloadScene(toUnload, this.sceneSystem); } }
// Use this for initialization void Awake() { sli = GameObject.FindWithTag("SceneLoadInfo").GetComponent <SceneLoadInfo>(); if (!player) { player = gameObject; } else { Destroy(gameObject); } DontDestroyOnLoad(gameObject); startEncounter = false; disableControls = false; currentFrame = 0; encounterTracker = 0; animationTimer = 0.0f; encounterTimer = 0.0f; lastKey = null; currKey = null; gameObject.AddComponent <AudioSource>(); }
// Use this for initialization void Awake() { bossInstanced = false; sli = GameObject.FindWithTag("SceneLoadInfo").GetComponent <SceneLoadInfo>(); overWorldController = GameObject.FindWithTag("OverworldController"); InstanceEnemies(sli.activateBoss); UpdateList(); }
internal static void WriteHashData(SceneLoadInfo info, BinaryWriter writer) { writer.Write(info.asset.ToString()); writer.Write(info.address ?? string.Empty); writer.Write(info.internalName ?? string.Empty); }