Debug Draw
Vykresluje volitelné diagnostické informace fyziky aktuální 3D kamerou GameMakeru.
Vestavěný debug renderer je oddělený od simulace. Čte spravovaný stav a nativní snapshoty pouze při vykreslení, nevlastní kameru a nemění aktivní view ani projection matrix.
Základní nastavení#
// Create event
jolt_debug_enable(true);
jolt_debug_set(JOLT_DEBUG_ALL, false);
jolt_debug_set(JOLT_DEBUG_SHAPES | JOLT_DEBUG_CONTACTS, true);
// Draw End event po opaque 3D modelech
jolt_debug_draw();Veřejné ovládání#
| Funkce | Výsledek |
|---|---|
| jolt_debug_enable(enabled) | Globálně zapne nebo vypne recording a vykreslení. |
| jolt_debug_is_enabled() | Vrátí globální stav. |
| jolt_debug_set(flags, enabled) | Přidá nebo odebere bity a vrátí výslednou masku. |
| jolt_debug_get_flags() | Vrátí uloženou masku kategorií. |
| jolt_debug_draw(flags=undefined) | Vykreslí zadanou masku nebo uložené flags; vrátí false při vypnutí nebo zastavené fyzice. |
Debug flags#
Chování render state#
- Používá aktuální matrix_view a matrix_projection a nevytváří vlastní kameru.
- Zapíná depth test cmpfunc_lessequal a pro čáry vypíná zápis do depth bufferu.
- Během passu vypne blending a culling.
- Před návratem obnoví GPU state, world matrix i původní shader.
- Reusable line meshes vznikají lazy a jolt_stop() je uvolní.
Dočasná maska#
// Pouze constrainty pro tento frame bez změny uložených flags.
jolt_debug_draw(JOLT_DEBUG_CONSTRAINTS);Integrace s aktuálním projektem#
- Uniformy debug a modelových shaderů
- Forces / Impulses
- Explosions
- Transformační body
- Fyzikální ovládací prvky z Blenderu
Nové související postupy#
Další aktuální diagnostika#
JOLT_DEBUG_ALL má aktuálně hodnotu 262143 a zahrnuje Ragdolls. Samostatné přepínače pokrývají Shapes, Contacts, Sensors, Raycasts, Constraints, Characters, Cloth, Center of Mass, Shape Queries, Vehicles, Grabber, Sockets, Penetration, Explosions, Forces, Points, Surfaces a Ragdolls. Fyzikální Controls používají související zobrazení mechanismů, nikoli vymyšlený JOLT_DEBUG_CONTROLS.
Konvexní tvary se vykreslují jako obal skutečného hull, nikoli jako AABB. jolt_debug_set_penetration_history zapíná záznamy pod JOLT_DEBUG_PENETRATION. Ragdoll volby: shapes, links, anchors, axes, swing_limits, twist_limits, current_pose, centers, xray, scale; scale má rozsah 0.1–4. Neznámá volba setteru vrací false; getter vrací undefined.
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_debug_draw | jolt_debug_draw(flags = undefined) | Draw s aktivní3D kamerou, optional flags pro toto kreslení(jinak uložená maska). Boolean; false pokud vypnuto/svět neběží/selhání. Obnovuje GPU stav, zahrne i lokálně zapnutý soft debug. |
| jolt_debug_enable | jolt_debug_enable(enabled) | Zapnutí kreslení: setter převede enabled==true a vrací true, getter Boolean. Nemění fyziku ani jednotlivé flagy. |
| jolt_debug_get_flags | jolt_debug_get_flags() | Set(flags, true) přidá bity, false odstraní; set(0) vymaže všechny. Samotné set(nonzero) není náhrada celé masky, odstraní dané bity. Vrací výslednou masku; get aktuální masku. |
| jolt_debug_get_ragdoll | jolt_debug_get_ragdoll(option) | Klíče shapes, links, anchors, axes, swing_limits, twist_limits, current_pose, centers, xray Boolean; scale konečné.1..4. Setter Boolean, getter hodnota/undefined pro neznámý klíč. Pouze vzhled. |
| jolt_debug_is_enabled | jolt_debug_is_enabled() | Zapnutí kreslení: setter převede enabled==true a vrací true, getter Boolean. Nemění fyziku ani jednotlivé flagy. |
| jolt_debug_set | jolt_debug_set(flags, enabled=undefined) | Set(flags, true) přidá bity, false odstraní; set(0) vymaže všechny. Samotné set(nonzero) není náhrada celé masky, odstraní dané bity. Vrací výslednou masku; get aktuální masku. |
| jolt_debug_set_ragdoll | jolt_debug_set_ragdoll(option,value) | Klíče shapes, links, anchors, axes, swing_limits, twist_limits, current_pose, centers, xray Boolean; scale konečné.1..4. Setter Boolean, getter hodnota/undefined pro neznámý klíč. Pouze vzhled. |
Úplný seznam deklarací API#
Deklarace odpovídají produkčním GML zdrojům. Hodnota za = označuje volitelný argument. Toto je seznam signatur; význam, jednotky a omezení popisují příslušné části návodu. Název typu před tečkou označuje vlastníka metody, nikoli globální funkci.
| Symbol / vlastník | Signatura / hodnota |
|---|---|
| jolt_debug_set_penetration_history | jolt_debug_set_penetration_history(enabled) |