‹›
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ázePovolené operace
Draftadd_wheel, add_differential, add_anti_roll_bar a build.
BuiltOvládání, gear selection, gettery, kontakty, rendering a debug.
Destroyedis_valid vrátí false; ostatní operace bezpečně selžou.

Cleanup#

GML
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#

GML
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íkSignaturaKontrakt operace
JoltVehicle.destroyJoltVehicle.destroy()Boolean, opakovaně true; zničí vehicle a jeho virtuální kola, nikoliv podvozek.
JoltVehicle.is_validJoltVehicle.is_valid()Boolean ověřující wrapper, podvozek a native vehicle; neříká, zda už byl zavolán build.