Surface input
Živý assetový Raycast přiřaďte jednou, nebo každý snímek předávejte čerstvý celý výsledek jolt_raycast. Nikdy nepředávejte boolean .hit. Úspěšný dotaz obsahuje ray:{world,origin,target}, i když mine fyziku. Režim výsledku použije první překážku bez druhého fyzikálního dotazu; assetový paprsek sleduje vlastníka a dotazuje se při aktualizaci dotyku.
Příklad#
var hit = jolt_raycast(x1, y1, z1, x2, y2, z2);
if (display.set_touch_raycast(hit)) {
display.update_touch(mouse_check_button(mb_left));
if (display.is_touch_pressed()) {
var pixel = display.get_touch_position();
show_debug_message(pixel);
}
}Použití a omezení#
Předávejte stav držení, nikoli hranu stisku. update_touch vrací úspěch aktualizace; zásah hlásí is_touch_hovered. pressed/down/released/cancelled popisují zachycený stisk. get_touch_position vrací pixely, get_touch_uv normalizované souřadnice při hover. Skrytí, odpojení nebo zničení stisk zruší. Nedostupný vstup výslovně odpojte přes set_touch_raycast(undefined).
Více displejům předejte tentýž objekt výsledku a volejte update_touch jednou pro sdílený paprsek, pak čtěte všechny stavy. Vyhraje nejbližší viditelný obdélník obrácený +Z k paprsku. Bližší fyzikální zásah jej blokuje; vlastní těleso se automaticky neignoruje. Fyzikální miss může zasáhnout displej bez kolize. Jde o souřadnice a stavy, nikoli hotové UI widgety.
Přehled API#
Signatury veřejných funkcí a metod. Metody volejte na vrácené instanci; parametry s výchozí hodnotou jsou volitelné.
Související návody#
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 |
|---|---|---|
| JoltRenderSurface.get_touch_position | JoltRenderSurface.get_touch_position() | Kopie {u, v}0..1 nebo {x, y}v pixelech aktuálního rozlišení, origin vlevo nahoře; undefined bez platného touch bodu. |
| JoltRenderSurface.get_touch_uv | JoltRenderSurface.get_touch_uv() | Kopie {u, v}0..1 nebo {x, y}v pixelech aktuálního rozlišení, origin vlevo nahoře; undefined bez platného touch bodu. |
| JoltRenderSurface.is_touch_cancelled | JoltRenderSurface.is_touch_cancelled() | Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení. |
| JoltRenderSurface.is_touch_down | JoltRenderSurface.is_touch_down() | Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení. |
| JoltRenderSurface.is_touch_hovered | JoltRenderSurface.is_touch_hovered() | Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení. |
| JoltRenderSurface.is_touch_pressed | JoltRenderSurface.is_touch_pressed() | Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení. |
| JoltRenderSurface.is_touch_released | JoltRenderSurface.is_touch_released() | Boolean stavu poslední touch aktualizace; pressed/released jsou hrany, cancelled značí ztrátu capture. Neplatný/skrytý owner či zdroj zruší capture i při čtení. |
| JoltRenderSurface.set_touch_raycast | JoltRenderSurface.set_touch_raycast(ray) | Authored AssetRaycast nebo čerstvý kompletní jolt_raycast výsledek s ray metadaty, undefined odpojí. Boolean; nepředávej pouze .hit. Jeden zdroj může sdílet více ploch. |
| JoltRenderSurface.update_touch | JoltRenderSurface.update_touch(down) | Boolean down/0/1 held stav → Boolean. Jednou na zdroj po aktualizaci transformů; aktualizuje všechny sdílející plochy, testuje čelní +Z a překážky. Gettery už raycast neprovádí. |
| SurfaceRaycastResult.cast | SurfaceRaycastResult.cast() | Adaptér snapshotu pro touch, ne nový fyzikální dotaz. is_valid ověří svět; get_ray uložený vzorek/undefined, cast pouze {hit, distance} ze vzorku. Obnovuj vstup novým výsledkem raycastu. |
| SurfaceRaycastResult.get_ray | SurfaceRaycastResult.get_ray() | Adaptér snapshotu pro touch, ne nový fyzikální dotaz. is_valid ověří svět; get_ray uložený vzorek/undefined, cast pouze {hit, distance} ze vzorku. Obnovuj vstup novým výsledkem raycastu. |
| SurfaceRaycastResult.is_valid | SurfaceRaycastResult.is_valid() | Adaptér snapshotu pro touch, ne nový fyzikální dotaz. is_valid ověří svět; get_ray uložený vzorek/undefined, cast pouze {hit, distance} ze vzorku. Obnovuj vstup novým výsledkem raycastu. |