using System.Threading.Tasks; using UnityEngine; namespace Input { /// /// Interface for characters that can participate in scripted interactions. /// Provides movement-to-target with arrival/cancellation notifications. /// Implemented by BasePlayerMovementController to enable all controllers to interact with items. /// public interface IInteractingCharacter { /// /// Controller-driven interaction movement. Each controller implements its own behavior /// based on the interactable's settings (characterToInteract, CharacterMoveToTarget, etc.) /// /// The interactable to move to /// True if movement succeeded and character arrived, false if cancelled/failed Task MoveToInteractableAsync(Interactions.InteractableBase interactable); /// /// Moves character to target position and notifies when arrived/cancelled /// void MoveToAndNotify(Vector3 target); /// /// Interrupts any in-progress MoveToAndNotify operation /// void InterruptMoveTo(); /// /// Fired when character arrives at MoveToAndNotify target /// event System.Action OnArrivedAtTarget; /// /// Fired when MoveToAndNotify is cancelled/interrupted /// event System.Action OnMoveToCancelled; /// /// Character's transform (for position queries) /// Transform transform { get; } } }