Motor
Konfiguruje nativní VehicleEngineSettings před sestavením vozidla.
Rozšíření zpřístupňuje hlavní torque, RPM, inertia a damping nastavení, ale zachovává nativní torque curve Jolt Physics 5.6.
Volby při vytvoření#
var car = jolt_vehicle(chassis, {
engine: {
max_torque: 500,
min_rpm: 1000,
max_rpm: 7000,
inertia: 0.5,
angular_damping: 0.2
}
});| Pole | Pravidlo | Účinek |
|---|---|---|
| max_torque | > 0 | Maximální moment motoru v N m. |
| min_rpm | > 0 a pod aktuálním max_rpm | Volnoběžné/minimální RPM. |
| max_rpm | Nad aktuálním min_rpm | Maximální provozní RPM. |
| inertia | > 0 | Odpor proti změně úhlové rychlosti motoru. |
| angular_damping | >= 0 | Pasivní tlumení úhlové rychlosti. |
Runtime stav#
| Getter | Výsledek |
|---|---|
| get_engine_rpm() | Aktuální rychlost motoru v RPM. |
| get_engine_state() | {rpm, gear, clutch, switching}. |
- Neuvedená pole zachovají nativní výchozí hodnoty Jolt.
- Současné veřejné API neumí měnit engine settings po build().
Konfigurační objekt a settery#
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);Konfigurační factories vracejí GML objekt nastavení; samy nevytvářejí fyziku. Jejich settery vracejí self, tedy tento objekt, a nejsou potvrzením platnosti hodnoty. Pole se spotřebují a ověří při jolt_vehicle, add_wheel nebo add_differential. Vynechané pole zachová default odpovídajícího options zápisu uvedený výše. Změna nastavení po jeho použití nemění existující vozidlo, kolo ani diferenciál. Nastavení nepotřebuje destroy.
Vozidlo při chybě vytvoření vrací undefined. add_differential vrací Boolean; add_wheel vrací číselný index začínající nulou, nebo Boolean false při chybě. Index 0 je úspěch: nepoužívej pouze if (!wheel_index). Konfiguraci kol a diferenciálů dokonči před build().
Pokud dodáš min_rpm i max_rpm, loader předá dvojici nativní validaci atomicky; nerozhoduje staré pořadí změn vůči výchozím mezím. Při dodání jediné meze se ověřuje vůči současné druhé mezi. Min musí být kladné a menší než max; samotný setter objektu nastavení tuto validaci neprovádí.
Ověřené kontrakty operací#
Následující kontrakty rozlišují jednotky, návratové hodnoty, chyby a životnost podle aktuální implementace. Nevynechávej kontrolu výsledku: false, 0 a undefined mohou mít u různých metod odlišný význam.
| Symbol / vlastník | Signatura | Kontrakt operace |
|---|---|---|
| jolt_vehicle_engine | jolt_vehicle_engine() | Vytvoří prázdný settings objekt. Nevyžaduje svět, nevytváří fyziku; settery vrací self. Vynechané vlastnosti přenechá defaultům při jolt_vehicle. |
| JoltVehicle.get_engine_rpm | JoltVehicle.get_engine_rpm() | Číselné RPM nebo index převodu podle metody; undefined při chybě/nebuildnutém vehicle. |
| JoltVehicleEngineSettings.set_angular_damping | JoltVehicleEngineSettings.set_angular_damping(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečné tlumení >= 0. |
| JoltVehicleEngineSettings.set_inertia | JoltVehicleEngineSettings.set_inertia(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečná setrvačnost > 0 kg·m². |
| JoltVehicleEngineSettings.set_max_rpm | JoltVehicleEngineSettings.set_max_rpm(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečné RPM: 0 < min < max. Jsou-li zadány oba limity, předají se atomicky; jednotlivý limit musí vyhovovat aktuálnímu druhému limitu. |
| JoltVehicleEngineSettings.set_max_torque | JoltVehicleEngineSettings.set_max_torque(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečný moment > 0 N·m. |
| JoltVehicleEngineSettings.set_min_rpm | JoltVehicleEngineSettings.set_min_rpm(value) | Konfigurace před vytvořením; vrací self, validace až při jolt_vehicle/add_wheel/add_differential. Konečné RPM: 0 < min < max. Jsou-li zadány oba limity, předají se atomicky; jednotlivý limit musí vyhovovat aktuálnímu druhému limitu. |