#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<InteractableState> _states => _interactables.Select(i => i.State);
|
|
public void Awake()
|
{
|
_interactables = GetComponents<IInteractable>();
|
if (_interactables.Length == 0)
|
{
|
Debug.LogWarning("FlexalonOculusInputProvider should be placed next to Oculus Interactable component.");
|
}
|
}
|
}
|
}
|
|
#endif
|