public static void AddAdditionalPinUnserialized(PropMuscle script, out ConfigurableJoint joint, out Transform target)
        {
            var addGO = new GameObject("Additional Pin");

            addGO.gameObject.layer        = script.gameObject.layer;
            addGO.transform.parent        = script.transform;
            addGO.transform.localPosition = script.additionalPinOffset;
            addGO.transform.localRotation = Quaternion.identity;
            //script.lastAdditionalPinOffset = additionalPinOffset;

            addGO.AddComponent <Rigidbody>();

            joint = addGO.AddComponent <ConfigurableJoint>();
            joint.connectedBody = script.muscle.joint.GetComponent <Rigidbody>();
            joint.autoConfigureConnectedAnchor = false;
            joint.connectedAnchor = script.additionalPinOffset;
            joint.xMotion         = ConfigurableJointMotion.Locked;
            joint.yMotion         = ConfigurableJointMotion.Locked;
            joint.zMotion         = ConfigurableJointMotion.Locked;
            joint.angularXMotion  = ConfigurableJointMotion.Locked;
            joint.angularYMotion  = ConfigurableJointMotion.Locked;
            joint.angularZMotion  = ConfigurableJointMotion.Locked;

            var addTargetGO = new GameObject("Additional Pin Target");

            addTargetGO.layer              = script.muscle.target.gameObject.layer;
            addTargetGO.transform.parent   = script.muscle.target;
            addTargetGO.transform.position = addGO.transform.position;
            addTargetGO.transform.rotation = addGO.transform.rotation;
            target = addTargetGO.transform;
        }
        public static void DrawScene(PropMuscle script)
        {
            if (script == null)
            {
                return;
            }
            if (Application.isPlaying)
            {
                return;
            }

            GUIStyle sceneLabelStyle = new GUIStyle();

            sceneLabelStyle.wordWrap         = false;
            sceneLabelStyle.normal.textColor = sceneColor;

            Handles.color = sceneColor;
            float size = GetHandleSize(script.transform.position);

            if (Selection.activeGameObject == script.gameObject)
            {
                Handles.Label(script.transform.position + script.transform.forward * size * 2f, new GUIContent(script.transform.name), sceneLabelStyle);
            }
            else
            {
                Handles.Label(script.transform.position + script.transform.forward * size * 2f, new GUIContent("Click to select Prop Muscle"), sceneLabelStyle);
            }

            if (Selection.activeGameObject == script.gameObject)
            {
                CubeCapSafe(script.transform.position, script.transform.rotation, size * 2f);
            }
            else
            {
                if (DotButton(script.transform.position, script.transform.rotation, size, size))
                {
                    Selection.activeGameObject = script.gameObject;
                }
            }

            if (script.muscle.additionalPin != null)
            {
                Handles.DrawLine(script.transform.position, script.muscle.additionalPin.transform.position);
                SphereCapSafe(script.muscle.additionalPin.transform.position, script.muscle.additionalPin.transform.rotation, size);

                if (Selection.activeGameObject == script.gameObject)
                {
                    Handles.Label(script.muscle.additionalPin.transform.position + script.transform.forward * size * 2f, new GUIContent("Additional Pin"), sceneLabelStyle);
                }
            }

            Handles.color = Color.white;
        }