https://github.com/repcomm/gameinput-ts
procedural input for javascript/typescript
https://github.com/repcomm/gameinput-ts
html input javascript lib npm remap typescript
Last synced: 28 days ago
JSON representation
procedural input for javascript/typescript
- Host: GitHub
- URL: https://github.com/repcomm/gameinput-ts
- Owner: RepComm
- Created: 2020-11-03T19:42:52.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-07-30T22:22:13.000Z (over 4 years ago)
- Last Synced: 2025-07-05T15:10:50.704Z (7 months ago)
- Topics: html, input, javascript, lib, npm, remap, typescript
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@repcomm/gameinput-ts
- Size: 135 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: ReadMe.md
Awesome Lists containing this project
README
# gameinput-ts
Runtime re-mappable procedural input for the web
# current-support
- keyboard
- mouse
- touch
- gamepad
- importing JSON input mappings during runtime!
# future-support
- UI elements
- WebSocket API
# how it works
The main idea:
- Anything can be a button
- Anything can be an axis
Anything being:
- keyboard buttons
- mouse buttons
- mouse axes
- touch
- gamepad buttons
- gamepad axes
- HTML elements
## Classes
- Input (raw, hooks into browser APIs, used by GameInput)
- GameInput - main API
- Button - unique names, boolean state
- Axis - unique names, floating point state
## Using
### Installing
- Via NPM (usage with webpack or snowpack, which are tested)
```
npm install @repcomm/gameinput-ts
```
```ts
import { GameInput } from "@repcomm/gameinput-ts";
```
- Browser ESM script:
```js
import { GameInput } from "/path/to/gameinput/mod.js";
```
### Example Usage
```js
//so we can use await
async function main () {
//get the singleton
let input = GameInput.get();
//create an axis
input.getOrCreateAxis ("forward")
.addInfluence ({
//value when triggered by boolean state (such as keys, mouse buttons, gamepad buttons)
value: 1.0,
//make it influenced by first mouse button
mouseButtons:[0],
//you can also make it take on the value of the mouse axes
mouseAxes:[0],
//scale factor when activated by mouse/touch
pointerAxisScale: 0.5,
//use gamepad axes!
gpAxes:[0],
//scale factor when activated by gamepad axes
gpAxisScale: 2,
//force use of specific connected gamepad
gpIndex: 0
});
//You can also supply JSON!
const inputMapFile = "./demo.input.json";
console.log(`Fetching ${inputMapFile}`);
let config = await (await fetch( inputMapFile )).json();
//button and axis definitions will merge with pre-existing buttons and axes
input.addJsonConfig( config );
//loop
let fps = 30;
setInterval (()=>{
//get the axis value
let fwd = input.getAxisValue ("forward");
console.log(fwd);
}, 1000/fps);
}
main();
```
## Compiling
To build you'll want to clone the repo
`git clone https://github.com/RepComm/gameinput-ts.git`
## Install dev dependencies
`npm install`
## Build
`npm run build`