using KitsuneCafe.Extension; using R3; using UnityAtoms.BaseAtoms; using UnityEngine; namespace KitsuneCafe.Entities { public class SprintFeature : MonoBehaviour { [SerializeField] private Motor motor; [SerializeField] private BoolReference sprint; [SerializeField] private float adjustedMaxSpeed = 3f; public float SprintSpeed => adjustedMaxSpeed; public readonly ReactiveProperty IsSprinting = new(false); private void Reset() { motor = GetComponent(); } private void Awake() { sprint.ObserveChange() .Subscribe(Sprint) .RegisterTo(destroyCancellationToken); } public void Sprint(bool shouldSprint = true) { if (shouldSprint) { motor.ChangeMaxSpeed(adjustedMaxSpeed); } else { motor.ResetMaxSpeed(); } IsSprinting.Value = shouldSprint; } } }