server/commands - Camera & Input Commands
Reference for `server/commands.lua`. Provides camera management functions - switching between free/game cameras, positioning, and deprecated global camera accessors.
Reference for server/commands.lua. Provides camera management functions - switching between free/game cameras, positioning, and deprecated global camera accessors.
Exports
| Key | Signature | Description |
|---|---|---|
initCamera | () → cam | Initializes the game camera, sets up render view |
isFreeCamera | () → bool | Returns true if currently in free camera mode |
setFreeCamera | () | Switches to free camera (also used by C++ side) |
setGameCamera | () | Switches back to game/vehicle camera |
toggleCamera | (player) | Toggles between free and game camera |
dropCameraAtPlayer | (player) | Moves free camera to vehicle position |
dropPlayerAtCamera | (player) | Teleports vehicle to camera position (with reset) |
dropPlayerAtCameraNoReset | (player) | Teleports vehicle to camera (preserves physics state) |
toggleFastSpeed | (enabled) | Camera fast-movement modifier (shift key) |
changeCameraSpeed | (val) | Adjusts camera movement speed |
getCameraTransformJson | () → string | Returns [px,py,pz,rx,ry,rz,rw] JSON |
setFreeCameraTransformJson | (json) | Sets free camera from JSON array |
onNodegrabStart | (usingPlayerVehicle) | Switches to free camera for node grabbing |
onNodegrabStop | (usingPlayerVehicle) | Restores previous camera after node grab |
M.changeCameraSpeed | (val) | camera modifier for normal speed (typically alt+scrollwheel) |
M.dropCameraAtPlayer | (player) | (No description available) |
M.dropPlayerAtCamera | (player) | (No description available) |
M.dropPlayerAtCameraNoReset | (player) | (No description available) |
M.getCameraTransformJson | () | (No description available) |
M.initCamera | () | (No description available) |
M.isFreeCamera | () | (No description available) |
M.onNodegrabStart | (usingPlayerVehicle) | (No description available) |
M.onNodegrabStop | (usingPlayerVehicle) | (No description available) |
M.setFreeCamera | () | function used by C++ side, if you rename or move, you need to edit C++ side too |
M.setFreeCameraTransformJson | (json) | (No description available) |
M.setGameCamera | () | (No description available) |
M.toggleCamera | (player) | (No description available) |
M.toggleFastSpeed | (enabled) | camera modifier for faster speed (typically shift key) |
M.getCamera | variable | retrocompat |
M.getGame | variable | retrocompat |
M.onSettingsChanged | variable | (No description available) |
M.setCameraFree | variable | retrocompat |
M.setCameraPlayer | variable | retrocompat |
Deprecated Global Functions
These exist for backward compatibility and log deprecation warnings:
setCameraPosRot(),setCameraFovDeg/Rad/(),getCameraPosition(),getCameraUp(),getCameraRight(),getCameraForward(),getCameraQuat(),getCameraFovDeg/Rad/()
All redirect to core_camera.* equivalents.
Internals
- Camera object: The game camera is
scenetree.findObject("gameCamera"), a scene object managed by the render view system. - Free camera: Uses
core_camera.setByName(0, 'free')- retains current position/rotation. - Vehicle drop:
dropPlayerAtCameracomputes rotation from camera forward vector (zeroing Z for level orientation), then usesvehicleSetPositionRotation. - No-reset drop:
dropPlayerAtCameraNoResetusessetClusterPosRelRotto move the vehicle cluster without resetting physics, preserving damage/deformation state.
How It Works
Camera management is split between this module (high-level operations) and core_camera (low-level state). This module handles the user-facing operations like toggling cameras, placing vehicles, and providing backward-compatible global functions.
-- Toggle to free camera
commands.setFreeCamera()
-- Check mode
if commands.isFreeCamera() then
-- Move vehicle to where camera is looking
commands.dropPlayerAtCamera(0)
end
-- Get camera transform for serialization
local json = commands.getCameraTransformJson()
-- Returns: "[100.50, 200.30, 50.00, 0, 0, 0.707, 0.707]"Exported Variables
getGame- Exported variable - initialized asgetGame -- retrocompatonSettingsChanged- Exported variable - initialized asonSettingsChangedsetCameraFree- Exported variable - initialized assetFreeCamera -- retrocompatsetCameraPlayer- Exported variable - initialized assetGameCamera -- retrocompat
Angular Overlay Pattern (Mod UI)
How to create a full-screen overlay UI (splash screen, popup, modal) from a mod that renders on top of everything in BeamNG's CEF UI.
ge_utils - Game Engine Utility Functions
Reference for `ge_utils.lua`. A large collection of global utility functions loaded at GE Lua startup - scenetree access, vehicle management, object creation, TorqueScript bridge, camera helpers, and