#if FLEXALON_OCULUS using Oculus.Interaction; using System.Collections.Generic; using System.Linq; using UnityEngine; namespace Flexalon { public class FlexalonOculusInputProvider : MonoBehaviour, InputProvider { public InputMode InputMode => InputMode.External; public bool Active => _states.Any(s => s == InteractableState.Select); public Ray Ray => default; public Vector3 UIPointer => default; public GameObject ExternalFocusedObject => _states.Any(s => s == InteractableState.Hover || s == InteractableState.Select) ? gameObject : null; private IInteractable[] _interactables; private IEnumerable _states => _interactables.Select(i => i.State); public void Awake() { _interactables = GetComponents(); if (_interactables.Length == 0) { Debug.LogWarning("FlexalonOculusInputProvider should be placed next to Oculus Interactable component."); } } } } #endif