diff options
Diffstat (limited to '_ActiveRagdoll/Handlers/FootHandler.cs')
-rw-r--r-- | _ActiveRagdoll/Handlers/FootHandler.cs | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/_ActiveRagdoll/Handlers/FootHandler.cs b/_ActiveRagdoll/Handlers/FootHandler.cs new file mode 100644 index 0000000..7343e21 --- /dev/null +++ b/_ActiveRagdoll/Handlers/FootHandler.cs @@ -0,0 +1,75 @@ +using UnityEngine; + +public class FootHandler : MonoBehaviour +{ + private AnimationHandler animHandler; + + private Collider collider; + + public PhysicMaterial slippery; + + private PhysicMaterial footMaterial; + + private Transform torso; + + private MovementDataHandler moveData; + + private Rigidbody rig; + + private RotationHandler rot; + + private Vector3 rotationDif; + + private AnimationObject anim; + + private StepHandler handler; + + private void Start() + { + animHandler = base.transform.root.GetComponent<AnimationHandler>(); + moveData = base.transform.root.GetComponent<MovementDataHandler>(); + collider = GetComponentInChildren<Collider>(); + rig = GetComponent<Rigidbody>(); + footMaterial = collider.material; + torso = base.transform.root.GetComponentInChildren<Torso>().transform; + rot = base.transform.root.GetComponent<RotationHandler>(); + handler = base.transform.root.GetComponent<StepHandler>(); + anim = GetComponentInChildren<AnimationObject>(); + } + + private void Update() + { + float num = Mathf.Abs(torso.position.x - base.transform.position.x) + Mathf.Abs(torso.position.z - base.transform.position.z); + if (rot.hipCorrectionAmount > 30f || ((bool)anim && anim.isLeft != handler.isLeft)) + { + SetFoot(active: false); + } + else if (animHandler.animationState == 0) + { + if (num > 0.1f || rotationDif.magnitude > 15f) + { + SetFoot(active: false); + } + else + { + SetFoot(active: true); + } + } + else + { + SetFoot(active: true); + } + } + + private void FixedUpdate() + { + } + + private void SetFoot(bool active) + { + if (active) + { + collider.material = footMaterial; + } + } +} |