jolt_stop
Zničí managed physics resources, default world a native runtime.
jolt_stop() provede úplný high-level teardown. Zneplatní managed handly, uvolní native i GameMaker-side resources, vyčistí event data a timing state, zničí default world a ukončí Jolt.
Syntax#
jolt_stop();Návratová hodnota#
Boolean. true po úspěšném uvolnění, také pokud svět neběží. false při chybě uvolnění; jolt_get_error() zachovává první chybu.
Typický cleanup#
// Cleanup event persistentního physics controlleru.
if (!jolt_stop()) {
var error = jolt_get_error();
show_debug_message(error.context + ": " + error.message);
}Pořadí cleanupu#
- Cloths se zničí a jejich vertex/debug buffers se odstraní.
- Characters se zničí, zneplatní, odpojí od owners a přijdou o contact arrays.
- Constraints a path resources se zničí a zneplatní.
- Bodies se zničí a uvolní se jejich geometry metadata, compound children a collision arrays.
- Managed shape resources a compounds se uvolní.
- Každý JoltLayer se zneplatní a event arrays i dropped counters se vyčistí.
- Default world se zničí, native runtime se ukončí a debug resources se resetují.
- started se nastaví na false, world na 0 a accumulator i simulation-step counter se vynulují.
Chyby během teardownu#
Funkce si zapamatuje první cleanup error, ale pokračuje v pokusu o zbývající teardown. Po zpracování všech resources a state vrátí false a první chybu zpřístupní přes jolt_get_error(). Úspěšný teardown vrací true.
Stale managed hodnoty#
User variables mohou i po stop stále odkazovat na staré JoltBody, JoltLayer, JoltConstraint, JoltShape nebo jiné wrapper structy. Jejich valid flags jsou vypnuté a native handly se tam, kde je to relevantní, nastaví na 0. Považujte je za stale a po restartu je nepoužívejte.
Restart#
jolt_stop();
// Vytvoří zcela nový default world.
jolt_start({gravity_z: -3.71});
// Znovu vytvořte layers, bodies, shapes a constraints nového worldu.Nový start vytvoří nový world a čerstvé registry. Collision layers a všechny resources svázané s předchozím worldem je nutné vytvořit znovu.
Kdy fyziku zastavit#
- jolt_stop() zavolejte při opuštění části hry, která physics world vlastní.
- U persistentního global controlleru použijte jeho Cleanup event nebo jiné jediné autoritativní shutdown místo.
- Fyziku nezastavujte, dokud jiné gameplay objekty očekávají platné body bindings.
- Kvůli odstranění jediného body není nutné zastavit celý world; pro jednotlivé resources použijte destroy operation daného JoltBody.
Low-Level / Advanced API#
jolt_world_destroy(world)
jolt_shutdown()jolt_world_destroy() odstraní jeden explicitní native world. jolt_shutdown() je idempotentní i na native úrovni a odstraní všechny zbývající worlds, job system, temporary allocator, registrované Jolt types, cached raycast/contact bridge state a Jolt factory.
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.