/*           INFINITY CODE          */
/*     https://infinity-code.com    */

using UnityEditor;
using UnityEngine;

namespace InfinityCode.TreeTools.Editors
{
    public static class UndoEx
    {
        public static void CollapseUndoOperations(int groupIndex)
        {
            if (!Prefs.createUndo) return;
            Undo.CollapseUndoOperations(groupIndex);
        }

        public static int CreateGroup(string name)
        {
            if (!Prefs.createUndo) return -1;
            Undo.SetCurrentGroupName(name);
            return Undo.GetCurrentGroup();
        }

        public static void DestroyObjectImmediate(GameObject objectToUndo)
        {
            if (Prefs.createUndo) Undo.DestroyObjectImmediate(objectToUndo);
            else Object.DestroyImmediate(objectToUndo);
        }

        public static void RecordObject(Object objectToUndo, string name)
        {
            if (!Prefs.createUndo) return;
            Undo.RecordObject(objectToUndo, name);
        }

        public static void RecordObjects(Object[] objectsToUndo, string name)
        {
            if (!Prefs.createUndo) return;
            Undo.RecordObjects(objectsToUndo, name);
        }

        public static void RegisterCreatedObjectUndo(Object objectToUndo, string name)
        {
            if (!Prefs.createUndo) return;
            Undo.RegisterCreatedObjectUndo(objectToUndo, name);
        }
    }
}