r2mods/ilspy_dump/ror2_csproj/RoR2/CharacterAnimatorWalkParamC...

32 lines
1.4 KiB
C#

using System;
using UnityEngine;
namespace RoR2;
public struct CharacterAnimatorWalkParamCalculator
{
private float animatorReferenceMagnitudeVelocity;
private float animatorReferenceAngleVelocity;
public Vector2 animatorWalkSpeed { get; private set; }
public float remainingTurnAngle { get; private set; }
public void Update(Vector3 worldMoveVector, Vector3 animatorForward, in BodyAnimatorSmoothingParameters.SmoothingParameters smoothingParameters, float deltaTime)
{
Vector3 rhs = Vector3.Cross(Vector3.up, animatorForward);
float x = Vector3.Dot(worldMoveVector, animatorForward);
float y = Vector3.Dot(worldMoveVector, rhs);
Vector2 to = new Vector2(x, y);
float magnitude = to.magnitude;
float num = ((magnitude > 0f) ? Vector2.SignedAngle(Vector2.right, to) : 0f);
float magnitude2 = animatorWalkSpeed.magnitude;
float current = ((magnitude2 > 0f) ? Vector2.SignedAngle(Vector2.right, animatorWalkSpeed) : 0f);
float num2 = Mathf.SmoothDamp(magnitude2, magnitude, ref animatorReferenceMagnitudeVelocity, smoothingParameters.walkMagnitudeSmoothDamp, float.PositiveInfinity, deltaTime);
float num3 = Mathf.SmoothDampAngle(current, num, ref animatorReferenceAngleVelocity, smoothingParameters.walkAngleSmoothDamp, float.PositiveInfinity, deltaTime);
remainingTurnAngle = num3 - num;
animatorWalkSpeed = new Vector2(Mathf.Cos(num3 * (MathF.PI / 180f)), Mathf.Sin(num3 * (MathF.PI / 180f))) * num2;
}
}