diff options
Diffstat (limited to 'ActiveRagdoll/Assets/TABG/Scripts/RotateByMouseInput.cs')
-rw-r--r-- | ActiveRagdoll/Assets/TABG/Scripts/RotateByMouseInput.cs | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/ActiveRagdoll/Assets/TABG/Scripts/RotateByMouseInput.cs b/ActiveRagdoll/Assets/TABG/Scripts/RotateByMouseInput.cs new file mode 100644 index 0000000..3e1ee14 --- /dev/null +++ b/ActiveRagdoll/Assets/TABG/Scripts/RotateByMouseInput.cs @@ -0,0 +1,126 @@ +using UnityEngine; + +namespace Rigging +{ + + public class RotateByMouseInput : MonoBehaviour + { + public enum XSpace + { + self, + world + } + + public enum YSpace + { + self, + world + } + + public bool useX; + + public XSpace xSpace; + + public Vector3 xVector; + + public bool useY; + + public YSpace ySpace; + + public Vector3 yVector; + + [Header("Control")] + public bool needControl; + + public bool needAlive; + + public bool freezeUnusedAngles; + + //private HasControl hasControl; + + //private PlayerDeath death; + + private float m = 1f; + + private void Start() + { + //if (needControl) + //{ + // hasControl = base.transform.root.GetComponent<HasControl>(); + //} + //if (needAlive) + //{ + // death = base.transform.root.GetComponent<PlayerDeath>(); + //} + } + + private void LateUpdate() + { + //if (needControl && !hasControl.hasControl) + //{ + // return; + //} + //if (needAlive) + //{ + // m = Mathf.Clamp(death.muscleFunction * 2f, 0f, 1f); + // if (death.dead) + // { + // return; + // } + //} + if (useX) + { + Vector3 vector = xVector; + if (xSpace == XSpace.self) + { + vector = base.transform.TransformDirection(vector); + } + base.transform.Rotate(vector * Input.GetAxis("Mouse X") * m * 0.8f, Space.World); + } + if (useY) + { + Vector3 vector2 = yVector; + if (ySpace == YSpace.self) + { + vector2 = base.transform.TransformDirection(vector2); + } + base.transform.Rotate(vector2 * Input.GetAxis("Mouse Y") * m * 0.8f, Space.World); + } + if (!freezeUnusedAngles) + { + return; + } + if (useY) + { + if (yVector.x == 0f) + { + base.transform.localRotation = Quaternion.Euler(0f, base.transform.localEulerAngles.y, base.transform.localEulerAngles.z); + } + if (yVector.y == 0f) + { + base.transform.localRotation = Quaternion.Euler(base.transform.localEulerAngles.x, 0f, base.transform.localEulerAngles.z); + } + if (yVector.z == 0f) + { + base.transform.localRotation = Quaternion.Euler(base.transform.localEulerAngles.x, base.transform.localEulerAngles.y, 0f); + } + } + if (useX) + { + if (xVector.x == 0f) + { + base.transform.localRotation = Quaternion.Euler(0f, base.transform.localEulerAngles.y, base.transform.localEulerAngles.z); + } + if (xVector.y == 0f) + { + base.transform.localRotation = Quaternion.Euler(base.transform.localEulerAngles.x, 0f, base.transform.localEulerAngles.z); + } + if (xVector.z == 0f) + { + base.transform.localRotation = Quaternion.Euler(base.transform.localEulerAngles.x, base.transform.localEulerAngles.y, 0f); + } + } + } + } + +} |