namespace VRTK.Examples
|
|
{
|
|
using UnityEngine;
|
|
|
|
[System.Obsolete("`VRTK_RoomExtender_ControllerExample` will be removed in a future version of VRTK.")]
|
|
public class VRTK_RoomExtender_ControllerExample : MonoBehaviour
|
|
{
|
|
protected VRTK_RoomExtender roomExtender;
|
|
|
|
// Use this for initialization
|
|
private void Start()
|
|
{
|
|
if (GetComponent<VRTK_ControllerEvents>() == null)
|
|
{
|
|
VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.REQUIRED_COMPONENT_MISSING_FROM_GAMEOBJECT, "VRTK_RoomExtender_ControllerExample", "VRTK_ControllerEvents", "the Controller Alias"));
|
|
return;
|
|
}
|
|
if (FindObjectOfType<VRTK_RoomExtender>() == null)
|
|
{
|
|
VRTK_Logger.Error(VRTK_Logger.GetCommonMessage(VRTK_Logger.CommonMessageKeys.REQUIRED_COMPONENT_MISSING_FROM_SCENE, "VRTK_RoomExtender_ControllerExample", "VRTK_RoomExtender"));
|
|
return;
|
|
}
|
|
roomExtender = FindObjectOfType<VRTK_RoomExtender>();
|
|
//Setup controller event listeners
|
|
GetComponent<VRTK_ControllerEvents>().TouchpadPressed += new ControllerInteractionEventHandler(DoTouchpadPressed);
|
|
GetComponent<VRTK_ControllerEvents>().TouchpadReleased += new ControllerInteractionEventHandler(DoTouchpadReleased);
|
|
GetComponent<VRTK_ControllerEvents>().ButtonTwoPressed += new ControllerInteractionEventHandler(DoSwitchMovementFunction);
|
|
}
|
|
|
|
private void DoTouchpadPressed(object sender, ControllerInteractionEventArgs e)
|
|
{
|
|
roomExtender.additionalMovementMultiplier = e.touchpadAxis.magnitude * 5 > 1 ? e.touchpadAxis.magnitude * 5 : 1;
|
|
if (roomExtender.additionalMovementEnabledOnButtonPress)
|
|
{
|
|
EnableAdditionalMovement();
|
|
}
|
|
else
|
|
{
|
|
DisableAdditionalMovement();
|
|
}
|
|
}
|
|
|
|
private void DoTouchpadReleased(object sender, ControllerInteractionEventArgs e)
|
|
{
|
|
if (roomExtender.additionalMovementEnabledOnButtonPress)
|
|
{
|
|
DisableAdditionalMovement();
|
|
}
|
|
else
|
|
{
|
|
EnableAdditionalMovement();
|
|
}
|
|
}
|
|
|
|
private void DoSwitchMovementFunction(object sender, ControllerInteractionEventArgs e)
|
|
{
|
|
switch (roomExtender.movementFunction)
|
|
{
|
|
case VRTK_RoomExtender.MovementFunction.Nonlinear:
|
|
roomExtender.movementFunction = VRTK_RoomExtender.MovementFunction.LinearDirect;
|
|
break;
|
|
case VRTK_RoomExtender.MovementFunction.LinearDirect:
|
|
roomExtender.movementFunction = VRTK_RoomExtender.MovementFunction.Nonlinear;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void EnableAdditionalMovement()
|
|
{
|
|
roomExtender.additionalMovementEnabled = true;
|
|
}
|
|
|
|
private void DisableAdditionalMovement()
|
|
{
|
|
roomExtender.additionalMovementEnabled = false;
|
|
}
|
|
}
|
|
}
|