From 0ade61d0c38817fb230900d1dbb4a9c21e95c6c4 Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Sat, 3 May 2025 02:00:08 +0900 Subject: [PATCH 1/2] Revert Handle Gizmo in VRM0X SpringBone Collider Group --- .../VRMSpringBoneColliderGroupEditor.cs | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs b/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs index fee110aa3..9c2576196 100644 --- a/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs +++ b/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs @@ -16,6 +16,30 @@ namespace VRM m_target = (VRMSpringBoneColliderGroup)target; } + private void OnSceneGUI() + { + Undo.RecordObject(m_target, "VRMSpringBoneColliderGroupEditor"); + + Handles.matrix = m_target.transform.localToWorldMatrix; + Gizmos.color = Color.green; + + bool changed = false; + + foreach (var x in m_target.Colliders) + { + var offset = Handles.PositionHandle(x.Offset, Quaternion.identity); + if (offset != x.Offset) + { + changed = true; + x.Offset = offset; + } + } + + if (changed) + { + EditorUtility.SetDirty(m_target); + } + } override public void OnInspectorGUI() { From 202246628f678632669a3927dff92f1a7c318d34 Mon Sep 17 00:00:00 2001 From: Masataka SUMI Date: Sat, 3 May 2025 02:07:34 +0900 Subject: [PATCH 2/2] add menu in VRM0.X SpringBone ColliderGroup --- .../VRMSpringBoneColliderGroupEditor.cs | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs b/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs index 9c2576196..096cbfa45 100644 --- a/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs +++ b/Assets/VRM/Editor/SpringBone/VRMSpringBoneColliderGroupEditor.cs @@ -79,6 +79,28 @@ namespace VRM target.Colliders = target.Colliders.OrderBy(x => -x.Radius).ToArray(); } + [MenuItem("CONTEXT/VRMSpringBoneColliderGroup/Sort Colliders Reversed")] + private static void SortReverse(MenuCommand command) + { + var target = command.context as VRMSpringBoneColliderGroup; + if (target == null) return; + + Undo.RecordObject(target, "Sort Colliders Reversed"); + + target.Colliders = target.Colliders.Reverse().ToArray(); + } + + [MenuItem("CONTEXT/VRMSpringBoneColliderGroup/Sort Colliders by Offset X")] + private static void SortByOffsetX(MenuCommand command) + { + var target = command.context as VRMSpringBoneColliderGroup; + if (target == null) return; + + Undo.RecordObject(target, "Sort Colliders by Offset X"); + + target.Colliders = target.Colliders.OrderBy(x => x.Offset.x).ToArray(); + } + [MenuItem("CONTEXT/VRMSpringBoneColliderGroup/Sort Colliders by Offset Y")] private static void SortByOffsetY(MenuCommand command) { @@ -87,7 +109,18 @@ namespace VRM Undo.RecordObject(target, "Sort Colliders by Offset Y"); - target.Colliders = target.Colliders.OrderBy(x => -x.Offset.y).ToArray(); + target.Colliders = target.Colliders.OrderBy(x => x.Offset.y).ToArray(); + } + + [MenuItem("CONTEXT/VRMSpringBoneColliderGroup/Sort Colliders by Offset Z")] + private static void SortByOffsetZ(MenuCommand command) + { + var target = command.context as VRMSpringBoneColliderGroup; + if (target == null) return; + + Undo.RecordObject(target, "Sort Colliders by Offset Z"); + + target.Colliders = target.Colliders.OrderBy(x => x.Offset.z).ToArray(); } } }