VR4Medical/ICI/Library/PackageCache/com.unity.xr.openxr@3903c1059bcf/Samples~/Controller/Scripts/ActionToVisibility.cs
2025-07-29 13:45:50 +03:00

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