show spring info on VRM10SpringBoneJointEditor

This commit is contained in:
ousttrue
2024-07-02 18:30:04 +09:00
parent 0e78cc7db9
commit 2effde9c1f
2 changed files with 51 additions and 0 deletions

View File

@@ -14,6 +14,8 @@ namespace UniVRM10
private SerializedProperty m_dragForceProp;
private SerializedProperty m_jointRadiusProp;
private Vrm10Instance m_root;
void OnEnable()
{
if (target == null)
@@ -27,12 +29,48 @@ namespace UniVRM10
m_gravityDirProp = serializedObject.FindProperty(nameof(VRM10SpringBoneJoint.m_gravityDir));
m_dragForceProp = serializedObject.FindProperty(nameof(VRM10SpringBoneJoint.m_dragForce));
m_jointRadiusProp = serializedObject.FindProperty(nameof(VRM10SpringBoneJoint.m_jointRadius));
if (m_target != null)
{
m_root = m_target.GetComponentInParent<Vrm10Instance>();
}
}
public override void OnInspectorGUI()
{
serializedObject.Update();
// spring status
EditorGUILayout.LabelField("Spring", EditorStyles.boldLabel);
EditorGUI.BeginDisabledGroup(true);
EditorGUILayout.ObjectField("Vrm-1.0", m_root, typeof(Vrm10Instance), true, null);
if (m_root != null)
{
var found = m_root.SpringBone.FindJoint(m_target);
if (found.HasValue)
{
var (spring, i) = found.Value;
// var j = spring.Joints.IndexOf(m_target);
EditorGUILayout.LabelField($"Springs[{i}]({spring.Name})");
for (int j = 0; j < spring.Joints.Count; ++j)
{
var label = $"Joints[{j}]";
if
(spring.Joints[j] == m_target)
{
label += "★";
}
EditorGUILayout.ObjectField(label, spring.Joints[j], typeof(VRM10SpringBoneJoint), true, null);
}
}
else
{
EditorGUILayout.HelpBox("This joint not belongs any spring", MessageType.Warning);
}
}
EditorGUI.EndDisabledGroup();
// joint
EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel);
LimitBreakSlider(m_stiffnessForceProp, 0.0f, 4.0f, 0.0f, Mathf.Infinity);

View File

@@ -65,5 +65,18 @@ namespace UniVRM10
[SerializeField]
public List<Spring> Springs = new List<Spring>();
public (Spring, int)? FindJoint(VRM10SpringBoneJoint joint)
{
for (int i = 0; i < Springs.Count; ++i)
{
if (Springs[i].Joints.Contains(joint))
{
return (Springs[i], i);
}
}
return default;
}
}
}