Files
dungeons/Assets/HurricaneVR/Framework/Editor/EmbeddedAssetDrawer.cs

49 lines
1.6 KiB
C#

using HurricaneVR.Framework.Core.Utils;
using UnityEditor;
using UnityEngine;
namespace HurricaneVR.Editor
{
[CustomPropertyDrawer(typeof(EmbeddedAttribute), true)]
public class EmbeddedAssetDrawer : PropertyDrawer
{
private EmbeddeAssetEditor _editor;
public EmbeddeAssetEditor Editor
{
get
{
if (_editor == null)
_editor = new EmbeddeAssetEditor();
return _editor;
}
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
var a = attribute as EmbeddedAttribute;
Editor.DrawEditorCombo(position, fieldInfo.FieldType, label, property, $"Save {property.displayName}.", $"{property.displayName.Replace(" ", "_")}", "asset", string.Empty);
}
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
if (!property.isExpanded || property.objectReferenceValue == null)
{
return EditorGUIUtility.singleLineHeight;
}
float height = base.GetPropertyHeight(property, label) + EditorGUIUtility.singleLineHeight;
var so = new SerializedObject(property.objectReferenceValue);
var prop = so.GetIterator();
prop.NextVisible(true);
while (prop.NextVisible(true))
{
if (prop.name == "m_Script")
continue;
height += EditorGUIUtility.singleLineHeight;
}
return height * 1.2f;
}
}
}