Kolize z BBMOD modelů
Vytvořte opakovaně použitelné statické mesh kolize z BBMOD geometrie; pro pohyblivá tělesa použijte assety z Blenderu.
Ověřeno podle zdrojů projektu 19. září 2026.
Syntax#
jolt_shape_mesh_from_bbmod(model, [options], [cache_key]);Načtěte BBMOD_Model, spusťte Jolt a vytvořte kolize PŘED model.freeze(). Vyžadují se čitelné triangle-list buffery a platná statická hierarchie uzlů; kostry a animační pózy nejsou podporované. Adaptér zdrojový model nemění ani neničí.
| API / pole | Význam a pravidla |
|---|---|
| jolt_shape_mesh_from_bbmod | Vrací JoltShape s mesh/static_only:true; pouze create_static. Při chybě undefined. |
| scale / transform | Výchozí 1 / identity. Scale je číslo nebo [x,y,z]; transform je konečná afinní GameMaker matice 16 čísel. |
| respect_visibility / flip_winding | Obojí výchozí false. Vynechání neviditelných podstromů / obrácení orientace trojúhelníků. |
Příklad#
// Loading phase, after jolt_start():
var model = new BBMOD_Model("level.bbmod");
var collision = jolt_shape_mesh_from_bbmod(model);
if (is_undefined(collision)) {
show_debug_message(jolt_get_error().message);
} else {
model.freeze();
var body = collision.create_static(0, 0, 0);
// Keep model, collision and body for rendering/reuse.
// Later: body.destroy(); collision.destroy(); model.destroy();
}Transformace, cache a životnost#
Geometrie se převádí mesh-local → kumulované transformace uzlů → scale → transform → shape-local; umístění tělesa se aplikuje potom. Další prohození os se neprovádí. Reflexe automaticky opraví winding; singulární transformace se odmítají. Statický převod dovoluje 3–65536 unikátních pozic a 1–131072 trojúhelníků. Čísla zdrojových trojúhelníků nejsou stabilní ID nativních zásahů.
cache_key označuje revizi obsahu modelu (nejvýše 198 ASCII znaků bez NUL); geometrie se při lookup nehashuje, proto po změně upravte klíč. Options jsou součástí identity cache. Cache hit může použít geometrii po freeze; cache miss zmrazené buffery nečte. Tvary vlastní kopii geometrie nezávislou na vizuálním modelu. Chyby poskytují jolt_get_error().
Pohyblivá tělesa#
Kolizní tvary připravte v Blender Asset Editoru a tělesa vytvořte přes jolt_asset_create_body(asset, motion, options). Také lze ručně sestavit jolt_compound(). Automatický rozklad modelu není podporovaný.
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_shape_mesh_from_bbmod | jolt_shape_mesh_from_bbmod(model, options = undefined, cache_key = undefined) | Načtený BBMOD_Model bez kostí, čitelný nefrozen trianglelist → Static-only JoltShape/undefined. Options scale číslo/[XYZ], transform matice, respect_visibilityfalse, flip_windingfalse. Hierarchie se započítá, reflexe opraví winding. Cache key max198ASCII identifikuje revizi obsahu; configuration hash nehashuje mesh. Load→collision→freeze. |