Quick access mod
Contents
Add Quick Access functionality to your mod
This guide assume you have basic knowledge in LUA
Template
You need a LUA module for your vehicle. Bellow is a small template you can put in /vehicles/hatch/lua/example.lua
-- This Source Code Form is subject to the terms of the bCDDL, v. 1.1. -- If a copy of the bCDDL was not distributed with this -- file, You can obtain one at http://beamng.com/bCDDL-1.1.txt local M = {} local hasRegisteredQuickAccess = false local function registerQuickAccess() if not hasRegisteredQuickAccess and core_quickAccess ~= nil then hasRegisteredQuickAccess = true --add stuff here end end local function onLoad() log('I', 'onLoad', 'myvehicule') registerQuickAccess() end local function onReset() onLoad() end local function updateGFX(dt) end -- public interface M.onLoad = onLoad M.onReset = onReset M.updateGFX = updateGFX return M
hasRegisteredQuickAccess
is a check to not have duplicate entries when reloading the vehicle or changing level.
core_quickAccess.addEntry Arguments
The arguments are passed to the function as a table
Name | Type | Optional | Default Value | Description |
---|---|---|---|---|
level | string | n/a | The level where the entry will be added, "/" is root, do not use number to begin a folder name | |
title | string | "" | The title of the pie | |
desc | string | "" | The description displayed when selected | |
icon | string | none | The icon displayed, list available here | |
color | string | "" | Defining a color will activate the icon (white) but will not use the defined color. | |
goto | string | n/a | the action that will be performed, open mod42 level | |
onSelect | function | n/a | LUA function that will get executed when pie is activated | |
generator | function | n/a | LUA function called to generated pies on the fly |
Adding Entries
you need to add a ‘folder’ for your entries
core_quickAccess.addEntry({ level = '/', title = 'MyFolder', desc="Description of mod", icon="material_extension", goto = '/mod42/'} )
now you can add entries in this folder. There is two method
Static entry
If you declare entries with this method you won't be able to change them depending of inputs
core_quickAccess.addEntry({ level = '/mod42/', desc="Desciption", title = 'titre', icon="material_extension", onSelect = function() log('I', 'onSelect', 'TEST') return {'reload'} end} )
onSelect
is a LUA function that will get executed when pie is activated
returning reload
will refresh the current level.
returning hide
will quit/hide the menu
Dynamic entry
core_quickAccess.addEntry({ level = '/mod42/', priority = 10 , generator = function(entries) local e = { title = 'a', desc="a", icon="material_extension", onSelect = function() log('I', 'onSelect', 'TEST') return {'reload'} end} if electrics.values.foo == 0 and electrics.values.bar == 1 then e.color = '#ffa800' end table.insert(entries, e) e = { title = 'b', desc="b", icon="material_extension", onSelect = function() log('I', 'onSelect', 'TEST') return {'reload'} end} table.insert(entries, e) e = { title = 'c', desc="c", icon="material_extension", onSelect = function() log('I', 'onSelect', 'TEST') return {'reload'} end} table.insert(entries, e) end})
Every time the menu display this level is displayed or receive a reload event, the pies will be regenerated by calling the function you gave to generator
color is an argument of pies, if it's define the value displayed in game is equivalent to true.