您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
92 行
2.8 KiB
92 行
2.8 KiB
using System.Linq;
|
|
using UniGLTF;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace UniVRM10
|
|
{
|
|
[CustomEditor(typeof(VRM10Object))]
|
|
public class VRM10ObjectEditor : Editor
|
|
{
|
|
VRM10Object m_target;
|
|
|
|
enum Tabs
|
|
{
|
|
Meta,
|
|
Expression,
|
|
LookAt,
|
|
FirstPerson,
|
|
}
|
|
static Tabs _tab = Tabs.Meta;
|
|
|
|
// for SerializedProperty
|
|
SerializedPropertyEditor m_expression;
|
|
SerializedPropertyEditor m_meta;
|
|
SerializedPropertyEditor m_lookAt;
|
|
SerializedPropertyEditor m_firstPerson;
|
|
SerializedProperty m_prefab;
|
|
|
|
void OnEnable()
|
|
{
|
|
if (target == null)
|
|
{
|
|
return;
|
|
}
|
|
m_target = (VRM10Object)target;
|
|
|
|
m_expression = SerializedPropertyEditor.Create(serializedObject, nameof(m_target.Expression));
|
|
m_meta = VRM10MetaEditor.Create(serializedObject);
|
|
m_lookAt = SerializedPropertyEditor.Create(serializedObject, nameof(m_target.LookAt));
|
|
m_firstPerson = SerializedPropertyEditor.Create(serializedObject, nameof(m_target.FirstPerson));
|
|
|
|
m_prefab = serializedObject.FindProperty("m_prefab");
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
// prefab
|
|
if (_tab == Tabs.FirstPerson && m_prefab.objectReferenceValue == null)
|
|
{
|
|
EditorGUILayout.HelpBox("required !", MessageType.Error);
|
|
}
|
|
serializedObject.Update();
|
|
EditorGUILayout.ObjectField(m_prefab);
|
|
serializedObject.ApplyModifiedProperties();
|
|
EditorGUILayout.Separator();
|
|
|
|
// select sub editor
|
|
using (new EnabledScope())
|
|
{
|
|
_tab = (Tabs)EditorGUILayout.EnumPopup("Select GUI", _tab);
|
|
}
|
|
EditorGUILayout.Separator();
|
|
|
|
switch (_tab)
|
|
{
|
|
case Tabs.Meta:
|
|
m_meta.OnInspectorGUI();
|
|
break;
|
|
|
|
case Tabs.Expression:
|
|
m_expression.OnInspectorGUI();
|
|
break;
|
|
|
|
case Tabs.LookAt:
|
|
m_lookAt.OnInspectorGUI();
|
|
break;
|
|
|
|
case Tabs.FirstPerson:
|
|
using (new EditorGUI.DisabledScope(m_target.Prefab == null))
|
|
{
|
|
if (GUILayout.Button("set default"))
|
|
{
|
|
m_target.FirstPerson.SetDefault(m_target.Prefab.transform);
|
|
}
|
|
EditorGUILayout.HelpBox("Clear Renderers and add all renderers (Auto)", MessageType.Info);
|
|
}
|
|
m_firstPerson.OnInspectorGUI();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|