UniVRM/Scripts/Meta/Editor/VRMMetaEditor.cs
2018-04-06 15:38:34 +09:00

81 lines
2.5 KiB
C#

using UnityEditor;
using UnityEngine;
namespace VRM
{
[CustomEditor(typeof(VRMMeta))]
public class VRMMetaEditor : Editor
{
SerializedProperty m_ScriptProp;
SerializedProperty m_VRMMetaObjectProp;
private void OnEnable()
{
m_ScriptProp = serializedObject.FindProperty("m_Script");
m_VRMMetaObjectProp = serializedObject.FindProperty("Meta");
}
public override void OnInspectorGUI()
{
serializedObject.Update();
EditorGUILayout.PropertyField(m_ScriptProp, true);
EditorGUILayout.PropertyField(m_VRMMetaObjectProp, true);
EditorGUILayout.Space();
if (m_VRMMetaObjectProp.objectReferenceValue != null)
{
VRMMetaObjectGUI(new SerializedObject(m_VRMMetaObjectProp.objectReferenceValue));
}
serializedObject.ApplyModifiedProperties();
}
void VRMMetaObjectGUI(SerializedObject so)
{
so.Update();
int i = 0;
for (SerializedProperty iterator = so.GetIterator();
iterator.NextVisible(true);
++i
)
{
if (i == 0) continue;
/*
Debug.LogFormat("{0}: {1}({2}) = {3}",
iterator.depth,
iterator.name,
iterator.displayName,
iterator.propertyType
);
*/
if (iterator.name == "Thumbnail")
{
iterator.objectReferenceValue=TextureField(iterator.name, (Texture2D)iterator.objectReferenceValue, 100);
}
else {
EditorGUILayout.PropertyField(iterator, false);
}
}
so.ApplyModifiedProperties();
}
private static Texture2D TextureField(string name, Texture2D texture, int size)
{
GUILayout.BeginHorizontal();
var style = new GUIStyle(GUI.skin.label);
style.alignment = TextAnchor.UpperCenter;
//style.fixedWidth = size;
GUILayout.Label(name, style);
var result = (Texture2D)EditorGUILayout.ObjectField(texture, typeof(Texture2D), false, GUILayout.Width(size), GUILayout.Height(size));
GUILayout.EndVertical();
return result;
}
}
}