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; }