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; }
}
}