‹›
Pomocné skripty · Fyzické ovládací prvky

Životnost, chyby a diagnostika

Správné vlastnictví, kontrola chyb a několik diagnostických kroků udržují ovladače bezpečné i při zániku stroje.

PoložkaVýznam / výchozí hodnota
control.destroy()Odstraní vlastní pohyblivé body, mechanismus, odpor i Fixed. Parent nezničí. Opakované volání je bezpečné.
Zničení parentu / body / hlavního constraintuKaskádově zneplatní a odstraní celý control.
jolt_stop()Ukončí managed svět a zneplatní jeho resources.
control.is_valid()Ověří aktuální platnost, ne pouze existenci GML structu.
control.data / control.body.dataDva samostatné gameplay structy; data ovladače se nekopírují automaticky na body.

Příklad#

GML
control = jolt_control_wheel();
if (is_undefined(control)) {
    var error = jolt_get_error();
    show_debug_message(error.context + ": " + error.message);
    exit;
}
if (!control.set_phase_motor({phase: 0.25})) {
    show_debug_message(jolt_get_error().message);
}
// Před pozdějším použitím, pokud mohl zaniknout parent:
if (control.is_valid()) {
    var pose = control.get_transform();
}

Factory vrací undefined při chybě, settery true/false. Číselné a konfigurační gettery obvykle vracejí undefined při chybě; booleany vracejí false a get_detent() −1. Stejné sentinel hodnoty mohou mít i běžný význam, proto při nečekaném výsledku přečtěte chybu ihned. Další API volání ji může nahradit.

Když výsledek neodpovídá očekávání#

PoložkaVýznam / výchozí hodnota
Ovladač se nevracíZkontrolujte auto_return a dostatečný drive; u Button je default false.
Detent nezabíráVypněte návrat nebo vyšší prioritu; ověřte jednotky a capture oblast.
Motor enabled, ale nehýbeČtěte active/mode, zámek a zachycené detenty; pak moment a zatížení.
Pohybuje se opačněButton/Slider mají dráhu −Z, Pull Handle +Z. Inverze output obrací jen číslo.
Grafika uhýbáPoužijte moving get_transform(), správný origin meshe a celý quaternion.
Chyba kroku u Wheel/CrankOvěřte timestep a úhlové meze podle kapitoly Úhel, otáčky, fáze a nulování.
GML
// Create
jolt_debug_enable(true);
// Draw End
jolt_debug_draw(JOLT_DEBUG_SHAPES | JOLT_DEBUG_CONSTRAINTS | JOLT_DEBUG_CENTER_OF_MASS);

Nové související postupy#

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
JoltControl.destroyJoltControl.destroy()is_valid Boolean kontroluje native a může zneplatnit wrapper; destroy Boolean idempotentně odstraní vlastněný mechanismus (těleso a constraint), nikoliv parent.
JoltControl.is_validJoltControl.is_valid()is_valid Boolean kontroluje native a může zneplatnit wrapper; destroy Boolean idempotentně odstraní vlastněný mechanismus (těleso a constraint), nikoliv parent.