Add the Ring Menu to the toolkit
Description
Add the Ring Menu as a new tool to the package. It is an application control technique (or a menu) that can define shortcuts to different action in a virtual reality application. It consists of items placed onto a ring situated around the user (or any wanted object). Each item is leading to an associated action/event. The menu can be developed into sub menus when selecting a "sub menu" type item, showing a new ring above the last one with new items.
The tool needs the XRI Interaction Toolkit, as well as the Unity Input System in order to work.
The rings are always aligned with the floor, their center look into the direction of the controller (or any anchor object) and the menu appears on demand by pressing and holding a defined input (or quickly pressing and unpressing this input) at a defined position from the assigned controller (or any anchor object).
Rotating the controller associated to the menu will change the selected item, always placing it on the center of the menu. A graphical indicator also always appears on the actually selected item, helping the user knowing which item he is actually selecting.
When going into a sub menu, the item that triggered the sub menu is marked with the same type of indicator to advertise the user of which sub menu he is in. After choosing an item, releasing the input triggers the events associated to the item. These events and the ring menu creation parameters, along with the sub menus creation parameters, can be modified if necessary. The user can return to the precedent menu or cancel the ring menu by doing a movement in a defined direction with the controller (down by default).
Finally, a texture wrapper and an example texture will help the user when editing the visual look of the items (to add logos for example).
The tool contains materials for the Unity Standard Render Pipeline and the URP.
Testing
The Ring Menu was tested both with Unity Play Mode and after a build. It is also fully compatible with the Workbench and the Meta Quest 2. The scenario tested on the Meta Quest 2 was to manipulate the color of a cube in a scene with the help of the Ring Menu, divided into one main menu and two sub menus. The scenario tested on the Workbench was to manipulate three cubes in different ways. The Ring Menu was also divided into one main menu and two sub menus. This scenario can be replayed with the scene "SampleWorkbenchTestRingMenu" in Unity. The main menu will change the left cube color from grey to yellow. The first sub menu will make the middle cube bounce, and the second sub menu will enable the right cube rendering.
Here is an example of the Ring Menu in action :