Pomocné skripty · Penetrace těles
Relationships a snapshoty
Čtěte skutečnou hloubku, stav a geometrii konkrétního spojení Tipu s targetem.
JoltPenetrationRelationship vzniká automaticky a nemá veřejnou metodu pro ruční capture ani ukončení. Pro odstranění použijte vlastnící Tip nebo zničte příslušné body. Snapshot je kopie dat v okamžiku čtení; jeho úprava neřídí solver.
| Metoda | Význam |
|---|---|
| rel.is_valid() | Bool: relationship stále existuje v aktuálním světě. |
| rel.get_depth() | Real v metrech, max(0, signed_depth). Před čtením ověřte platnost. |
| rel.get_snapshot() | Struct nebo undefined; GML doplní target wrapper podle target_handle. |
var rel = tip.get_relationship();
if (is_struct(rel) && rel.is_valid()) {
var snapshot = rel.get_snapshot();
if (is_struct(snapshot) && snapshot.has_entered) {
show_debug_message("Depth: " + string(snapshot.depth) + " m");
show_debug_message("Progress: " + string(snapshot.depth_percent) + "%");
}
}Pole snapshotu#
| Pole | Typ / jednotky | Význam |
|---|---|---|
| schema | 1 | Verze struktury dat. |
| handle / tip_handle / penetrator_handle / target_handle | Handles | Identity relationship, Tipu a obou bodies. |
| target | JoltBody / undefined | Managed wrapper targetu přidaný get_snapshot(). Není přidáván do nativních event snapshots. |
| state / phase | Integer | Veřejný JoltPenetrationState a nízkoúrovňová phase: 1 Engaging, 2 Engaged, 3 Releasing. Nezaměňujte enumy. |
| has_entered | Bool | Relationship již dosáhl skutečného entry. Při následném vytahování se nevrací na false. |
| signed_depth / depth / max_depth | m | Hloubka podél osy od vstupu; signed_depth může být záporná, depth je nezáporná. max_depth je efektivní limit. |
| depth_percent | % / 0–100 | Hloubka vůči limitu, oříznutá na 0–100. Overshoot posuzujte pomocí signed_depth, ne tohoto procenta. |
| axial_speed | m/s | Relativní rychlost Tipu: kladná dovnitř, záporná ven. |
| tip_position / entry / axis | {x,y,z} | Aktuální world-space bod Tipu, vstupní bod a normalizovaná osa kanálu. S Dynamic targetem se frame pohybuje. |
| lateral_error | m | Odchylka Tipu od osy kanálu. |
| angle_error | rad | Odchylka od zachycené relativní orientace; není to impact angle ve stupních. |
| embedded / at_limit | Bool | Odvozený klidový stav uvnitř materiálu / dosažení oblasti hloubkového limitu. |
| suppressed / clearance | Bool | Vlastněné potlačení kolizí páru / výsledek kontroly geometrického oddělení. |
| forward_force / backward_force | N | Odpor převzatý pro toto relationship. |
| motor_lambda / limit_lambda / sample_valid | Solver sample | Impulsové veličiny posledního solver vzorku a jeho platnost. Nejsou automaticky silou v N; při sleeping nemusí být platné. |
| capture_source | 0–4 | 0 původní, 1 query, 2 contact-assisted, 3 support s aktuálním intentem, 4 support s dřívější platnou evidencí. |
| step_serial / revision | Integer | Simulační krok a revize snapshotu. V jednom vnějším kroku může model 2 vytvořit více revizí. |
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 |
|---|---|---|
| JoltPenetrationRelationship.get_depth | JoltPenetrationRelationship.get_depth() | Nezáporná hloubka v m; native chyba může dát 0, ověř is_valid a chybu. |
| JoltPenetrationRelationship.get_snapshot | JoltPenetrationRelationship.get_snapshot() | Nezávislý schema snapshot doplněný o managed target, nebo undefined. Vztah nevlastní cílové těleso. |
| JoltPenetrationRelationship.is_valid | JoltPenetrationRelationship.is_valid() | Boolean existence vztahu v aktuálním světě. |