From 40c4777361f39331c984276243696a80a3baa497 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 28 Aug 2024 17:28:41 +0900 Subject: [PATCH] [vrm-1.0][editor][play] call SpringBone.ReconstructSpringBone when changed #2410 --- .../VRM10SpringBoneColliderEditor.cs | 25 ++++++++++++++++++- .../SpringBone/VRM10SpringBoneJointEditor.cs | 12 ++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneColliderEditor.cs b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneColliderEditor.cs index 7680d87de..06bc6ded3 100644 --- a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneColliderEditor.cs +++ b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneColliderEditor.cs @@ -6,6 +6,18 @@ namespace UniVRM10 [CustomEditor(typeof(VRM10SpringBoneCollider))] class VRM10SpringBoneColliderEditor : Editor { + VRM10SpringBoneCollider _target; + Vrm10Instance _vrm; + + private void OnEnable() + { + _target = (VRM10SpringBoneCollider)target; + if(_target!=null) + { + _vrm = _target.GetComponentInParent(); + } + } + public override void OnInspectorGUI() { if (VRM10Window.Active == target) @@ -41,7 +53,18 @@ namespace UniVRM10 DrawPropertiesExcluding(serializedObject, nameof(component.Normal), "m_Script"); break; } - serializedObject.ApplyModifiedProperties(); + + if (serializedObject.ApplyModifiedProperties()) + { + if (Application.isPlaying) + { + // UniGLTF.UniGLTFLogger.Log("invaliate"); + if(_vrm!=null) + { + _vrm.Runtime.SpringBone.ReconstructSpringBone(); + } + } + } } } } \ No newline at end of file diff --git a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs index a298088ef..7e5ef5aba 100644 --- a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs +++ b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs @@ -70,7 +70,17 @@ namespace UniVRM10 LimitBreakSlider(m_jointRadiusProp, 0.0f, 0.5f, 0.0f, Mathf.Infinity); } - serializedObject.ApplyModifiedProperties(); + if (serializedObject.ApplyModifiedProperties()) + { + if (Application.isPlaying) + { + // UniGLTF.UniGLTFLogger.Log("invaliate"); + if(m_root!=null) + { + m_root.Runtime.SpringBone.ReconstructSpringBone(); + } + } + } } ///