Debug

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

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

FunkceVý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#

GML
// Pouze constrainty pro tento frame bez změny uložených flags.
jolt_debug_draw(JOLT_DEBUG_CONSTRAINTS);

Integrace s aktuálním projektem#

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íkSignaturaKontrakt operace
jolt_debug_drawjolt_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_enablejolt_debug_enable(enabled)Zapnutí kreslení: setter převede enabled==true a vrací true, getter Boolean. Nemění fyziku ani jednotlivé flagy.
jolt_debug_get_flagsjolt_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_ragdolljolt_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_enabledjolt_debug_is_enabled()Zapnutí kreslení: setter převede enabled==true a vrací true, getter Boolean. Nemění fyziku ani jednotlivé flagy.
jolt_debug_setjolt_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_ragdolljolt_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íkSignatura / hodnota
jolt_debug_set_penetration_historyjolt_debug_set_penetration_history(enabled)