using UnityEngine; namespace Flexalon { public enum InputMode { /// A ray is provided to determine which object is hovered and how it should be moved. Raycast, /// Objects are moved by an external system. Only state changes are provided. External } /// Implement this interface and assign it to the Flexalon.InputProvider /// to override how FlexalonInteractables receive input. public interface InputProvider { InputMode InputMode { get; } /// True if the input is active, e.g. button is being held down. bool Active { get; } /// In Raycast Mode, the screen-space position used to pick UI objects. Vector3 UIPointer { get; } /// In Raycast Mode, the ray to cast to determine what should be moved / hit. Ray Ray { get; } /// In External Mode, the object that is currently being hovered or selected. GameObject ExternalFocusedObject { get; } } }