49 lines
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
} |