summaryrefslogtreecommitdiff
path: root/_ActiveRagdoll/Handlers/RotationHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to '_ActiveRagdoll/Handlers/RotationHandler.cs')
-rw-r--r--_ActiveRagdoll/Handlers/RotationHandler.cs73
1 files changed, 73 insertions, 0 deletions
diff --git a/_ActiveRagdoll/Handlers/RotationHandler.cs b/_ActiveRagdoll/Handlers/RotationHandler.cs
new file mode 100644
index 0000000..ee33545
--- /dev/null
+++ b/_ActiveRagdoll/Handlers/RotationHandler.cs
@@ -0,0 +1,73 @@
+using UnityEngine;
+
+public class RotationHandler : MonoBehaviour
+{
+ private Transform rotationTarget;
+
+ private Rigidbody hip;
+
+ private Rigidbody torso;
+
+ private Rigidbody head;
+
+ public float rotationTorque;
+
+ public float clamp;
+
+ private InputHandler input;
+
+ private PlayerDeath death;
+
+ [HideInInspector]
+ public float hipCorrectionAmount;
+
+ public bool useHip = true;
+
+ public bool useTorso = true;
+
+ public bool useHead = true;
+
+ private void Start()
+ {
+ death = GetComponent<PlayerDeath>();
+ rotationTarget = GetComponentInChildren<RotationTarget>().transform;
+ hip = GetComponentInChildren<Hip>().GetComponent<Rigidbody>();
+ torso = GetComponentInChildren<Torso>().GetComponent<Rigidbody>();
+ head = GetComponentInChildren<Head>().GetComponent<Rigidbody>();
+ input = GetComponent<InputHandler>();
+ }
+
+ private void FixedUpdate()
+ {
+ if (!death.dead)
+ {
+ float num = head.transform.InverseTransformPoint(rotationTarget.position).x;
+ float num2 = torso.transform.InverseTransformPoint(rotationTarget.position).x;
+ hipCorrectionAmount = hip.transform.InverseTransformPoint(hip.transform.position + input.lastInputDirection * 10f).x;
+ float muscleFunction = death.muscleFunction;
+ float num3 = 0.3f;
+ if (input.inputMovementDirection.magnitude > 0.1f)
+ {
+ num3 = 1f;
+ }
+ if (clamp != 0f)
+ {
+ hipCorrectionAmount = Mathf.Clamp(hipCorrectionAmount, 0f - clamp, clamp);
+ num = Mathf.Clamp(num, 0f - clamp, clamp);
+ num2 = Mathf.Clamp(num2, 0f - clamp, clamp);
+ }
+ if (useHip)
+ {
+ hip.AddTorque(Vector3.up * muscleFunction * rotationTorque * num3 * hipCorrectionAmount, ForceMode.Acceleration);
+ }
+ if (useTorso)
+ {
+ torso.AddTorque(Vector3.up * muscleFunction * rotationTorque * num2, ForceMode.Acceleration);
+ }
+ if (useHead)
+ {
+ head.AddTorque(Vector3.up * muscleFunction * rotationTorque * num, ForceMode.Acceleration);
+ }
+ }
+ }
+}