Pomocné skripty · Sockets
Breakable connections
Volitelné limity automaticky rozpojí connection podle skutečné reakční síly a torque constraint solveru.
Breakable chování nepotřebuje přepínač. Přítomnost max_force nebo max_torque na male receptu zapne sledování; bez obou polí nemá connection žádný per-step reaction read.
API#
var panel_socket = jolt_socket(panel, "male", "panel_mount", {
connection_type: "fixed",
max_force: 1000,
max_torque: 250
});| Typ | max_force | max_torque |
|---|---|---|
| fixed | Ano | Ano |
| hinge | Ano | Ano |
| point | Ano | Ne; konfigurace se odmítne |
| swing_twist | Ano | Ano pro současný nemotorový Socket recept |
Každá přítomná hodnota musí být kladné konečné číslo. Nepřítomná hodnota znamená neomezenou danou složku. Break nastane při force > max_force NEBO torque > max_torque.
Co se skutečně měří#
- Native bridge po dokončeném solver kroku čte reaction lambdy konkrétního Jolt constraintu.
- Force je délka lineárního impulzu dělená solver timestepem. Torque je délka příslušného angular impulse dělená stejným timestepem.
- Inactive nebo sleeping constraint neposkytne platný vzorek, protože Jolt může držet starou lambdu. Ta proto nezpůsobí falešný pozdější break.
- Kontrola proběhne po každém úspěšném fixed kroku. Překročené connections se nejprve označí a teprve potom bezpečně zničí mimo solver callback.
Diagnostika po prasknutí#
var connection = panel_socket.connection;
// Později, i když socket.connection už je undefined:
if (connection.broken) {
show_debug_message(connection.break_reason); // force, torque, force_torque
show_debug_message(connection.break_force);
show_debug_message(connection.break_torque);
}- Break vždy volá běžné SocketConnection.destroy(), takže obnoví pair collision, occupancy, group stav a cooldown.
- Grabber, výbuch, náraz nebo jiný gameplay systém pouze vytváří fyzikální zatížení; Socket na něj nepotřebuje speciální integraci.
- Multi-socket group má jednu connection, a proto praskne jako celek.