using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.XR.Interaction.Toolkit; public class OLD_TeleportationManager : MonoBehaviour { [SerializeField] private InputActionAsset actionAsset; [SerializeField] private XRRayInteractor rayInteractor; [SerializeField] private TeleportationProvider provider; private InputAction _xButton; private bool _isActive; void Start() { rayInteractor.enabled = false; var activate = actionAsset.FindActionMap("XRI LeftHand").FindAction("Teleport Mode Activate"); activate.Enable(); activate.performed += OnTeleportActivate; var cancel = actionAsset.FindActionMap("XRI LeftHand").FindAction("Teleport Mode Cancel"); cancel.Enable(); cancel.performed += OnTeleportCancel; _xButton = actionAsset.FindActionMap("XRI LeftHand").FindAction("Teleport Move Enable"); _xButton.Enable(); } void Update() { if (!_isActive) { return; } if (_xButton.IsPressed()) { return; } if (rayInteractor.TryGetCurrent3DRaycastHit(out RaycastHit hitt)) { rayInteractor.enabled = false; _isActive = false; return; } TeleportRequest request = new TeleportRequest() { destinationPosition = hitt.point }; provider.QueueTeleportRequest(request); rayInteractor.enabled = false; _isActive = false; } private void OnTeleportActivate(InputAction.CallbackContext context) { rayInteractor.enabled = true; _isActive = true; } private void OnTeleportCancel(InputAction.CallbackContext context) { rayInteractor.enabled = false; _isActive = false; } }