Skip to main content

Introduction

v1.0.0

RadialMenuUI is a C# library for building radial menus and action wheels in Grand Theft Auto V with ScriptHookVDotNet 3.

RadialMenuUI In-Game Action Wheel

It comes from the action wheel of InteractV. It keeps drawing and input handling apart from gameplay, so your mod only supplies the actions.


Why RadialMenuUI?​

A radial menu in GTA V runs into a few problems:

  • Native Scaleform menus are rigid and slow to customize.
  • Drawing 2D sprites via ScriptHookV often leads to flickering, aspect ratio stretching, or frame drops.
  • Gamepad stick deadzones and mouse cursors easily trigger unwanted hovers if not carefully calibrated.

RadialMenuUI provides input handling, rendering and texture warmup for these cases:

  • Hybrid Dual-Input: Right stick on gamepad (with angular deadzones) + mouse pointer on a virtual 1280×720 canvas. The most recently moved device takes control.
  • Native Texture Rendering: Uses ScriptHookV texture functions (createTexture, drawTexture) and warms textures progressively, one per update, to limit first-open loading work.
  • Hierarchical Submenus: Build multi-level menus with breadcrumbs and back navigation.
  • Variant Pagination: Attach multiple options to a single slot (e.g. weather, emotes, weapons) and cycle horizontally with D-Pad Left/Right or mouse wheel.
  • Theming: Support for 3 to 10 sectors (or 12), customized colors, alpha, dimensions, and custom PNG icons.
  • Gameplay Host: Optional RadialMenuGameplayHost helper providing hold-to-open lifecycle, cinematic slow motion, control blocking, and pause/death safety guards.

Architecture at a Glance​

RadialMenuUI is split into four layers:

RadialMenuUI Modular Architecture

  • Data Layer (RadialMenuDef, RadialEntryDef, RadialVariantDef): Pure POCO declarations. No gameplay dependencies.
  • Input Layer (IRadialMenuInput, GtaRadialMenuInput): Abstracts device input.
  • Controller Layer (RadialMenuController): FSM managing hovers, active submenus, variants, sound effects, and lifecycle.
  • View Layer (RadialMenuView, RadialMenuAssets): Draws background rings, active slices, center disc, labels, arrows, and icons.

Quick Navigation​

TopicDescription
InstallationHow to add RadialMenuUI.dll and base textures to your project.
QuickstartBuild a radial menu in a ScriptHookVDotNet script.
MenusCreating submenus, keeping the wheel open, and slot placement.
VariantsCycling multiple choices on a single slot.
ThemingCustomizing ring textures, colors, and supported slot counts.
AssetsIcons by path or theme keys, and dynamic runtime textures.
Gameplay IntegrationSlow motion, hold-to-open, and replacing the native weapon wheel.
API ReferenceComplete classes, methods, and events reference.