Vehicles
Životní cyklus a omezení
Vysvětluje fáze konfigurace, platnost, cleanup a nativní funkce, které JoltVehicle záměrně nezpřístupňuje.
Vozidlo je managed world-scoped resource závislý na chassis. Jeho handle je opaque a generational; nikdy jej neinterpretujte jako pointer nebo Jolt BodyID.
Životní cyklus#
| Fáze | Povolené operace |
|---|---|
| Draft | add_wheel, add_differential, add_anti_roll_bar a build. |
| Built | Ovládání, gear selection, gettery, kontakty, rendering a debug. |
| Destroyed | is_valid vrátí false; ostatní operace bezpečně selžou. |
Cleanup#
if (is_struct(car)) car.destroy();
// Nebo uvolněte managed resources ve správném pořadí:
jolt_stop();- destroy() je v managed wrapperu idempotentní.
- Native destruction odstraní VehicleConstraint jako step listener i physics constraint.
- Zničení chassis odstraní závislé native vozidlo; starý wrapper dále nepovažujte za použitelný.
- jolt_stop() ničí vehicles před constraints, bodies, worldem a runtime.
Současná omezení#
- Veřejný je pouze WheeledVehicleController; tracked vehicles a motorcycles nejsou implementované v API rozšíření.
- Kola jsou virtuální, nikoliv samostatná rigid bodies.
- Vlastní tyre friction curves a engine torque curves nejsou dostupné; existují bezpečné násobiče a max torque.
- Konfigurace je po build() neměnná; pro strukturální změnu vozidlo vytvořte znovu.
- car.update() neexistuje; nativní vehicle posouvá jolt_update().
- Rendering zůstává odpovědností volajícího.
Bezpečné zpracování chyb#
if (!car.set_inputs(throttle, steering, brake, handbrake)) {
var error = jolt_get_error();
show_debug_message(error.context + ": " + error.message);
}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 |
|---|---|---|
| JoltVehicle.destroy | JoltVehicle.destroy() | Boolean, opakovaně true; zničí vehicle a jeho virtuální kola, nikoliv podvozek. |
| JoltVehicle.is_valid | JoltVehicle.is_valid() | Boolean ověřující wrapper, podvozek a native vehicle; neříká, zda už byl zavolán build. |