mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-11 13:04:17 -05:00
81 lines
2.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|