summaryrefslogtreecommitdiff
path: root/_ActiveRagdoll/Handlers/FootHandler.cs
diff options
context:
space:
mode:
Diffstat (limited to '_ActiveRagdoll/Handlers/FootHandler.cs')
-rw-r--r--_ActiveRagdoll/Handlers/FootHandler.cs75
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;
+ }
+ }
+}