‹›
Pomocné skripty · Sockets

Kolize, disconnect a cooldown

Connection může dočasně potlačit kolizi pouze svého body páru a při každém ukončení ji bezpečně obnoví.

collision je součást receptu male socketu a má backward-compatible default true. Nemění collision layer ani chování vůči světu a ostatním bodies.

Pair collision#

NastaveníVýsledek
collision: trueObě spojená bodies se dál navzájem srážejí.
collision: falsePouze tento konkrétní pár se ignoruje, dokud connection existuje.

Pro Hinge, Point a SwingTwist bývá collision:false často nutné, pokud se collidery v okolí anchoru překrývají. Jinak contact solver může fyzicky blokovat pohyb, který constraint dovoluje.

Bezpečné rozpojení#

GML
// Libovolný endpoint:
male_socket.disconnect();

// Nebo vlastník connection:
var old_connection = male_socket.connection;
old_connection.destroy();
  • destroy() nejprve bezpečně odstraní skutečný constraint a obnoví pair collision spravovanou jeho wrapperem.
  • Oba endpointy se uvolní, candidate se vymaže a connection se nastaví na undefined.
  • Na oba sockety se aplikuje delší z jejich cooldown hodnot, takže se okamžitě znovu nespojí.
  • Po vypršení cooldownu mohou stejné sockety znovu projít běžným matching procesem.

Příklady herního řízení#

GML
if (keyboard_check_pressed(ord("E"))) {
    if (is_struct(tool_socket.connection)) {
        tool_socket.disconnect();
    } else {
        tool_socket.set_enabled(true);
    }
}

// Vypnutí hledání nerozpojí hotové spojení:
tool_socket.set_enabled(false);

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
JoltSocketConnection.destroyJoltSocketConnection.destroy()Boolean idempotentně zničí constraint, vymaže vazby a nastaví všem socketům nejdelší cooldown z členů. Tělesa nezničí.