using UnityEngine;
using UnityEditor;

namespace Jovian.Utilities.Editor {
    [CustomPropertyDrawer(typeof(CustomRenderQueueMaterialList.MaterialRenderQueue))]
    public class CustomRenderQueueMaterialListPropertyDrawer : PropertyDrawer {
        private const float RENDERQUEUE_PROPERTY_WIDTH = 45f;
        private const float GUI_PADDING = 2f;

        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) {
            EditorGUI.BeginProperty(position, label, property);
            position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
            var indent = EditorGUI.indentLevel;
            EditorGUI.indentLevel = 0;

            var materialRect = new Rect(position.x, position.y, position.width - RENDERQUEUE_PROPERTY_WIDTH, position.height);
            var renderQueueRect = new Rect(materialRect.xMax + GUI_PADDING, position.y, RENDERQUEUE_PROPERTY_WIDTH - GUI_PADDING, position.height);

            EditorGUI.PropertyField(materialRect, property.FindPropertyRelative("material"), new GUIContent(string.Empty, "Material"));
            EditorGUI.PropertyField(renderQueueRect, property.FindPropertyRelative("renderQueue"), new GUIContent(string.Empty, "RenderQueue"));

            EditorGUI.indentLevel = indent;
            EditorGUI.EndProperty();
        }
    }
}
