diff --git a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs index 8d7699112..2bb0fbd61 100644 --- a/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs +++ b/Assets/VRM10/Editor/Components/SpringBone/VRM10SpringBoneJointEditor.cs @@ -59,12 +59,12 @@ namespace UniVRM10 m_showJointSettings = EditorGUILayout.Foldout(m_showJointSettings, "Joint Settings"); if (m_showJointSettings) { - LimitBreakSlider(m_stiffnessForceProp, 0.0f, 4.0f, 0.0f, Mathf.Infinity); - LimitBreakSlider(m_gravityPowerProp, 0.0f, 2.0f, 0.0f, Mathf.Infinity); + Vrm10EditorUtility.LimitBreakSlider(m_stiffnessForceProp, 0.0f, 4.0f, 0.0f, Mathf.Infinity); + Vrm10EditorUtility.LimitBreakSlider(m_gravityPowerProp, 0.0f, 2.0f, 0.0f, Mathf.Infinity); EditorGUILayout.PropertyField(m_gravityDirProp); EditorGUILayout.PropertyField(m_dragForceProp); EditorGUILayout.Space(); - LimitBreakSlider(m_jointRadiusProp, 0.0f, 0.5f, 0.0f, Mathf.Infinity); + Vrm10EditorUtility.LimitBreakSlider(m_jointRadiusProp, 0.0f, 0.5f, 0.0f, Mathf.Infinity); } if (serializedObject.ApplyModifiedProperties()) @@ -143,53 +143,6 @@ namespace UniVRM10 return jointIndex == (spring.Joints.Count - 1); } - /// - /// スライダーと数値入力で限界値の違う、所謂「限界突破スライダー」を作成する - /// `EditorGUILayout.PropertyField` の代替として利用する - /// - private static void LimitBreakSlider(SerializedProperty property, float sliderLeft, float sliderRight, float numberLeft, float numberRight) - { - var label = new GUIContent(property.displayName); - var currentValue = property.floatValue; - - var rect = EditorGUILayout.GetControlRect(); - - EditorGUI.BeginProperty(rect, label, property); - - rect = EditorGUI.PrefixLabel(rect, label); - - // slider - { - EditorGUI.BeginChangeCheck(); - - var sliderRect = rect; - sliderRect.width -= 55.0f; - rect.xMin += rect.width - 50.0f; - - var clampedvalue = Mathf.Clamp(currentValue, sliderLeft, sliderRight); - var sliderValue = GUI.HorizontalSlider(sliderRect, clampedvalue, sliderLeft, sliderRight); - - if (EditorGUI.EndChangeCheck()) - { - property.floatValue = sliderValue; - } - } - - // number - { - EditorGUI.BeginChangeCheck(); - - var numberValue = Mathf.Clamp(EditorGUI.FloatField(rect, currentValue), numberLeft, numberRight); - - if (EditorGUI.EndChangeCheck()) - { - property.floatValue = numberValue; - } - } - - EditorGUI.EndProperty(); - } - void OnSceneGUI() { if (m_root == null) diff --git a/Assets/VRM10/Editor/Components/VRM10ObjectLookAtEditor.cs b/Assets/VRM10/Editor/Components/VRM10ObjectLookAtEditor.cs index 45576c5bb..3e53763af 100644 --- a/Assets/VRM10/Editor/Components/VRM10ObjectLookAtEditor.cs +++ b/Assets/VRM10/Editor/Components/VRM10ObjectLookAtEditor.cs @@ -27,10 +27,8 @@ namespace UniVRM10 { EditorGUILayout.LabelField(_name); EditorGUI.indentLevel++; - // EditorGUILayout.PropertyField(_CurveXRangeDegree); - _CurveXRangeDegree.floatValue = EditorGUILayout.Slider("CurveXRangeDegree", _CurveXRangeDegree.floatValue, 0, 90.0f); - // EditorGUILayout.PropertyField(_CurveYRangeDegree); - _CurveYRangeDegree.floatValue = EditorGUILayout.Slider("CurveYRangeDegree", _CurveYRangeDegree.floatValue, 0, yMax); + Vrm10EditorUtility.LimitBreakSlider(_CurveXRangeDegree, 0, 90.0f, 0, 90.0f); + Vrm10EditorUtility.LimitBreakSlider(_CurveYRangeDegree, 0, yMax, 0, 90.0f); EditorGUI.indentLevel--; EditorGUILayout.Space(); } diff --git a/Assets/VRM10/Editor/Vrm10EditorUtility.cs b/Assets/VRM10/Editor/Vrm10EditorUtility.cs new file mode 100644 index 000000000..4df9bfba3 --- /dev/null +++ b/Assets/VRM10/Editor/Vrm10EditorUtility.cs @@ -0,0 +1,55 @@ +using UnityEditor; +using UnityEngine; + +namespace UniVRM10 +{ + public static class Vrm10EditorUtility + { + /// + /// スライダーと数値入力で限界値の違う、所謂「限界突破スライダー」を作成する + /// `EditorGUILayout.PropertyField` の代替として利用する + /// + public static void LimitBreakSlider(SerializedProperty property, float sliderLeft, float sliderRight, float numberLeft, float numberRight) + { + var label = new GUIContent(property.displayName); + var currentValue = property.floatValue; + + var rect = EditorGUILayout.GetControlRect(); + + EditorGUI.BeginProperty(rect, label, property); + + rect = EditorGUI.PrefixLabel(rect, label); + + // slider + { + EditorGUI.BeginChangeCheck(); + + var sliderRect = rect; + sliderRect.width -= 55.0f; + rect.xMin += rect.width - 50.0f; + + var clampedvalue = Mathf.Clamp(currentValue, sliderLeft, sliderRight); + var sliderValue = GUI.HorizontalSlider(sliderRect, clampedvalue, sliderLeft, sliderRight); + + if (EditorGUI.EndChangeCheck()) + { + property.floatValue = sliderValue; + } + } + + // number + { + EditorGUI.BeginChangeCheck(); + + var numberValue = Mathf.Clamp(EditorGUI.FloatField(rect, currentValue), numberLeft, numberRight); + + if (EditorGUI.EndChangeCheck()) + { + property.floatValue = numberValue; + } + } + + EditorGUI.EndProperty(); + } + } +} \ No newline at end of file diff --git a/Assets/VRM10/Editor/Vrm10EditorUtility.cs.meta b/Assets/VRM10/Editor/Vrm10EditorUtility.cs.meta new file mode 100644 index 000000000..2517d5419 --- /dev/null +++ b/Assets/VRM10/Editor/Vrm10EditorUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4b75cffea6a5f03418a9a698a32c15cb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/Components/LookAt/CurveMapper.cs b/Assets/VRM10/Runtime/Components/LookAt/CurveMapper.cs index 1e7109d2a..b7f0508d8 100644 --- a/Assets/VRM10/Runtime/Components/LookAt/CurveMapper.cs +++ b/Assets/VRM10/Runtime/Components/LookAt/CurveMapper.cs @@ -7,10 +7,20 @@ namespace UniVRM10 [Serializable] public class CurveMapper { - [Range(20.0f, 90.0f)] + /// + /// v0.128.3 VRM10ObjectLookAtEditor + /// + /// DegreeINput 0-90 + /// public float CurveXRangeDegree; - [Range(0, 90.0f)] + /// + /// v0.128.3 VRM10ObjectLookAtEditor + /// + /// EyeBoneDegree 0-90 + /// or + /// ExpressionWeight 0-1.0 + /// public float CurveYRangeDegree; public CurveMapper(float xRange, float yRange)