/// <summary>
    /// Function use to remove a specific category to the menu
    /// </summary>
    public void RemoveCategory(CircularMenuCategory _category)
    {
        for (int i = 0; i < _category.buttonList.Count; i++)
            _category.RemoveButton(_category.buttonList[i]);

        menuCategories.Remove(_category);
        UpdateButtonsNumber();
        _category = null;

        System.GC.Collect();
    }
    /// <summary>
    /// Function called to draw a category gui
    /// </summary>
    /// <param name="_part"></param>
    private void ShowMenuCategory(CircularMenuCategory _part)
    {
        EditorGUILayout.BeginHorizontal();
        _part.showInEditor = EditorGUILayout.Foldout(_part.showInEditor, _part.name);
        if (GUILayout.Button("Remove '" + _part.name + "'"))
            _target.RemoveCategory(_part);
        EditorGUILayout.EndHorizontal();

        if (_part.showInEditor)
        {
            EditorGUI.indentLevel = 1;

            EditorGUILayout.BeginVertical();

            _part.name = EditorGUILayout.TextField("Name", _part.name);

            _part.showCategoryName = EditorGUILayout.BeginToggleGroup("Show category name", _part.showCategoryName);
            EditorGUI.indentLevel = 2;
            if (_part.showCategoryName)
            {
                _part.textLabelSize = EditorGUILayout.Vector2Field("Label size", _part.textLabelSize);
                _part.textStyle.font = (Font)EditorGUILayout.ObjectField("Title font", _part.textStyle.font, typeof(Font), false);
                _part.textStyle.alignment = (TextAnchor)EditorGUILayout.EnumPopup("Text alignement", _part.textStyle.alignment);
                _part.textStyle.fontSize = EditorGUILayout.IntField("Text size", _part.textStyle.fontSize);
                _part.textStyle.fontStyle = (FontStyle)EditorGUILayout.EnumPopup("Text style", _part.textStyle.fontStyle);
                _part.textStyle.normal.textColor = EditorGUILayout.ColorField("Text color", _part.textStyle.normal.textColor);
            }
            EditorGUI.indentLevel = 1;
            EditorGUILayout.EndToggleGroup();

            EditorGUILayout.LabelField("Buttons", EditorStyles.boldLabel);
            EditorGUI.indentLevel = 2;
            for (int i = 0; i < _part.buttonList.Count; i++)
            {
                ShowCircularButtonGUI(_part.buttonList[i],true,true);
                if (_part.buttonList[i].showInEditor)
                {
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("", EditorStyles.boldLabel);
                    if (GUILayout.Button("Clear"))
                        _part.buttonList[i].Clear();
                    if (GUILayout.Button("Remove button '" + _part.buttonList[i].name + "'"))
                        _part.RemoveButton(_part.buttonList[i]);
                    EditorGUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.BeginHorizontal();
            if (GUILayout.Button("Add button to " + _part.name))
                _part.AddButton();
            EditorGUILayout.LabelField("");
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();
        }

        EditorGUILayout.Separator();

        EditorGUI.indentLevel = 0;
        EditorGUILayout.Separator();
    }