using UnityEngine; namespace Animators.Leonid_Animator.Bot { [RequireComponent(typeof(Rigidbody))] [RequireComponent(typeof(AnimatorHandler))] [RequireComponent(typeof(MovementController))] [RequireComponent(typeof(NPC))] public class BotLocomotion : MonoBehaviour { private Vector3 _moveDirection; private AnimatorHandler _myAnimatorHandler; private MovementController _movementController; private NPC _npc; private NpcBodyState _crouchBuffer = NpcBodyState.Standing; private void Start() { _myAnimatorHandler = GetComponent(); _movementController = GetComponent(); _npc = GetComponent(); _myAnimatorHandler.Initialize(); } private bool CrouchPressed(NpcBodyState state) { if (_crouchBuffer == state) return false; _crouchBuffer = state; return true; } public void UpdateAnimatorValues() { var movementDir = _movementController.Velocity; _myAnimatorHandler.UpdateAnimatorValues( Mathf.Clamp01(movementDir.magnitude), 0, false, CrouchPressed(_npc.NpcBodyState.State), _npc.IsFiring); } } }