BlendShapeClipDrawer.cs 2.21 KB
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;


namespace VRM
{

    [CustomPropertyDrawer(typeof(BlendShapeClip))]
    public class BlendShapeClipDrawer : PropertyDrawer
    {
        //public const int Height = 132;

        //public const int ThumbnailSize = 128;

        public const int Height = 80;
        public const int ThumbnailSize = 0;

        public override void OnGUI(Rect position,
          SerializedProperty property, GUIContent label)
        {
            using (new EditorGUI.PropertyScope(position, label, property))
            {
                //EditorGUIUtility.labelWidth = 80;

                position.height = EditorGUIUtility.singleLineHeight;

                //var halfWidth = position.width * 0.5f;

                var rect = new Rect(position.x + ThumbnailSize, position.y, position.width - ThumbnailSize, position.height);
                EditorGUI.PropertyField(rect, property);

                var clip = property.objectReferenceValue as BlendShapeClip;
                if (clip != null)
                {
                    var clipObj = new SerializedObject(clip);
                    //var thumbnail = clipObj.FindProperty("Thumbnail");
                    var blendShapeName = clipObj.FindProperty("BlendShapeName");
                    var preset = clipObj.FindProperty("Preset");
                    var isBinary = clipObj.FindProperty("IsBinary");

                    /*
                    EditorGUI.ObjectField(new Rect(position)
                    {
                        width = ThumbnailSize,
                        height = ThumbnailSize
                    }, thumbnail.objectReferenceValue, typeof(Texture), false);
                    */

                    rect.y += (EditorGUIUtility.singleLineHeight + 2);
                    EditorGUI.PropertyField(rect, blendShapeName);
                    rect.y += (EditorGUIUtility.singleLineHeight + 2);
                    EditorGUI.PropertyField(rect, preset);
                    rect.y += (EditorGUIUtility.singleLineHeight + 2);
                    EditorGUI.PropertyField(rect, isBinary);

                    clipObj.ApplyModifiedProperties();
                }
            }
        }
    }
}