41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
using System.Collections;
|
|
using UnityEngine.InputSystem;
|
|
using UnityEngine.XR.OpenXR.Input;
|
|
|
|
namespace UnityEngine.XR.OpenXR.Samples.ControllerSample
|
|
{
|
|
public class ActionToVisibility : MonoBehaviour
|
|
{
|
|
[SerializeField] private InputActionReference _actionReference = null;
|
|
|
|
[SerializeField] private GameObject _target = null;
|
|
|
|
private void OnEnable()
|
|
{
|
|
if (null == _target)
|
|
_target = gameObject;
|
|
|
|
_target.SetActive(false);
|
|
|
|
if (_actionReference != null && _actionReference.action != null)
|
|
StartCoroutine(UpdateVisibility());
|
|
}
|
|
|
|
private IEnumerator UpdateVisibility()
|
|
{
|
|
while (isActiveAndEnabled)
|
|
{
|
|
if (_actionReference.action != null &&
|
|
_actionReference.action.controls.Count > 0 &&
|
|
_actionReference.action.controls[0].device != null &&
|
|
OpenXRInput.TryGetInputSourceName(_actionReference.action, 0, out var actionName, OpenXRInput.InputSourceNameFlags.Component, _actionReference.action.controls[0].device))
|
|
{
|
|
_target.SetActive(true);
|
|
break;
|
|
}
|
|
yield return new WaitForSeconds(1.0f);
|
|
}
|
|
}
|
|
}
|
|
}
|