private void OnEnable()
 {
     script = (bl_WeaponAnimation)target;
     Gun    = script.transform.parent.GetComponent <bl_Gun>();
     gType  = bl_GameData.Instance.GetWeapon(Gun.GunID).Type;
     if (script.m_AnimationType == bl_WeaponAnimation.AnimationType.Animator)
     {
         _animator = script.GetComponent <Animator>();
     }
     list = new ReorderableList(serializedObject, serializedObject.FindProperty("FireAnimations"), true, true, true, true);
     list.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) =>
     {
         var element = list.serializedProperty.GetArrayElementAtIndex(index);
         rect.y += 2;
         EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), element, GUIContent.none);
     };
     list.drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, "Fire Animations"); };
 }
    public override void OnInspectorGUI()
    {
        if (script == null)
        {
            script = (bl_WeaponAnimation)target;
        }
        EditorGUI.BeginChangeCheck();
        serializedObject.Update();
        allowSceneObjects = !EditorUtility.IsPersistent(script);

        GUILayout.BeginVertical("box");

        GUILayout.BeginVertical("box");
        script.m_AnimationType = (bl_WeaponAnimation.AnimationType)EditorGUILayout.EnumPopup("Animation Type", script.m_AnimationType);
        GUILayout.EndVertical();

        if (script.m_AnimationType == bl_WeaponAnimation.AnimationType.Animation)
        {
            AnimationGUI();
        }
        else
        {
            AnimatorGUI();
        }
        GUILayout.EndVertical();
        if (Gun.SoundReloadByAnim && gType != GunType.Knife)
        {
            GUILayout.BeginVertical("box");
            script.Reload_1 = EditorGUILayout.ObjectField("Clip Out Audio", script.Reload_1, typeof(AudioClip), allowSceneObjects) as AudioClip;
            script.Reload_2 = EditorGUILayout.ObjectField("Clip In Audio", script.Reload_2, typeof(AudioClip), allowSceneObjects) as AudioClip;
            script.Reload_3 = EditorGUILayout.ObjectField("Slide Audio", script.Reload_3, typeof(AudioClip), allowSceneObjects) as AudioClip;
            GUILayout.EndVertical();
        }
        EditorGUI.EndChangeCheck();
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
        }
        serializedObject.ApplyModifiedProperties();
    }