Pevné polohy a joystickové detenty
Pevné polohy zachytávají ovladač v blízkosti vybraných bodů a drží jej omezenou silou.
set_detents(items) nahrazuje celý seznam, [] jej vypíná; nejvýše 256 jedinečných bodů. get_detents() vrací nové pole i nové structy, jejichž úprava nemění fyziku. get_detent() vrací index od 0 v pořadí vstupu, nebo −1, když žádný detent neřídí motor. Zapnutý auto_return má přednost a pro čistě detentové ovládání jej vypněte.
| Položka | Význam / výchozí hodnota |
|---|---|
| Scalar bod | {value, capture_range:0.05, release_range:0.10, max_force:10, frequency:12, damping:1} |
| Rotační scalar bod | Stejný struct, ale max_torque místo max_force. value musí být 0..1. |
| Číselná zkratka | [0, 0.5, 1] používá výchozí zóny a sílu/moment. |
| Joystick bod | {x, y, capture_range:0.10, release_range:0.18, max_torque:10, frequency:8, damping:1} |
capture_range a release_range jsou vzdálenosti v kanonickém prostoru hodnot, nikoli metry nebo stupně. Platí release > capture > 0, síla/moment a frequency > 0, damping ≥ 0. Joystick vyžaduje body uvnitř jednotkového disku; scalar value ani max_force zde nejsou platné. Duplicity, včetně bodů splývajících po nativním převodu, se odmítají.
Příklad#
lever = jolt_control_lever({auto_return: false, detents: [0, 0.5, 1]});
stick = jolt_control_joystick({auto_return: false, detents: [
{x: 0, y: 0},
{x: 0.7, y: 0},
{x: -0.7, y: 0}
]});
var selected = stick.get_detent();
if (selected >= 0) show_debug_message(selected);Po zachycení se bod drží do opuštění větší release oblasti. Při rychlém průjezdu lze zachytit protnutou capture oblast, jen pokud aktuální poloha stále leží v release oblasti. Při shodné vzdálenosti rozhoduje pořadí v poli. Gettery samy výběr neposouvají; změna seznamu se vyhodnotí při fyzikálním kroku.
Nové související postupy#
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 |
|---|---|---|
| JoltControl.get_detent | JoltControl.get_detent() | Omezené controls/joystick; Wheel/Crank použij periodic/absolute. Pole max256 validovaných bodů, [] vypne; setter Boolean. Getter vrací nezávislé pole, get_detent index v původním pořadí nebo -1 (také chyba). |
| JoltControl.get_detents | JoltControl.get_detents() | Omezené controls/joystick; Wheel/Crank použij periodic/absolute. Pole max256 validovaných bodů, [] vypne; setter Boolean. Getter vrací nezávislé pole, get_detent index v původním pořadí nebo -1 (také chyba). |
| JoltControl.set_detents | JoltControl.set_detents(items) | Omezené controls/joystick; Wheel/Crank použij periodic/absolute. Pole max256 validovaných bodů, [] vypne; setter Boolean. Getter vrací nezávislé pole, get_detent index v původním pořadí nebo -1 (také chyba). |