/******************************************************************************/
/*
  Project   - MudBun
  Publisher - Long Bunny Labs
              http://LongBunnyLabs.com
  Author    - Ming-Lun "Allen" Chou
              http://AllenChou.net
*/
/******************************************************************************/

using UnityEditor;
using UnityEngine;
using UnityEngine.Rendering;

namespace MudBun
{
  public class DecalMeshMaterialEditor : ShaderGUI
  {
    public override void OnGUI(MaterialEditor editor, MaterialProperty[] aProp)
    {
      var _EdgeFadeDistance = FindProperty("_EdgeFadeDistance", aProp);
      if (_EdgeFadeDistance != null)
      {
        editor.ShaderProperty(_EdgeFadeDistance, _EdgeFadeDistance.displayName);
        _EdgeFadeDistance.floatValue = Mathf.Max(0.0f, _EdgeFadeDistance.floatValue);
      }

      var _EdgeFadeColor = FindProperty("_EdgeFadeColor", aProp);
      editor.ShaderProperty(_EdgeFadeColor, _EdgeFadeColor.displayName);

      var _ColorBlendSrc = FindProperty("_ColorBlendSrc", aProp);
      BlendMode colorBlendSrcEnum = (BlendMode) _ColorBlendSrc.floatValue;
      colorBlendSrcEnum = (BlendMode) EditorGUILayout.EnumPopup("Color Blend Src", colorBlendSrcEnum);
      _ColorBlendSrc.floatValue = (float) colorBlendSrcEnum;

      var _ColorBlendDst = FindProperty("_ColorBlendDst", aProp);
      BlendMode colorBlendDstEnum = (BlendMode) _ColorBlendDst.floatValue;
      colorBlendDstEnum = (BlendMode) EditorGUILayout.EnumPopup("Color Blend Dst", colorBlendDstEnum);
      _ColorBlendDst.floatValue = (float) colorBlendDstEnum;

      var _StencilMask = FindProperty("_StencilMask", aProp);
      editor.ShaderProperty(_StencilMask, _StencilMask.displayName);

      EditorGUILayout.Space();

      editor.RenderQueueField();
      editor.DoubleSidedGIField();
    }
  }
}

