using System;
using UnityEngine;
using Object = UnityEngine.Object;

namespace UnityEditor.Timeline
{
    static class UnityEditorInternals
    {
        static readonly EditorGUI.ObjectFieldValidator k_AllowAllObjectsValidator = (references, type, property, options) => references.Length > 0 ? references[0] : null;

        public static Object DoObjectField(Rect position, Object obj, Type type, int controlId, bool allowScene, bool allowAllObjects = false)
        {
            EditorGUI.ObjectFieldValidator validator = null;
            if (allowAllObjects)
                validator = k_AllowAllObjectsValidator;

#if UNITY_2020_1_OR_NEWER
            var newObject = EditorGUI.DoObjectField(position, position, controlId, obj, null, type, validator, allowScene, EditorStyles.objectField);
#else
            var newObject = EditorGUI.DoObjectField(position, position, controlId, obj, type, null, validator, allowScene, EditorStyles.objectField);
#endif
            return newObject;
        }
    }
}