show runtime LookAt info

This commit is contained in:
ousttrue
2025-02-18 17:49:07 +09:00
parent b54537678f
commit 8d6f5f5fde

View File

@@ -24,6 +24,8 @@ namespace UniVRM10
LookAt,
SpringBone,
}
static Tab s_selected = default;
static bool s_foldRuntimeLookAt = false;
Vrm10Instance m_instance;
@@ -226,7 +228,7 @@ namespace UniVRM10
root.Add(s);
}
var tabs = new EnumField("select UI", default(Tab));
var tabs = new EnumField("select UI", s_selected);
root.Add(tabs);
var body = new VisualElement();
@@ -239,7 +241,7 @@ namespace UniVRM10
foreach (var (tab, content) in contents)
{
// content.visible = tab == Tab.VrmInstance;
content.style.display = tab == Tab.VrmInstance
content.style.display = tab == s_selected
? DisplayStyle.Flex
: DisplayStyle.None
;
@@ -249,11 +251,11 @@ namespace UniVRM10
tabs.RegisterValueChangedCallback(e =>
{
var selected = (Tab)e.newValue;
s_selected = (Tab)e.newValue;
foreach (var (tab, content) in contents)
{
// content.visible = tab == selected;
content.style.display = tab == selected
content.style.display = tab == s_selected
? DisplayStyle.Flex
: DisplayStyle.None
;
@@ -277,11 +279,80 @@ namespace UniVRM10
void GUILookAt()
{
if (!target)
{
return;
}
serializedObject.Update();
EditorGUILayout.PropertyField(m_drawLookatGizmo);
EditorGUILayout.PropertyField(m_lookatTarget);
EditorGUILayout.PropertyField(m_lookatTargetType);
serializedObject.ApplyModifiedProperties();
// lookat info
if (Application.isPlaying)
{
EditorGUILayout.Space();
s_foldRuntimeLookAt = EditorGUILayout.Foldout(s_foldRuntimeLookAt, "RuntimeInfo");
if (s_foldRuntimeLookAt)
{
var enabled = GUI.enabled;
GUI.enabled = false;
EditorGUILayout.Slider("yaw(-180 ~ +180)", m_instance.Runtime.LookAt.Yaw, -180, 180);
EditorGUILayout.Slider("pitch(-90 ~ +90)", m_instance.Runtime.LookAt.Pitch, -90, 90);
if (m_instance.Runtime.LookAt.EyeDirectionApplicable is LookAtEyeDirectionApplicableToBone)
{
EditorGUILayout.LabelField("BoneTYpe");
}
else if (m_instance.Runtime.LookAt.EyeDirectionApplicable is LookAtEyeDirectionApplicableToExpression)
{
EditorGUILayout.LabelField("ExpressionType");
var w = m_instance.Runtime.Expression.ActualWeights;
// left
if (w.TryGetValue(ExpressionKey.LookLeft, out var left))
{
EditorGUILayout.Slider("left", left, 0, 1);
}
else
{
EditorGUILayout.TextField("left");
}
// right
if (w.TryGetValue(ExpressionKey.LookRight, out var right))
{
EditorGUILayout.Slider("right", right, 0, 1);
}
else
{
EditorGUILayout.TextField("right");
}
// up
if (w.TryGetValue(ExpressionKey.LookUp, out var up))
{
EditorGUILayout.Slider("up", up, 0, 1);
}
else
{
EditorGUILayout.TextField("up");
}
// down
if (w.TryGetValue(ExpressionKey.LookDown, out var down))
{
EditorGUILayout.Slider("down", down, 0, 1);
}
else
{
EditorGUILayout.TextField("down");
}
}
else
{
EditorGUILayout.LabelField($"UnknownTYpe: {m_instance.Runtime.LookAt.EyeDirectionApplicable}");
}
GUI.enabled = enabled;
Repaint();
}
}
}
VisualElement GUISpringBone()