using System.IO;
using UnityEditor;
using UnityEngine;

namespace Unity.U2D.Animation.Sample
{
    // Ensure class initializer is called whenever scripts recompile
    [InitializeOnLoad]
    internal static class BuildAssetBundle
    {
        const string k_AssetBundleName = "2DAnimationSampleAssetBundles";

        // Register an event handler when the class is initialized
        static BuildAssetBundle()
        {
            EditorApplication.playModeStateChanged += PlayModeStateChange;
        }

        static void PlayModeStateChange(PlayModeStateChange state)
        {
            if (state == UnityEditor.PlayModeStateChange.ExitingEditMode)
                BuildAssetBundles();
        }

        static void BuildAssetBundles()
        {
#if ASSETBUNDLE_ENABLED
            var assetBundleDirectory = Path.Combine(Application.streamingAssetsPath, k_AssetBundleName);
            if (!Directory.Exists(assetBundleDirectory))
                Directory.CreateDirectory(assetBundleDirectory);
            BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, EditorUserBuildSettings.activeBuildTarget);
#endif
        }
    }
}