Heroes_of_Hiis/Assets/Project Files/Scripts/JonasB/OLD_TeleportationManager.cs

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