RLS Studios
ProjectsPatreonCommunityDocsAbout
Join Patreon
BeamNG Modding Docs

Guides

Reference

Server CommandsGE UtilitiesGame Engine MainNavigation GraphScreenshot CaptureServerServer ConnectionSpawnpoint ManagerSimulation TimeVehicle SpawningSuspension Frequency Tester
Editor AI TestsEditor AI VisualizationEditor – Assembly Spline ToolAsset BrowserAsset DeduplicatorAsset Management ToolSFX Previewer (Audio Events List)Audio Ribbon EditorAutoSaveBarriers EditorBiome ToolBuilding EditorBulk RenameCamera BookmarksCamera TransformCamera Path EditorCEF HelperCo-Simulation Signal EditorCrawl Data EditorCreate Object ToolDataBlock EditorDecal EditorDecal Spline EditorDocumentation HelperDrag Race EditorDrift Data EditorDrive Path EditorDynamic Decals Tool (Vehicle Livery Creator)Engine Audio DebugExtensions DebugExtensions EditorFFI Pointer Leak TestFile DialogFlowgraph EditorForest EditorForest ViewEditor Gizmo HelperEditor Ground Model Debug HelperEditor Headless Editor TestEditor Icon OverviewEditor ImGui C DemoEditor InspectorEditor Layout ManagerEditor Level SettingsEditor Level ValidatorEditor LoggerEditor Log HelperEditor MainEditor Main MenuEditor Main ToolbarEditor Main UpdateMap Sensor EditorMaster Spline EditorMaterial EditorMeasures Inspector HeaderMesh Editor (Base)Mesh Road EditorMesh Spline EditorMission EditorMission PlaybookMission Start Position EditorMulti Spawn Manager (Vehicle Groups)Navigation Mesh EditorEditor News MessageObject Tool (Object Select Edit Mode)Object To Spline EditorParticle EditorPerformance Profiler / Camera RecorderPhysics ReloaderPrefab Instance EditorEditor PreferencesRace / Path EditorRally EditorRaycast Test Editor ToolRenderer Components Editor ToolRender Test Editor ToolResource Checker Editor ToolRiver EditorRoad Architect EditorRoad DecorationsRoad Editor (Decal Road)Road Network ExporterRoad River Cache HandlerRoad River GUIRoad Spline EditorRoad Template EditorRoad UtilitiesScene TreeScene ViewScreenshot Creator BootstrapScript AI EditorScript AI ManagerSensor Configuration EditorSensor DebuggerShape EditorShortcut LegendSidewalk Spline EditorSites EditorSlot Traffic EditorSuspension Audio DebugTech Server ManagerTerraform ToolTerrain And Road ImporterTerrain EditorTerrain Materials EditorText EditorTool ManagerTool ShortcutsTraffic DebugTraffic ManagerTraffic Signals EditorUndo History ViewerVehicle Bridge TestVehicle Detail ViewerVehicle Editor MainEditor - VisualizationEditor Viz HelperEditor Water Object HelperEditor Windows Manager
Vehicle Editor - Toolbar
Adjustable Tech Car TunerAero DebugCrash TesterFlexbody DebugGeneral DataJBeam PickerVehicle Editor - Lights DebugVehicle Editor - Node Triangle Self Collision DetectorVehicle Editor - Powertrain InspectorVehicle Editor - Prop TransformerVehicle Editor - Raw Vehicle DataVehicle Editor - TCS DebugVehicle Editor - Vehicle SpawnerVehicle Editor - Scene View

UI

Resources

BeamNG Game Engine Lua Cheat SheetGE Developer RecipesMCP Server Setup

// RLS.STUDIOS=true

Premium Mods for BeamNG.drive. Career systems, custom vehicles, and immersive gameplay experiences.

Index

HomeProjectsPatreon

Socials

DiscordPatreon (RLS)Patreon (Vehicles)

© 2026 RLS Studios. All rights reserved.

Modding since 2024

API ReferenceGE ExtensionseditorvehicleEditorliveEditor

Vehicle Editor - Prop Transformer

Interactive tool for picking, inspecting, and transforming vehicle props (meshes, lights) in 3D using axis gizmos, with support for translation and rotation in both local and global coordinate spaces.

Interactive tool for picking, inspecting, and transforming vehicle props (meshes, lights) in 3D using axis gizmos, with support for translation and rotation in both local and global coordinate spaces.


Module Exports

ExportTypeDescription
M.menuEntrystring"Prop Transformer" - menu label
M.openfunctionOpens the prop transformer window
M.onVehicleEditorRenderJBeamshookRenders prop picking and transform gizmos
M.onUpdatehookRenders ImGui window with transform controls
M.onVehicleSwitchedhookReinitializes state for new vehicle
M.onVehicleSpawnedhookClears and reinitializes on respawn
M.onSerializehookPersists window state
M.onDeserializedhookRestores window state

Key Internals

VariableTypePurpose
windowOpenBoolPtrWindow visibility
statestablePer-vehicle state (picked prop, mode, gizmo data)
initStatestablePer-vehicle initial state templates
initVehDatastablePer-vehicle initial vehicle data snapshots
draggingbooleanWhether an axis gizmo drag is in progress

State Template Fields

FieldTypePurpose
modenumber1 = inspect, 2 = picking
pickedProptable/nilCurrently selected prop data
propSelectorIdxnumberMouse-scroll index for overlapping props
hitPropRefNodestableProps whose ref nodes are under the cursor
propertyEditingstring/nil"baseTranslationGlobal" or "baseRotationGlobal"

How It Works

Prop Picking (pickProp)

  1. Casts a ray from the mouse cursor
  2. Finds prop reference nodes within collision radius (0.035)
  3. When multiple props share a ref node, scroll wheel selects among them
  4. Left-click picks the highlighted prop

Prop Transforming (transformProp)

  1. Converts prop position from vehicle JBeam coords to world coords
  2. Sets up the editor axis gizmo at the prop's position
  3. Handles gizmo drag callbacks for translate/rotate modes
  4. Applies delta transforms via propObj:setBaseTranslationGlobal() or propObj:setBaseRotationGlobalQuat()

Rendering (renderPickedProp)

  • Shows ref/X/Y node positions with colored spheres (white/red/green)
  • Draws X/Y/Z axis lines from ref node
  • For spotlights: direction arrow with triangle heads
  • For point lights: range sphere

Lua Code Example

-- Open prop transformer
extensions.editor_vehicleEditor_liveEditor_vePropTransformer.open()

-- The picking flow:
-- 1. Click "Pick Prop" button -> enters mode 2
-- 2. Hover over prop ref nodes (green spheres drawn at initial positions)
-- 3. Scroll wheel selects among overlapping props
-- 4. Left-click picks the prop

-- Transform uses editor axis gizmo:
-- editor.setAxisGizmoMode(editor.AxisGizmoMode_Translate)
-- state.propertyEditing = "baseTranslationGlobal"

-- Gizmo callbacks handle delta computation:
-- gizmoBeginDrag: stores initial position/rotation
-- gizmoDragging: computes delta from gizmo transform
-- gizmoEndDrag: clears dragging flag

-- Position without node transforms is computed via:
-- local x, y, z, rx, ry, rz = utils.getPosRotBeforeNodeRotateOffsetMove(
--   prop, pos.x, pos.y, pos.z, rot.x, rot.y, rot.z)

-- ImGui window shows editable float3 inputs for:
-- baseTranslation, baseTranslationGlobal, baseRotation, baseRotationGlobal
-- Plus "Copy to Clipboard" for JBeam-format values

-- Coordinate transform: vehicle coords -> world coords:
-- local rot = quatFromDir(-dirFront, dirUp)
-- local axisGizmoPos = rot * (baseTranslationJBeamCoords - refPos) + vehiclePos

-- State is maintained per-vehicle via initVehDatas[vehID]
-- Switching vehicles auto-initializes new state from vdata.props

See Also

  • Adjustable Tech Car Tuner - Related reference
  • Aero Debug - Related reference
  • Crash Tester - Related reference
  • World Editor Guide - Guide

Vehicle Editor - Powertrain Inspector

Displays live powertrain device data and JBeam definitions for the active vehicle in the Vehicle Editor, allowing inspection of engines, transmissions, and other drivetrain components.

Vehicle Editor - Raw Vehicle Data

Displays the complete raw vehicle data (`vEditor.vehData`) as a recursive tree in the Vehicle Editor.

On this page

Module ExportsKey InternalsState Template FieldsHow It WorksProp Picking (pickProp)Prop Transforming (transformProp)Rendering (renderPickedProp)Lua Code ExampleSee Also