Engine
Configures Jolt's native VehicleEngineSettings before the vehicle is built.
The extension exposes the primary torque, RPM, inertia and damping settings while retaining Jolt Physics 5.6's native torque curve.
Creation options#
var car = jolt_vehicle(chassis, {
engine: {
max_torque: 500,
min_rpm: 1000,
max_rpm: 7000,
inertia: 0.5,
angular_damping: 0.2
}
});| Field | Rule | Effect |
|---|---|---|
| max_torque | > 0 | Maximum engine torque in N m. |
| min_rpm | > 0 and below current max_rpm | Idle/minimum operating RPM. |
| max_rpm | Above current min_rpm | Maximum operating RPM. |
| inertia | > 0 | Resistance to changing engine angular speed. |
| angular_damping | >= 0 | Passive damping of engine angular speed. |
Runtime state#
| Getter | Result |
|---|---|
| get_engine_rpm() | Current engine speed in RPM. |
| get_engine_state() | {rpm, gear, clutch, switching}. |
- Unspecified fields retain Jolt's native defaults.
- Engine settings cannot be changed after build() through the current public API.
Configuration object and setters#
var engine = jolt_vehicle_engine();
engine.set_max_torque(500);
engine.set_min_rpm(1000);
engine.set_max_rpm(7000);
var settings = jolt_vehicle_settings();
settings.set_engine(engine);
var car = jolt_vehicle(chassis, settings);Configuration factories return a GML settings object and create no physics. Their setters return self, the settings object, and do not confirm that a value is valid. Fields are consumed and validated by jolt_vehicle, add_wheel or add_differential. An omitted field preserves the corresponding options default described above. Editing settings after consumption does not change an existing vehicle, wheel or differential. Settings need no destroy.
Vehicle creation returns undefined on failure. add_differential returns Boolean; add_wheel returns a numeric zero-based index or Boolean false on failure. Index 0 is success: do not use only if (!wheel_index). Complete wheel/differential configuration before build().
When both min_rpm and max_rpm are supplied, the loader validates the pair atomically in native code; the old update order against default bounds does not apply. A single supplied bound is checked against the current other bound. Min must be positive and below max; the settings setter itself does not perform this validation.
Verified operation contracts#
These contracts distinguish units, return values, errors and lifetime according to the current implementation. Check results: false, 0 and undefined can mean different things for different methods.
| Symbol / owner | Signature | Operation contract |
|---|---|---|
| jolt_vehicle_engine | jolt_vehicle_engine() | Creates an empty settings object. No world required, no physics created; setters return self. Omitted properties retain defaults at jolt_vehicle. |
| JoltVehicle.get_engine_rpm | JoltVehicle.get_engine_rpm() | Numeric RPM or gear index according to method; undefined on error/unbuilt vehicle. |
| JoltVehicleEngineSettings.set_angular_damping | JoltVehicleEngineSettings.set_angular_damping(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite damping >= 0. |
| JoltVehicleEngineSettings.set_inertia | JoltVehicleEngineSettings.set_inertia(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite inertia > 0 kg·m². |
| JoltVehicleEngineSettings.set_max_rpm | JoltVehicleEngineSettings.set_max_rpm(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite RPM: 0 < min < max. Both supplied limits are applied atomically; a single limit must satisfy the current other limit. |
| JoltVehicleEngineSettings.set_max_torque | JoltVehicleEngineSettings.set_max_torque(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite torque > 0 N·m. |
| JoltVehicleEngineSettings.set_min_rpm | JoltVehicleEngineSettings.set_min_rpm(value) | Pre-creation configuration; returns self, validation deferred to jolt_vehicle/add_wheel/add_differential. Finite RPM: 0 < min < max. Both supplied limits are applied atomically; a single limit must satisfy the current other limit. |