@bloopjs/engine 0.0.38 → 0.0.40
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/codegen/enums.d.ts +31 -0
- package/dist/codegen/enums.d.ts.map +1 -1
- package/dist/contexts/inputContext.d.ts +23 -0
- package/dist/contexts/inputContext.d.ts.map +1 -1
- package/dist/engine.js +92 -11
- package/dist/engine.js.map +5 -5
- package/dist/inputs.d.ts +8 -1
- package/dist/inputs.d.ts.map +1 -1
- package/dist/wasmEngine.d.ts +6 -6
- package/dist/wasmEngine.d.ts.map +1 -1
- package/js/codegen/enums.ts +32 -0
- package/js/contexts/inputContext.ts +79 -21
- package/js/inputs.ts +27 -3
- package/js/wasmEngine.ts +7 -7
- package/package.json +2 -1
- package/wasm/bloop.wasm +0 -0
package/dist/codegen/enums.d.ts
CHANGED
|
@@ -216,4 +216,35 @@ export declare enum Key {
|
|
|
216
216
|
F34 = 193,
|
|
217
217
|
F35 = 194
|
|
218
218
|
}
|
|
219
|
+
export declare enum InputSource {
|
|
220
|
+
None = 0,
|
|
221
|
+
LocalKeyboard = 1,
|
|
222
|
+
LocalMouse = 2,
|
|
223
|
+
LocalTouch = 3,
|
|
224
|
+
LocalGamepad0 = 4,
|
|
225
|
+
LocalGamepad1 = 5,
|
|
226
|
+
LocalGamepad2 = 6,
|
|
227
|
+
LocalGamepad3 = 7,
|
|
228
|
+
LocalGamepad4 = 8,
|
|
229
|
+
LocalGamepad5 = 9,
|
|
230
|
+
LocalGamepad6 = 10,
|
|
231
|
+
LocalGamepad7 = 11,
|
|
232
|
+
LocalGamepad8 = 12,
|
|
233
|
+
LocalGamepad9 = 13,
|
|
234
|
+
LocalGamepad10 = 14,
|
|
235
|
+
LocalGamepad11 = 15,
|
|
236
|
+
RemotePeer0 = 128,
|
|
237
|
+
RemotePeer1 = 129,
|
|
238
|
+
RemotePeer2 = 130,
|
|
239
|
+
RemotePeer3 = 131,
|
|
240
|
+
RemotePeer4 = 132,
|
|
241
|
+
RemotePeer5 = 133,
|
|
242
|
+
RemotePeer6 = 134,
|
|
243
|
+
RemotePeer7 = 135,
|
|
244
|
+
RemotePeer8 = 136,
|
|
245
|
+
RemotePeer9 = 137,
|
|
246
|
+
RemotePeer10 = 138,
|
|
247
|
+
RemotePeer11 = 139,
|
|
248
|
+
Unmapped = 255
|
|
249
|
+
}
|
|
219
250
|
//# sourceMappingURL=enums.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../js/codegen/enums.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../js/codegen/enums.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,32 @@
|
|
|
1
1
|
import { type KeyState } from "../inputs";
|
|
2
|
+
/**
|
|
3
|
+
* Per-player input state containing keyboard and mouse state
|
|
4
|
+
*/
|
|
5
|
+
export declare class PlayerInputContext {
|
|
6
|
+
#private;
|
|
7
|
+
constructor(dataView: DataView);
|
|
8
|
+
get keys(): KeyboardContext;
|
|
9
|
+
get mouse(): MouseContext;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Input context containing all player input states.
|
|
13
|
+
*
|
|
14
|
+
* Provides convenience methods to access player 0 keyboard and mouse
|
|
15
|
+
*/
|
|
2
16
|
export declare class InputContext {
|
|
3
17
|
#private;
|
|
4
18
|
constructor(dataView?: DataView);
|
|
19
|
+
/**
|
|
20
|
+
* Access the input context dataview for debugging.
|
|
21
|
+
* Typically you would access player inputs via `players`
|
|
22
|
+
*/
|
|
5
23
|
get dataView(): NonNullable<DataView>;
|
|
6
24
|
set dataView(dataView: DataView);
|
|
25
|
+
/**
|
|
26
|
+
* Array of all player input contexts.
|
|
27
|
+
* Access via: context.players[0].keys.a.held
|
|
28
|
+
*/
|
|
29
|
+
get players(): readonly PlayerInputContext[];
|
|
7
30
|
get keys(): KeyboardContext;
|
|
8
31
|
get mouse(): MouseContext;
|
|
9
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputContext.d.ts","sourceRoot":"","sources":["../../js/contexts/inputContext.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"inputContext.d.ts","sourceRoot":"","sources":["../../js/contexts/inputContext.ts"],"names":[],"mappings":"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,IAAI,QAAQ,CAEjB;IACD,IAAI,EAAE,IAAI,QAAQ,CAEjB;IACD,IAAI,EAAE,IAAI,QAAQ,CAEjB;IACD,IAAI,EAAE,IAAI,QAAQ,CAEjB;IACD,IAAI,EAAE,IAAI,QAAQ,CAEjB;IACD,IAAI,EAAE,IAAI,QAAQ,CAEjB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;IACD,IAAI,GAAG,IAAI,QAAQ,CAElB;CAoBF"}
|
package/dist/engine.js
CHANGED
|
@@ -14,6 +14,7 @@ var exports_enums = {};
|
|
|
14
14
|
__export(exports_enums, {
|
|
15
15
|
MouseButton: () => MouseButton,
|
|
16
16
|
Key: () => Key,
|
|
17
|
+
InputSource: () => InputSource,
|
|
17
18
|
EventType: () => EventType
|
|
18
19
|
});
|
|
19
20
|
var EventType;
|
|
@@ -237,10 +238,46 @@ var Key;
|
|
|
237
238
|
Key2[Key2["F34"] = 193] = "F34";
|
|
238
239
|
Key2[Key2["F35"] = 194] = "F35";
|
|
239
240
|
})(Key ||= {});
|
|
241
|
+
var InputSource;
|
|
242
|
+
((InputSource2) => {
|
|
243
|
+
InputSource2[InputSource2["None"] = 0] = "None";
|
|
244
|
+
InputSource2[InputSource2["LocalKeyboard"] = 1] = "LocalKeyboard";
|
|
245
|
+
InputSource2[InputSource2["LocalMouse"] = 2] = "LocalMouse";
|
|
246
|
+
InputSource2[InputSource2["LocalTouch"] = 3] = "LocalTouch";
|
|
247
|
+
InputSource2[InputSource2["LocalGamepad0"] = 4] = "LocalGamepad0";
|
|
248
|
+
InputSource2[InputSource2["LocalGamepad1"] = 5] = "LocalGamepad1";
|
|
249
|
+
InputSource2[InputSource2["LocalGamepad2"] = 6] = "LocalGamepad2";
|
|
250
|
+
InputSource2[InputSource2["LocalGamepad3"] = 7] = "LocalGamepad3";
|
|
251
|
+
InputSource2[InputSource2["LocalGamepad4"] = 8] = "LocalGamepad4";
|
|
252
|
+
InputSource2[InputSource2["LocalGamepad5"] = 9] = "LocalGamepad5";
|
|
253
|
+
InputSource2[InputSource2["LocalGamepad6"] = 10] = "LocalGamepad6";
|
|
254
|
+
InputSource2[InputSource2["LocalGamepad7"] = 11] = "LocalGamepad7";
|
|
255
|
+
InputSource2[InputSource2["LocalGamepad8"] = 12] = "LocalGamepad8";
|
|
256
|
+
InputSource2[InputSource2["LocalGamepad9"] = 13] = "LocalGamepad9";
|
|
257
|
+
InputSource2[InputSource2["LocalGamepad10"] = 14] = "LocalGamepad10";
|
|
258
|
+
InputSource2[InputSource2["LocalGamepad11"] = 15] = "LocalGamepad11";
|
|
259
|
+
InputSource2[InputSource2["RemotePeer0"] = 128] = "RemotePeer0";
|
|
260
|
+
InputSource2[InputSource2["RemotePeer1"] = 129] = "RemotePeer1";
|
|
261
|
+
InputSource2[InputSource2["RemotePeer2"] = 130] = "RemotePeer2";
|
|
262
|
+
InputSource2[InputSource2["RemotePeer3"] = 131] = "RemotePeer3";
|
|
263
|
+
InputSource2[InputSource2["RemotePeer4"] = 132] = "RemotePeer4";
|
|
264
|
+
InputSource2[InputSource2["RemotePeer5"] = 133] = "RemotePeer5";
|
|
265
|
+
InputSource2[InputSource2["RemotePeer6"] = 134] = "RemotePeer6";
|
|
266
|
+
InputSource2[InputSource2["RemotePeer7"] = 135] = "RemotePeer7";
|
|
267
|
+
InputSource2[InputSource2["RemotePeer8"] = 136] = "RemotePeer8";
|
|
268
|
+
InputSource2[InputSource2["RemotePeer9"] = 137] = "RemotePeer9";
|
|
269
|
+
InputSource2[InputSource2["RemotePeer10"] = 138] = "RemotePeer10";
|
|
270
|
+
InputSource2[InputSource2["RemotePeer11"] = 139] = "RemotePeer11";
|
|
271
|
+
InputSource2[InputSource2["Unmapped"] = 255] = "Unmapped";
|
|
272
|
+
})(InputSource ||= {});
|
|
240
273
|
// js/inputs.ts
|
|
274
|
+
var MAX_PLAYERS = 12;
|
|
275
|
+
var KEYBOARD_OFFSET = 0;
|
|
276
|
+
var KEYBOARD_SIZE = 256;
|
|
241
277
|
var MOUSE_OFFSET = 256;
|
|
242
278
|
var MOUSE_BUTTONS_OFFSET = 16;
|
|
243
|
-
var
|
|
279
|
+
var PLAYER_INPUTS_SIZE = 280;
|
|
280
|
+
var INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;
|
|
244
281
|
var EVENT_PAYLOAD_SIZE = 8;
|
|
245
282
|
var EVENT_PAYLOAD_ALIGN = 4;
|
|
246
283
|
function keyToKeyCode(key) {
|
|
@@ -255,15 +292,42 @@ function mouseButtonToMouseButtonCode(button) {
|
|
|
255
292
|
function mouseButtonCodeToMouseButton(code) {
|
|
256
293
|
return MouseButton[code];
|
|
257
294
|
}
|
|
295
|
+
function inputSourceToInputSourceCode(source) {
|
|
296
|
+
return InputSource[source];
|
|
297
|
+
}
|
|
298
|
+
function inputSourceCodeToInputSource(code) {
|
|
299
|
+
return InputSource[code];
|
|
300
|
+
}
|
|
258
301
|
|
|
259
302
|
// js/contexts/inputContext.ts
|
|
260
|
-
class
|
|
303
|
+
class PlayerInputContext {
|
|
261
304
|
#dataView;
|
|
262
305
|
#keys;
|
|
263
306
|
#mouse;
|
|
307
|
+
constructor(dataView) {
|
|
308
|
+
this.#dataView = dataView;
|
|
309
|
+
}
|
|
310
|
+
get keys() {
|
|
311
|
+
if (!this.#keys) {
|
|
312
|
+
this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + KEYBOARD_OFFSET));
|
|
313
|
+
}
|
|
314
|
+
return this.#keys;
|
|
315
|
+
}
|
|
316
|
+
get mouse() {
|
|
317
|
+
if (!this.#mouse) {
|
|
318
|
+
this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + MOUSE_OFFSET));
|
|
319
|
+
}
|
|
320
|
+
return this.#mouse;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
class InputContext {
|
|
325
|
+
#dataView;
|
|
326
|
+
#players = [];
|
|
264
327
|
constructor(dataView) {
|
|
265
328
|
if (dataView) {
|
|
266
329
|
this.#dataView = dataView;
|
|
330
|
+
this.#buildPlayers();
|
|
267
331
|
}
|
|
268
332
|
}
|
|
269
333
|
get dataView() {
|
|
@@ -274,20 +338,30 @@ class InputContext {
|
|
|
274
338
|
}
|
|
275
339
|
set dataView(dataView) {
|
|
276
340
|
this.#dataView = dataView;
|
|
277
|
-
this.#
|
|
278
|
-
|
|
341
|
+
this.#buildPlayers();
|
|
342
|
+
}
|
|
343
|
+
#buildPlayers() {
|
|
344
|
+
this.#players = [];
|
|
345
|
+
for (let i = 0;i < MAX_PLAYERS; i++) {
|
|
346
|
+
const playerOffset = i * PLAYER_INPUTS_SIZE;
|
|
347
|
+
const playerDataView = new DataView(this.dataView.buffer, this.dataView.byteOffset + playerOffset, PLAYER_INPUTS_SIZE);
|
|
348
|
+
this.#players.push(new PlayerInputContext(playerDataView));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
get players() {
|
|
352
|
+
return this.#players;
|
|
279
353
|
}
|
|
280
354
|
get keys() {
|
|
281
|
-
if (!this.#
|
|
282
|
-
|
|
355
|
+
if (!this.#players[0]) {
|
|
356
|
+
throw new Error("No player inputs available in InputContext");
|
|
283
357
|
}
|
|
284
|
-
return this.#keys;
|
|
358
|
+
return this.#players[0].keys;
|
|
285
359
|
}
|
|
286
360
|
get mouse() {
|
|
287
|
-
if (!this.#
|
|
288
|
-
|
|
361
|
+
if (!this.#players[0]) {
|
|
362
|
+
throw new Error("No player inputs available in InputContext");
|
|
289
363
|
}
|
|
290
|
-
return this.#mouse;
|
|
364
|
+
return this.#players[0].mouse;
|
|
291
365
|
}
|
|
292
366
|
}
|
|
293
367
|
|
|
@@ -990,17 +1064,24 @@ export {
|
|
|
990
1064
|
mouseButtonCodeToMouseButton,
|
|
991
1065
|
keyToKeyCode,
|
|
992
1066
|
keyCodeToKey,
|
|
1067
|
+
inputSourceToInputSourceCode,
|
|
1068
|
+
inputSourceCodeToInputSource,
|
|
993
1069
|
TimeContext,
|
|
994
1070
|
TIME_CTX_OFFSET,
|
|
995
1071
|
SNAPSHOT_HEADER_USER_LEN_OFFSET,
|
|
996
1072
|
SNAPSHOT_HEADER_LEN,
|
|
997
1073
|
SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,
|
|
1074
|
+
PlayerInputContext,
|
|
1075
|
+
PLAYER_INPUTS_SIZE,
|
|
998
1076
|
MouseContext,
|
|
999
1077
|
MOUSE_OFFSET,
|
|
1000
1078
|
MOUSE_BUTTONS_OFFSET,
|
|
1079
|
+
MAX_PLAYERS,
|
|
1001
1080
|
KeyboardContext,
|
|
1081
|
+
KEYBOARD_SIZE,
|
|
1002
1082
|
KEYBOARD_OFFSET,
|
|
1003
1083
|
InputContext,
|
|
1084
|
+
INPUT_CTX_SIZE,
|
|
1004
1085
|
INPUT_CTX_OFFSET,
|
|
1005
1086
|
exports_enums as Enums,
|
|
1006
1087
|
EVENT_PAYLOAD_SIZE,
|
|
@@ -1009,5 +1090,5 @@ export {
|
|
|
1009
1090
|
DEFAULT_WASM_URL
|
|
1010
1091
|
};
|
|
1011
1092
|
|
|
1012
|
-
//# debugId=
|
|
1093
|
+
//# debugId=9ABC92059EB22C3864756E2164756E21
|
|
1013
1094
|
//# sourceMappingURL=engine.js.map
|
package/dist/engine.js.map
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../js/codegen/enums.ts", "../js/inputs.ts", "../js/contexts/inputContext.ts", "../js/contexts/timeContext.ts", "../js/engine.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"// AUTO-GENERATED FILE - DO NOT MODIFY\n\nexport enum EventType {\n None = 0,\n KeyDown = 1,\n KeyUp = 2,\n MouseMove = 3,\n MouseDown = 4,\n MouseUp = 5,\n MouseWheel = 6,\n FrameStart = 7,\n}\n\nexport enum MouseButton {\n None = 0,\n Left = 1,\n Middle = 2,\n Right = 3,\n X1 = 4,\n X2 = 5,\n X3 = 6,\n X4 = 7,\n X5 = 8,\n}\n\nexport enum Key {\n None = 0,\n Backquote = 1,\n Backslash = 2,\n BracketLeft = 3,\n BracketRight = 4,\n Comma = 5,\n Digit0 = 6,\n Digit1 = 7,\n Digit2 = 8,\n Digit3 = 9,\n Digit4 = 10,\n Digit5 = 11,\n Digit6 = 12,\n Digit7 = 13,\n Digit8 = 14,\n Digit9 = 15,\n Equal = 16,\n IntlBackslash = 17,\n IntlRo = 18,\n IntlYen = 19,\n KeyA = 20,\n KeyB = 21,\n KeyC = 22,\n KeyD = 23,\n KeyE = 24,\n KeyF = 25,\n KeyG = 26,\n KeyH = 27,\n KeyI = 28,\n KeyJ = 29,\n KeyK = 30,\n KeyL = 31,\n KeyM = 32,\n KeyN = 33,\n KeyO = 34,\n KeyP = 35,\n KeyQ = 36,\n KeyR = 37,\n KeyS = 38,\n KeyT = 39,\n KeyU = 40,\n KeyV = 41,\n KeyW = 42,\n KeyX = 43,\n KeyY = 44,\n KeyZ = 45,\n Minus = 46,\n Period = 47,\n Quote = 48,\n Semicolon = 49,\n Slash = 50,\n AltLeft = 51,\n AltRight = 52,\n Backspace = 53,\n CapsLock = 54,\n ContextMenu = 55,\n ControlLeft = 56,\n ControlRight = 57,\n Enter = 58,\n MetaLeft = 59,\n MetaRight = 60,\n ShiftLeft = 61,\n ShiftRight = 62,\n Space = 63,\n Tab = 64,\n Convert = 65,\n KanaMode = 66,\n Lang1 = 67,\n Lang2 = 68,\n Lang3 = 69,\n Lang4 = 70,\n Lang5 = 71,\n NonConvert = 72,\n Delete = 73,\n End = 74,\n Help = 75,\n Home = 76,\n Insert = 77,\n PageDown = 78,\n PageUp = 79,\n ArrowDown = 80,\n ArrowLeft = 81,\n ArrowRight = 82,\n ArrowUp = 83,\n NumLock = 84,\n Numpad0 = 85,\n Numpad1 = 86,\n Numpad2 = 87,\n Numpad3 = 88,\n Numpad4 = 89,\n Numpad5 = 90,\n Numpad6 = 91,\n Numpad7 = 92,\n Numpad8 = 93,\n Numpad9 = 94,\n NumpadAdd = 95,\n NumpadBackspace = 96,\n NumpadClear = 97,\n NumpadClearEntry = 98,\n NumpadComma = 99,\n NumpadDecimal = 100,\n NumpadDivide = 101,\n NumpadEnter = 102,\n NumpadEqual = 103,\n NumpadHash = 104,\n NumpadMemoryAdd = 105,\n NumpadMemoryClear = 106,\n NumpadMemoryRecall = 107,\n NumpadMemoryStore = 108,\n NumpadMemorySubtract = 109,\n NumpadMultiply = 110,\n NumpadParenLeft = 111,\n NumpadParenRight = 112,\n NumpadStar = 113,\n NumpadSubtract = 114,\n Escape = 115,\n Fn = 116,\n FnLock = 117,\n PrintScreen = 118,\n ScrollLock = 119,\n Pause = 120,\n BrowserBack = 121,\n BrowserFavorites = 122,\n BrowserForward = 123,\n BrowserHome = 124,\n BrowserRefresh = 125,\n BrowserSearch = 126,\n BrowserStop = 127,\n Eject = 128,\n LaunchApp1 = 129,\n LaunchApp2 = 130,\n LaunchMail = 131,\n MediaPlayPause = 132,\n MediaSelect = 133,\n MediaStop = 134,\n MediaTrackNext = 135,\n MediaTrackPrevious = 136,\n Power = 137,\n Sleep = 138,\n AudioVolumeDown = 139,\n AudioVolumeMute = 140,\n AudioVolumeUp = 141,\n WakeUp = 142,\n Hyper = 143,\n Super = 144,\n Turbo = 145,\n Abort = 146,\n Resume = 147,\n Suspend = 148,\n Again = 149,\n Copy = 150,\n Cut = 151,\n Find = 152,\n Open = 153,\n Paste = 154,\n Props = 155,\n Select = 156,\n Undo = 157,\n Hiragana = 158,\n Katakana = 159,\n F1 = 160,\n F2 = 161,\n F3 = 162,\n F4 = 163,\n F5 = 164,\n F6 = 165,\n F7 = 166,\n F8 = 167,\n F9 = 168,\n F10 = 169,\n F11 = 170,\n F12 = 171,\n F13 = 172,\n F14 = 173,\n F15 = 174,\n F16 = 175,\n F17 = 176,\n F18 = 177,\n F19 = 178,\n F20 = 179,\n F21 = 180,\n F22 = 181,\n F23 = 182,\n F24 = 183,\n F25 = 184,\n F26 = 185,\n F27 = 186,\n F28 = 187,\n F29 = 188,\n F30 = 189,\n F31 = 190,\n F32 = 191,\n F33 = 192,\n F34 = 193,\n F35 = 194,\n}\n\n",
|
|
6
|
-
"import * as Enums from \"./codegen/enums\";\n\n//
|
|
7
|
-
"import * as Enums from \"../codegen/enums\";\nimport {\n KEYBOARD_OFFSET,\n type KeyState,\n MOUSE_BUTTONS_OFFSET,\n MOUSE_OFFSET,\n} from \"../inputs\";\n\n// todo - generate these offsets and sizes from codegen\nexport class InputContext {\n #dataView?: DataView;\n #keys?: KeyboardContext;\n #mouse?: MouseContext;\n\n constructor(dataView?: DataView) {\n if (dataView) {\n this.#dataView = dataView;\n }\n }\n\n get dataView(): NonNullable<DataView> {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView!;\n }\n\n set dataView(dataView: DataView) {\n this.#dataView = dataView;\n this.#keys = undefined;\n this.#mouse = undefined;\n }\n\n get keys(): KeyboardContext {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(\n new DataView(\n this.dataView.buffer,\n this.dataView.byteOffset + KEYBOARD_OFFSET,\n ),\n );\n }\n return this.#keys;\n }\n\n get mouse(): MouseContext {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(\n new DataView(\n this.dataView.buffer,\n this.dataView.byteOffset + MOUSE_OFFSET,\n ),\n );\n }\n return this.#mouse;\n }\n}\n\nexport class MouseContext {\n #dataView: DataView;\n #buttonStates: Map<Enums.MouseButton, KeyState> = new Map();\n\n constructor(dataView: DataView) {\n this.#dataView = dataView;\n }\n\n get x(): number {\n return this.#dataView.getFloat32(0, true);\n }\n\n get y(): number {\n return this.#dataView.getFloat32(4, true);\n }\n\n get wheel(): { x: number; y: number } {\n return { x: this.wheelX, y: this.wheelY };\n }\n\n get wheelX(): number {\n return this.#dataView.getFloat32(8, true);\n }\n\n get wheelY(): number {\n return this.#dataView.getFloat32(12, true);\n }\n\n get left(): KeyState {\n return this.#buttonState(Enums.MouseButton.Left);\n }\n\n get right(): KeyState {\n return this.#buttonState(Enums.MouseButton.Right);\n }\n get middle(): KeyState {\n return this.#buttonState(Enums.MouseButton.Middle);\n }\n\n #buttonState(code: Enums.MouseButton): KeyState {\n let state: KeyState;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code)!;\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n\n // xxxx xxx1 = held\n // xxxx xx01 = down\n // xxxx xx10 = up\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n\n return state;\n }\n}\n\nexport class KeyboardContext {\n #dataView: DataView;\n\n #keystates: Map<Enums.Key, KeyState> = new Map();\n\n constructor(dataView: DataView) {\n this.#dataView = dataView;\n }\n\n // modifier key helpers\n get shift(): KeyState {\n return this.shiftLeft || this.shiftRight;\n }\n get alt(): KeyState {\n return this.altLeft || this.altRight;\n }\n get control(): KeyState {\n return this.controlLeft || this.controlRight;\n }\n get meta(): KeyState {\n return this.metaLeft || this.metaRight;\n }\n\n // this line on is generated from the engine keysEnum manually\n // (unlikely to change often)\n get backquote(): KeyState {\n return this.#keystate(Enums.Key.Backquote);\n }\n get backslash(): KeyState {\n return this.#keystate(Enums.Key.Backslash);\n }\n get bracketLeft(): KeyState {\n return this.#keystate(Enums.Key.BracketLeft);\n }\n get bracketRight(): KeyState {\n return this.#keystate(Enums.Key.BracketRight);\n }\n get comma(): KeyState {\n return this.#keystate(Enums.Key.Comma);\n }\n get digit0(): KeyState {\n return this.#keystate(Enums.Key.Digit0);\n }\n get digit1(): KeyState {\n return this.#keystate(Enums.Key.Digit1);\n }\n get digit2(): KeyState {\n return this.#keystate(Enums.Key.Digit2);\n }\n get digit3(): KeyState {\n return this.#keystate(Enums.Key.Digit3);\n }\n get digit4(): KeyState {\n return this.#keystate(Enums.Key.Digit4);\n }\n get digit5(): KeyState {\n return this.#keystate(Enums.Key.Digit5);\n }\n get digit6(): KeyState {\n return this.#keystate(Enums.Key.Digit6);\n }\n get digit7(): KeyState {\n return this.#keystate(Enums.Key.Digit7);\n }\n get digit8(): KeyState {\n return this.#keystate(Enums.Key.Digit8);\n }\n get digit9(): KeyState {\n return this.#keystate(Enums.Key.Digit9);\n }\n get equal(): KeyState {\n return this.#keystate(Enums.Key.Equal);\n }\n get intlBackslash(): KeyState {\n return this.#keystate(Enums.Key.IntlBackslash);\n }\n get intlRo(): KeyState {\n return this.#keystate(Enums.Key.IntlRo);\n }\n get intlYen(): KeyState {\n return this.#keystate(Enums.Key.IntlYen);\n }\n get a(): KeyState {\n return this.#keystate(Enums.Key.KeyA);\n }\n get b(): KeyState {\n return this.#keystate(Enums.Key.KeyB);\n }\n get c(): KeyState {\n return this.#keystate(Enums.Key.KeyC);\n }\n get d(): KeyState {\n return this.#keystate(Enums.Key.KeyD);\n }\n get e(): KeyState {\n return this.#keystate(Enums.Key.KeyE);\n }\n get f(): KeyState {\n return this.#keystate(Enums.Key.KeyF);\n }\n get g(): KeyState {\n return this.#keystate(Enums.Key.KeyG);\n }\n get h(): KeyState {\n return this.#keystate(Enums.Key.KeyH);\n }\n get i(): KeyState {\n return this.#keystate(Enums.Key.KeyI);\n }\n get j(): KeyState {\n return this.#keystate(Enums.Key.KeyJ);\n }\n get k(): KeyState {\n return this.#keystate(Enums.Key.KeyK);\n }\n get l(): KeyState {\n return this.#keystate(Enums.Key.KeyL);\n }\n get m(): KeyState {\n return this.#keystate(Enums.Key.KeyM);\n }\n get n(): KeyState {\n return this.#keystate(Enums.Key.KeyN);\n }\n get o(): KeyState {\n return this.#keystate(Enums.Key.KeyO);\n }\n get p(): KeyState {\n return this.#keystate(Enums.Key.KeyP);\n }\n get q(): KeyState {\n return this.#keystate(Enums.Key.KeyQ);\n }\n get r(): KeyState {\n return this.#keystate(Enums.Key.KeyR);\n }\n get s(): KeyState {\n return this.#keystate(Enums.Key.KeyS);\n }\n get t(): KeyState {\n return this.#keystate(Enums.Key.KeyT);\n }\n get u(): KeyState {\n return this.#keystate(Enums.Key.KeyU);\n }\n get v(): KeyState {\n return this.#keystate(Enums.Key.KeyV);\n }\n get w(): KeyState {\n return this.#keystate(Enums.Key.KeyW);\n }\n get x(): KeyState {\n return this.#keystate(Enums.Key.KeyX);\n }\n get y(): KeyState {\n return this.#keystate(Enums.Key.KeyY);\n }\n get z(): KeyState {\n return this.#keystate(Enums.Key.KeyZ);\n }\n get minus(): KeyState {\n return this.#keystate(Enums.Key.Minus);\n }\n get period(): KeyState {\n return this.#keystate(Enums.Key.Period);\n }\n get quote(): KeyState {\n return this.#keystate(Enums.Key.Quote);\n }\n get semicolon(): KeyState {\n return this.#keystate(Enums.Key.Semicolon);\n }\n get slash(): KeyState {\n return this.#keystate(Enums.Key.Slash);\n }\n get altLeft(): KeyState {\n return this.#keystate(Enums.Key.AltLeft);\n }\n get altRight(): KeyState {\n return this.#keystate(Enums.Key.AltRight);\n }\n get backspace(): KeyState {\n return this.#keystate(Enums.Key.Backspace);\n }\n get capsLock(): KeyState {\n return this.#keystate(Enums.Key.CapsLock);\n }\n get contextMenu(): KeyState {\n return this.#keystate(Enums.Key.ContextMenu);\n }\n get controlLeft(): KeyState {\n return this.#keystate(Enums.Key.ControlLeft);\n }\n get controlRight(): KeyState {\n return this.#keystate(Enums.Key.ControlRight);\n }\n get enter(): KeyState {\n return this.#keystate(Enums.Key.Enter);\n }\n get metaLeft(): KeyState {\n return this.#keystate(Enums.Key.MetaLeft);\n }\n get metaRight(): KeyState {\n return this.#keystate(Enums.Key.MetaRight);\n }\n get shiftLeft(): KeyState {\n return this.#keystate(Enums.Key.ShiftLeft);\n }\n get shiftRight(): KeyState {\n return this.#keystate(Enums.Key.ShiftRight);\n }\n get space(): KeyState {\n return this.#keystate(Enums.Key.Space);\n }\n get tab(): KeyState {\n return this.#keystate(Enums.Key.Tab);\n }\n get convert(): KeyState {\n return this.#keystate(Enums.Key.Convert);\n }\n get kanaMode(): KeyState {\n return this.#keystate(Enums.Key.KanaMode);\n }\n get lang1(): KeyState {\n return this.#keystate(Enums.Key.Lang1);\n }\n get lang2(): KeyState {\n return this.#keystate(Enums.Key.Lang2);\n }\n get lang3(): KeyState {\n return this.#keystate(Enums.Key.Lang3);\n }\n get lang4(): KeyState {\n return this.#keystate(Enums.Key.Lang4);\n }\n get lang5(): KeyState {\n return this.#keystate(Enums.Key.Lang5);\n }\n get nonConvert(): KeyState {\n return this.#keystate(Enums.Key.NonConvert);\n }\n get delete(): KeyState {\n return this.#keystate(Enums.Key.Delete);\n }\n get end(): KeyState {\n return this.#keystate(Enums.Key.End);\n }\n get help(): KeyState {\n return this.#keystate(Enums.Key.Help);\n }\n get home(): KeyState {\n return this.#keystate(Enums.Key.Home);\n }\n get insert(): KeyState {\n return this.#keystate(Enums.Key.Insert);\n }\n get pageDown(): KeyState {\n return this.#keystate(Enums.Key.PageDown);\n }\n get pageUp(): KeyState {\n return this.#keystate(Enums.Key.PageUp);\n }\n get arrowDown(): KeyState {\n return this.#keystate(Enums.Key.ArrowDown);\n }\n get arrowLeft(): KeyState {\n return this.#keystate(Enums.Key.ArrowLeft);\n }\n get arrowRight(): KeyState {\n return this.#keystate(Enums.Key.ArrowRight);\n }\n get arrowUp(): KeyState {\n return this.#keystate(Enums.Key.ArrowUp);\n }\n get numLock(): KeyState {\n return this.#keystate(Enums.Key.NumLock);\n }\n get numpad0(): KeyState {\n return this.#keystate(Enums.Key.Numpad0);\n }\n get numpad1(): KeyState {\n return this.#keystate(Enums.Key.Numpad1);\n }\n get numpad2(): KeyState {\n return this.#keystate(Enums.Key.Numpad2);\n }\n get numpad3(): KeyState {\n return this.#keystate(Enums.Key.Numpad3);\n }\n get numpad4(): KeyState {\n return this.#keystate(Enums.Key.Numpad4);\n }\n get numpad5(): KeyState {\n return this.#keystate(Enums.Key.Numpad5);\n }\n get numpad6(): KeyState {\n return this.#keystate(Enums.Key.Numpad6);\n }\n get numpad7(): KeyState {\n return this.#keystate(Enums.Key.Numpad7);\n }\n get numpad8(): KeyState {\n return this.#keystate(Enums.Key.Numpad8);\n }\n get numpad9(): KeyState {\n return this.#keystate(Enums.Key.Numpad9);\n }\n get numpadAdd(): KeyState {\n return this.#keystate(Enums.Key.NumpadAdd);\n }\n get numpadBackspace(): KeyState {\n return this.#keystate(Enums.Key.NumpadBackspace);\n }\n get numpadClear(): KeyState {\n return this.#keystate(Enums.Key.NumpadClear);\n }\n get numpadClearEntry(): KeyState {\n return this.#keystate(Enums.Key.NumpadClearEntry);\n }\n get numpadComma(): KeyState {\n return this.#keystate(Enums.Key.NumpadComma);\n }\n get numpadDecimal(): KeyState {\n return this.#keystate(Enums.Key.NumpadDecimal);\n }\n get numpadDivide(): KeyState {\n return this.#keystate(Enums.Key.NumpadDivide);\n }\n get numpadEnter(): KeyState {\n return this.#keystate(Enums.Key.NumpadEnter);\n }\n get numpadEqual(): KeyState {\n return this.#keystate(Enums.Key.NumpadEqual);\n }\n get numpadHash(): KeyState {\n return this.#keystate(Enums.Key.NumpadHash);\n }\n get numpadMemoryAdd(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryAdd);\n }\n get numpadMemoryClear(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryClear);\n }\n get numpadMemoryRecall(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryRecall);\n }\n get numpadMemoryStore(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryStore);\n }\n get numpadMemorySubtract(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemorySubtract);\n }\n get numpadMultiply(): KeyState {\n return this.#keystate(Enums.Key.NumpadMultiply);\n }\n get numpadParenLeft(): KeyState {\n return this.#keystate(Enums.Key.NumpadParenLeft);\n }\n get numpadParenRight(): KeyState {\n return this.#keystate(Enums.Key.NumpadParenRight);\n }\n get numpadStar(): KeyState {\n return this.#keystate(Enums.Key.NumpadStar);\n }\n get numpadSubtract(): KeyState {\n return this.#keystate(Enums.Key.NumpadSubtract);\n }\n get escape(): KeyState {\n return this.#keystate(Enums.Key.Escape);\n }\n get fn(): KeyState {\n return this.#keystate(Enums.Key.Fn);\n }\n get fnLock(): KeyState {\n return this.#keystate(Enums.Key.FnLock);\n }\n get printScreen(): KeyState {\n return this.#keystate(Enums.Key.PrintScreen);\n }\n get scrollLock(): KeyState {\n return this.#keystate(Enums.Key.ScrollLock);\n }\n get pause(): KeyState {\n return this.#keystate(Enums.Key.Pause);\n }\n get browserBack(): KeyState {\n return this.#keystate(Enums.Key.BrowserBack);\n }\n get browserFavorites(): KeyState {\n return this.#keystate(Enums.Key.BrowserFavorites);\n }\n get browserForward(): KeyState {\n return this.#keystate(Enums.Key.BrowserForward);\n }\n get browserHome(): KeyState {\n return this.#keystate(Enums.Key.BrowserHome);\n }\n get browserRefresh(): KeyState {\n return this.#keystate(Enums.Key.BrowserRefresh);\n }\n get browserSearch(): KeyState {\n return this.#keystate(Enums.Key.BrowserSearch);\n }\n get browserStop(): KeyState {\n return this.#keystate(Enums.Key.BrowserStop);\n }\n get eject(): KeyState {\n return this.#keystate(Enums.Key.Eject);\n }\n get launchApp1(): KeyState {\n return this.#keystate(Enums.Key.LaunchApp1);\n }\n get launchApp2(): KeyState {\n return this.#keystate(Enums.Key.LaunchApp2);\n }\n get launchMail(): KeyState {\n return this.#keystate(Enums.Key.LaunchMail);\n }\n get mediaPlayPause(): KeyState {\n return this.#keystate(Enums.Key.MediaPlayPause);\n }\n get mediaSelect(): KeyState {\n return this.#keystate(Enums.Key.MediaSelect);\n }\n get mediaStop(): KeyState {\n return this.#keystate(Enums.Key.MediaStop);\n }\n get mediaTrackNext(): KeyState {\n return this.#keystate(Enums.Key.MediaTrackNext);\n }\n get mediaTrackPrevious(): KeyState {\n return this.#keystate(Enums.Key.MediaTrackPrevious);\n }\n get power(): KeyState {\n return this.#keystate(Enums.Key.Power);\n }\n get sleep(): KeyState {\n return this.#keystate(Enums.Key.Sleep);\n }\n get audioVolumeDown(): KeyState {\n return this.#keystate(Enums.Key.AudioVolumeDown);\n }\n get audioVolumeMute(): KeyState {\n return this.#keystate(Enums.Key.AudioVolumeMute);\n }\n get audioVolumeUp(): KeyState {\n return this.#keystate(Enums.Key.AudioVolumeUp);\n }\n get wakeUp(): KeyState {\n return this.#keystate(Enums.Key.WakeUp);\n }\n get hyper(): KeyState {\n return this.#keystate(Enums.Key.Hyper);\n }\n get super(): KeyState {\n return this.#keystate(Enums.Key.Super);\n }\n get turbo(): KeyState {\n return this.#keystate(Enums.Key.Turbo);\n }\n get abort(): KeyState {\n return this.#keystate(Enums.Key.Abort);\n }\n get resume(): KeyState {\n return this.#keystate(Enums.Key.Resume);\n }\n get suspend(): KeyState {\n return this.#keystate(Enums.Key.Suspend);\n }\n get again(): KeyState {\n return this.#keystate(Enums.Key.Again);\n }\n get copy(): KeyState {\n return this.#keystate(Enums.Key.Copy);\n }\n get cut(): KeyState {\n return this.#keystate(Enums.Key.Cut);\n }\n get find(): KeyState {\n return this.#keystate(Enums.Key.Find);\n }\n get open(): KeyState {\n return this.#keystate(Enums.Key.Open);\n }\n get paste(): KeyState {\n return this.#keystate(Enums.Key.Paste);\n }\n get props(): KeyState {\n return this.#keystate(Enums.Key.Props);\n }\n get select(): KeyState {\n return this.#keystate(Enums.Key.Select);\n }\n get undo(): KeyState {\n return this.#keystate(Enums.Key.Undo);\n }\n get hiragana(): KeyState {\n return this.#keystate(Enums.Key.Hiragana);\n }\n get katakana(): KeyState {\n return this.#keystate(Enums.Key.Katakana);\n }\n get f1(): KeyState {\n return this.#keystate(Enums.Key.F1);\n }\n get f2(): KeyState {\n return this.#keystate(Enums.Key.F2);\n }\n get f3(): KeyState {\n return this.#keystate(Enums.Key.F3);\n }\n get f4(): KeyState {\n return this.#keystate(Enums.Key.F4);\n }\n get f5(): KeyState {\n return this.#keystate(Enums.Key.F5);\n }\n get f6(): KeyState {\n return this.#keystate(Enums.Key.F6);\n }\n get f7(): KeyState {\n return this.#keystate(Enums.Key.F7);\n }\n get f8(): KeyState {\n return this.#keystate(Enums.Key.F8);\n }\n get f9(): KeyState {\n return this.#keystate(Enums.Key.F9);\n }\n get f10(): KeyState {\n return this.#keystate(Enums.Key.F10);\n }\n get f11(): KeyState {\n return this.#keystate(Enums.Key.F11);\n }\n get f12(): KeyState {\n return this.#keystate(Enums.Key.F12);\n }\n get f13(): KeyState {\n return this.#keystate(Enums.Key.F13);\n }\n get f14(): KeyState {\n return this.#keystate(Enums.Key.F14);\n }\n get f15(): KeyState {\n return this.#keystate(Enums.Key.F15);\n }\n get f16(): KeyState {\n return this.#keystate(Enums.Key.F16);\n }\n get f17(): KeyState {\n return this.#keystate(Enums.Key.F17);\n }\n get f18(): KeyState {\n return this.#keystate(Enums.Key.F18);\n }\n get f19(): KeyState {\n return this.#keystate(Enums.Key.F19);\n }\n get f20(): KeyState {\n return this.#keystate(Enums.Key.F20);\n }\n get f21(): KeyState {\n return this.#keystate(Enums.Key.F21);\n }\n get f22(): KeyState {\n return this.#keystate(Enums.Key.F22);\n }\n get f23(): KeyState {\n return this.#keystate(Enums.Key.F23);\n }\n get f24(): KeyState {\n return this.#keystate(Enums.Key.F24);\n }\n get f25(): KeyState {\n return this.#keystate(Enums.Key.F25);\n }\n get f26(): KeyState {\n return this.#keystate(Enums.Key.F26);\n }\n get f27(): KeyState {\n return this.#keystate(Enums.Key.F27);\n }\n get f28(): KeyState {\n return this.#keystate(Enums.Key.F28);\n }\n get f29(): KeyState {\n return this.#keystate(Enums.Key.F29);\n }\n get f30(): KeyState {\n return this.#keystate(Enums.Key.F30);\n }\n get f31(): KeyState {\n return this.#keystate(Enums.Key.F31);\n }\n get f32(): KeyState {\n return this.#keystate(Enums.Key.F32);\n }\n get f33(): KeyState {\n return this.#keystate(Enums.Key.F33);\n }\n get f34(): KeyState {\n return this.#keystate(Enums.Key.F34);\n }\n get f35(): KeyState {\n return this.#keystate(Enums.Key.F35);\n }\n\n #keystate(code: Enums.Key) {\n let state: KeyState;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code)!;\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n\n // xxxx xxx1 = held\n // xxxx xx01 = down\n // xxxx xx10 = up\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n\n return state;\n }\n}\n",
|
|
5
|
+
"// AUTO-GENERATED FILE - DO NOT MODIFY\n\nexport enum EventType {\n None = 0,\n KeyDown = 1,\n KeyUp = 2,\n MouseMove = 3,\n MouseDown = 4,\n MouseUp = 5,\n MouseWheel = 6,\n FrameStart = 7,\n}\n\nexport enum MouseButton {\n None = 0,\n Left = 1,\n Middle = 2,\n Right = 3,\n X1 = 4,\n X2 = 5,\n X3 = 6,\n X4 = 7,\n X5 = 8,\n}\n\nexport enum Key {\n None = 0,\n Backquote = 1,\n Backslash = 2,\n BracketLeft = 3,\n BracketRight = 4,\n Comma = 5,\n Digit0 = 6,\n Digit1 = 7,\n Digit2 = 8,\n Digit3 = 9,\n Digit4 = 10,\n Digit5 = 11,\n Digit6 = 12,\n Digit7 = 13,\n Digit8 = 14,\n Digit9 = 15,\n Equal = 16,\n IntlBackslash = 17,\n IntlRo = 18,\n IntlYen = 19,\n KeyA = 20,\n KeyB = 21,\n KeyC = 22,\n KeyD = 23,\n KeyE = 24,\n KeyF = 25,\n KeyG = 26,\n KeyH = 27,\n KeyI = 28,\n KeyJ = 29,\n KeyK = 30,\n KeyL = 31,\n KeyM = 32,\n KeyN = 33,\n KeyO = 34,\n KeyP = 35,\n KeyQ = 36,\n KeyR = 37,\n KeyS = 38,\n KeyT = 39,\n KeyU = 40,\n KeyV = 41,\n KeyW = 42,\n KeyX = 43,\n KeyY = 44,\n KeyZ = 45,\n Minus = 46,\n Period = 47,\n Quote = 48,\n Semicolon = 49,\n Slash = 50,\n AltLeft = 51,\n AltRight = 52,\n Backspace = 53,\n CapsLock = 54,\n ContextMenu = 55,\n ControlLeft = 56,\n ControlRight = 57,\n Enter = 58,\n MetaLeft = 59,\n MetaRight = 60,\n ShiftLeft = 61,\n ShiftRight = 62,\n Space = 63,\n Tab = 64,\n Convert = 65,\n KanaMode = 66,\n Lang1 = 67,\n Lang2 = 68,\n Lang3 = 69,\n Lang4 = 70,\n Lang5 = 71,\n NonConvert = 72,\n Delete = 73,\n End = 74,\n Help = 75,\n Home = 76,\n Insert = 77,\n PageDown = 78,\n PageUp = 79,\n ArrowDown = 80,\n ArrowLeft = 81,\n ArrowRight = 82,\n ArrowUp = 83,\n NumLock = 84,\n Numpad0 = 85,\n Numpad1 = 86,\n Numpad2 = 87,\n Numpad3 = 88,\n Numpad4 = 89,\n Numpad5 = 90,\n Numpad6 = 91,\n Numpad7 = 92,\n Numpad8 = 93,\n Numpad9 = 94,\n NumpadAdd = 95,\n NumpadBackspace = 96,\n NumpadClear = 97,\n NumpadClearEntry = 98,\n NumpadComma = 99,\n NumpadDecimal = 100,\n NumpadDivide = 101,\n NumpadEnter = 102,\n NumpadEqual = 103,\n NumpadHash = 104,\n NumpadMemoryAdd = 105,\n NumpadMemoryClear = 106,\n NumpadMemoryRecall = 107,\n NumpadMemoryStore = 108,\n NumpadMemorySubtract = 109,\n NumpadMultiply = 110,\n NumpadParenLeft = 111,\n NumpadParenRight = 112,\n NumpadStar = 113,\n NumpadSubtract = 114,\n Escape = 115,\n Fn = 116,\n FnLock = 117,\n PrintScreen = 118,\n ScrollLock = 119,\n Pause = 120,\n BrowserBack = 121,\n BrowserFavorites = 122,\n BrowserForward = 123,\n BrowserHome = 124,\n BrowserRefresh = 125,\n BrowserSearch = 126,\n BrowserStop = 127,\n Eject = 128,\n LaunchApp1 = 129,\n LaunchApp2 = 130,\n LaunchMail = 131,\n MediaPlayPause = 132,\n MediaSelect = 133,\n MediaStop = 134,\n MediaTrackNext = 135,\n MediaTrackPrevious = 136,\n Power = 137,\n Sleep = 138,\n AudioVolumeDown = 139,\n AudioVolumeMute = 140,\n AudioVolumeUp = 141,\n WakeUp = 142,\n Hyper = 143,\n Super = 144,\n Turbo = 145,\n Abort = 146,\n Resume = 147,\n Suspend = 148,\n Again = 149,\n Copy = 150,\n Cut = 151,\n Find = 152,\n Open = 153,\n Paste = 154,\n Props = 155,\n Select = 156,\n Undo = 157,\n Hiragana = 158,\n Katakana = 159,\n F1 = 160,\n F2 = 161,\n F3 = 162,\n F4 = 163,\n F5 = 164,\n F6 = 165,\n F7 = 166,\n F8 = 167,\n F9 = 168,\n F10 = 169,\n F11 = 170,\n F12 = 171,\n F13 = 172,\n F14 = 173,\n F15 = 174,\n F16 = 175,\n F17 = 176,\n F18 = 177,\n F19 = 178,\n F20 = 179,\n F21 = 180,\n F22 = 181,\n F23 = 182,\n F24 = 183,\n F25 = 184,\n F26 = 185,\n F27 = 186,\n F28 = 187,\n F29 = 188,\n F30 = 189,\n F31 = 190,\n F32 = 191,\n F33 = 192,\n F34 = 193,\n F35 = 194,\n}\n\nexport enum InputSource {\n None = 0,\n LocalKeyboard = 1,\n LocalMouse = 2,\n LocalTouch = 3,\n LocalGamepad0 = 4,\n LocalGamepad1 = 5,\n LocalGamepad2 = 6,\n LocalGamepad3 = 7,\n LocalGamepad4 = 8,\n LocalGamepad5 = 9,\n LocalGamepad6 = 10,\n LocalGamepad7 = 11,\n LocalGamepad8 = 12,\n LocalGamepad9 = 13,\n LocalGamepad10 = 14,\n LocalGamepad11 = 15,\n RemotePeer0 = 128,\n RemotePeer1 = 129,\n RemotePeer2 = 130,\n RemotePeer3 = 131,\n RemotePeer4 = 132,\n RemotePeer5 = 133,\n RemotePeer6 = 134,\n RemotePeer7 = 135,\n RemotePeer8 = 136,\n RemotePeer9 = 137,\n RemotePeer10 = 138,\n RemotePeer11 = 139,\n Unmapped = 255,\n}\n\n",
|
|
6
|
+
"import * as Enums from \"./codegen/enums\";\n\n// Constants for memory layout\n// TODO: move magic numbers to codegen\nexport const MAX_PLAYERS = 12;\n\n// Per-player offsets (relative to start of PlayerInputs)\nexport const KEYBOARD_OFFSET = 0;\nexport const KEYBOARD_SIZE = 256;\nexport const MOUSE_OFFSET = 256; // After keyboard\nexport const MOUSE_BUTTONS_OFFSET = 16; // Within MouseCtx, after x, y, wheel_x, wheel_y (4 floats = 16 bytes)\n\n// PlayerInputs size = KeyCtx (256) + MouseCtx (24) = 280 bytes\nexport const PLAYER_INPUTS_SIZE = 280;\n\n// InputCtx layout: players[12] = 12 * 280 = 3360 bytes\nexport const INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;\n\nexport const EVENT_PAYLOAD_SIZE = 8;\nexport const EVENT_PAYLOAD_ALIGN = 4;\n\nexport type MouseButton = keyof typeof Enums.MouseButton;\nexport type Key = keyof typeof Enums.Key;\nexport type InputSource = keyof typeof Enums.InputSource;\n\nexport function keyToKeyCode(key: Key): Enums.Key {\n return Enums.Key[key];\n}\n\nexport function keyCodeToKey(code: Enums.Key | number): Key {\n return Enums.Key[code] as Key;\n}\n\nexport function mouseButtonToMouseButtonCode(\n button: MouseButton,\n): Enums.MouseButton {\n return Enums.MouseButton[button];\n}\n\nexport function mouseButtonCodeToMouseButton(\n code: Enums.MouseButton | number,\n): MouseButton {\n return Enums.MouseButton[code] as MouseButton;\n}\n\nexport function inputSourceToInputSourceCode(\n source: InputSource,\n): Enums.InputSource {\n return Enums.InputSource[source];\n}\n\nexport function inputSourceCodeToInputSource(\n code: Enums.InputSource | number,\n): InputSource {\n return Enums.InputSource[code] as InputSource;\n}\n\nexport type KeyState = {\n down: boolean;\n held: boolean;\n up: boolean;\n};\n\nexport type MouseState = {\n left: KeyState;\n middle: KeyState;\n right: KeyState;\n wheel: { x: number; y: number };\n x: number;\n y: number;\n};\n",
|
|
7
|
+
"import * as Enums from \"../codegen/enums\";\nimport {\n KEYBOARD_OFFSET,\n type KeyState,\n MAX_PLAYERS,\n MOUSE_BUTTONS_OFFSET,\n MOUSE_OFFSET,\n PLAYER_INPUTS_SIZE,\n} from \"../inputs\";\n\n/**\n * Per-player input state containing keyboard and mouse state\n */\nexport class PlayerInputContext {\n #dataView: DataView;\n #keys?: KeyboardContext;\n #mouse?: MouseContext;\n\n constructor(dataView: DataView) {\n this.#dataView = dataView;\n }\n\n get keys(): KeyboardContext {\n if (!this.#keys) {\n this.#keys = new KeyboardContext(\n new DataView(\n this.#dataView.buffer,\n this.#dataView.byteOffset + KEYBOARD_OFFSET,\n ),\n );\n }\n return this.#keys;\n }\n\n get mouse(): MouseContext {\n if (!this.#mouse) {\n this.#mouse = new MouseContext(\n new DataView(\n this.#dataView.buffer,\n this.#dataView.byteOffset + MOUSE_OFFSET,\n ),\n );\n }\n return this.#mouse;\n }\n}\n\n/**\n * Input context containing all player input states.\n *\n * Provides convenience methods to access player 0 keyboard and mouse\n */\nexport class InputContext {\n #dataView?: DataView;\n #players: PlayerInputContext[] = [];\n\n constructor(dataView?: DataView) {\n if (dataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n }\n\n /**\n * Access the input context dataview for debugging.\n * Typically you would access player inputs via `players`\n */\n get dataView(): NonNullable<DataView> {\n if (!this.#dataView) {\n throw new Error(\"DataView is not initialized on InputContext\");\n }\n return this.#dataView!;\n }\n\n set dataView(dataView: DataView) {\n this.#dataView = dataView;\n this.#buildPlayers();\n }\n\n #buildPlayers() {\n this.#players = [];\n for (let i = 0; i < MAX_PLAYERS; i++) {\n const playerOffset = i * PLAYER_INPUTS_SIZE;\n const playerDataView = new DataView(\n this.dataView.buffer,\n this.dataView.byteOffset + playerOffset,\n PLAYER_INPUTS_SIZE,\n );\n this.#players.push(new PlayerInputContext(playerDataView));\n }\n }\n\n /**\n * Array of all player input contexts.\n * Access via: context.players[0].keys.a.held\n */\n get players(): readonly PlayerInputContext[] {\n return this.#players;\n }\n\n // Convenience: delegate to player 0 if no player is specified\n get keys(): KeyboardContext {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].keys;\n }\n\n get mouse(): MouseContext {\n if (!this.#players[0]) {\n throw new Error(\"No player inputs available in InputContext\");\n }\n return this.#players[0].mouse;\n }\n}\n\nexport class MouseContext {\n #dataView: DataView;\n #buttonStates: Map<Enums.MouseButton, KeyState> = new Map();\n\n constructor(dataView: DataView) {\n this.#dataView = dataView;\n }\n\n get x(): number {\n return this.#dataView.getFloat32(0, true);\n }\n\n get y(): number {\n return this.#dataView.getFloat32(4, true);\n }\n\n get wheel(): { x: number; y: number } {\n return { x: this.wheelX, y: this.wheelY };\n }\n\n get wheelX(): number {\n return this.#dataView.getFloat32(8, true);\n }\n\n get wheelY(): number {\n return this.#dataView.getFloat32(12, true);\n }\n\n get left(): KeyState {\n return this.#buttonState(Enums.MouseButton.Left);\n }\n\n get right(): KeyState {\n return this.#buttonState(Enums.MouseButton.Right);\n }\n get middle(): KeyState {\n return this.#buttonState(Enums.MouseButton.Middle);\n }\n\n #buttonState(code: Enums.MouseButton): KeyState {\n let state: KeyState;\n if (this.#buttonStates.has(code)) {\n state = this.#buttonStates.get(code)!;\n } else {\n state = { down: false, held: false, up: false };\n this.#buttonStates.set(code, state);\n }\n\n // xxxx xxx1 = held\n // xxxx xx01 = down\n // xxxx xx10 = up\n const offset = MOUSE_BUTTONS_OFFSET;\n state.held = !!(this.#dataView.getUint8(offset + code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);\n\n return state;\n }\n}\n\nexport class KeyboardContext {\n #dataView: DataView;\n\n #keystates: Map<Enums.Key, KeyState> = new Map();\n\n constructor(dataView: DataView) {\n this.#dataView = dataView;\n }\n\n // modifier key helpers\n get shift(): KeyState {\n return this.shiftLeft || this.shiftRight;\n }\n get alt(): KeyState {\n return this.altLeft || this.altRight;\n }\n get control(): KeyState {\n return this.controlLeft || this.controlRight;\n }\n get meta(): KeyState {\n return this.metaLeft || this.metaRight;\n }\n\n // this line on is generated from the engine keysEnum manually\n // (unlikely to change often)\n get backquote(): KeyState {\n return this.#keystate(Enums.Key.Backquote);\n }\n get backslash(): KeyState {\n return this.#keystate(Enums.Key.Backslash);\n }\n get bracketLeft(): KeyState {\n return this.#keystate(Enums.Key.BracketLeft);\n }\n get bracketRight(): KeyState {\n return this.#keystate(Enums.Key.BracketRight);\n }\n get comma(): KeyState {\n return this.#keystate(Enums.Key.Comma);\n }\n get digit0(): KeyState {\n return this.#keystate(Enums.Key.Digit0);\n }\n get digit1(): KeyState {\n return this.#keystate(Enums.Key.Digit1);\n }\n get digit2(): KeyState {\n return this.#keystate(Enums.Key.Digit2);\n }\n get digit3(): KeyState {\n return this.#keystate(Enums.Key.Digit3);\n }\n get digit4(): KeyState {\n return this.#keystate(Enums.Key.Digit4);\n }\n get digit5(): KeyState {\n return this.#keystate(Enums.Key.Digit5);\n }\n get digit6(): KeyState {\n return this.#keystate(Enums.Key.Digit6);\n }\n get digit7(): KeyState {\n return this.#keystate(Enums.Key.Digit7);\n }\n get digit8(): KeyState {\n return this.#keystate(Enums.Key.Digit8);\n }\n get digit9(): KeyState {\n return this.#keystate(Enums.Key.Digit9);\n }\n get equal(): KeyState {\n return this.#keystate(Enums.Key.Equal);\n }\n get intlBackslash(): KeyState {\n return this.#keystate(Enums.Key.IntlBackslash);\n }\n get intlRo(): KeyState {\n return this.#keystate(Enums.Key.IntlRo);\n }\n get intlYen(): KeyState {\n return this.#keystate(Enums.Key.IntlYen);\n }\n get a(): KeyState {\n return this.#keystate(Enums.Key.KeyA);\n }\n get b(): KeyState {\n return this.#keystate(Enums.Key.KeyB);\n }\n get c(): KeyState {\n return this.#keystate(Enums.Key.KeyC);\n }\n get d(): KeyState {\n return this.#keystate(Enums.Key.KeyD);\n }\n get e(): KeyState {\n return this.#keystate(Enums.Key.KeyE);\n }\n get f(): KeyState {\n return this.#keystate(Enums.Key.KeyF);\n }\n get g(): KeyState {\n return this.#keystate(Enums.Key.KeyG);\n }\n get h(): KeyState {\n return this.#keystate(Enums.Key.KeyH);\n }\n get i(): KeyState {\n return this.#keystate(Enums.Key.KeyI);\n }\n get j(): KeyState {\n return this.#keystate(Enums.Key.KeyJ);\n }\n get k(): KeyState {\n return this.#keystate(Enums.Key.KeyK);\n }\n get l(): KeyState {\n return this.#keystate(Enums.Key.KeyL);\n }\n get m(): KeyState {\n return this.#keystate(Enums.Key.KeyM);\n }\n get n(): KeyState {\n return this.#keystate(Enums.Key.KeyN);\n }\n get o(): KeyState {\n return this.#keystate(Enums.Key.KeyO);\n }\n get p(): KeyState {\n return this.#keystate(Enums.Key.KeyP);\n }\n get q(): KeyState {\n return this.#keystate(Enums.Key.KeyQ);\n }\n get r(): KeyState {\n return this.#keystate(Enums.Key.KeyR);\n }\n get s(): KeyState {\n return this.#keystate(Enums.Key.KeyS);\n }\n get t(): KeyState {\n return this.#keystate(Enums.Key.KeyT);\n }\n get u(): KeyState {\n return this.#keystate(Enums.Key.KeyU);\n }\n get v(): KeyState {\n return this.#keystate(Enums.Key.KeyV);\n }\n get w(): KeyState {\n return this.#keystate(Enums.Key.KeyW);\n }\n get x(): KeyState {\n return this.#keystate(Enums.Key.KeyX);\n }\n get y(): KeyState {\n return this.#keystate(Enums.Key.KeyY);\n }\n get z(): KeyState {\n return this.#keystate(Enums.Key.KeyZ);\n }\n get minus(): KeyState {\n return this.#keystate(Enums.Key.Minus);\n }\n get period(): KeyState {\n return this.#keystate(Enums.Key.Period);\n }\n get quote(): KeyState {\n return this.#keystate(Enums.Key.Quote);\n }\n get semicolon(): KeyState {\n return this.#keystate(Enums.Key.Semicolon);\n }\n get slash(): KeyState {\n return this.#keystate(Enums.Key.Slash);\n }\n get altLeft(): KeyState {\n return this.#keystate(Enums.Key.AltLeft);\n }\n get altRight(): KeyState {\n return this.#keystate(Enums.Key.AltRight);\n }\n get backspace(): KeyState {\n return this.#keystate(Enums.Key.Backspace);\n }\n get capsLock(): KeyState {\n return this.#keystate(Enums.Key.CapsLock);\n }\n get contextMenu(): KeyState {\n return this.#keystate(Enums.Key.ContextMenu);\n }\n get controlLeft(): KeyState {\n return this.#keystate(Enums.Key.ControlLeft);\n }\n get controlRight(): KeyState {\n return this.#keystate(Enums.Key.ControlRight);\n }\n get enter(): KeyState {\n return this.#keystate(Enums.Key.Enter);\n }\n get metaLeft(): KeyState {\n return this.#keystate(Enums.Key.MetaLeft);\n }\n get metaRight(): KeyState {\n return this.#keystate(Enums.Key.MetaRight);\n }\n get shiftLeft(): KeyState {\n return this.#keystate(Enums.Key.ShiftLeft);\n }\n get shiftRight(): KeyState {\n return this.#keystate(Enums.Key.ShiftRight);\n }\n get space(): KeyState {\n return this.#keystate(Enums.Key.Space);\n }\n get tab(): KeyState {\n return this.#keystate(Enums.Key.Tab);\n }\n get convert(): KeyState {\n return this.#keystate(Enums.Key.Convert);\n }\n get kanaMode(): KeyState {\n return this.#keystate(Enums.Key.KanaMode);\n }\n get lang1(): KeyState {\n return this.#keystate(Enums.Key.Lang1);\n }\n get lang2(): KeyState {\n return this.#keystate(Enums.Key.Lang2);\n }\n get lang3(): KeyState {\n return this.#keystate(Enums.Key.Lang3);\n }\n get lang4(): KeyState {\n return this.#keystate(Enums.Key.Lang4);\n }\n get lang5(): KeyState {\n return this.#keystate(Enums.Key.Lang5);\n }\n get nonConvert(): KeyState {\n return this.#keystate(Enums.Key.NonConvert);\n }\n get delete(): KeyState {\n return this.#keystate(Enums.Key.Delete);\n }\n get end(): KeyState {\n return this.#keystate(Enums.Key.End);\n }\n get help(): KeyState {\n return this.#keystate(Enums.Key.Help);\n }\n get home(): KeyState {\n return this.#keystate(Enums.Key.Home);\n }\n get insert(): KeyState {\n return this.#keystate(Enums.Key.Insert);\n }\n get pageDown(): KeyState {\n return this.#keystate(Enums.Key.PageDown);\n }\n get pageUp(): KeyState {\n return this.#keystate(Enums.Key.PageUp);\n }\n get arrowDown(): KeyState {\n return this.#keystate(Enums.Key.ArrowDown);\n }\n get arrowLeft(): KeyState {\n return this.#keystate(Enums.Key.ArrowLeft);\n }\n get arrowRight(): KeyState {\n return this.#keystate(Enums.Key.ArrowRight);\n }\n get arrowUp(): KeyState {\n return this.#keystate(Enums.Key.ArrowUp);\n }\n get numLock(): KeyState {\n return this.#keystate(Enums.Key.NumLock);\n }\n get numpad0(): KeyState {\n return this.#keystate(Enums.Key.Numpad0);\n }\n get numpad1(): KeyState {\n return this.#keystate(Enums.Key.Numpad1);\n }\n get numpad2(): KeyState {\n return this.#keystate(Enums.Key.Numpad2);\n }\n get numpad3(): KeyState {\n return this.#keystate(Enums.Key.Numpad3);\n }\n get numpad4(): KeyState {\n return this.#keystate(Enums.Key.Numpad4);\n }\n get numpad5(): KeyState {\n return this.#keystate(Enums.Key.Numpad5);\n }\n get numpad6(): KeyState {\n return this.#keystate(Enums.Key.Numpad6);\n }\n get numpad7(): KeyState {\n return this.#keystate(Enums.Key.Numpad7);\n }\n get numpad8(): KeyState {\n return this.#keystate(Enums.Key.Numpad8);\n }\n get numpad9(): KeyState {\n return this.#keystate(Enums.Key.Numpad9);\n }\n get numpadAdd(): KeyState {\n return this.#keystate(Enums.Key.NumpadAdd);\n }\n get numpadBackspace(): KeyState {\n return this.#keystate(Enums.Key.NumpadBackspace);\n }\n get numpadClear(): KeyState {\n return this.#keystate(Enums.Key.NumpadClear);\n }\n get numpadClearEntry(): KeyState {\n return this.#keystate(Enums.Key.NumpadClearEntry);\n }\n get numpadComma(): KeyState {\n return this.#keystate(Enums.Key.NumpadComma);\n }\n get numpadDecimal(): KeyState {\n return this.#keystate(Enums.Key.NumpadDecimal);\n }\n get numpadDivide(): KeyState {\n return this.#keystate(Enums.Key.NumpadDivide);\n }\n get numpadEnter(): KeyState {\n return this.#keystate(Enums.Key.NumpadEnter);\n }\n get numpadEqual(): KeyState {\n return this.#keystate(Enums.Key.NumpadEqual);\n }\n get numpadHash(): KeyState {\n return this.#keystate(Enums.Key.NumpadHash);\n }\n get numpadMemoryAdd(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryAdd);\n }\n get numpadMemoryClear(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryClear);\n }\n get numpadMemoryRecall(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryRecall);\n }\n get numpadMemoryStore(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemoryStore);\n }\n get numpadMemorySubtract(): KeyState {\n return this.#keystate(Enums.Key.NumpadMemorySubtract);\n }\n get numpadMultiply(): KeyState {\n return this.#keystate(Enums.Key.NumpadMultiply);\n }\n get numpadParenLeft(): KeyState {\n return this.#keystate(Enums.Key.NumpadParenLeft);\n }\n get numpadParenRight(): KeyState {\n return this.#keystate(Enums.Key.NumpadParenRight);\n }\n get numpadStar(): KeyState {\n return this.#keystate(Enums.Key.NumpadStar);\n }\n get numpadSubtract(): KeyState {\n return this.#keystate(Enums.Key.NumpadSubtract);\n }\n get escape(): KeyState {\n return this.#keystate(Enums.Key.Escape);\n }\n get fn(): KeyState {\n return this.#keystate(Enums.Key.Fn);\n }\n get fnLock(): KeyState {\n return this.#keystate(Enums.Key.FnLock);\n }\n get printScreen(): KeyState {\n return this.#keystate(Enums.Key.PrintScreen);\n }\n get scrollLock(): KeyState {\n return this.#keystate(Enums.Key.ScrollLock);\n }\n get pause(): KeyState {\n return this.#keystate(Enums.Key.Pause);\n }\n get browserBack(): KeyState {\n return this.#keystate(Enums.Key.BrowserBack);\n }\n get browserFavorites(): KeyState {\n return this.#keystate(Enums.Key.BrowserFavorites);\n }\n get browserForward(): KeyState {\n return this.#keystate(Enums.Key.BrowserForward);\n }\n get browserHome(): KeyState {\n return this.#keystate(Enums.Key.BrowserHome);\n }\n get browserRefresh(): KeyState {\n return this.#keystate(Enums.Key.BrowserRefresh);\n }\n get browserSearch(): KeyState {\n return this.#keystate(Enums.Key.BrowserSearch);\n }\n get browserStop(): KeyState {\n return this.#keystate(Enums.Key.BrowserStop);\n }\n get eject(): KeyState {\n return this.#keystate(Enums.Key.Eject);\n }\n get launchApp1(): KeyState {\n return this.#keystate(Enums.Key.LaunchApp1);\n }\n get launchApp2(): KeyState {\n return this.#keystate(Enums.Key.LaunchApp2);\n }\n get launchMail(): KeyState {\n return this.#keystate(Enums.Key.LaunchMail);\n }\n get mediaPlayPause(): KeyState {\n return this.#keystate(Enums.Key.MediaPlayPause);\n }\n get mediaSelect(): KeyState {\n return this.#keystate(Enums.Key.MediaSelect);\n }\n get mediaStop(): KeyState {\n return this.#keystate(Enums.Key.MediaStop);\n }\n get mediaTrackNext(): KeyState {\n return this.#keystate(Enums.Key.MediaTrackNext);\n }\n get mediaTrackPrevious(): KeyState {\n return this.#keystate(Enums.Key.MediaTrackPrevious);\n }\n get power(): KeyState {\n return this.#keystate(Enums.Key.Power);\n }\n get sleep(): KeyState {\n return this.#keystate(Enums.Key.Sleep);\n }\n get audioVolumeDown(): KeyState {\n return this.#keystate(Enums.Key.AudioVolumeDown);\n }\n get audioVolumeMute(): KeyState {\n return this.#keystate(Enums.Key.AudioVolumeMute);\n }\n get audioVolumeUp(): KeyState {\n return this.#keystate(Enums.Key.AudioVolumeUp);\n }\n get wakeUp(): KeyState {\n return this.#keystate(Enums.Key.WakeUp);\n }\n get hyper(): KeyState {\n return this.#keystate(Enums.Key.Hyper);\n }\n get super(): KeyState {\n return this.#keystate(Enums.Key.Super);\n }\n get turbo(): KeyState {\n return this.#keystate(Enums.Key.Turbo);\n }\n get abort(): KeyState {\n return this.#keystate(Enums.Key.Abort);\n }\n get resume(): KeyState {\n return this.#keystate(Enums.Key.Resume);\n }\n get suspend(): KeyState {\n return this.#keystate(Enums.Key.Suspend);\n }\n get again(): KeyState {\n return this.#keystate(Enums.Key.Again);\n }\n get copy(): KeyState {\n return this.#keystate(Enums.Key.Copy);\n }\n get cut(): KeyState {\n return this.#keystate(Enums.Key.Cut);\n }\n get find(): KeyState {\n return this.#keystate(Enums.Key.Find);\n }\n get open(): KeyState {\n return this.#keystate(Enums.Key.Open);\n }\n get paste(): KeyState {\n return this.#keystate(Enums.Key.Paste);\n }\n get props(): KeyState {\n return this.#keystate(Enums.Key.Props);\n }\n get select(): KeyState {\n return this.#keystate(Enums.Key.Select);\n }\n get undo(): KeyState {\n return this.#keystate(Enums.Key.Undo);\n }\n get hiragana(): KeyState {\n return this.#keystate(Enums.Key.Hiragana);\n }\n get katakana(): KeyState {\n return this.#keystate(Enums.Key.Katakana);\n }\n get f1(): KeyState {\n return this.#keystate(Enums.Key.F1);\n }\n get f2(): KeyState {\n return this.#keystate(Enums.Key.F2);\n }\n get f3(): KeyState {\n return this.#keystate(Enums.Key.F3);\n }\n get f4(): KeyState {\n return this.#keystate(Enums.Key.F4);\n }\n get f5(): KeyState {\n return this.#keystate(Enums.Key.F5);\n }\n get f6(): KeyState {\n return this.#keystate(Enums.Key.F6);\n }\n get f7(): KeyState {\n return this.#keystate(Enums.Key.F7);\n }\n get f8(): KeyState {\n return this.#keystate(Enums.Key.F8);\n }\n get f9(): KeyState {\n return this.#keystate(Enums.Key.F9);\n }\n get f10(): KeyState {\n return this.#keystate(Enums.Key.F10);\n }\n get f11(): KeyState {\n return this.#keystate(Enums.Key.F11);\n }\n get f12(): KeyState {\n return this.#keystate(Enums.Key.F12);\n }\n get f13(): KeyState {\n return this.#keystate(Enums.Key.F13);\n }\n get f14(): KeyState {\n return this.#keystate(Enums.Key.F14);\n }\n get f15(): KeyState {\n return this.#keystate(Enums.Key.F15);\n }\n get f16(): KeyState {\n return this.#keystate(Enums.Key.F16);\n }\n get f17(): KeyState {\n return this.#keystate(Enums.Key.F17);\n }\n get f18(): KeyState {\n return this.#keystate(Enums.Key.F18);\n }\n get f19(): KeyState {\n return this.#keystate(Enums.Key.F19);\n }\n get f20(): KeyState {\n return this.#keystate(Enums.Key.F20);\n }\n get f21(): KeyState {\n return this.#keystate(Enums.Key.F21);\n }\n get f22(): KeyState {\n return this.#keystate(Enums.Key.F22);\n }\n get f23(): KeyState {\n return this.#keystate(Enums.Key.F23);\n }\n get f24(): KeyState {\n return this.#keystate(Enums.Key.F24);\n }\n get f25(): KeyState {\n return this.#keystate(Enums.Key.F25);\n }\n get f26(): KeyState {\n return this.#keystate(Enums.Key.F26);\n }\n get f27(): KeyState {\n return this.#keystate(Enums.Key.F27);\n }\n get f28(): KeyState {\n return this.#keystate(Enums.Key.F28);\n }\n get f29(): KeyState {\n return this.#keystate(Enums.Key.F29);\n }\n get f30(): KeyState {\n return this.#keystate(Enums.Key.F30);\n }\n get f31(): KeyState {\n return this.#keystate(Enums.Key.F31);\n }\n get f32(): KeyState {\n return this.#keystate(Enums.Key.F32);\n }\n get f33(): KeyState {\n return this.#keystate(Enums.Key.F33);\n }\n get f34(): KeyState {\n return this.#keystate(Enums.Key.F34);\n }\n get f35(): KeyState {\n return this.#keystate(Enums.Key.F35);\n }\n\n #keystate(code: Enums.Key) {\n let state: KeyState;\n if (this.#keystates.has(code)) {\n state = this.#keystates.get(code)!;\n } else {\n state = { down: false, held: false, up: false };\n this.#keystates.set(code, state);\n }\n\n // xxxx xxx1 = held\n // xxxx xx01 = down\n // xxxx xx10 = up\n state.held = !!(this.#dataView.getUint8(code) & 1);\n state.down = state.held && !(this.#dataView.getUint8(code) & 2);\n state.up = !state.held && !!(this.#dataView.getUint8(code) & 2);\n\n return state;\n }\n}\n",
|
|
8
8
|
"export class TimeContext {\n dataView?: DataView;\n\n constructor(dataView?: DataView) {\n this.dataView = dataView;\n }\n\n /** The current frame number, eg after processing frame 0, this will be 1 */\n get frame(): number {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(0, true);\n }\n\n /** The number of seconds since the last frame */\n get dt(): number {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(4, true) / 1000;\n }\n\n /** The total number of seconds since the engine started */\n get time(): number {\n if (!this.dataView) {\n throw new Error(\"TimeContext DataView is not initialized\");\n }\n return this.dataView.getUint32(8, true) / 1000;\n }\n}\n",
|
|
9
9
|
"export * as Enums from \"./codegen/enums\";\nexport * from \"./contexts/inputContext\";\nexport * from \"./contexts/timeContext\";\nexport * from \"./inputs\";\nexport type * from \"./wasmEngine\";\n\n/**\n * A pointer to shared wasm memory space. Use it like\n *\n * const dataView = new DataView(wasmMemory.buffer, ptr);\n */\nexport type EnginePointer = number;\nexport type EngineLen = number;\n/**\n * A return value indicating success.\n *\n * 0 = success\n * 1 = failure\n * other values are function specific error codes\n */\nexport type EngineOk = number;\n\nexport const DEFAULT_WASM_URL: URL = new URL(\n \"../wasm/bloop.wasm\",\n import.meta.url,\n);\n\nexport const TIME_CTX_OFFSET = 0;\nexport const INPUT_CTX_OFFSET = TIME_CTX_OFFSET + 4;\nexport const EVENTS_OFFSET = INPUT_CTX_OFFSET + 4;\n\n/**\n * Size of snapshot header in bytes\n */\nexport const SNAPSHOT_HEADER_LEN = 16;\nexport const SNAPSHOT_HEADER_USER_LEN_OFFSET = 4;\nexport const SNAPSHOT_HEADER_ENGINE_LEN_OFFSET = 8;\n"
|
|
10
10
|
],
|
|
11
|
-
"mappings": "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",
|
|
12
|
-
"debugId": "
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "9ABC92059EB22C3864756E2164756E21",
|
|
13
13
|
"names": []
|
|
14
14
|
}
|
package/dist/inputs.d.ts
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import * as Enums from "./codegen/enums";
|
|
2
|
+
export declare const MAX_PLAYERS = 12;
|
|
3
|
+
export declare const KEYBOARD_OFFSET = 0;
|
|
4
|
+
export declare const KEYBOARD_SIZE = 256;
|
|
2
5
|
export declare const MOUSE_OFFSET = 256;
|
|
3
6
|
export declare const MOUSE_BUTTONS_OFFSET = 16;
|
|
4
|
-
export declare const
|
|
7
|
+
export declare const PLAYER_INPUTS_SIZE = 280;
|
|
8
|
+
export declare const INPUT_CTX_SIZE: number;
|
|
5
9
|
export declare const EVENT_PAYLOAD_SIZE = 8;
|
|
6
10
|
export declare const EVENT_PAYLOAD_ALIGN = 4;
|
|
7
11
|
export type MouseButton = keyof typeof Enums.MouseButton;
|
|
8
12
|
export type Key = keyof typeof Enums.Key;
|
|
13
|
+
export type InputSource = keyof typeof Enums.InputSource;
|
|
9
14
|
export declare function keyToKeyCode(key: Key): Enums.Key;
|
|
10
15
|
export declare function keyCodeToKey(code: Enums.Key | number): Key;
|
|
11
16
|
export declare function mouseButtonToMouseButtonCode(button: MouseButton): Enums.MouseButton;
|
|
12
17
|
export declare function mouseButtonCodeToMouseButton(code: Enums.MouseButton | number): MouseButton;
|
|
18
|
+
export declare function inputSourceToInputSourceCode(source: InputSource): Enums.InputSource;
|
|
19
|
+
export declare function inputSourceCodeToInputSource(code: Enums.InputSource | number): InputSource;
|
|
13
20
|
export type KeyState = {
|
|
14
21
|
down: boolean;
|
|
15
22
|
held: boolean;
|
package/dist/inputs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../js/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"inputs.d.ts","sourceRoot":"","sources":["../js/inputs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAIzC,eAAO,MAAM,WAAW,KAAK,CAAC;AAG9B,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAGvC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,eAAO,MAAM,cAAc,QAAmC,CAAC;AAE/D,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,KAAK,CAAC,WAAW,CAAC;AACzD,MAAM,MAAM,GAAG,GAAG,MAAM,OAAO,KAAK,CAAC,GAAG,CAAC;AACzC,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,KAAK,CAAC,WAAW,CAAC;AAEzD,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,CAAC,GAAG,CAEhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,MAAM,GAAG,GAAG,CAE1D;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,WAAW,GAClB,KAAK,CAAC,WAAW,CAEnB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,GAC/B,WAAW,CAEb;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,WAAW,GAClB,KAAK,CAAC,WAAW,CAEnB;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,KAAK,CAAC,WAAW,GAAG,MAAM,GAC/B,WAAW,CAEb;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC"}
|
package/dist/wasmEngine.d.ts
CHANGED
|
@@ -37,12 +37,12 @@ export type WasmEngine = {
|
|
|
37
37
|
* Whether the engine is currently replaying from tape
|
|
38
38
|
*/
|
|
39
39
|
is_replaying: () => boolean;
|
|
40
|
-
emit_keydown: (key: Enums.Key) => void;
|
|
41
|
-
emit_keyup: (key: Enums.Key) => void;
|
|
42
|
-
emit_mousedown: (button: Enums.MouseButton) => void;
|
|
43
|
-
emit_mouseup: (button: Enums.MouseButton) => void;
|
|
44
|
-
emit_mousemove: (x: number, y: number) => void;
|
|
45
|
-
emit_mousewheel: (x: number, y: number) => void;
|
|
40
|
+
emit_keydown: (key: Enums.Key, source: Enums.InputSource) => void;
|
|
41
|
+
emit_keyup: (key: Enums.Key, source: Enums.InputSource) => void;
|
|
42
|
+
emit_mousedown: (button: Enums.MouseButton, source: Enums.InputSource) => void;
|
|
43
|
+
emit_mouseup: (button: Enums.MouseButton, source: Enums.InputSource) => void;
|
|
44
|
+
emit_mousemove: (x: number, y: number, source: Enums.InputSource) => void;
|
|
45
|
+
emit_mousewheel: (x: number, y: number, source: Enums.InputSource) => void;
|
|
46
46
|
/**
|
|
47
47
|
* Returns a pointer to the snapshot data.
|
|
48
48
|
*/
|
package/dist/wasmEngine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasmEngine.d.ts","sourceRoot":"","sources":["../js/wasmEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,yEAAyE;IACzE,UAAU,EAAE,MAAM,aAAa,CAAC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,YAAY,EAAE,MAAM,aAAa,CAAC;IAClC,cAAc,EAAE,MAAM,aAAa,CAAC;IAEpC;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ,CAAC;IACpE;;OAEG;IACH,cAAc,EAAE,MAAM,QAAQ,CAAC;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B;;OAEG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC;IAG5B,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"wasmEngine.d.ts","sourceRoot":"","sources":["../js/wasmEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAExD,MAAM,MAAM,UAAU,GAAG;IACvB,yEAAyE;IACzE,UAAU,EAAE,MAAM,aAAa,CAAC;IAChC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAE9C,YAAY,EAAE,MAAM,aAAa,CAAC;IAClC,cAAc,EAAE,MAAM,aAAa,CAAC;IAEpC;;OAEG;IACH,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7B;;OAEG;IACH,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB;;;OAGG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B;;OAEG;IACH,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,QAAQ,CAAC;IACpE;;OAEG;IACH,cAAc,EAAE,MAAM,QAAQ,CAAC;IAC/B;;OAEG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC;IAC5B;;OAEG;IACH,YAAY,EAAE,MAAM,OAAO,CAAC;IAG5B,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAClE,UAAU,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAChE,cAAc,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAC/E,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAC7E,cAAc,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAC1E,eAAe,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;IAE3E;;OAEG;IACH,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,aAAa,CAAC;IACnD;;OAEG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,CAAC;IAEtC;;OAEG;IACH,YAAY,EAAE,MAAM,aAAa,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,MAAM,MAAM,CAAC;IAC3B;;OAEG;IACH,SAAS,EAAE,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,KAAK,QAAQ,CAAC;IAEzD;;;OAGG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC"}
|
package/js/codegen/enums.ts
CHANGED
|
@@ -221,3 +221,35 @@ export enum Key {
|
|
|
221
221
|
F35 = 194,
|
|
222
222
|
}
|
|
223
223
|
|
|
224
|
+
export enum InputSource {
|
|
225
|
+
None = 0,
|
|
226
|
+
LocalKeyboard = 1,
|
|
227
|
+
LocalMouse = 2,
|
|
228
|
+
LocalTouch = 3,
|
|
229
|
+
LocalGamepad0 = 4,
|
|
230
|
+
LocalGamepad1 = 5,
|
|
231
|
+
LocalGamepad2 = 6,
|
|
232
|
+
LocalGamepad3 = 7,
|
|
233
|
+
LocalGamepad4 = 8,
|
|
234
|
+
LocalGamepad5 = 9,
|
|
235
|
+
LocalGamepad6 = 10,
|
|
236
|
+
LocalGamepad7 = 11,
|
|
237
|
+
LocalGamepad8 = 12,
|
|
238
|
+
LocalGamepad9 = 13,
|
|
239
|
+
LocalGamepad10 = 14,
|
|
240
|
+
LocalGamepad11 = 15,
|
|
241
|
+
RemotePeer0 = 128,
|
|
242
|
+
RemotePeer1 = 129,
|
|
243
|
+
RemotePeer2 = 130,
|
|
244
|
+
RemotePeer3 = 131,
|
|
245
|
+
RemotePeer4 = 132,
|
|
246
|
+
RemotePeer5 = 133,
|
|
247
|
+
RemotePeer6 = 134,
|
|
248
|
+
RemotePeer7 = 135,
|
|
249
|
+
RemotePeer8 = 136,
|
|
250
|
+
RemotePeer9 = 137,
|
|
251
|
+
RemotePeer10 = 138,
|
|
252
|
+
RemotePeer11 = 139,
|
|
253
|
+
Unmapped = 255,
|
|
254
|
+
}
|
|
255
|
+
|
|
@@ -2,22 +2,69 @@ import * as Enums from "../codegen/enums";
|
|
|
2
2
|
import {
|
|
3
3
|
KEYBOARD_OFFSET,
|
|
4
4
|
type KeyState,
|
|
5
|
+
MAX_PLAYERS,
|
|
5
6
|
MOUSE_BUTTONS_OFFSET,
|
|
6
7
|
MOUSE_OFFSET,
|
|
8
|
+
PLAYER_INPUTS_SIZE,
|
|
7
9
|
} from "../inputs";
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Per-player input state containing keyboard and mouse state
|
|
13
|
+
*/
|
|
14
|
+
export class PlayerInputContext {
|
|
15
|
+
#dataView: DataView;
|
|
12
16
|
#keys?: KeyboardContext;
|
|
13
17
|
#mouse?: MouseContext;
|
|
14
18
|
|
|
19
|
+
constructor(dataView: DataView) {
|
|
20
|
+
this.#dataView = dataView;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get keys(): KeyboardContext {
|
|
24
|
+
if (!this.#keys) {
|
|
25
|
+
this.#keys = new KeyboardContext(
|
|
26
|
+
new DataView(
|
|
27
|
+
this.#dataView.buffer,
|
|
28
|
+
this.#dataView.byteOffset + KEYBOARD_OFFSET,
|
|
29
|
+
),
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
return this.#keys;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
get mouse(): MouseContext {
|
|
36
|
+
if (!this.#mouse) {
|
|
37
|
+
this.#mouse = new MouseContext(
|
|
38
|
+
new DataView(
|
|
39
|
+
this.#dataView.buffer,
|
|
40
|
+
this.#dataView.byteOffset + MOUSE_OFFSET,
|
|
41
|
+
),
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
return this.#mouse;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Input context containing all player input states.
|
|
50
|
+
*
|
|
51
|
+
* Provides convenience methods to access player 0 keyboard and mouse
|
|
52
|
+
*/
|
|
53
|
+
export class InputContext {
|
|
54
|
+
#dataView?: DataView;
|
|
55
|
+
#players: PlayerInputContext[] = [];
|
|
56
|
+
|
|
15
57
|
constructor(dataView?: DataView) {
|
|
16
58
|
if (dataView) {
|
|
17
59
|
this.#dataView = dataView;
|
|
60
|
+
this.#buildPlayers();
|
|
18
61
|
}
|
|
19
62
|
}
|
|
20
63
|
|
|
64
|
+
/**
|
|
65
|
+
* Access the input context dataview for debugging.
|
|
66
|
+
* Typically you would access player inputs via `players`
|
|
67
|
+
*/
|
|
21
68
|
get dataView(): NonNullable<DataView> {
|
|
22
69
|
if (!this.#dataView) {
|
|
23
70
|
throw new Error("DataView is not initialized on InputContext");
|
|
@@ -27,32 +74,43 @@ export class InputContext {
|
|
|
27
74
|
|
|
28
75
|
set dataView(dataView: DataView) {
|
|
29
76
|
this.#dataView = dataView;
|
|
30
|
-
this.#
|
|
31
|
-
this.#mouse = undefined;
|
|
77
|
+
this.#buildPlayers();
|
|
32
78
|
}
|
|
33
79
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
80
|
+
#buildPlayers() {
|
|
81
|
+
this.#players = [];
|
|
82
|
+
for (let i = 0; i < MAX_PLAYERS; i++) {
|
|
83
|
+
const playerOffset = i * PLAYER_INPUTS_SIZE;
|
|
84
|
+
const playerDataView = new DataView(
|
|
85
|
+
this.dataView.buffer,
|
|
86
|
+
this.dataView.byteOffset + playerOffset,
|
|
87
|
+
PLAYER_INPUTS_SIZE,
|
|
41
88
|
);
|
|
89
|
+
this.#players.push(new PlayerInputContext(playerDataView));
|
|
42
90
|
}
|
|
43
|
-
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Array of all player input contexts.
|
|
95
|
+
* Access via: context.players[0].keys.a.held
|
|
96
|
+
*/
|
|
97
|
+
get players(): readonly PlayerInputContext[] {
|
|
98
|
+
return this.#players;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// Convenience: delegate to player 0 if no player is specified
|
|
102
|
+
get keys(): KeyboardContext {
|
|
103
|
+
if (!this.#players[0]) {
|
|
104
|
+
throw new Error("No player inputs available in InputContext");
|
|
105
|
+
}
|
|
106
|
+
return this.#players[0].keys;
|
|
44
107
|
}
|
|
45
108
|
|
|
46
109
|
get mouse(): MouseContext {
|
|
47
|
-
if (!this.#
|
|
48
|
-
|
|
49
|
-
new DataView(
|
|
50
|
-
this.dataView.buffer,
|
|
51
|
-
this.dataView.byteOffset + MOUSE_OFFSET,
|
|
52
|
-
),
|
|
53
|
-
);
|
|
110
|
+
if (!this.#players[0]) {
|
|
111
|
+
throw new Error("No player inputs available in InputContext");
|
|
54
112
|
}
|
|
55
|
-
return this.#mouse;
|
|
113
|
+
return this.#players[0].mouse;
|
|
56
114
|
}
|
|
57
115
|
}
|
|
58
116
|
|
package/js/inputs.ts
CHANGED
|
@@ -1,15 +1,27 @@
|
|
|
1
1
|
import * as Enums from "./codegen/enums";
|
|
2
2
|
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
export const
|
|
3
|
+
// Constants for memory layout
|
|
4
|
+
// TODO: move magic numbers to codegen
|
|
5
|
+
export const MAX_PLAYERS = 12;
|
|
6
|
+
|
|
7
|
+
// Per-player offsets (relative to start of PlayerInputs)
|
|
6
8
|
export const KEYBOARD_OFFSET = 0;
|
|
9
|
+
export const KEYBOARD_SIZE = 256;
|
|
10
|
+
export const MOUSE_OFFSET = 256; // After keyboard
|
|
11
|
+
export const MOUSE_BUTTONS_OFFSET = 16; // Within MouseCtx, after x, y, wheel_x, wheel_y (4 floats = 16 bytes)
|
|
12
|
+
|
|
13
|
+
// PlayerInputs size = KeyCtx (256) + MouseCtx (24) = 280 bytes
|
|
14
|
+
export const PLAYER_INPUTS_SIZE = 280;
|
|
15
|
+
|
|
16
|
+
// InputCtx layout: players[12] = 12 * 280 = 3360 bytes
|
|
17
|
+
export const INPUT_CTX_SIZE = MAX_PLAYERS * PLAYER_INPUTS_SIZE;
|
|
7
18
|
|
|
8
19
|
export const EVENT_PAYLOAD_SIZE = 8;
|
|
9
20
|
export const EVENT_PAYLOAD_ALIGN = 4;
|
|
10
21
|
|
|
11
22
|
export type MouseButton = keyof typeof Enums.MouseButton;
|
|
12
23
|
export type Key = keyof typeof Enums.Key;
|
|
24
|
+
export type InputSource = keyof typeof Enums.InputSource;
|
|
13
25
|
|
|
14
26
|
export function keyToKeyCode(key: Key): Enums.Key {
|
|
15
27
|
return Enums.Key[key];
|
|
@@ -31,6 +43,18 @@ export function mouseButtonCodeToMouseButton(
|
|
|
31
43
|
return Enums.MouseButton[code] as MouseButton;
|
|
32
44
|
}
|
|
33
45
|
|
|
46
|
+
export function inputSourceToInputSourceCode(
|
|
47
|
+
source: InputSource,
|
|
48
|
+
): Enums.InputSource {
|
|
49
|
+
return Enums.InputSource[source];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export function inputSourceCodeToInputSource(
|
|
53
|
+
code: Enums.InputSource | number,
|
|
54
|
+
): InputSource {
|
|
55
|
+
return Enums.InputSource[code] as InputSource;
|
|
56
|
+
}
|
|
57
|
+
|
|
34
58
|
export type KeyState = {
|
|
35
59
|
down: boolean;
|
|
36
60
|
held: boolean;
|
package/js/wasmEngine.ts
CHANGED
|
@@ -41,13 +41,13 @@ export type WasmEngine = {
|
|
|
41
41
|
*/
|
|
42
42
|
is_replaying: () => boolean;
|
|
43
43
|
|
|
44
|
-
// Input platform events
|
|
45
|
-
emit_keydown: (key: Enums.Key) => void;
|
|
46
|
-
emit_keyup: (key: Enums.Key) => void;
|
|
47
|
-
emit_mousedown: (button: Enums.MouseButton) => void;
|
|
48
|
-
emit_mouseup: (button: Enums.MouseButton) => void;
|
|
49
|
-
emit_mousemove: (x: number, y: number) => void;
|
|
50
|
-
emit_mousewheel: (x: number, y: number) => void;
|
|
44
|
+
// Input platform events (all take source as second/last parameter)
|
|
45
|
+
emit_keydown: (key: Enums.Key, source: Enums.InputSource) => void;
|
|
46
|
+
emit_keyup: (key: Enums.Key, source: Enums.InputSource) => void;
|
|
47
|
+
emit_mousedown: (button: Enums.MouseButton, source: Enums.InputSource) => void;
|
|
48
|
+
emit_mouseup: (button: Enums.MouseButton, source: Enums.InputSource) => void;
|
|
49
|
+
emit_mousemove: (x: number, y: number, source: Enums.InputSource) => void;
|
|
50
|
+
emit_mousewheel: (x: number, y: number, source: Enums.InputSource) => void;
|
|
51
51
|
|
|
52
52
|
/**
|
|
53
53
|
* Returns a pointer to the snapshot data.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bloopjs/engine",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.40",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
"build:tsc": "tsc -p publish/tsconfig.publish.json",
|
|
26
26
|
"build:wasm": "zig build -p .",
|
|
27
27
|
"ci:tsc": "tsc --noEmit",
|
|
28
|
+
"ci:jsr": "bunx jsr publish --dry-run --allow-dirty",
|
|
28
29
|
"check:wasm": "wasm-objdump -x wasm/bloop.wasm",
|
|
29
30
|
"dev": "zig build -p . --watch"
|
|
30
31
|
},
|
package/wasm/bloop.wasm
CHANGED
|
Binary file
|