‹›
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.

MetodaVý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.
GML
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#

PoleTyp / jednotkyVýznam
schema1Verze struktury dat.
handle / tip_handle / penetrator_handle / target_handleHandlesIdentity relationship, Tipu a obou bodies.
targetJoltBody / undefinedManaged wrapper targetu přidaný get_snapshot(). Není přidáván do nativních event snapshots.
state / phaseIntegerVeřejný JoltPenetrationState a nízkoúrovňová phase: 1 Engaging, 2 Engaged, 3 Releasing. Nezaměňujte enumy.
has_enteredBoolRelationship již dosáhl skutečného entry. Při následném vytahování se nevrací na false.
signed_depth / depth / max_depthmHloubka 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–100Hloubka vůči limitu, oříznutá na 0–100. Overshoot posuzujte pomocí signed_depth, ne tohoto procenta.
axial_speedm/sRelativní 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_errormOdchylka Tipu od osy kanálu.
angle_errorradOdchylka od zachycené relativní orientace; není to impact angle ve stupních.
embedded / at_limitBoolOdvozený klidový stav uvnitř materiálu / dosažení oblasti hloubkového limitu.
suppressed / clearanceBoolVlastněné potlačení kolizí páru / výsledek kontroly geometrického oddělení.
forward_force / backward_forceNOdpor převzatý pro toto relationship.
motor_lambda / limit_lambda / sample_validSolver sampleImpulsové veličiny posledního solver vzorku a jeho platnost. Nejsou automaticky silou v N; při sleeping nemusí být platné.
capture_source0–40 původní, 1 query, 2 contact-assisted, 3 support s aktuálním intentem, 4 support s dřívější platnou evidencí.
step_serial / revisionIntegerSimulač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íkSignaturaKontrakt operace
JoltPenetrationRelationship.get_depthJoltPenetrationRelationship.get_depth()Nezáporná hloubka v m; native chyba může dát 0, ověř is_valid a chybu.
JoltPenetrationRelationship.get_snapshotJoltPenetrationRelationship.get_snapshot()Nezávislý schema snapshot doplněný o managed target, nebo undefined. Vztah nevlastní cílové těleso.
JoltPenetrationRelationship.is_validJoltPenetrationRelationship.is_valid()Boolean existence vztahu v aktuálním světě.