@deeptrekker/controls 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/inputMapping/index.d.ts +15 -2
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e,t,r
|
|
1
|
+
var e,t,a,r;!function(e){e.ThrusterForward="THRUSTER_FORWARD",e.ThrusterReverse="THRUSTER_REVERSE",e.Thrusters="THRUSTER",e.YawLeft="YAW_LEFT",e.YawRight="YAW_RIGHT",e.Yaw="YAW",e.LateralLeft="LATERAL_LEFT",e.LateralRight="LATERAL_RIGHT",e.Lateral="LATERAL",e.VerticalUp="VERTICAL_UP",e.VerticalDown="VERTICAL_DOWN",e.Vertical="VERTICAL",e.DisableMotors="DISABLE_MOTORS",e.DepthLock="DEPTH_LOCK",e.AltitudeLock="ALTITUDE_LOCK",e.HeadingLock="HEADING_LOCK",e.PitchLock="PITCH_LOCK",e.AutoStabilization="AUTO_STABILIZATION",e.StationHolding="STATION_HOLDING",e.PrecisionThrusters="PRECISION_THRUSTERS",e.GrabberOpen="GRABBER_OPEN",e.GrabberClose="GRABBER_CLOSE",e.Grabber="GRABBER",e.GrabberRotateLeft="GRABBER_ROTATE_LEFT",e.GrabberRotateRight="GRABBER_ROTATE_RIGHT",e.TiltPlatform="TILT_PLATFORM",e.TiltPlatformUp="TILT_PLATFORM_UP",e.TiltPlatformDown="TILT_PLATFORM_DOWN",e.RotateGrabber="ROTATE_GRABBER",e.MainLight="MAIN_LIGHT",e.AuxLight="AUX_LIGHT",e.Zoom="ZOOM",e.ZoomIn="ZOOM_IN",e.ZoomOut="ZOOM_OUT",e.ElevatingArm="ELEVATING_ARM",e.ElevatingArmDescend="ELEVATING_ARM_DESCEND",e.ElevatingArmAscend="ELEVATING_ARM_ASCEND",e.CruiseControl="CRUISE_CONTROL",e.ReelReset="REEL_RESET",e.SwitchCamera="SWITCH_CAMERA",e.CameraHome="CAMERA_HOME",e.Record="RECORD",e.Screenshot="SCREENSHOT",e.CrawlerSteer="CRAWLER_STEER",e.CrawlerLeft="CRAWLER_LEFT",e.CrawlerRight="CRAWLER_RIGHT",e.CrawlerDrive="CRAWLER_DRIVE",e.CrawlerForward="CRAWLER_FORWARD",e.CrawlerReverse="CRAWLER_REVERSE",e.Pan="PAN",e.PanLeft="PAN_LEFT",e.PanRight="PAN_RIGHT",e.Tilt="TILT",e.TiltUp="TILT_UP",e.TiltDown="TILT_DOWN",e.Focus="FOCUS",e.IncreaseFocus="FOCUS_INCREASE",e.DecreaseFocus="FOCUS_DECREASE",e.Exposure="EXPOSURE",e.IncreaseExposure="EXPOSURE_INCREASE",e.DecreaseExposure="DECREASE_EXPOSURE",e.ToggleLasers="TOGGLE_LASERS",e.ReelTetherIn="REEL_TETHER_IN",e.SpeedGain="SPEED_GAIN",e.IncreaseSpeedGain="INCREASE_SPEED_GAIN",e.DecreaseSpeedGain="DECREASE_SPEED_GAIN",e.SteerGain="STEER_GAIN",e.IncreaseSteerGain="INCREASE_STEER_GAIN",e.DecreaseSteerGain="DECREASE_STEER_GAIN",e.AuxLightBrightness="AUX_LIGHT_BRIGHTNESS",e.IncreaseAuxLightBrightness="INCREASE_AUX_LIGHT_BRIGHTNESS",e.DecreaseAuxLightBrightness="DECREASE_AUX_LIGHT_BRIGHTNESS",e.MainLightBrightness="MAIN_LIGHT_BRIGHTNESS",e.IncreaseMainLightBrightness="INCREASE_MAIN_LIGHT_BRIGHTNESS",e.DecreaseMainLightBrightness="DECREASE_MAIN_LIGHT_BRIGHTNESS"}(e||(e={})),function(e){e.MainLight="MAIN_LIGHT",e.AuxLight="AUX_LIGHT"}(t||(t={})),function(e){e.Vehicle="VEHICLE",e.Camera="CAMERA",e.Reel="REEL",e.Lights="LIGHTS",e.IntelligentModes="INTELLIGENT_MODES",e.IntelligentMode="INTELLIGENT_MODE",e.Tools="TOOLS",e.Grabber="GRABBER",e.Sonar="SONAR",e.Menu="MENU",e.Miscellaneous="MISCELLANEOUS"}(a||(a={})),function(e){e.JoystickAxis="AXIS",e.JoystickButton="BUTTON",e.KeyboardKey="KEY"}(r||(r={}));const i={[e.CrawlerLeft]:!0,[e.CrawlerRight]:!0,[e.CrawlerForward]:!0,[e.CrawlerReverse]:!0,[e.TiltDown]:!0,[e.TiltUp]:!0,[e.PanLeft]:!0,[e.PanRight]:!0},n={positiveCommand:e.CrawlerForward,negativeCommand:e.CrawlerReverse},o={positiveCommand:e.CrawlerRight,negativeCommand:e.CrawlerLeft},E={positiveCommand:e.ElevatingArmAscend,negativeCommand:e.ElevatingArmDescend},s={positiveCommand:e.PanRight,negativeCommand:e.PanLeft},R={positiveCommand:e.TiltUp,negativeCommand:e.TiltDown},T={positiveCommand:e.IncreaseFocus,negativeCommand:e.DecreaseFocus},A={positiveCommand:e.IncreaseExposure,negativeCommand:e.DecreaseExposure},m={positiveCommand:e.ZoomIn,negativeCommand:e.ZoomOut},C={positiveCommand:e.ThrusterForward,negativeCommand:e.ThrusterReverse},L={positiveCommand:e.YawRight,negativeCommand:e.YawLeft},c={positiveCommand:e.LateralRight,negativeCommand:e.LateralLeft},l={positiveCommand:e.VerticalUp,negativeCommand:e.VerticalDown},_={positiveCommand:e.GrabberOpen,negativeCommand:e.GrabberClose},I={positiveCommand:e.GrabberRotateRight,negativeCommand:e.GrabberRotateLeft},d={positiveCommand:e.TiltPlatformUp,negativeCommand:e.TiltPlatformDown},S={positiveCommand:e.IncreaseMainLightBrightness,negativeCommand:e.DecreaseMainLightBrightness},u={positiveCommand:e.IncreaseAuxLightBrightness,negativeCommand:e.DecreaseAuxLightBrightness},g={positiveCommand:e.IncreaseSpeedGain,negativeCommand:e.DecreaseSpeedGain},G={positiveCommand:e.IncreaseSteerGain,negativeCommand:e.DecreaseSteerGain},v={[e.CrawlerDrive]:n,[e.CrawlerSteer]:o,[e.ElevatingArm]:E,[e.Pan]:s,[e.Tilt]:R,[e.Focus]:T,[e.Exposure]:A,[e.Zoom]:m,[e.Thrusters]:C,[e.Yaw]:L,[e.Lateral]:c,[e.Vertical]:l,[e.Grabber]:_,[e.RotateGrabber]:I,[e.TiltPlatform]:d,[e.MainLightBrightness]:S,[e.AuxLightBrightness]:u,[e.SpeedGain]:g,[e.SteerGain]:G},h=5,O="+",N="-",p=" ";function D(e,t){var a;const r=(null===(a=document.activeElement)||void 0===a?void 0:a.tagName)||"";if("INPUT"===r||"TEXTAREA"===r)return!1;let i=!0;return e.forEach((e=>{t[e]||(i=!1)})),i}function f(e,t,a){let r=0;return a.forEach((a=>{a&&a.id===e&&(r=a.axes[t])})),Math.round(100*r)}function M(e,t,a){let r=!1;return a.forEach((a=>{a&&a.id===e&&(r=a.buttons[t].pressed)})),r}function b(e,t,a,i){var n;if(!e)return!1;const{input_type:o,input_key:E,controller_id:s}=e;if(!s&&o!==r.KeyboardKey)return!1;switch(o){case r.KeyboardKey:return D(E.split(O),a);case r.JoystickAxis:const e=E.includes(p)?+E.substring(0,E.indexOf(p)):+E,o=f(s,e,t),R=(null===(n=i[s])||void 0===n?void 0:n[e])||5;return E.includes(O)?o>R:!!E.includes("-")&&o<-1*R;case r.JoystickButton:return M(s,+E,t);default:return!1}}function B(e,t,a,i){var n,o;if(!e)return 0;const{input_type:E,input_key:s,controller_id:R}=e;if(!R&&E!==r.KeyboardKey)return 0;switch(E){case r.KeyboardKey:return D(s.split("+"),a)?100:0;case r.JoystickAxis:const e=s.indexOf(p)>-1?+s.substring(0,s.indexOf(p)):+s,E=f(R,e,t),T=null!==(o=null===(n=i[R])||void 0===n?void 0:n[e])&&void 0!==o?o:5;return s.includes(O)?E>=T?H(E,T):0:s.includes("-")?E<=-1*T?H(Math.abs(E),T):0:E;case r.JoystickButton:return M(R,+s,t)?100:0;default:return 0}}const H=(e,t)=>Math.floor((e-t)/(100-t)*100),w={},P=(e,t)=>w[e]=t,U=(e,t={},a={})=>{const r=navigator.getGamepads();Object.entries(t).forEach((([t,n])=>{const o=t,E=v[o];if(E){const{positiveCommand:t,negativeCommand:i}=E;n.forEach((n=>n((B(e[t],r,w,a)||0)-(B(e[i],r,w,a)||0))))}else{const t=i[o]?B(e[o],r,w,a):b(e[o],r,w,a);n.forEach((e=>e(t)))}}))};export{v as COMBINED_COMMANDS,a as ControlType,h as DEFAULT_DEAD_ZONE,r as InputType,N as NEGATIVE_COMMAND_INDICATOR,O as POSITIVE_COMMAND_INDICATOR,i as RATE_COMMANDS,t as RovControls,p as SPACE_BETWEEN_INDEX_AND_INDICATOR,e as VehicleControl,D as checkKeyPress,b as decodeBooleanMapping,B as decodeRateMapping,f as getAxisValue,M as getButtonValue,U as poll,P as updateKeysPressed};
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e,o,
|
|
1
|
+
"use strict";var e,t,o,r;Object.defineProperty(exports,"__esModule",{value:!0}),exports.VehicleControl=void 0,(e=exports.VehicleControl||(exports.VehicleControl={})).ThrusterForward="THRUSTER_FORWARD",e.ThrusterReverse="THRUSTER_REVERSE",e.Thrusters="THRUSTER",e.YawLeft="YAW_LEFT",e.YawRight="YAW_RIGHT",e.Yaw="YAW",e.LateralLeft="LATERAL_LEFT",e.LateralRight="LATERAL_RIGHT",e.Lateral="LATERAL",e.VerticalUp="VERTICAL_UP",e.VerticalDown="VERTICAL_DOWN",e.Vertical="VERTICAL",e.DisableMotors="DISABLE_MOTORS",e.DepthLock="DEPTH_LOCK",e.AltitudeLock="ALTITUDE_LOCK",e.HeadingLock="HEADING_LOCK",e.PitchLock="PITCH_LOCK",e.AutoStabilization="AUTO_STABILIZATION",e.StationHolding="STATION_HOLDING",e.PrecisionThrusters="PRECISION_THRUSTERS",e.GrabberOpen="GRABBER_OPEN",e.GrabberClose="GRABBER_CLOSE",e.Grabber="GRABBER",e.GrabberRotateLeft="GRABBER_ROTATE_LEFT",e.GrabberRotateRight="GRABBER_ROTATE_RIGHT",e.TiltPlatform="TILT_PLATFORM",e.TiltPlatformUp="TILT_PLATFORM_UP",e.TiltPlatformDown="TILT_PLATFORM_DOWN",e.RotateGrabber="ROTATE_GRABBER",e.MainLight="MAIN_LIGHT",e.AuxLight="AUX_LIGHT",e.Zoom="ZOOM",e.ZoomIn="ZOOM_IN",e.ZoomOut="ZOOM_OUT",e.ElevatingArm="ELEVATING_ARM",e.ElevatingArmDescend="ELEVATING_ARM_DESCEND",e.ElevatingArmAscend="ELEVATING_ARM_ASCEND",e.CruiseControl="CRUISE_CONTROL",e.ReelReset="REEL_RESET",e.SwitchCamera="SWITCH_CAMERA",e.CameraHome="CAMERA_HOME",e.Record="RECORD",e.Screenshot="SCREENSHOT",e.CrawlerSteer="CRAWLER_STEER",e.CrawlerLeft="CRAWLER_LEFT",e.CrawlerRight="CRAWLER_RIGHT",e.CrawlerDrive="CRAWLER_DRIVE",e.CrawlerForward="CRAWLER_FORWARD",e.CrawlerReverse="CRAWLER_REVERSE",e.Pan="PAN",e.PanLeft="PAN_LEFT",e.PanRight="PAN_RIGHT",e.Tilt="TILT",e.TiltUp="TILT_UP",e.TiltDown="TILT_DOWN",e.Focus="FOCUS",e.IncreaseFocus="FOCUS_INCREASE",e.DecreaseFocus="FOCUS_DECREASE",e.Exposure="EXPOSURE",e.IncreaseExposure="EXPOSURE_INCREASE",e.DecreaseExposure="DECREASE_EXPOSURE",e.ToggleLasers="TOGGLE_LASERS",e.ReelTetherIn="REEL_TETHER_IN",e.SpeedGain="SPEED_GAIN",e.IncreaseSpeedGain="INCREASE_SPEED_GAIN",e.DecreaseSpeedGain="DECREASE_SPEED_GAIN",e.SteerGain="STEER_GAIN",e.IncreaseSteerGain="INCREASE_STEER_GAIN",e.DecreaseSteerGain="DECREASE_STEER_GAIN",e.AuxLightBrightness="AUX_LIGHT_BRIGHTNESS",e.IncreaseAuxLightBrightness="INCREASE_AUX_LIGHT_BRIGHTNESS",e.DecreaseAuxLightBrightness="DECREASE_AUX_LIGHT_BRIGHTNESS",e.MainLightBrightness="MAIN_LIGHT_BRIGHTNESS",e.IncreaseMainLightBrightness="INCREASE_MAIN_LIGHT_BRIGHTNESS",e.DecreaseMainLightBrightness="DECREASE_MAIN_LIGHT_BRIGHTNESS",exports.RovControls=void 0,(t=exports.RovControls||(exports.RovControls={})).MainLight="MAIN_LIGHT",t.AuxLight="AUX_LIGHT",exports.ControlType=void 0,(o=exports.ControlType||(exports.ControlType={})).Vehicle="VEHICLE",o.Camera="CAMERA",o.Reel="REEL",o.Lights="LIGHTS",o.IntelligentModes="INTELLIGENT_MODES",o.IntelligentMode="INTELLIGENT_MODE",o.Tools="TOOLS",o.Grabber="GRABBER",o.Sonar="SONAR",o.Menu="MENU",o.Miscellaneous="MISCELLANEOUS",exports.InputType=void 0,(r=exports.InputType||(exports.InputType={})).JoystickAxis="AXIS",r.JoystickButton="BUTTON",r.KeyboardKey="KEY";const n={[exports.VehicleControl.CrawlerLeft]:!0,[exports.VehicleControl.CrawlerRight]:!0,[exports.VehicleControl.CrawlerForward]:!0,[exports.VehicleControl.CrawlerReverse]:!0,[exports.VehicleControl.TiltDown]:!0,[exports.VehicleControl.TiltUp]:!0,[exports.VehicleControl.PanLeft]:!0,[exports.VehicleControl.PanRight]:!0},i={positiveCommand:exports.VehicleControl.CrawlerForward,negativeCommand:exports.VehicleControl.CrawlerReverse},s={positiveCommand:exports.VehicleControl.CrawlerRight,negativeCommand:exports.VehicleControl.CrawlerLeft},l={positiveCommand:exports.VehicleControl.ElevatingArmAscend,negativeCommand:exports.VehicleControl.ElevatingArmDescend},a={positiveCommand:exports.VehicleControl.PanRight,negativeCommand:exports.VehicleControl.PanLeft},C={positiveCommand:exports.VehicleControl.TiltUp,negativeCommand:exports.VehicleControl.TiltDown},p={positiveCommand:exports.VehicleControl.IncreaseFocus,negativeCommand:exports.VehicleControl.DecreaseFocus},E={positiveCommand:exports.VehicleControl.IncreaseExposure,negativeCommand:exports.VehicleControl.DecreaseExposure},c={positiveCommand:exports.VehicleControl.ZoomIn,negativeCommand:exports.VehicleControl.ZoomOut},T={positiveCommand:exports.VehicleControl.ThrusterForward,negativeCommand:exports.VehicleControl.ThrusterReverse},R={positiveCommand:exports.VehicleControl.YawRight,negativeCommand:exports.VehicleControl.YawLeft},h={positiveCommand:exports.VehicleControl.LateralRight,negativeCommand:exports.VehicleControl.LateralLeft},A={positiveCommand:exports.VehicleControl.VerticalUp,negativeCommand:exports.VehicleControl.VerticalDown},x={positiveCommand:exports.VehicleControl.GrabberOpen,negativeCommand:exports.VehicleControl.GrabberClose},I={positiveCommand:exports.VehicleControl.GrabberRotateRight,negativeCommand:exports.VehicleControl.GrabberRotateLeft},_={positiveCommand:exports.VehicleControl.TiltPlatformUp,negativeCommand:exports.VehicleControl.TiltPlatformDown},L={positiveCommand:exports.VehicleControl.IncreaseMainLightBrightness,negativeCommand:exports.VehicleControl.DecreaseMainLightBrightness},m={positiveCommand:exports.VehicleControl.IncreaseAuxLightBrightness,negativeCommand:exports.VehicleControl.DecreaseAuxLightBrightness},d={positiveCommand:exports.VehicleControl.IncreaseSpeedGain,negativeCommand:exports.VehicleControl.DecreaseSpeedGain},u={positiveCommand:exports.VehicleControl.IncreaseSteerGain,negativeCommand:exports.VehicleControl.DecreaseSteerGain},S={[exports.VehicleControl.CrawlerDrive]:i,[exports.VehicleControl.CrawlerSteer]:s,[exports.VehicleControl.ElevatingArm]:l,[exports.VehicleControl.Pan]:a,[exports.VehicleControl.Tilt]:C,[exports.VehicleControl.Focus]:p,[exports.VehicleControl.Exposure]:E,[exports.VehicleControl.Zoom]:c,[exports.VehicleControl.Thrusters]:T,[exports.VehicleControl.Yaw]:R,[exports.VehicleControl.Lateral]:h,[exports.VehicleControl.Vertical]:A,[exports.VehicleControl.Grabber]:x,[exports.VehicleControl.RotateGrabber]:I,[exports.VehicleControl.TiltPlatform]:_,[exports.VehicleControl.MainLightBrightness]:L,[exports.VehicleControl.AuxLightBrightness]:m,[exports.VehicleControl.SpeedGain]:d,[exports.VehicleControl.SteerGain]:u},V="+",g=" ";function v(e,t){var o;const r=(null===(o=document.activeElement)||void 0===o?void 0:o.tagName)||"";if("INPUT"===r||"TEXTAREA"===r)return!1;let n=!0;return e.forEach((e=>{t[e]||(n=!1)})),n}function G(e,t,o){let r=0;return o.forEach((o=>{o&&o.id===e&&(r=o.axes[t])})),Math.round(100*r)}function O(e,t,o){let r=!1;return o.forEach((o=>{o&&o.id===e&&(r=o.buttons[t].pressed)})),r}function N(e,t,o,r){var n;if(!e)return!1;const{input_type:i,input_key:s,controller_id:l}=e;if(!l&&i!==exports.InputType.KeyboardKey)return!1;switch(i){case exports.InputType.KeyboardKey:return v(s.split(V),o);case exports.InputType.JoystickAxis:const e=s.includes(g)?+s.substring(0,s.indexOf(g)):+s,i=G(l,e,t),a=(null===(n=r[l])||void 0===n?void 0:n[e])||5;return s.includes(V)?i>a:!!s.includes("-")&&i<-1*a;case exports.InputType.JoystickButton:return O(l,+s,t);default:return!1}}function D(e,t,o,r){var n,i;if(!e)return 0;const{input_type:s,input_key:l,controller_id:a}=e;if(!a&&s!==exports.InputType.KeyboardKey)return 0;switch(s){case exports.InputType.KeyboardKey:return v(l.split("+"),o)?100:0;case exports.InputType.JoystickAxis:const e=l.indexOf(g)>-1?+l.substring(0,l.indexOf(g)):+l,s=G(a,e,t),C=null!==(i=null===(n=r[a])||void 0===n?void 0:n[e])&&void 0!==i?i:5;return l.includes(V)?s>=C?M(s,C):0:l.includes("-")?s<=-1*C?M(Math.abs(s),C):0:s;case exports.InputType.JoystickButton:return O(a,+l,t)?100:0;default:return 0}}const M=(e,t)=>Math.floor((e-t)/(100-t)*100),f={};exports.COMBINED_COMMANDS=S,exports.DEFAULT_DEAD_ZONE=5,exports.NEGATIVE_COMMAND_INDICATOR="-",exports.POSITIVE_COMMAND_INDICATOR=V,exports.RATE_COMMANDS=n,exports.SPACE_BETWEEN_INDEX_AND_INDICATOR=g,exports.checkKeyPress=v,exports.decodeBooleanMapping=N,exports.decodeRateMapping=D,exports.getAxisValue=G,exports.getButtonValue=O,exports.poll=(e,t={},o={})=>{const r=navigator.getGamepads();Object.entries(t).forEach((([t,i])=>{const s=t,l=S[s];if(l){const{positiveCommand:t,negativeCommand:n}=l;i.forEach((i=>i((D(e[t],r,f,o)||0)-(D(e[n],r,f,o)||0))))}else{const t=n[s]?D(e[s],r,f,o):N(e[s],r,f,o);i.forEach((e=>e(t)))}}))},exports.updateKeysPressed=(e,t)=>f[e]=t;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/types/inputMapping/index.ts","../src/constants/index.ts","../src/utils/gamepadHelper/index.ts","../src/lib/index.ts"],"sourcesContent":["/**\n * Crawler Controls\n */\nexport enum VehicleControl {\n ThrusterForward = \"THRUSTER_FORWARD\",\n ThrusterReverse = \"THRUSTER_REVERSE\",\n Thrusters = \"THRUSTER\",\n YawLeft = \"YAW_LEFT\",\n YawRight = \"YAW_RIGHT\",\n Yaw = \"YAW\",\n LateralLeft = \"LATERAL_LEFT\",\n LateralRight = \"LATERAL_RIGHT\",\n Lateral = \"LATERAL\",\n VerticalUp = \"VERTICAL_UP\",\n VerticalDown = \"VERTICAL_DOWN\",\n Vertical = \"VERTICAL\",\n DisableMotors = \"DISABLE_MOTORS\",\n DepthLock = \"DEPTH_LOCK\",\n AltitudeLock = \"ALTITUDE_LOCK\",\n HeadingLock = \"HEADING_LOCK\",\n PitchLock = \"PITCH_LOCK\",\n AutoStabilization = \"AUTO_STABILIZATION\",\n StationHolding = \"STATION_HOLDING\",\n PrecisionThrusters = \"PRECISION_THRUSTERS\",\n GrabberOpen = \"GRABBER_OPEN\",\n GrabberClose = \"GRABBER_CLOSE\",\n Grabber = \"GRABBER\",\n GrabberRotateLeft = \"GRABBER_ROTATE_LEFT\",\n GrabberRotateRight = \"GRABBER_ROTATE_RIGHT\",\n TiltPlatform = \"TILT_PLATFORM\",\n TiltPlatformUp = \"TILT_PLATFORM_UP\",\n TiltPlatformDown = \"TILT_PLATFORM_DOWN\",\n RotateGrabber = \"ROTATE_GRABBER\",\n MainLight = \"MAIN_LIGHT\",\n AuxLight = \"AUX_LIGHT\",\n Zoom = \"ZOOM\",\n ZoomIn = \"ZOOM_IN\",\n ZoomOut = \"ZOOM_OUT\",\n ElevatingArm = \"ELEVATING_ARM\",\n ElevatingArmDescend = \"ELEVATING_ARM_DESCEND\",\n ElevatingArmAscend = \"ELEVATING_ARM_ASCEND\",\n CruiseControl = \"CRUISE_CONTROL\",\n ReelReset = \"REEL_RESET\",\n SwitchCamera = \"SWITCH_CAMERA\",\n CameraHome = \"CAMERA_HOME\",\n Record = \"RECORD\",\n Screenshot = \"SCREENSHOT\",\n CrawlerSteer = \"CRAWLER_STEER\",\n CrawlerLeft = \"CRAWLER_LEFT\",\n CrawlerRight = \"CRAWLER_RIGHT\",\n CrawlerDrive = \"CRAWLER_DRIVE\",\n CrawlerForward = \"CRAWLER_FORWARD\",\n CrawlerReverse = \"CRAWLER_REVERSE\",\n Pan = \"PAN\",\n PanLeft = \"PAN_LEFT\",\n PanRight = \"PAN_RIGHT\",\n Tilt = \"TILT\",\n TiltUp = \"TILT_UP\",\n TiltDown = \"TILT_DOWN\",\n Focus = \"FOCUS\",\n IncreaseFocus = \"FOCUS_INCREASE\",\n DecreaseFocus = \"FOCUS_DECREASE\",\n Exposure = \"EXPOSURE\",\n IncreaseExposure = \"EXPOSURE_INCREASE\",\n DecreaseExposure = \"DECREASE_EXPOSURE\",\n ToggleLasers = \"TOGGLE_LASERS\",\n ReelTetherIn = \"REEL_TETHER_IN\",\n}\n/**\n * ROV Controls\n */\nexport enum RovControls {\n MainLight = \"MAIN_LIGHT\",\n}\n/**\n * Input Mapping Profile\n */\nexport interface InputMappingProfileStore {\n input_mapping_profile_id: number;\n name: string;\n created_at: Date;\n modified_at: Date;\n default: number;\n selected: number;\n}\nexport interface VehicleControlsStore {\n vehicle_control_id: number;\n name: string;\n created_at: Date;\n}\nexport interface MappedInput {\n input_key: string;\n input_type: InputType;\n control_type: ControlType;\n controller_id: string;\n}\nexport enum ControlType {\n Vehicle = \"VEHICLE\",\n Camera = \"CAMERA\",\n /** @deprecated use `Miscellaneous` */\n Reel = \"REEL\",\n Lights = \"LIGHTS\",\n IntelligentModes = \"INTELLIGENT_MODES\",\n /** @deprecated use `IntelligentModes` */\n IntelligentMode = \"INTELLIGENT_MODE\",\n Tools = \"TOOLS\",\n /** @deprecated use `Tools` */\n Grabber = \"GRABBER\",\n Sonar = \"SONAR\",\n Menu = \"MENU\",\n Miscellaneous = \"MISCELLANEOUS\",\n}\nexport interface RawInput {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n control_type: ControlType;\n name: string;\n control_name: VehicleControl;\n created_at: string;\n}\nexport interface InputMapStore {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n name: string;\n control_name: string;\n created_at: string;\n}\nexport enum InputType {\n JoystickAxis = \"AXIS\",\n JoystickButton = \"BUTTON\",\n KeyboardKey = \"KEY\",\n}\n\nexport interface CombinedCommand {\n positiveCommand: VehicleControl;\n negativeCommand: VehicleControl;\n}\n","import {\n CombinedCommand,\n ControlType,\n InputType,\n MappedInput,\n VehicleControl,\n} from \"@types\";\n\nexport const RATE_COMMANDS: Partial<Record<VehicleControl, boolean>> = {\n [VehicleControl.CrawlerLeft]: true,\n [VehicleControl.CrawlerRight]: true,\n [VehicleControl.CrawlerForward]: true,\n [VehicleControl.CrawlerReverse]: true,\n [VehicleControl.TiltDown]: true,\n [VehicleControl.TiltUp]: true,\n [VehicleControl.PanLeft]: true,\n [VehicleControl.PanRight]: true,\n};\n\nconst CRAWLER_DRIVE: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerForward,\n negativeCommand: VehicleControl.CrawlerReverse,\n};\n\nconst CRAWLER_STEER: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerRight,\n negativeCommand: VehicleControl.CrawlerLeft,\n};\n\nconst ELEVATING_ARM: CombinedCommand = {\n positiveCommand: VehicleControl.ElevatingArmAscend,\n negativeCommand: VehicleControl.ElevatingArmDescend,\n};\nconst PAN: CombinedCommand = {\n positiveCommand: VehicleControl.PanRight,\n negativeCommand: VehicleControl.PanLeft,\n};\nconst TILT: CombinedCommand = {\n positiveCommand: VehicleControl.TiltUp,\n negativeCommand: VehicleControl.TiltDown,\n};\nconst FOCUS: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseFocus,\n negativeCommand: VehicleControl.DecreaseFocus,\n};\nconst EXPOSURE: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseExposure,\n negativeCommand: VehicleControl.DecreaseExposure,\n};\nconst ZOOM: CombinedCommand = {\n positiveCommand: VehicleControl.ZoomIn,\n negativeCommand: VehicleControl.ZoomOut,\n};\n\nconst THRUSTERS: CombinedCommand = {\n positiveCommand: VehicleControl.ThrusterForward,\n negativeCommand: VehicleControl.ThrusterReverse,\n};\n\nconst YAW: CombinedCommand = {\n positiveCommand: VehicleControl.YawRight,\n negativeCommand: VehicleControl.YawLeft,\n};\n\nconst LATERAL: CombinedCommand = {\n positiveCommand: VehicleControl.LateralRight,\n negativeCommand: VehicleControl.LateralLeft,\n};\n\nconst VERTICAL: CombinedCommand = {\n positiveCommand: VehicleControl.VerticalUp,\n negativeCommand: VehicleControl.VerticalDown,\n};\n\nconst GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberOpen,\n negativeCommand: VehicleControl.GrabberClose,\n};\n\nconst ROTATE_GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberRotateRight,\n negativeCommand: VehicleControl.GrabberRotateLeft,\n};\nconst TILT_PLATFORM: CombinedCommand = {\n positiveCommand: VehicleControl.TiltPlatformUp,\n negativeCommand: VehicleControl.TiltPlatformDown,\n};\nexport const COMBINED_COMMANDS: Partial<\n Record<VehicleControl, CombinedCommand>\n> = {\n [VehicleControl.CrawlerDrive]: CRAWLER_DRIVE,\n [VehicleControl.CrawlerSteer]: CRAWLER_STEER,\n [VehicleControl.ElevatingArm]: ELEVATING_ARM,\n [VehicleControl.Pan]: PAN,\n [VehicleControl.Tilt]: TILT,\n [VehicleControl.Focus]: FOCUS,\n [VehicleControl.Exposure]: EXPOSURE,\n [VehicleControl.Zoom]: ZOOM,\n [VehicleControl.Thrusters]: THRUSTERS,\n [VehicleControl.Yaw]: YAW,\n [VehicleControl.Lateral]: LATERAL,\n [VehicleControl.Vertical]: VERTICAL,\n [VehicleControl.Grabber]: GRABBER,\n [VehicleControl.RotateGrabber]: ROTATE_GRABBER,\n [VehicleControl.TiltPlatform]: TILT_PLATFORM,\n};\n\nexport const DEFAULT_DEAD_ZONE = 5;\n\nexport const POSITIVE_COMMAND_INDICATOR = \"+\"\nexport const NEGATIVE_COMMAND_INDICATOR = \"-\"\nexport const SPACE_BETWEEN_INDEX_AND_INDICATOR = \" \";","import {\n DEFAULT_DEAD_ZONE,\n NEGATIVE_COMMAND_INDICATOR,\n POSITIVE_COMMAND_INDICATOR,\n SPACE_BETWEEN_INDEX_AND_INDICATOR,\n} from \"@constants\";\nimport { InputType, MappedInput, DeadZoneProfiles } from \"@types\";\n\nexport function checkKeyPress(\n keys: string[],\n keysPressed: Record<string, boolean>,\n) {\n const activeElem = document.activeElement?.tagName || \"\";\n if (activeElem === \"INPUT\" || activeElem === \"TEXTAREA\") {\n return false;\n }\n let keysFound = true;\n keys.forEach((key) => {\n if (!keysPressed[key]) {\n keysFound = false;\n }\n });\n return keysFound;\n}\nexport function getAxisValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[],\n) {\n let axisValue = 0;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n axisValue = gamepad.axes[index];\n }\n });\n return Math.round(axisValue * 100);\n}\nexport function getButtonValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[],\n) {\n let buttonPressed = false;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n buttonPressed = gamepad.buttons[index].pressed;\n }\n });\n return buttonPressed;\n}\nexport function decodeBooleanMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>,\n deadZones: DeadZoneProfiles,\n) {\n if (!mapping) {\n return false;\n }\n const { input_type, input_key, controller_id } = mapping;\n if (!controller_id && input_type !== InputType.KeyboardKey) {\n return false;\n }\n switch (input_type) {\n case InputType.KeyboardKey:\n return checkKeyPress(\n input_key.split(POSITIVE_COMMAND_INDICATOR),\n keysPressed,\n );\n case InputType.JoystickAxis:\n const mappingIndex = input_key.includes(\n SPACE_BETWEEN_INDEX_AND_INDICATOR,\n )\n ? +input_key.substring(\n 0,\n input_key.indexOf(SPACE_BETWEEN_INDEX_AND_INDICATOR),\n )\n : +input_key;\n const axisValue = getAxisValue(\n controller_id,\n mappingIndex,\n gamepads,\n );\n const deadZoneValue =\n deadZones[controller_id]?.[mappingIndex] || DEFAULT_DEAD_ZONE;\n if (input_key.includes(POSITIVE_COMMAND_INDICATOR)) {\n return axisValue > deadZoneValue;\n } else if (input_key.includes(NEGATIVE_COMMAND_INDICATOR)) {\n return axisValue < -1 * deadZoneValue;\n } else {\n return false;\n }\n case InputType.JoystickButton:\n return getButtonValue(controller_id, +input_key, gamepads);\n default:\n return false;\n }\n}\nexport function decodeRateMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>,\n deadZones: DeadZoneProfiles,\n) {\n if (!mapping) {\n return 0;\n }\n const { input_type, input_key, controller_id } = mapping;\n if (!controller_id && input_type !== InputType.KeyboardKey) {\n return 0;\n }\n switch (input_type) {\n case InputType.KeyboardKey:\n if (checkKeyPress(input_key.split(\"+\"), keysPressed)) {\n return 100;\n } else {\n return 0;\n }\n case InputType.JoystickAxis:\n const mappingIndex =\n input_key.indexOf(SPACE_BETWEEN_INDEX_AND_INDICATOR) > -1\n ? +input_key.substring(\n 0,\n input_key.indexOf(SPACE_BETWEEN_INDEX_AND_INDICATOR),\n )\n : +input_key;\n const axisValue = getAxisValue(\n controller_id,\n mappingIndex,\n gamepads,\n );\n const deadZoneValue =\n deadZones[controller_id]?.[mappingIndex] ?? DEFAULT_DEAD_ZONE;\n if (input_key.includes(POSITIVE_COMMAND_INDICATOR)) {\n if (axisValue >= deadZoneValue) {\n return scaleRateAroundDeadZone(axisValue, deadZoneValue);\n } else {\n return 0;\n }\n } else if (input_key.includes(NEGATIVE_COMMAND_INDICATOR)) {\n if (axisValue <= -1 * deadZoneValue) {\n return scaleRateAroundDeadZone(\n Math.abs(axisValue),\n deadZoneValue,\n );\n } else {\n return 0;\n }\n } else {\n return axisValue;\n }\n case InputType.JoystickButton:\n const buttonPressed = getButtonValue(\n controller_id,\n +input_key,\n gamepads,\n );\n if (buttonPressed) {\n return 100;\n } else {\n return 0;\n }\n default:\n return 0;\n }\n}\n\nconst scaleRateAroundDeadZone = (rate: number, deadZone: number) =>\n Math.floor(((rate - deadZone) / (100 - deadZone)) * 100);\n","import { COMBINED_COMMANDS, RATE_COMMANDS } from \"@constants\";\nimport { VehicleControl, MappedInput, DeadZoneProfiles } from \"@types\";\nimport { decodeRateMapping, decodeBooleanMapping } from \"@utils\";\n\n/**\n * Used to determine which keys are currently being pressed\n */\nconst keysPressed: Record<string, boolean> = {};\n\nexport const updateKeysPressed = (key: string, pressed: boolean) =>\n (keysPressed[key] = pressed);\n\nexport const poll = (\n activeMapping: Record<string, MappedInput>,\n subscribers: Partial<\n Record<VehicleControl, Array<(value: number | boolean) => void>>\n > = {},\n deadZones: DeadZoneProfiles = {},\n) => {\n const gamepads = navigator.getGamepads();\n Object.entries(subscribers).forEach(([control, callbacks]) => {\n const vehicleControl = control as VehicleControl;\n const combinedCommand = COMBINED_COMMANDS[vehicleControl];\n if (combinedCommand) {\n const { positiveCommand, negativeCommand } = combinedCommand;\n callbacks.forEach((callback) =>\n callback(\n (decodeRateMapping(\n activeMapping[positiveCommand],\n gamepads,\n keysPressed,\n deadZones,\n ) || 0) -\n (decodeRateMapping(\n activeMapping[negativeCommand],\n gamepads,\n keysPressed,\n deadZones,\n ) || 0),\n ),\n );\n } else {\n const value = RATE_COMMANDS[vehicleControl]\n ? decodeRateMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n deadZones,\n )\n : decodeBooleanMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n deadZones,\n );\n callbacks.forEach((callback) => callback(value));\n }\n });\n};\n"],"names":["VehicleControl","ControlType","InputType","RovControls","RATE_COMMANDS","CrawlerLeft","CrawlerRight","CrawlerForward","CrawlerReverse","TiltDown","TiltUp","PanLeft","PanRight","CRAWLER_DRIVE","positiveCommand","negativeCommand","CRAWLER_STEER","ELEVATING_ARM","ElevatingArmAscend","ElevatingArmDescend","PAN","TILT","FOCUS","IncreaseFocus","DecreaseFocus","EXPOSURE","IncreaseExposure","DecreaseExposure","ZOOM","ZoomIn","ZoomOut","THRUSTERS","ThrusterForward","ThrusterReverse","YAW","YawRight","YawLeft","LATERAL","LateralRight","LateralLeft","VERTICAL","VerticalUp","VerticalDown","GRABBER","GrabberOpen","GrabberClose","ROTATE_GRABBER","GrabberRotateRight","GrabberRotateLeft","TILT_PLATFORM","TiltPlatformUp","TiltPlatformDown","COMBINED_COMMANDS","CrawlerDrive","CrawlerSteer","ElevatingArm","Pan","Tilt","Focus","Exposure","Zoom","Thrusters","Yaw","Lateral","Vertical","Grabber","RotateGrabber","TiltPlatform","POSITIVE_COMMAND_INDICATOR","SPACE_BETWEEN_INDEX_AND_INDICATOR","checkKeyPress","keys","keysPressed","activeElem","_a","document","activeElement","tagName","keysFound","forEach","key","getAxisValue","controllerID","index","gamepads","axisValue","gamepad","id","axes","Math","round","getButtonValue","buttonPressed","buttons","pressed","decodeBooleanMapping","mapping","deadZones","input_type","input_key","controller_id","KeyboardKey","split","JoystickAxis","mappingIndex","includes","substring","indexOf","deadZoneValue","JoystickButton","decodeRateMapping","_b","scaleRateAroundDeadZone","abs","rate","deadZone","floor","activeMapping","subscribers","navigator","getGamepads","Object","entries","control","callbacks","vehicleControl","combinedCommand","callback","value"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types/inputMapping/index.ts","../src/constants/index.ts","../src/utils/gamepadHelper/index.ts","../src/lib/index.ts"],"sourcesContent":["/**\n * Crawler Controls\n */\nexport enum VehicleControl {\n ThrusterForward = \"THRUSTER_FORWARD\",\n ThrusterReverse = \"THRUSTER_REVERSE\",\n Thrusters = \"THRUSTER\",\n YawLeft = \"YAW_LEFT\",\n YawRight = \"YAW_RIGHT\",\n Yaw = \"YAW\",\n LateralLeft = \"LATERAL_LEFT\",\n LateralRight = \"LATERAL_RIGHT\",\n Lateral = \"LATERAL\",\n VerticalUp = \"VERTICAL_UP\",\n VerticalDown = \"VERTICAL_DOWN\",\n Vertical = \"VERTICAL\",\n DisableMotors = \"DISABLE_MOTORS\",\n DepthLock = \"DEPTH_LOCK\",\n AltitudeLock = \"ALTITUDE_LOCK\",\n HeadingLock = \"HEADING_LOCK\",\n PitchLock = \"PITCH_LOCK\",\n AutoStabilization = \"AUTO_STABILIZATION\",\n StationHolding = \"STATION_HOLDING\",\n PrecisionThrusters = \"PRECISION_THRUSTERS\",\n GrabberOpen = \"GRABBER_OPEN\",\n GrabberClose = \"GRABBER_CLOSE\",\n Grabber = \"GRABBER\",\n GrabberRotateLeft = \"GRABBER_ROTATE_LEFT\",\n GrabberRotateRight = \"GRABBER_ROTATE_RIGHT\",\n TiltPlatform = \"TILT_PLATFORM\",\n TiltPlatformUp = \"TILT_PLATFORM_UP\",\n TiltPlatformDown = \"TILT_PLATFORM_DOWN\",\n RotateGrabber = \"ROTATE_GRABBER\",\n MainLight = \"MAIN_LIGHT\",\n AuxLight = \"AUX_LIGHT\",\n Zoom = \"ZOOM\",\n ZoomIn = \"ZOOM_IN\",\n ZoomOut = \"ZOOM_OUT\",\n ElevatingArm = \"ELEVATING_ARM\",\n ElevatingArmDescend = \"ELEVATING_ARM_DESCEND\",\n ElevatingArmAscend = \"ELEVATING_ARM_ASCEND\",\n CruiseControl = \"CRUISE_CONTROL\",\n ReelReset = \"REEL_RESET\",\n SwitchCamera = \"SWITCH_CAMERA\",\n CameraHome = \"CAMERA_HOME\",\n Record = \"RECORD\",\n Screenshot = \"SCREENSHOT\",\n CrawlerSteer = \"CRAWLER_STEER\",\n CrawlerLeft = \"CRAWLER_LEFT\",\n CrawlerRight = \"CRAWLER_RIGHT\",\n CrawlerDrive = \"CRAWLER_DRIVE\",\n CrawlerForward = \"CRAWLER_FORWARD\",\n CrawlerReverse = \"CRAWLER_REVERSE\",\n Pan = \"PAN\",\n PanLeft = \"PAN_LEFT\",\n PanRight = \"PAN_RIGHT\",\n Tilt = \"TILT\",\n TiltUp = \"TILT_UP\",\n TiltDown = \"TILT_DOWN\",\n Focus = \"FOCUS\",\n IncreaseFocus = \"FOCUS_INCREASE\",\n DecreaseFocus = \"FOCUS_DECREASE\",\n Exposure = \"EXPOSURE\",\n IncreaseExposure = \"EXPOSURE_INCREASE\",\n DecreaseExposure = \"DECREASE_EXPOSURE\",\n ToggleLasers = \"TOGGLE_LASERS\",\n ReelTetherIn = \"REEL_TETHER_IN\",\n SpeedGain = \"SPEED_GAIN\",\n IncreaseSpeedGain = \"INCREASE_SPEED_GAIN\",\n DecreaseSpeedGain = \"DECREASE_SPEED_GAIN\",\n SteerGain = \"STEER_GAIN\",\n IncreaseSteerGain = \"INCREASE_STEER_GAIN\",\n DecreaseSteerGain = \"DECREASE_STEER_GAIN\",\n AuxLightBrightness = \"AUX_LIGHT_BRIGHTNESS\",\n IncreaseAuxLightBrightness = \"INCREASE_AUX_LIGHT_BRIGHTNESS\",\n DecreaseAuxLightBrightness = \"DECREASE_AUX_LIGHT_BRIGHTNESS\",\n MainLightBrightness = \"MAIN_LIGHT_BRIGHTNESS\",\n IncreaseMainLightBrightness = \"INCREASE_MAIN_LIGHT_BRIGHTNESS\",\n DecreaseMainLightBrightness = \"DECREASE_MAIN_LIGHT_BRIGHTNESS\",\n}\n/**\n * ROV Controls\n */\nexport enum RovControls {\n MainLight = \"MAIN_LIGHT\",\n AuxLight = \"AUX_LIGHT\",\n}\n/**\n * Input Mapping Profile\n */\nexport interface InputMappingProfileStore {\n input_mapping_profile_id: number;\n name: string;\n created_at: Date;\n modified_at: Date;\n default: number;\n selected: number;\n}\nexport interface VehicleControlsStore {\n vehicle_control_id: number;\n name: string;\n created_at: Date;\n}\nexport interface MappedInput {\n input_key: string;\n input_type: InputType;\n control_type: ControlType;\n controller_id: string;\n}\nexport enum ControlType {\n Vehicle = \"VEHICLE\",\n Camera = \"CAMERA\",\n /** @deprecated use `Miscellaneous` */\n Reel = \"REEL\",\n Lights = \"LIGHTS\",\n IntelligentModes = \"INTELLIGENT_MODES\",\n /** @deprecated use `IntelligentModes` */\n IntelligentMode = \"INTELLIGENT_MODE\",\n Tools = \"TOOLS\",\n /** @deprecated use `Tools` */\n Grabber = \"GRABBER\",\n Sonar = \"SONAR\",\n Menu = \"MENU\",\n Miscellaneous = \"MISCELLANEOUS\",\n}\nexport interface RawInput {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n control_type: ControlType;\n name: string;\n control_name: VehicleControl;\n created_at: string;\n}\nexport interface InputMapStore {\n input_mapping_profile_id: number;\n vehicle_control_id: number;\n input_key: string;\n input_type: InputType;\n controller_id: string;\n name: string;\n control_name: string;\n created_at: string;\n}\nexport enum InputType {\n JoystickAxis = \"AXIS\",\n JoystickButton = \"BUTTON\",\n KeyboardKey = \"KEY\",\n}\n\nexport interface CombinedCommand {\n positiveCommand: VehicleControl;\n negativeCommand: VehicleControl;\n}\n","import { CombinedCommand, VehicleControl } from \"@types\";\n\nexport const RATE_COMMANDS: Partial<Record<VehicleControl, boolean>> = {\n [VehicleControl.CrawlerLeft]: true,\n [VehicleControl.CrawlerRight]: true,\n [VehicleControl.CrawlerForward]: true,\n [VehicleControl.CrawlerReverse]: true,\n [VehicleControl.TiltDown]: true,\n [VehicleControl.TiltUp]: true,\n [VehicleControl.PanLeft]: true,\n [VehicleControl.PanRight]: true,\n};\n\nconst CRAWLER_DRIVE: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerForward,\n negativeCommand: VehicleControl.CrawlerReverse,\n};\n\nconst CRAWLER_STEER: CombinedCommand = {\n positiveCommand: VehicleControl.CrawlerRight,\n negativeCommand: VehicleControl.CrawlerLeft,\n};\n\nconst ELEVATING_ARM: CombinedCommand = {\n positiveCommand: VehicleControl.ElevatingArmAscend,\n negativeCommand: VehicleControl.ElevatingArmDescend,\n};\nconst PAN: CombinedCommand = {\n positiveCommand: VehicleControl.PanRight,\n negativeCommand: VehicleControl.PanLeft,\n};\nconst TILT: CombinedCommand = {\n positiveCommand: VehicleControl.TiltUp,\n negativeCommand: VehicleControl.TiltDown,\n};\nconst FOCUS: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseFocus,\n negativeCommand: VehicleControl.DecreaseFocus,\n};\nconst EXPOSURE: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseExposure,\n negativeCommand: VehicleControl.DecreaseExposure,\n};\nconst ZOOM: CombinedCommand = {\n positiveCommand: VehicleControl.ZoomIn,\n negativeCommand: VehicleControl.ZoomOut,\n};\n\nconst THRUSTERS: CombinedCommand = {\n positiveCommand: VehicleControl.ThrusterForward,\n negativeCommand: VehicleControl.ThrusterReverse,\n};\n\nconst YAW: CombinedCommand = {\n positiveCommand: VehicleControl.YawRight,\n negativeCommand: VehicleControl.YawLeft,\n};\n\nconst LATERAL: CombinedCommand = {\n positiveCommand: VehicleControl.LateralRight,\n negativeCommand: VehicleControl.LateralLeft,\n};\n\nconst VERTICAL: CombinedCommand = {\n positiveCommand: VehicleControl.VerticalUp,\n negativeCommand: VehicleControl.VerticalDown,\n};\n\nconst GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberOpen,\n negativeCommand: VehicleControl.GrabberClose,\n};\n\nconst ROTATE_GRABBER: CombinedCommand = {\n positiveCommand: VehicleControl.GrabberRotateRight,\n negativeCommand: VehicleControl.GrabberRotateLeft,\n};\nconst TILT_PLATFORM: CombinedCommand = {\n positiveCommand: VehicleControl.TiltPlatformUp,\n negativeCommand: VehicleControl.TiltPlatformDown,\n};\nconst MAIN_LIGHT_BRIGHTNESS: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseMainLightBrightness,\n negativeCommand: VehicleControl.DecreaseMainLightBrightness,\n};\nconst AUX_LIGHT_BRIGHTNESS: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseAuxLightBrightness,\n negativeCommand: VehicleControl.DecreaseAuxLightBrightness,\n};\nconst SPEED_GAIN: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseSpeedGain,\n negativeCommand: VehicleControl.DecreaseSpeedGain,\n};\nconst STEER_GAIN: CombinedCommand = {\n positiveCommand: VehicleControl.IncreaseSteerGain,\n negativeCommand: VehicleControl.DecreaseSteerGain,\n};\nexport const COMBINED_COMMANDS: Partial<\n Record<VehicleControl, CombinedCommand>\n> = {\n [VehicleControl.CrawlerDrive]: CRAWLER_DRIVE,\n [VehicleControl.CrawlerSteer]: CRAWLER_STEER,\n [VehicleControl.ElevatingArm]: ELEVATING_ARM,\n [VehicleControl.Pan]: PAN,\n [VehicleControl.Tilt]: TILT,\n [VehicleControl.Focus]: FOCUS,\n [VehicleControl.Exposure]: EXPOSURE,\n [VehicleControl.Zoom]: ZOOM,\n [VehicleControl.Thrusters]: THRUSTERS,\n [VehicleControl.Yaw]: YAW,\n [VehicleControl.Lateral]: LATERAL,\n [VehicleControl.Vertical]: VERTICAL,\n [VehicleControl.Grabber]: GRABBER,\n [VehicleControl.RotateGrabber]: ROTATE_GRABBER,\n [VehicleControl.TiltPlatform]: TILT_PLATFORM,\n [VehicleControl.MainLightBrightness]: MAIN_LIGHT_BRIGHTNESS,\n [VehicleControl.AuxLightBrightness]: AUX_LIGHT_BRIGHTNESS,\n [VehicleControl.SpeedGain]: SPEED_GAIN,\n [VehicleControl.SteerGain]: STEER_GAIN,\n};\n\nexport const DEFAULT_DEAD_ZONE = 5;\n\nexport const POSITIVE_COMMAND_INDICATOR = \"+\";\nexport const NEGATIVE_COMMAND_INDICATOR = \"-\";\nexport const SPACE_BETWEEN_INDEX_AND_INDICATOR = \" \";\n","import {\n DEFAULT_DEAD_ZONE,\n NEGATIVE_COMMAND_INDICATOR,\n POSITIVE_COMMAND_INDICATOR,\n SPACE_BETWEEN_INDEX_AND_INDICATOR,\n} from \"@constants\";\nimport { InputType, MappedInput, DeadZoneProfiles } from \"@types\";\n\nexport function checkKeyPress(\n keys: string[],\n keysPressed: Record<string, boolean>,\n) {\n const activeElem = document.activeElement?.tagName || \"\";\n if (activeElem === \"INPUT\" || activeElem === \"TEXTAREA\") {\n return false;\n }\n let keysFound = true;\n keys.forEach((key) => {\n if (!keysPressed[key]) {\n keysFound = false;\n }\n });\n return keysFound;\n}\nexport function getAxisValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[],\n) {\n let axisValue = 0;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n axisValue = gamepad.axes[index];\n }\n });\n return Math.round(axisValue * 100);\n}\nexport function getButtonValue(\n controllerID: string,\n index: number,\n gamepads: (Gamepad | null)[],\n) {\n let buttonPressed = false;\n gamepads.forEach((gamepad) => {\n if (gamepad && gamepad.id === controllerID) {\n buttonPressed = gamepad.buttons[index].pressed;\n }\n });\n return buttonPressed;\n}\nexport function decodeBooleanMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>,\n deadZones: DeadZoneProfiles,\n) {\n if (!mapping) {\n return false;\n }\n const { input_type, input_key, controller_id } = mapping;\n if (!controller_id && input_type !== InputType.KeyboardKey) {\n return false;\n }\n switch (input_type) {\n case InputType.KeyboardKey:\n return checkKeyPress(\n input_key.split(POSITIVE_COMMAND_INDICATOR),\n keysPressed,\n );\n case InputType.JoystickAxis:\n const mappingIndex = input_key.includes(\n SPACE_BETWEEN_INDEX_AND_INDICATOR,\n )\n ? +input_key.substring(\n 0,\n input_key.indexOf(SPACE_BETWEEN_INDEX_AND_INDICATOR),\n )\n : +input_key;\n const axisValue = getAxisValue(\n controller_id,\n mappingIndex,\n gamepads,\n );\n const deadZoneValue =\n deadZones[controller_id]?.[mappingIndex] || DEFAULT_DEAD_ZONE;\n if (input_key.includes(POSITIVE_COMMAND_INDICATOR)) {\n return axisValue > deadZoneValue;\n } else if (input_key.includes(NEGATIVE_COMMAND_INDICATOR)) {\n return axisValue < -1 * deadZoneValue;\n } else {\n return false;\n }\n case InputType.JoystickButton:\n return getButtonValue(controller_id, +input_key, gamepads);\n default:\n return false;\n }\n}\nexport function decodeRateMapping(\n mapping: MappedInput | undefined,\n gamepads: (Gamepad | null)[],\n keysPressed: Record<string, boolean>,\n deadZones: DeadZoneProfiles,\n) {\n if (!mapping) {\n return 0;\n }\n const { input_type, input_key, controller_id } = mapping;\n if (!controller_id && input_type !== InputType.KeyboardKey) {\n return 0;\n }\n switch (input_type) {\n case InputType.KeyboardKey:\n if (checkKeyPress(input_key.split(\"+\"), keysPressed)) {\n return 100;\n } else {\n return 0;\n }\n case InputType.JoystickAxis:\n const mappingIndex =\n input_key.indexOf(SPACE_BETWEEN_INDEX_AND_INDICATOR) > -1\n ? +input_key.substring(\n 0,\n input_key.indexOf(SPACE_BETWEEN_INDEX_AND_INDICATOR),\n )\n : +input_key;\n const axisValue = getAxisValue(\n controller_id,\n mappingIndex,\n gamepads,\n );\n const deadZoneValue =\n deadZones[controller_id]?.[mappingIndex] ?? DEFAULT_DEAD_ZONE;\n if (input_key.includes(POSITIVE_COMMAND_INDICATOR)) {\n if (axisValue >= deadZoneValue) {\n return scaleRateAroundDeadZone(axisValue, deadZoneValue);\n } else {\n return 0;\n }\n } else if (input_key.includes(NEGATIVE_COMMAND_INDICATOR)) {\n if (axisValue <= -1 * deadZoneValue) {\n return scaleRateAroundDeadZone(\n Math.abs(axisValue),\n deadZoneValue,\n );\n } else {\n return 0;\n }\n } else {\n return axisValue;\n }\n case InputType.JoystickButton:\n const buttonPressed = getButtonValue(\n controller_id,\n +input_key,\n gamepads,\n );\n if (buttonPressed) {\n return 100;\n } else {\n return 0;\n }\n default:\n return 0;\n }\n}\n\nconst scaleRateAroundDeadZone = (rate: number, deadZone: number) =>\n Math.floor(((rate - deadZone) / (100 - deadZone)) * 100);\n","import { COMBINED_COMMANDS, RATE_COMMANDS } from \"@constants\";\nimport { VehicleControl, MappedInput, DeadZoneProfiles } from \"@types\";\nimport { decodeRateMapping, decodeBooleanMapping } from \"@utils\";\n\n/**\n * Used to determine which keys are currently being pressed\n */\nconst keysPressed: Record<string, boolean> = {};\n\nexport const updateKeysPressed = (key: string, pressed: boolean) =>\n (keysPressed[key] = pressed);\n\nexport const poll = (\n activeMapping: Record<string, MappedInput>,\n subscribers: Partial<\n Record<VehicleControl, Array<(value: number | boolean) => void>>\n > = {},\n deadZones: DeadZoneProfiles = {},\n) => {\n const gamepads = navigator.getGamepads();\n Object.entries(subscribers).forEach(([control, callbacks]) => {\n const vehicleControl = control as VehicleControl;\n const combinedCommand = COMBINED_COMMANDS[vehicleControl];\n if (combinedCommand) {\n const { positiveCommand, negativeCommand } = combinedCommand;\n callbacks.forEach((callback) =>\n callback(\n (decodeRateMapping(\n activeMapping[positiveCommand],\n gamepads,\n keysPressed,\n deadZones,\n ) || 0) -\n (decodeRateMapping(\n activeMapping[negativeCommand],\n gamepads,\n keysPressed,\n deadZones,\n ) || 0),\n ),\n );\n } else {\n const value = RATE_COMMANDS[vehicleControl]\n ? decodeRateMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n deadZones,\n )\n : decodeBooleanMapping(\n activeMapping[vehicleControl],\n gamepads,\n keysPressed,\n deadZones,\n );\n callbacks.forEach((callback) => callback(value));\n }\n });\n};\n"],"names":["VehicleControl","RovControls","ControlType","InputType","RATE_COMMANDS","CrawlerLeft","CrawlerRight","CrawlerForward","CrawlerReverse","TiltDown","TiltUp","PanLeft","PanRight","CRAWLER_DRIVE","positiveCommand","negativeCommand","CRAWLER_STEER","ELEVATING_ARM","ElevatingArmAscend","ElevatingArmDescend","PAN","TILT","FOCUS","IncreaseFocus","DecreaseFocus","EXPOSURE","IncreaseExposure","DecreaseExposure","ZOOM","ZoomIn","ZoomOut","THRUSTERS","ThrusterForward","ThrusterReverse","YAW","YawRight","YawLeft","LATERAL","LateralRight","LateralLeft","VERTICAL","VerticalUp","VerticalDown","GRABBER","GrabberOpen","GrabberClose","ROTATE_GRABBER","GrabberRotateRight","GrabberRotateLeft","TILT_PLATFORM","TiltPlatformUp","TiltPlatformDown","MAIN_LIGHT_BRIGHTNESS","IncreaseMainLightBrightness","DecreaseMainLightBrightness","AUX_LIGHT_BRIGHTNESS","IncreaseAuxLightBrightness","DecreaseAuxLightBrightness","SPEED_GAIN","IncreaseSpeedGain","DecreaseSpeedGain","STEER_GAIN","IncreaseSteerGain","DecreaseSteerGain","COMBINED_COMMANDS","CrawlerDrive","CrawlerSteer","ElevatingArm","Pan","Tilt","Focus","Exposure","Zoom","Thrusters","Yaw","Lateral","Vertical","Grabber","RotateGrabber","TiltPlatform","MainLightBrightness","AuxLightBrightness","SpeedGain","SteerGain","POSITIVE_COMMAND_INDICATOR","SPACE_BETWEEN_INDEX_AND_INDICATOR","checkKeyPress","keys","keysPressed","activeElem","_a","document","activeElement","tagName","keysFound","forEach","key","getAxisValue","controllerID","index","gamepads","axisValue","gamepad","id","axes","Math","round","getButtonValue","buttonPressed","buttons","pressed","decodeBooleanMapping","mapping","deadZones","input_type","input_key","controller_id","KeyboardKey","split","JoystickAxis","mappingIndex","includes","substring","indexOf","deadZoneValue","JoystickButton","decodeRateMapping","_b","scaleRateAroundDeadZone","abs","rate","deadZone","floor","activeMapping","subscribers","navigator","getGamepads","Object","entries","control","callbacks","vehicleControl","combinedCommand","callback","value"],"mappings":"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"}
|
|
@@ -64,13 +64,26 @@ export declare enum VehicleControl {
|
|
|
64
64
|
IncreaseExposure = "EXPOSURE_INCREASE",
|
|
65
65
|
DecreaseExposure = "DECREASE_EXPOSURE",
|
|
66
66
|
ToggleLasers = "TOGGLE_LASERS",
|
|
67
|
-
ReelTetherIn = "REEL_TETHER_IN"
|
|
67
|
+
ReelTetherIn = "REEL_TETHER_IN",
|
|
68
|
+
SpeedGain = "SPEED_GAIN",
|
|
69
|
+
IncreaseSpeedGain = "INCREASE_SPEED_GAIN",
|
|
70
|
+
DecreaseSpeedGain = "DECREASE_SPEED_GAIN",
|
|
71
|
+
SteerGain = "STEER_GAIN",
|
|
72
|
+
IncreaseSteerGain = "INCREASE_STEER_GAIN",
|
|
73
|
+
DecreaseSteerGain = "DECREASE_STEER_GAIN",
|
|
74
|
+
AuxLightBrightness = "AUX_LIGHT_BRIGHTNESS",
|
|
75
|
+
IncreaseAuxLightBrightness = "INCREASE_AUX_LIGHT_BRIGHTNESS",
|
|
76
|
+
DecreaseAuxLightBrightness = "DECREASE_AUX_LIGHT_BRIGHTNESS",
|
|
77
|
+
MainLightBrightness = "MAIN_LIGHT_BRIGHTNESS",
|
|
78
|
+
IncreaseMainLightBrightness = "INCREASE_MAIN_LIGHT_BRIGHTNESS",
|
|
79
|
+
DecreaseMainLightBrightness = "DECREASE_MAIN_LIGHT_BRIGHTNESS"
|
|
68
80
|
}
|
|
69
81
|
/**
|
|
70
82
|
* ROV Controls
|
|
71
83
|
*/
|
|
72
84
|
export declare enum RovControls {
|
|
73
|
-
MainLight = "MAIN_LIGHT"
|
|
85
|
+
MainLight = "MAIN_LIGHT",
|
|
86
|
+
AuxLight = "AUX_LIGHT"
|
|
74
87
|
}
|
|
75
88
|
/**
|
|
76
89
|
* Input Mapping Profile
|