Constraints
Fixed Constraint
Uzamkne celou relativní pozici a orientaci dvou těles nebo pevně připojí jedno těleso ke světu.
Fixed constraint funguje jako pevný svar. Body-to-body varianta zachová úplný relativní transform existující při vytvoření; world varianta upevní jedno těleso kolem explicitního world-space anchoru.
Syntaxe#
jolt_fixed(body_a, body_b, options=undefined)
jolt_fixed_world(body, anchor_x, anchor_y, anchor_z, options=undefined)Argumenty#
| Argument | Typ | Popis |
|---|---|---|
| body_a / body_b | JoltBody | Dvě různá živá managed tělesa, jejichž aktuální relativní transform se uzamkne. |
| body | JoltBody | Jediné živé těleso používané jolt_fixed_world(). |
| anchor_x / anchor_y / anchor_z | Real | World-space anchor používaný world variantou. |
| options | Struct nebo undefined | Volitelné počáteční nastavení collision a enabled. |
Options#
| Pole | Výchozí | Popis |
|---|---|---|
| collision | true | Zda se body_a a body_b mohou srážet. World varianta hodnotu ignoruje. |
| enabled | true | Zda se nový constraint ihned účastní solveru. |
Metody#
| Metoda | Výsledek | Chování |
|---|---|---|
| is_valid() | Boolean | Ověří managed wrapper i jeho native generační handle. |
| get_native_handle() | Real | Vrátí neprůhledný native handle, nebo 0 při neplatném constraintu. |
| destroy() | Boolean | Idempotentně uvolní pouze constraint; připojená tělesa zůstanou živá. |
| set_enabled(enabled) / get_enabled() | Boolean | Dočasně odebere nebo obnoví účast v solveru bez zničení constraintu. |
| set_collision_enabled(enabled) / get_collision_enabled() | Boolean | Řídí kolize dvojice těles. World varianty vždy vracejí false. |
Příklad: svařený mechanismus#
var carrier = jolt_box_create_dynamic(0, 0, 2, 2, 1, 0.5, { mass: 8 });
var payload = jolt_box_create_dynamic(0, 0, 3, 1, 1, 1, { mass: 2 });
var weld = jolt_fixed(carrier, payload, { collision: false });
if (is_undefined(weld)) {
var error = jolt_get_error();
show_debug_message(error.context + ": " + error.message);
}Tělesa zachovají počáteční vertikální rozestup jedné jednotky a otáčejí se jako jediná pevná sestava. Jejich samostatná hmotnost a inertia se nadále započítávají do solveru.
Příklad: připojení ke světu#
var sign = jolt_box_create_dynamic(0, 0, 3, 2, 0.25, 1, { mass: 4 });
var mount = jolt_fixed_world(sign, 0, 0, 3);Chyby a životní cyklus#
- Body-to-body creatory vyžadují dvě různá živá managed JoltBody ve stejném managed výchozím worldu.
- Alespoň jedno připojené těleso musí být pohyblivé; nepodporovaná static-static dvojice v native Jolt selže.
- Constructory při úspěchu vracejí managed JoltConstraint, při validační nebo native chybě undefined.
- Zničení kteréhokoli připojeného tělesa nejprve automaticky zničí a zneplatní jeho constrainty.
- Po selhání creatoru nebo metody čtěte jolt_get_error(), zejména u nedůvěryhodných hodnot.
- jolt_fixed_world() vyžaduje konečný anchor a jedno živé těleso v managed výchozím worldu.
- Fixed nemá v managed API limity, motor, pružinu ani getter pozice nebo impulse.
- Pokud má zůstat dostupný některý relativní stupeň volnosti, použijte užší typ constraintu.
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_fixed | jolt_fixed(body_a, body_b, options = undefined) | Vrací JoltConstraint/undefined, nevlastní tělesa. Dvě různá živá tělesa stejného světa; _world varianta jedno Dynamic těleso a pevný svět. Enabled default true; běžné dvoutělesové collision default true, pokud není dále uvedeno jinak. Po vytvoření ověř i jolt_has_error: některé navazující options mohou selhat a přesto vrátit vytvořený constraint. Pevný relativní transform; world varianta bere světovou kotvu m. |
| jolt_fixed_world | jolt_fixed_world(body, anchor_x, anchor_y, anchor_z, options = undefined) | Vrací JoltConstraint/undefined, nevlastní tělesa. Dvě různá živá tělesa stejného světa; _world varianta jedno Dynamic těleso a pevný svět. Enabled default true; běžné dvoutělesové collision default true, pokud není dále uvedeno jinak. Po vytvoření ověř i jolt_has_error: některé navazující options mohou selhat a přesto vrátit vytvořený constraint. Pevný relativní transform; world varianta bere světovou kotvu m. |