summaryrefslogtreecommitdiff
path: root/ActiveRagdoll/Assets/TABG/Scripts/Action/Rotation.cs
blob: c9a0e931790dcdd1db15a2cd2c5e74e8c2387bd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
using Rigging.BodyPart;
using Rigging.Inputs;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace Rigging.Action
{

    public class Rotation : RiggingActionBase
    {

        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()
        {
            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>();
        }

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

    }

}