Hodnoty a mapování výstupu
Oddělte fyzickou polohu mechanismu od rozsahu hodnot, které potřebuje vaše hra.
| Položka | Význam / výchozí hodnota |
|---|---|
| get_value() | Button, Lever, Pedal, Slider, Knob, Pull Handle: 0..1. Wheel/Crank: fáze [0,1). |
| get_value(axis) / get_values() | Joystick: axis 0=X, 1=Y; dvojice {x,y} v jednotkovém disku. |
| get_output_value(axis=undefined) | Jedna hodnota po mapování a inverzi; Joystick vyžaduje osu. |
| get_output_values() | Jen Joystick: namapovaná dvojice {x,y}. |
Scalar mapping používá u=get_value(); joystick nejprve převede každou složku vztahem u=(value+1)/2. Při inverted:true se u nahradí 1−u a výsledek odpovídá min+(max−min)×u. Min/max mohou být záporné, stejné i obrácené, ale musí být konečné. Implementace ošetřuje i konečné meze, jejichž prostý rozdíl by přetekl.
Příklad#
knob = jolt_control_knob({output: {min: 0, max: 100}});
knob.set_output_range(20, 80);
knob.set_inverted(true);
var mapped = knob.get_output_value();
var mapping = knob.get_output_config();
var inverted = knob.is_inverted();
stick = jolt_control_joystick();
stick.set_output_range(-100, 100, 0);
stick.set_inverted(true, 1);
var xy = stick.get_output_values();get_output_config() vrací novou kopii {min,max,inverted}, u joysticku {x:{…},y:{…}}. Ve factory lze joysticku zadat společné output:{min,max,inverted}, které je výchozí pro osy bez vlastního structu. Pokud zadáte output.x nebo output.y, jejich chybějící položky mají standardní výchozí −1, 1, false.
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_output_config | JoltControl.get_output_config() | Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě. |
| JoltControl.get_output_value | JoltControl.get_output_value(axis=undefined) | Gameplay mapování hodnoty do output min/max s volitelnou inverzí. Joystick vyžaduje osu nebo get_output_values {x, y}; chyby undefined. Nemění fyzikální cíl ani rozsah. |
| JoltControl.get_output_values | JoltControl.get_output_values() | Gameplay mapování hodnoty do output min/max s volitelnou inverzí. Joystick vyžaduje osu nebo get_output_values {x, y}; chyby undefined. Nemění fyzikální cíl ani rozsah. |
| JoltControl.get_value | JoltControl.get_value(axis=undefined) | Běžný control normalizovaná hodnota 0..1; Wheel/Crank phase; Joystick -1..1 a povinná osa 0(X)/1(Y). get_values pouze joystick → {x, y}; chyby undefined. |
| JoltControl.get_values | JoltControl.get_values() | Běžný control normalizovaná hodnota 0..1; Wheel/Crank phase; Joystick -1..1 a povinná osa 0(X)/1(Y). get_values pouze joystick → {x, y}; chyby undefined. |
| JoltControl.is_inverted | JoltControl.is_inverted(axis=undefined) | Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě. |
| JoltControl.set_inverted | JoltControl.set_inverted(enabled,axis=undefined) | Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě. |
| JoltControl.set_output_range | JoltControl.set_output_range(minimum,maximum,axis=undefined) | Konečné min/max mohou být obrácené či stejné; inverted striktní Boolean. Joystick osa0/1. Settery Boolean; is_inverted false i při chybě; config kopie min/max/inverted (u joysticku x/y), undefined při chybě. |