72 lines
1.9 KiB
C#
72 lines
1.9 KiB
C#
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;
|
|
}
|
|
}
|