summaryrefslogtreecommitdiff
path: root/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs')
-rw-r--r--ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs71
1 files changed, 65 insertions, 6 deletions
diff --git a/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs b/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs
index 9652670..90515d7 100644
--- a/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs
+++ b/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs
@@ -1,3 +1,5 @@
+using Rigging.BodyPart;
+using Rigging.Inputs;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
@@ -7,17 +9,74 @@ namespace Rigging.Action
public class Rotation : RiggingActionBase
{
- // Start is called before the first frame update
- void Start()
+
+ public Transform rotationTarget;
+
+ public Rigidbody hip;
+
+ public Rigidbody torso;
+
+ public Rigidbody head;
+
+ public float rotationTorque;
+
+ public float clamp;
+
+ public InputHandler input;
+
+ //private PlayerDeath death;
+
+ [HideInInspector]
+ public float hipCorrectionAmount;
+
+ public bool useHip = true;
+
+ public bool useTorso = true;
+
+ public bool useHead = true;
+
+ protected override void OnStart()
{
-
+ //death = GetComponent<PlayerDeath>();
+ rotationTarget = transform.root.GetComponentInChildren<RotationTarget>().transform;
+ hip = player.body.hip.rigidbody;
+ torso = player.body.torso.rigidbody;
+ head = player.body.head.rigidbody;
+ input = transform.root.GetComponentInChildren<InputHandler>();
}
- // Update is called once per frame
- void Update()
+ protected override void OnFixedUpdate()
{
-
+ 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 muscleFunction = 1;
+ 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);
+ }
}
+
}
} \ No newline at end of file