Exemple #1
0
    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());
        }
    }
Exemple #2
0
    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());
    }