/*
         * [MenuItem("Assets/Utility/Convert To Unity AudioClip",priority = 1002)]
         * public static void ConvertToUnityAudio()
         * {
         *  foreach (Object sel in Selection.objects)
         *  {
         *      if (sel as Ardenfall.ArdenAudioClip != null)
         *          Convert((Ardenfall.ArdenAudioClip)sel);
         *  }
         * }
         *
         * [MenuItem("Assets/Utility/Convert To Unity AudioClip", validate = true)]
         * public static bool ConvertToUnityAudioValidate()
         * {
         *  foreach (Object sel in Selection.objects)
         *  {
         *      if (sel as Ardenfall.ArdenAudioClip == null)
         *          return false;
         *  }
         *  return true;
         * }*/

        private static void Convert(Ardenfall.ArdenAudioClip clip)
        {
            string assetPath = AssetDatabase.GetAssetPath(clip.GetInstanceID());

            if (clip.audioClip != null)
            {
                clip.audioClip.hideFlags = HideFlags.None;
                EditorUtility.SetDirty(clip.audioClip);
            }

            AssetDatabase.DeleteAsset(assetPath);
            AssetDatabase.Refresh();
        }
        public static void SwitchToWav()
        {
            int count = 0;

            foreach (string s in AssetDatabase.GetAllAssetPaths())
            {
                Ardenfall.ArdenAudioClip asset = AssetDatabase.LoadMainAssetAtPath(s) as Ardenfall.ArdenAudioClip;
                if (asset == null)
                {
                    continue;
                }

                string audiofilepath = AssetDatabase.GetAssetPath(asset.audioClip.GetInstanceID());

                if (audiofilepath.Contains(".wav"))
                {
                    continue;
                }

                string goalpath = audiofilepath.Replace(".mp3", ".wav").Replace(".ogg", ".wav");

                AudioClip goalClip = AssetDatabase.LoadMainAssetAtPath(goalpath) as AudioClip;

                if (goalClip == null)
                {
                    continue;
                }

                asset.audioClip = goalClip;
                EditorUtility.SetDirty(asset);

                AssetDatabase.DeleteAsset(audiofilepath);

                count++;
            }

            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();

            Debug.Log("Switched " + count + " assets");
        }
        private static void Convert(AudioClip clip)
        {
            string assetPath = AssetDatabase.GetAssetPath(clip.GetInstanceID());
            string newPath   = System.IO.Path.ChangeExtension(assetPath, ".asset");

            //Check if we have a asset here already. If so, do nothing
            if (AssetDatabase.LoadAssetAtPath(newPath, typeof(Ardenfall.ArdenAudioClip)) != null)
            {
                return;
            }

            Ardenfall.ArdenAudioClip clipWrapper = ScriptableObject.CreateInstance <Ardenfall.ArdenAudioClip>();
            clipWrapper.audioClip = clip;

            AssetDatabase.CreateAsset(clipWrapper, newPath);

            clip.hideFlags = HideFlags.HideInHierarchy;
            EditorUtility.SetDirty(clip);

            AssetDatabase.SaveAssets();

            AssetDatabase.Refresh();
        }