private static void DoOpenChunkInMainScene() { EditorLogger.NotifyAndLog("Opening Chunk in the Main Scene"); var chunkScene = SceneManager.GetActiveScene(); var scene = EditorSceneManager.OpenScene( MainSceneIndexEditor.MainScene.path, OpenSceneMode.Additive ); SceneManager.SetActiveScene(scene); var chunk = Object.FindObjectsOfType <Chunk>() .FirstOrDefault(c => chunkScene.name.ToUpper().Contains(c.ChunkName.ToUpper())); if (chunk == null) { EditorLogger.NotifyAndLogWarning("No chunk object in the Main Scene references the current scene"); EditorSceneManager.SaveModifiedScenesIfUserWantsTo(new[] { scene }); EditorSceneManager.CloseScene(scene, true); } else { chunk.RelocateChunkObjectsToChunk(chunkScene.GetRootGameObjects()); } }
private static void OpenChunk(Chunk chunk) { var chunkAssetGuid = AssetDatabase.FindAssets($"{chunk.ChunkName} t:scene").FirstOrDefault(); if (chunkAssetGuid == null) { EditorLogger.NotifyAndLogWarning($"No scene file found for the chunk name {chunk.ChunkName}"); return; } var chunkPath = AssetDatabase.GUIDToAssetPath(chunkAssetGuid); var chunkScene = EditorSceneManager.OpenScene(chunkPath, OpenSceneMode.Additive); chunk.RelocateChunkObjectsToChunk(chunkScene.GetRootGameObjects()); }