r2mods/ilspy_dump/ror2_csproj/RoR2.Mecanim/CrouchMecanim.cs

55 lines
1.5 KiB
C#

using UnityEngine;
namespace RoR2.Mecanim;
public class CrouchMecanim : MonoBehaviour
{
public float duckHeight;
public Animator animator;
public float smoothdamp;
public float initialVerticalOffset;
public Transform crouchOriginOverride;
private float crouchCycle;
private const float crouchRaycastFrequency = 2f;
private float crouchStopwatch;
private static readonly int crouchCycleOffsetParamNameHash = Animator.StringToHash("crouchCycleOffset");
private void FixedUpdate()
{
crouchStopwatch -= Time.fixedDeltaTime;
if (crouchStopwatch <= 0f)
{
crouchStopwatch = 0.5f;
Transform transform = (crouchOriginOverride ? crouchOriginOverride : base.transform);
Vector3 up = transform.up;
RaycastHit hitInfo;
bool flag = Physics.Raycast(new Ray(transform.position - up * initialVerticalOffset, up), out hitInfo, duckHeight + initialVerticalOffset, LayerIndex.world.mask, QueryTriggerInteraction.Ignore);
crouchCycle = (flag ? Mathf.Clamp01(1f - (hitInfo.distance - initialVerticalOffset) / duckHeight) : 0f);
}
}
private void Update()
{
if ((bool)animator)
{
animator.SetFloat(crouchCycleOffsetParamNameHash, crouchCycle, smoothdamp, Time.deltaTime);
}
}
private void OnDrawGizmos()
{
Gizmos.color = Color.yellow;
Gizmos.DrawLine(base.transform.position, base.transform.position + base.transform.up * duckHeight);
Gizmos.color = Color.red;
Gizmos.DrawLine(base.transform.position, base.transform.position + -base.transform.up * initialVerticalOffset);
}
}