Gizmo Client
Gizmo module is a specialized tool for manipulating entities in 3D space within RedM. It provides a visual interface for moving, rotating, and precisely positioning objects with optional camera controls.
Configuration Variables (Convars)
Convar | Side | Type | Default | Description |
---|---|---|---|---|
jo_libs:gizmo:enableCam | Client | Boolean | true | Enable/Disable camera feature |
jo_libs:gizmo:keys:cameraSpeedDown | Client | Integer | INPUT_SELECT_NEXT_WEAPON | Decrease camera speed |
jo_libs:gizmo:keys:cameraSpeedUp | Client | Integer | INPUT_SELECT_PREV_WEAPON | Increase camera speed |
jo_libs:gizmo:keys:cancel | Client | Integer | INPUT_GAME_MENU_TAB_RIGHT_SECONDARY | Cancel operation |
jo_libs:gizmo:keys:confirm | Client | Integer | INPUT_FRONTEND_ACCEPT | Confirm placement |
jo_libs:gizmo:keys:focusEntity | Client | Integer | INPUT_SHOP_SPECIAL | Toggle focus on entity |
jo_libs:gizmo:keys:moveDown | Client | Integer | INPUT_FRONTEND_RUP | Move down |
jo_libs:gizmo:keys:moveUp | Client | Integer | INPUT_FRONTEND_X | Move up |
jo_libs:gizmo:keys:moveX | Client | Integer | INPUT_SCRIPTED_FLY_LR | Move left/right |
jo_libs:gizmo:keys:moveY | Client | Integer | INPUT_SCRIPTED_FLY_UD | Move forward/backward |
jo_libs:gizmo:keys:snapToGround | Client | Integer | INPUT_INTERACT_OPTION1 | Snap entity to ground |
jo_libs:gizmo:keys:switchMode | Client | Integer | INPUT_RELOAD | Switch between translate/rotate modes |
jo_libs:gizmo:maxCamDistance | Client | Integer | 80 | Maximum distance camera can be moved from player |
jo_libs:gizmo:maxDistance | Client | Integer | 100 | Maximum distance entity can be moved from starting position (set to false to disable) |
jo_libs:gizmo:maxMovementSpeed | Client | Float | 0.2 | Maximum movement speed for camera |
jo_libs:gizmo:maxY | Client | Integer | 40 | Maximum Y value for camera rotation |
jo_libs:gizmo:minMovementSpeed | Client | Float | 0.001 | Minimum movement speed for camera |
jo_libs:gizmo:minY | Client | Integer | -40 | Minimum Y value for camera rotation |
jo_libs:gizmo:movementSpeed | Client | Float | 0.1 | Default movement speed for camera |
jo_libs:gizmo:movementSpeedIncrement | Client | Float | 0.01 | Increment value when adjusting camera speed |
Runtime Configuration
You can also override specific configuration options when calling jo.gizmo.moveEntity()
by passing a configuration table as the second parameter:
local result = jo.gizmo.moveEntity(object, {
enableCam = false, -- Disable camera for this specific call
maxDistance = 200, -- Allow movement up to 200 units away
movementSpeed = 0.2 -- Set faster movement speed for this instance
})
This allows for flexible configuration on a per-call basis without changing the server-wide defaults.
JO Functions
jo.gizmo.cancel()
Cancels the currently active gizmo interface
Syntax
jo.gizmo.cancel()
Example
CreateThread(function()
local entity = 1234566
local cfg = {
enableCam = true,
maxDistance = 5.0,
maxCamDistance = 10.0,
minY = -20.0,
maxY = 20.0,
movementSpeed = 0.1
}
local function allowPlace(position)
log("Position:", position)
return true
end
local result = jo.gizmo.moveEntity(entity, cfg, allowPlace)
end)
--Cancel the gizmo after 10s
CreateThread(function()
Wait(10000)
jo.gizmo.cancel()
end)
jo.gizmo.moveEntity()
Setup a gizmo interface to move an entity in 3D space
Allows for precise positioning and rotation of entities through a visual interface
Uses a camera system for better manipulation when enabled
Syntax
jo.gizmo.moveEntity(entity, cfg, allowPlace)
Parameters
entity
: integer
The entity to move
cfg
: table Optional
Configuration options to override defaults
cfg.enableCam
: boolean - Enable/disable camera feature - default based on config
cfg.maxDistance
: number - Max distance the entity can be moved from starting position - default based on config
cfg.maxCamDistance
: number - Max distance the camera can be moved from player - default based on config
cfg.minY
: number - Min Y value from starting position for camera - default based on config
cfg.maxY
: number - Max Y value from starting position for camera - default based on config
cfg.movementSpeed
: number - Movement speed for camera - default based on config
allowPlace
: function Optional
Optional callback to validate placement - receives proposed position as parameter
Return Value
Type : table|nil
Returns entity position and rotation data when completed, nil if already active
Example
local entity = 1234566
local cfg = {
enableCam = true,
maxDistance = 5.0,
maxCamDistance = 10.0,
minY = -20.0,
maxY = 20.0,
movementSpeed = 0.1
}
local function allowPlace(position)
log("Position:", position)
return true
end
local result = jo.gizmo.moveEntity(entity, cfg, allowPlace)
log(result)