From 9e89e37c543e39800526f941a536597d29d86f89 Mon Sep 17 00:00:00 2001 From: pharan Date: Wed, 31 Jan 2018 19:27:34 +0800 Subject: [PATCH] [unity] Disabled HingeChain2D code. --- .../Editor/SkeletonUtilityBoneInspector.cs | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs index 0a6632e11..de58f122b 100644 --- a/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs +++ b/spine-unity/Assets/spine-unity/SkeletonUtility/Editor/SkeletonUtilityBoneInspector.cs @@ -28,8 +28,10 @@ * POSSIBILITY OF SUCH DAMAGE. *****************************************************************************/ +//#define HINGECHAIN2D // Contributed by: Mitch Thompson + using UnityEngine; using UnityEditor; using System.Collections.Generic; @@ -277,6 +279,54 @@ namespace Spine.Unity.Editor { EditorGUIUtility.PingObject(go); } + +#if HINGECHAIN2D + bool CanCreateHingeChain () { + if (utilityBone == null) return false; + if (utilityBone.GetComponent() != null) return false; + if (utilityBone.bone != null && utilityBone.bone.Children.Count == 0) return false; + var rigidbodies = utilityBone.GetComponentsInChildren(); + return rigidbodies.Length <= 0; + } + + void CreateHingeChain () { + var utilBoneArr = utilityBone.GetComponentsInChildren(); + + foreach (var utilBone in utilBoneArr) { + if (utilBone.GetComponent() == null) { + if (utilBone.bone.Data.Length == 0) { + var sphere = utilBone.gameObject.AddComponent(); + sphere.radius = 0.1f; + } else { + float length = utilBone.bone.Data.Length; + var box = utilBone.gameObject.AddComponent(); + box.size = new Vector3(length, length / 3f, 0.2f); + box.offset = new Vector3(length / 2f, 0, 0); + } + } + + utilBone.gameObject.AddComponent(); + } + + utilityBone.GetComponent().isKinematic = true; + + foreach (var utilBone in utilBoneArr) { + if (utilBone == utilityBone) + continue; + + utilBone.mode = SkeletonUtilityBone.Mode.Override; + + var joint = utilBone.gameObject.AddComponent(); + joint.connectedBody = utilBone.transform.parent.GetComponent(); + joint.useLimits = true; + joint.limits = new JointAngleLimits2D { + min = -20, + max = 20 + }; + utilBone.GetComponent().mass = utilBone.transform.parent.GetComponent().mass * 0.75f; + } + } +#else bool CanCreateHingeChain () { if (utilityBone == null) return false; @@ -285,7 +335,7 @@ namespace Spine.Unity.Editor { if (utilityBone.bone != null && utilityBone.bone.Children.Count == 0) return false; - Rigidbody[] rigidbodies = utilityBone.GetComponentsInChildren(); + var rigidbodies = utilityBone.GetComponentsInChildren(); return rigidbodies.Length <= 0; } @@ -332,6 +382,7 @@ namespace Spine.Unity.Editor { utilBone.gameObject.AddComponent(); } +#endif } }