Assignment for RMIT Mixed Reality in 2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

80 lines
3.2 KiB

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