using UnityEngine;
using UnityEditor;
using UnityEngine.SceneManagement;
using System.Collections;
using System.Collections.Generic;

public class ftClearMenu
{
    [MenuItem("Bakery/Utilities/Clear baked data", false, 44)]
    private static void ClearBakedData()
    {
        int val = EditorUtility.DisplayDialogComplex("Bakery", "Clear all Bakery data for currently loaded scenes?", "Clear data", "Clear all (data and settings)", "Cancel");
        if (val == 0)
        {
            var newStorages = new List<GameObject>();
            var sceneCount = SceneManager.sceneCount;
            for(int i=0; i<sceneCount; i++)
            {
                var scene = SceneManager.GetSceneAt(i);
                if (!scene.isLoaded) continue;
                var go = ftLightmaps.FindInScene("!ftraceLightmaps", scene);
                if (go == null) continue;
                var storage = go.GetComponent<ftLightmapsStorage>();
                if (storage != null)
                {
                    var newGO = new GameObject();
                    var newStorage = newGO.AddComponent<ftLightmapsStorage>();
                    ftLightmapsStorage.CopySettings(storage, newStorage);
                    newStorages.Add(newGO);
                }
                Undo.DestroyObjectImmediate(go);
            }
            LightmapSettings.lightmaps = new LightmapData[0];
            for(int i=0; i<newStorages.Count; i++)
            {
                newStorages[i].name = "!ftraceLightmaps";
            }
        }
        else if (val == 1)
        {
            var sceneCount = SceneManager.sceneCount;
            for(int i=0; i<sceneCount; i++)
            {
                var scene = SceneManager.GetSceneAt(i);
                if (!scene.isLoaded) continue;
                var go = ftLightmaps.FindInScene("!ftraceLightmaps", scene);
                if (go == null) continue;
                Undo.DestroyObjectImmediate(go);
            }
            LightmapSettings.lightmaps = new LightmapData[0];
        }
    }
}