diff --git a/Scripts/BlendShape/Editor/BlendShapeAvatarEditor.cs b/Scripts/BlendShape/Editor/BlendShapeAvatarEditor.cs index 042c0a51b..c3f9a7958 100644 --- a/Scripts/BlendShape/Editor/BlendShapeAvatarEditor.cs +++ b/Scripts/BlendShape/Editor/BlendShapeAvatarEditor.cs @@ -58,6 +58,7 @@ namespace VRM CurrentClip = m_target.Clips[0]; } + List m_meshFolds = new List(); int m_preset; public override void OnInspectorGUI() { @@ -121,24 +122,36 @@ namespace VRM // sliders bool changed = false; + int foldIndex = 0; foreach (var item in PreviewSceneManager.EnumRenderItems.Where(x => x.SkinnedMeshRenderer!=null)) { var mesh = item.SkinnedMeshRenderer.sharedMesh; - if (mesh != null) + if (mesh != null && mesh.blendShapeCount>0) { //var relativePath = UniGLTF.UnityExtensions.RelativePathFrom(renderer.transform, m_target.transform); - EditorGUILayout.LabelField(m_target.name + "/" + item.Path); + //EditorGUILayout.LabelField(m_target.name + "/" + item.Path); - for (int i = 0; i < mesh.blendShapeCount; ++i) + if (foldIndex >= m_meshFolds.Count) { - var src = item.SkinnedMeshRenderer.GetBlendShapeWeight(i); - var dst = EditorGUILayout.Slider(mesh.GetBlendShapeName(i), src, 0, 100.0f); - if (dst != src) - { - item.SkinnedMeshRenderer.SetBlendShapeWeight(i, dst); - changed = true; - } + m_meshFolds.Add(false); } + m_meshFolds[foldIndex] = EditorGUILayout.Foldout(m_meshFolds[foldIndex], item.SkinnedMeshRenderer.name); + if (m_meshFolds[foldIndex]) + { + //EditorGUI.indentLevel += 1; + for (int i = 0; i < mesh.blendShapeCount; ++i) + { + var src = item.SkinnedMeshRenderer.GetBlendShapeWeight(i); + var dst = EditorGUILayout.Slider(mesh.GetBlendShapeName(i), src, 0, 100.0f); + if (dst != src) + { + item.SkinnedMeshRenderer.SetBlendShapeWeight(i, dst); + changed = true; + } + } + //EditorGUI.indentLevel -= 1; + } + ++foldIndex; } }