Low-Level Raycasting
Dotazuje explicitní world pomocí počátku, směru a maximální vzdálenosti.
Low-level API je určeno projektům, které spravují worldy přímo. Oproti managed endpoint formě přijímá vybraný world handle, směrový vektor normalizovaný bridgem a samostatnou kladnou maximální vzdálenost.
Funkce#
jolt_world_raycast(world, ox, oy, oz, dx, dy, dz, max_distance)
jolt_world_raycast_filtered(world, ox, oy, oz, dx, dy, dz,
max_distance, layer_mask=0, ignore_body=0)
jolt_world_raycast_all(world, ox, oy, oz, dx, dy, dz,
max_distance, layer_mask=0, ignore_body=0)Smlouva argumentů#
| Argument | Požadavek |
|---|---|
| world | Živý explicitní world handle. |
| origin | Tři konečné world-space hodnoty. |
| direction | Libovolný konečný nenulový vektor; bridge jej normalizuje. |
| max_distance | Konečná hodnota větší než nula. |
| layer_mask | Unsigned 32-bit integer; 0 vybírá všechny user layers. |
| ignore_body | 0 nebo jeden živý body handle patřící vybranému worldu. |
Příklad explicitního worldu#
var result = jolt_world_raycast_filtered(
world,
origin_x, origin_y, origin_z,
direction_x, direction_y, direction_z,
50,
layer_mask,
ignored_body_handle
);
if (result.error_code != JOLT_ERROR_NONE) {
show_debug_message(result.error_message);
}
else if (result.hit) {
show_debug_message("Body handle: " + string(result.body));
}Low-level návratová smlouva#
Closest queries vrací úplný struct s component i convenience fields. jolt_world_raycast_all() vrací seřazené low-level structs a prázdné pole při minutí i chybě; pokud je nutné tyto stavy odlišit, ihned přečtěte jolt_get_last_error_code() a jolt_get_last_error_message().
Managed compatibility overload#
// Starší explicit-world overload:
jolt_raycast(world, ox, oy, oz, dx, dy, dz, max_distance)
// Managed endpoint overload:
jolt_raycast(x1, y1, z1, x2, y2, z2, filter=undefined)Osm argumentů vybere starší explicit-world overload. Šest nebo sedm argumentů vybere managed endpoint formu. V novém low-level kódu preferujte pojmenované funkce jolt_world_raycast*, aby byla smlouva souřadnic jednoznačná.
Zpracování snapshotu#
Native bridge používá interní current-raycast snapshot, zatímco GML wrapper synchronně sestavuje veřejný struct. Pracujte s vrácenou GML hodnotou a nepokoušejte se samostatně volat bridge getters.
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_world_raycast | jolt_world_raycast(world, ox, oy, oz, dx, dy, dz, max_distance) | World handle, světový origin XYZ m, nenulový směr XYZ normalizovaný nativně, max_distance>0 m. Filtered: mask0 všechny, ignore_body0 žádné. Vždy struct hit, error_code, error_message, body handle, x/y/z, normal_x/y/z, fraction, distance, position, normal. Miss/error mají hit=false a nulová data; rozliš error_code. |
| jolt_world_raycast_all | jolt_world_raycast_all(world, ox, oy, oz, dx, dy, dz, max_distance, layer_mask = 0, ignore_body = 0) | Stejné origin/direction/distance a filtry jako filtered; pole zásahů seřazené podle vzdálenosti. Miss i chyba vrací []; chybový stav rozliš ihned. Body jsou handles. |
| jolt_world_raycast_filtered | jolt_world_raycast_filtered(world, ox, oy, oz, dx, dy, dz, max_distance, layer_mask = 0, ignore_body = 0) | World handle, světový origin XYZ m, nenulový směr XYZ normalizovaný nativně, max_distance>0 m. Filtered: mask0 všechny, ignore_body0 žádné. Vždy struct hit, error_code, error_message, body handle, x/y/z, normal_x/y/z, fraction, distance, position, normal. Miss/error mají hit=false a nulová data; rozliš error_code. |