﻿using System.Linq;
using UnityEditor;
using UnityEngine;

namespace HALBY.Utility
{
    public class DynamicBoneAutoFixer : EditorWindow
    {
        private GameObject _gameObject;

        [MenuItem("HALBY/Dynamic Bone Auto Fixer")]
        private static void Create()
        {
            GetWindow<DynamicBoneAutoFixer>("Dynamic Bone Auto Fixer");
        }

        private void OnGUI()
        {
            _gameObject = EditorGUILayout.ObjectField("Avatar Game Object", _gameObject, typeof(GameObject), true) as GameObject;
            if (GUILayout.Button("Fix!"))
            {
                if (_gameObject == null) return;
                var dbs = _gameObject.GetComponentsInChildren<DynamicBone>();
                foreach (var dynamicBone in dbs)
                {
                    if (!dynamicBone.m_Root) continue;
                    var bone = dynamicBone.m_Root;
                    var boneName = bone.name;
                    var target = _gameObject.transform.GetComponentsInChildren<Transform>()
                        .First(t => t.name == boneName);
                    dynamicBone.m_Root = target;
                }
            }
        }
    }
}