Brynhildr 3D Inventory API

The Brynhildr 3D Inventory API provides developers with a flexible and modular way to build interactive inventory systems inside GTA V using Scaleform.
Unlike traditional flat UIs, this system renders the inventory in 3D space, allowing complete freedom in how and where the interface is drawn.

The API is designed with the following goals in mind:

  • Modularity – Tabs, columns, panels, and grid items are separated into distinct components, so you can mix and match them depending on your project needs.
  • Developer Control – The API focuses purely on the logic and UI building blocks. The actual rendering (DrawScaleformMovie3D) is intentionally left out, so you decide how and when the inventory is drawn.
  • Flexibility – Support for different layouts, such as 8x5 grids, dual grids, and multiple panel types (stats, details, equipment, etc.).
  • Ease of Use – The API follows a consistent design, created and learned with ScaleformUI, with functions documented through EmmyLua annotations, making it easier to explore and extend.

What’s Included

  • Grid Items – The basic building blocks of the inventory.
  • Tabs & Columns – Predefined layouts (8x5, 5x5, dual grid) to structure items.
  • Panels – Contextual information such as stats, details, and equipment.
  • Context & Instructional Buttons – Tools to provide feedback and player guidance.
  • Inventory Core – The main entry point that links all components together.

Inventory structure

classDiagram
    direction LR
    Inventory "1" --* "1..*" Tab : Contains
    Tab --* LeftPanel : Contains
    Tab --* CenterPanel : Contains
    Tab --* RightPanel : Contains
    Tab --* BottomPanel : Contains
    LeftPanel --* "0..*" LeftItem : Contains
    RightPanel --* "0..*" RightItem : Contains
    BottomPanel --* "0..*" BottomItem : Contains
    CenterPanel --* "0..*" CenterItem : Contains

class Inventory{
    +List~Tab~ Tabs
    +AddTab(tab)
}
class Tab{
    +LeftPanel
    +CenterPanel
    +RightPanel
    +BottomPanel
}
class LeftPanel{
    +List~LeftItem~ Items
    +ExtraFunctions
}
class RightPanel{
    +List~RightItem~ Items
    +ExtraFunctions
}
class BottomPanel{
    +List~BottomItem~ Items
    +ExtraFunctions
}
class CenterPanel{
    +List~CenterItem~ Items
    +ExtraFunctions
}
class LeftItem{
    +Label
    +Value
}
class RightItem{
    +Label
    +Value
}
class BottomItem{
    +Label
    +Value
}
class CenterItem{
    +Label
    +Value
}

Example Usage

local inventory = Inventory.New()
local tab8by5 = Grid8by5.New("Tab 8 by 5", "texture dictionary", "texture name")
inventory:AddTab(tab8by5)
inventory:Visible(true)

Table of contents