68 lines
2.1 KiB
C#
68 lines
2.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.XR.Interaction.Toolkit;
|
|
|
|
//this script does block rotation and movement if a object is grabbed (BUGGY)
|
|
|
|
public class BlockRotAndMove : MonoBehaviour
|
|
{
|
|
private ActionBasedContinuousMoveProvider moveProvider;
|
|
private ActionBasedContinuousTurnProvider turnProvider;
|
|
private XRGrabInteractable grabInteractable;
|
|
//variable that ensures, that the move and turn provider must not be searched every time an object is grabbed
|
|
private bool moveProviderFound = false;
|
|
|
|
//block rotation and movement if an object is grabed
|
|
private void OnGrab(XRBaseInteractor interactor)
|
|
{
|
|
if (!moveProviderFound)
|
|
{
|
|
FindMoveProvider();
|
|
moveProviderFound = true;
|
|
}
|
|
|
|
moveProvider.enabled = false;
|
|
turnProvider.enabled = false;
|
|
}
|
|
|
|
private void OnRelease(XRBaseInteractor interactor)
|
|
{
|
|
if (!moveProviderFound)
|
|
{
|
|
FindMoveProvider();
|
|
moveProviderFound = true;
|
|
}
|
|
|
|
moveProvider.enabled = true;
|
|
turnProvider.enabled = true;
|
|
}
|
|
|
|
//find the move provider of the current player, currently: get the move provider of the first player found
|
|
//TODO: fix to only get move provider of current player
|
|
private void FindMoveProvider()
|
|
{
|
|
moveProvider = GameObject.Find("Move").GetComponent<ActionBasedContinuousMoveProvider>();
|
|
turnProvider = GameObject.Find("Turn").GetComponent<ActionBasedContinuousTurnProvider>();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
try
|
|
{
|
|
FindMoveProvider();
|
|
moveProviderFound = true;
|
|
}
|
|
catch
|
|
{
|
|
moveProviderFound = false;
|
|
}
|
|
|
|
//add listener functions to the object the script is attached to
|
|
grabInteractable = GetComponent<XRGrabInteractable>();
|
|
grabInteractable.onSelectEntered.AddListener(OnGrab);
|
|
grabInteractable.onSelectExited.AddListener(OnRelease);
|
|
grabInteractable.onSelectCanceled.AddListener(OnRelease);
|
|
}
|
|
}
|