Guides

Radial Menu

Overview

Provides a UI element into the world space that can be dropped into a Controller GameObject and used to create and use Radial Menus from the touchpad.

Prefab Usage:

  • Place the VRTK/Prefabs/RadialMenu/RadialMenu prefab as a child of a Controller script alias GameObject.

Inspector Parameters

  • Buttons: An array of Buttons that define the interactive buttons required to be displayed as part of the radial menu.
  • Button Prefab: The base for each button in the menu, by default set to a dynamic circle arc that will fill up a portion of the menu.
  • Generate On Awake: If checked, then the buttons will be auto generated on awake.
  • Button Thickness: Percentage of the menu the buttons should fill, 1.0 is a pie slice, 0.1 is a thin ring.
  • Button Color: The background colour of the buttons, default is white.
  • Offset Distance: The distance the buttons should move away from the centre. This creates space between the individual buttons.
  • Offset Rotation: The additional rotation of the Radial Menu.
  • Rotate Icons: Whether button icons should rotate according to their arc or be vertical compared to the controller.
  • Icon Margin: The margin in pixels that the icon should keep within the button.
  • Is Shown: Whether the buttons are shown
  • Hide On Release: Whether the buttons should be visible when not in use.
  • Execute On Unclick: Whether the button action should happen when the button is released, as opposed to happening immediately when the button is pressed.
  • Base Haptic Strength: The base strength of the haptic pulses when the selected button is changed, or a button is pressed. Set to zero to disable.
  • Dead Zone: The dead zone in the middle of the dial where the menu does not consider a button is selected. Set to zero to disable.
  • Menu Buttons: The actual GameObjects that make up the radial menu.

Class Methods

TouchAngleDeflection/2

public TouchAngleDeflection(float angle, float deflection)

  • Parameters
    • float angle - The angle of the touch on the radial menu.
    • float deflection - Deflection of the touch, where 0 is the centre and 1 is the edge.
  • Returns
    • none

Constructs an object to hold the angle and deflection of the user's touch on the touchpad

HoverButton/1

public virtual void HoverButton(TouchAngleDeflection givenTouchAngleDeflection)

  • Parameters
    • TouchAngleDeflection givenTouchAngleDeflection - The angle and deflection on the radial menu.
  • Returns
    • none

The HoverButton method is used to set the button hover at a given angle and deflection.

ClickButton/1

public virtual void ClickButton(TouchAngleDeflection givenTouchAngleDeflection)

  • Parameters
    • TouchAngleDeflection givenTouchAngleDeflection - The angle and deflection on the radial menu.
  • Returns
    • none

The ClickButton method is used to set the button click at a given angle and deflection.

UnClickButton/1

public virtual void UnClickButton(TouchAngleDeflection givenTouchAngleDeflection)

  • Parameters
    • TouchAngleDeflection givenTouchAngleDeflection - The angle and deflection on the radial menu.
  • Returns
    • none

The UnClickButton method is used to set the button unclick at a given angle and deflection.

ToggleMenu/0

public virtual void ToggleMenu()

  • Parameters
    • none
  • Returns
    • none

The ToggleMenu method is used to show or hide the radial menu.

StopTouching/0

public virtual void StopTouching()

  • Parameters
    • none
  • Returns
    • none

The StopTouching method is used to stop touching the menu.

ShowMenu/0

public virtual void ShowMenu()

  • Parameters
    • none
  • Returns
    • none

The ShowMenu method is used to show the menu.

GetButton/1

public virtual RadialMenuButton GetButton(int id)

  • Parameters
    • int id - The id of the button to retrieve.
  • Returns
    • RadialMenuButton - The found radial menu button.

The GetButton method is used to get a button from the menu.

HideMenu/1

public virtual void HideMenu(bool force)

  • Parameters
    • bool force - If true then the menu is always hidden.
  • Returns
    • none

The HideMenu method is used to hide the menu.

RegenerateButtons/0

public void RegenerateButtons()

  • Parameters
    • none
  • Returns
    • none

The RegenerateButtons method creates all the button arcs and populates them with desired icons.

AddButton/1

public void AddButton(RadialMenuButton newButton)

  • Parameters
    • RadialMenuButton newButton - The button to add.
  • Returns
    • none

The AddButton method is used to add a new button to the menu.

Example

VRTK/Examples/030_Controls_RadialTouchpadMenu displays a radial menu for each controller. The left controller uses the Hide On Release variable, so it will only be visible if the left touchpad is being touched. It also uses the Execute On Unclick variable to delay execution until the touchpad button is unclicked. The example scene also contains a demonstration of anchoring the RadialMenu to an interactable cube instead of a controller.