from github
This commit is contained in:
@@ -0,0 +1,67 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user