using UnityEditor;
using UnityEngine;
using System.IO;

public class FBXAnimationClipExtractor : EditorWindow
{
    private GameObject selectedFBX;

    [MenuItem("Tools/FBX Animation Clip Extractor")]
    public static void ShowWindow()
    {
        GetWindow<FBXAnimationClipExtractor>("FBX Animation Clip Extractor");
    }

    private void OnGUI()
    {
        GUILayout.Label("Select FBX File", EditorStyles.boldLabel);
        selectedFBX = EditorGUILayout.ObjectField("FBX File", selectedFBX, typeof(GameObject), false) as GameObject;

        if (selectedFBX != null && GUILayout.Button("Extract Animation Clips"))
        {
            ExtractAnimationClips();
        }
    }

    private void ExtractAnimationClips()
    {
        string assetPath = AssetDatabase.GetAssetPath(selectedFBX);
        string directoryPath = Path.GetDirectoryName(assetPath);

        AnimationClip[] animationClips = AnimationUtility.GetAnimationClips(selectedFBX);
        foreach (AnimationClip clip in animationClips)
        {
            string newClipPath = Path.Combine(directoryPath, $"{clip.name}.anim");
            AnimationClip newClip = new AnimationClip();
            EditorUtility.CopySerialized(clip, newClip);
            AssetDatabase.CreateAsset(newClip, newClipPath);
        }

        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
        Debug.Log("Animation clips extracted successfully.");
    }
}