@bloopjs/engine 0.0.87 → 0.0.89
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/offsets.d.ts +40 -0
- package/dist/codegen/offsets.d.ts.map +1 -0
- package/dist/contexts/inputContext.d.ts +1 -0
- package/dist/contexts/inputContext.d.ts.map +1 -1
- package/dist/contexts/netContext.d.ts +8 -8
- package/dist/contexts/netContext.d.ts.map +1 -1
- package/dist/contexts/timeContext.d.ts.map +1 -1
- package/dist/engine.js +118 -76
- package/dist/engine.js.map +9 -8
- package/dist/inputs.d.ts +2 -7
- package/dist/inputs.d.ts.map +1 -1
- package/js/codegen/offsets.ts +48 -0
- package/js/contexts/inputContext.ts +20 -12
- package/js/contexts/netContext.ts +76 -47
- package/js/contexts/timeContext.ts +9 -3
- package/js/defaultUrl.ts +1 -1
- package/js/inputs.ts +18 -14
- package/package.json +1 -1
- package/wasm/bloop.wasm +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export declare const TIME_CTX_FRAME_OFFSET = 0;
|
|
2
|
+
export declare const TIME_CTX_DT_MS_OFFSET = 4;
|
|
3
|
+
export declare const TIME_CTX_TOTAL_MS_OFFSET = 8;
|
|
4
|
+
export declare const TIME_CTX_IS_RESIMULATING_OFFSET = 16;
|
|
5
|
+
export declare const TIME_CTX_SIZE = 24;
|
|
6
|
+
export declare const PEER_CTX_CONNECTED_OFFSET = 0;
|
|
7
|
+
export declare const PEER_CTX_PACKET_COUNT_OFFSET = 1;
|
|
8
|
+
export declare const PEER_CTX_SEQ_OFFSET = 2;
|
|
9
|
+
export declare const PEER_CTX_ACK_OFFSET = 4;
|
|
10
|
+
export declare const PEER_CTX_ACK_COUNT_OFFSET = 6;
|
|
11
|
+
export declare const PEER_CTX_SIZE = 8;
|
|
12
|
+
export declare const NET_CTX_PEER_COUNT_OFFSET = 0;
|
|
13
|
+
export declare const NET_CTX_LOCAL_PEER_ID_OFFSET = 1;
|
|
14
|
+
export declare const NET_CTX_IN_SESSION_OFFSET = 2;
|
|
15
|
+
export declare const NET_CTX_STATUS_OFFSET = 3;
|
|
16
|
+
export declare const NET_CTX_MATCH_FRAME_OFFSET = 4;
|
|
17
|
+
export declare const NET_CTX_SESSION_START_FRAME_OFFSET = 8;
|
|
18
|
+
export declare const NET_CTX_ROOM_CODE_OFFSET = 12;
|
|
19
|
+
export declare const NET_CTX_WANTS_ROOM_CODE_OFFSET = 20;
|
|
20
|
+
export declare const NET_CTX_WANTS_DISCONNECT_OFFSET = 28;
|
|
21
|
+
export declare const NET_CTX_PEERS_OFFSET = 32;
|
|
22
|
+
export declare const NET_CTX_LAST_ROLLBACK_DEPTH_OFFSET = 128;
|
|
23
|
+
export declare const NET_CTX_TOTAL_ROLLBACKS_OFFSET = 132;
|
|
24
|
+
export declare const NET_CTX_FRAMES_RESIMULATED_OFFSET = 136;
|
|
25
|
+
export declare const NET_CTX_SIZE = 144;
|
|
26
|
+
export declare const MOUSE_CTX_X_OFFSET = 0;
|
|
27
|
+
export declare const MOUSE_CTX_Y_OFFSET = 4;
|
|
28
|
+
export declare const MOUSE_CTX_WHEEL_X_OFFSET = 8;
|
|
29
|
+
export declare const MOUSE_CTX_WHEEL_Y_OFFSET = 12;
|
|
30
|
+
export declare const MOUSE_CTX_BUTTON_STATES_OFFSET = 16;
|
|
31
|
+
export declare const MOUSE_CTX_SIZE = 24;
|
|
32
|
+
export declare const KEY_CTX_KEY_STATES_OFFSET = 0;
|
|
33
|
+
export declare const KEY_CTX_SIZE = 256;
|
|
34
|
+
export declare const PLAYER_INPUTS_KEY_CTX_OFFSET = 0;
|
|
35
|
+
export declare const PLAYER_INPUTS_MOUSE_CTX_OFFSET = 256;
|
|
36
|
+
export declare const PLAYER_INPUTS_SIZE = 280;
|
|
37
|
+
export declare const INPUT_CTX_PLAYERS_OFFSET = 0;
|
|
38
|
+
export declare const INPUT_CTX_SIZE = 3360;
|
|
39
|
+
export declare const MAX_PLAYERS = 12;
|
|
40
|
+
//# sourceMappingURL=offsets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"offsets.d.ts","sourceRoot":"","sources":["../../js/codegen/offsets.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,qBAAqB,IAAI,CAAC;AACvC,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAC5C,eAAO,MAAM,kCAAkC,IAAI,CAAC;AACpD,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,kCAAkC,MAAM,CAAC;AACtD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,YAAY,MAAM,CAAC;AAEhC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,cAAc,OAAO,CAAC;AAEnC,eAAO,MAAM,WAAW,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputContext.d.ts","sourceRoot":"","sources":["../../js/contexts/inputContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inputContext.d.ts","sourceRoot":"","sources":["../../js/contexts/inputContext.ts"],"names":[],"mappings":"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Q,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,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"}
|
|
@@ -46,14 +46,8 @@ export type PeerInfo = {
|
|
|
46
46
|
ack: number;
|
|
47
47
|
};
|
|
48
48
|
/**
|
|
49
|
-
* NetCtx struct layout
|
|
50
|
-
*
|
|
51
|
-
* - local_peer_id: u8 (offset 1)
|
|
52
|
-
* - in_session: u8 (offset 2)
|
|
53
|
-
* - status: u8 (offset 3)
|
|
54
|
-
* - match_frame: u32 (offset 4)
|
|
55
|
-
* - session_start_frame: u32 (offset 8)
|
|
56
|
-
* - room_code: [8]u8 (offset 12)
|
|
49
|
+
* NetCtx struct layout is defined in context.zig.
|
|
50
|
+
* Field offsets are generated in codegen/offsets.ts.
|
|
57
51
|
*
|
|
58
52
|
* All getters read directly from the engine's memory via DataView.
|
|
59
53
|
* State is managed by the Zig engine, not TypeScript.
|
|
@@ -98,5 +92,11 @@ export declare class NetContext {
|
|
|
98
92
|
* - ack = the frame they've acknowledged from us (-1 if none)
|
|
99
93
|
*/
|
|
100
94
|
get peers(): PeerInfo[];
|
|
95
|
+
/** Last rollback depth (how many frames were rolled back) */
|
|
96
|
+
get lastRollbackDepth(): number;
|
|
97
|
+
/** Total number of rollbacks during this session */
|
|
98
|
+
get totalRollbacks(): number;
|
|
99
|
+
/** Total frames resimulated during this session */
|
|
100
|
+
get framesResimulated(): number;
|
|
101
101
|
}
|
|
102
102
|
//# sourceMappingURL=netContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"netContext.d.ts","sourceRoot":"","sources":["../../js/contexts/netContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"netContext.d.ts","sourceRoot":"","sources":["../../js/contexts/netContext.ts"],"names":[],"mappings":"AAqBA;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,OAAO,GACP,cAAc,GACd,WAAW,GACX,cAAc,CAAC;AAEnB,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAUF;;;;;;GAMG;AACH,qBAAa,UAAU;;IACrB,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAUR,QAAQ,CAAC,EAAE,QAAQ;IAW/B,iFAAiF;IACjF,IAAI,SAAS,IAAI,MAAM,CAKtB;IAED,mCAAmC;IACnC,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED,qDAAqD;IACrD,IAAI,WAAW,IAAI,OAAO,CAKzB;IAED,6BAA6B;IAC7B,IAAI,MAAM,IAAI,SAAS,CAMtB;IAED,wEAAwE;IACxE,IAAI,UAAU,IAAI,MAAM,CAKvB;IAED;;;OAGG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAK9B;IAED,wDAAwD;IACxD,IAAI,QAAQ,IAAI,MAAM,CAYrB;IAED,oDAAoD;IACpD,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAYtC;IAED,IAAI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAczC;IAED,mDAAmD;IACnD,IAAI,eAAe,IAAI,OAAO,CAK7B;IAED,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,EAKjC;IAED;;;;;;;;;;;OAWG;IACH,IAAI,KAAK,IAAI,QAAQ,EAAE,CA+CtB;IAED,6DAA6D;IAC7D,IAAI,iBAAiB,IAAI,MAAM,CAK9B;IAED,oDAAoD;IACpD,IAAI,cAAc,IAAI,MAAM,CAK3B;IAED,mDAAmD;IACnD,IAAI,iBAAiB,IAAI,MAAM,CAM9B;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeContext.d.ts","sourceRoot":"","sources":["../../js/contexts/timeContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"timeContext.d.ts","sourceRoot":"","sources":["../../js/contexts/timeContext.ts"],"names":[],"mappings":"AAMA,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;gBAER,QAAQ,CAAC,EAAE,QAAQ;IAI/B,4EAA4E;IAC5E,IAAI,KAAK,IAAI,MAAM,CAKlB;IAED,iDAAiD;IACjD,IAAI,EAAE,IAAI,MAAM,CAKf;IAED,2DAA2D;IAC3D,IAAI,IAAI,IAAI,MAAM,CAKjB;CACF"}
|
package/dist/engine.js
CHANGED
|
@@ -286,34 +286,39 @@ var NetJoinFailReason;
|
|
|
286
286
|
NetJoinFailReason2[NetJoinFailReason2["room_not_found"] = 3] = "room_not_found";
|
|
287
287
|
NetJoinFailReason2[NetJoinFailReason2["already_in_room"] = 4] = "already_in_room";
|
|
288
288
|
})(NetJoinFailReason ||= {});
|
|
289
|
-
// js/
|
|
290
|
-
var
|
|
291
|
-
var
|
|
292
|
-
var
|
|
293
|
-
var
|
|
294
|
-
var
|
|
289
|
+
// js/codegen/offsets.ts
|
|
290
|
+
var TIME_CTX_FRAME_OFFSET = 0;
|
|
291
|
+
var TIME_CTX_DT_MS_OFFSET = 4;
|
|
292
|
+
var TIME_CTX_TOTAL_MS_OFFSET = 8;
|
|
293
|
+
var PEER_CTX_CONNECTED_OFFSET = 0;
|
|
294
|
+
var PEER_CTX_SEQ_OFFSET = 2;
|
|
295
|
+
var PEER_CTX_ACK_OFFSET = 4;
|
|
296
|
+
var PEER_CTX_SIZE = 8;
|
|
297
|
+
var NET_CTX_PEER_COUNT_OFFSET = 0;
|
|
298
|
+
var NET_CTX_LOCAL_PEER_ID_OFFSET = 1;
|
|
299
|
+
var NET_CTX_IN_SESSION_OFFSET = 2;
|
|
300
|
+
var NET_CTX_STATUS_OFFSET = 3;
|
|
301
|
+
var NET_CTX_MATCH_FRAME_OFFSET = 4;
|
|
302
|
+
var NET_CTX_SESSION_START_FRAME_OFFSET = 8;
|
|
303
|
+
var NET_CTX_ROOM_CODE_OFFSET = 12;
|
|
304
|
+
var NET_CTX_WANTS_ROOM_CODE_OFFSET = 20;
|
|
305
|
+
var NET_CTX_WANTS_DISCONNECT_OFFSET = 28;
|
|
306
|
+
var NET_CTX_PEERS_OFFSET = 32;
|
|
307
|
+
var NET_CTX_LAST_ROLLBACK_DEPTH_OFFSET = 128;
|
|
308
|
+
var NET_CTX_TOTAL_ROLLBACKS_OFFSET = 132;
|
|
309
|
+
var NET_CTX_FRAMES_RESIMULATED_OFFSET = 136;
|
|
310
|
+
var MOUSE_CTX_X_OFFSET = 0;
|
|
311
|
+
var MOUSE_CTX_Y_OFFSET = 4;
|
|
312
|
+
var MOUSE_CTX_WHEEL_X_OFFSET = 8;
|
|
313
|
+
var MOUSE_CTX_WHEEL_Y_OFFSET = 12;
|
|
314
|
+
var MOUSE_CTX_BUTTON_STATES_OFFSET = 16;
|
|
315
|
+
var MOUSE_CTX_SIZE = 24;
|
|
316
|
+
var KEY_CTX_SIZE = 256;
|
|
317
|
+
var PLAYER_INPUTS_KEY_CTX_OFFSET = 0;
|
|
318
|
+
var PLAYER_INPUTS_MOUSE_CTX_OFFSET = 256;
|
|
295
319
|
var PLAYER_INPUTS_SIZE = 280;
|
|
296
|
-
var INPUT_CTX_SIZE =
|
|
297
|
-
var
|
|
298
|
-
var EVENT_PAYLOAD_ALIGN = 4;
|
|
299
|
-
function keyToKeyCode(key) {
|
|
300
|
-
return Key[key];
|
|
301
|
-
}
|
|
302
|
-
function keyCodeToKey(code) {
|
|
303
|
-
return Key[code];
|
|
304
|
-
}
|
|
305
|
-
function mouseButtonToMouseButtonCode(button) {
|
|
306
|
-
return MouseButton[button];
|
|
307
|
-
}
|
|
308
|
-
function mouseButtonCodeToMouseButton(code) {
|
|
309
|
-
return MouseButton[code];
|
|
310
|
-
}
|
|
311
|
-
function inputSourceToInputSourceCode(source) {
|
|
312
|
-
return InputSource[source];
|
|
313
|
-
}
|
|
314
|
-
function inputSourceCodeToInputSource(code) {
|
|
315
|
-
return InputSource[code];
|
|
316
|
-
}
|
|
320
|
+
var INPUT_CTX_SIZE = 3360;
|
|
321
|
+
var MAX_PLAYERS = 12;
|
|
317
322
|
|
|
318
323
|
// js/contexts/inputContext.ts
|
|
319
324
|
class PlayerInputContext {
|
|
@@ -325,13 +330,13 @@ class PlayerInputContext {
|
|
|
325
330
|
}
|
|
326
331
|
get keys() {
|
|
327
332
|
if (!this.#keys) {
|
|
328
|
-
this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset +
|
|
333
|
+
this.#keys = new KeyboardContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + PLAYER_INPUTS_KEY_CTX_OFFSET));
|
|
329
334
|
}
|
|
330
335
|
return this.#keys;
|
|
331
336
|
}
|
|
332
337
|
get mouse() {
|
|
333
338
|
if (!this.#mouse) {
|
|
334
|
-
this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset +
|
|
339
|
+
this.#mouse = new MouseContext(new DataView(this.#dataView.buffer, this.#dataView.byteOffset + PLAYER_INPUTS_MOUSE_CTX_OFFSET));
|
|
335
340
|
}
|
|
336
341
|
return this.#mouse;
|
|
337
342
|
}
|
|
@@ -356,6 +361,9 @@ class InputContext {
|
|
|
356
361
|
this.#dataView = dataView;
|
|
357
362
|
this.#buildPlayers();
|
|
358
363
|
}
|
|
364
|
+
hasDataView() {
|
|
365
|
+
return !!this.#dataView;
|
|
366
|
+
}
|
|
359
367
|
#buildPlayers() {
|
|
360
368
|
this.#players = [];
|
|
361
369
|
for (let i = 0;i < MAX_PLAYERS; i++) {
|
|
@@ -388,19 +396,19 @@ class MouseContext {
|
|
|
388
396
|
this.#dataView = dataView;
|
|
389
397
|
}
|
|
390
398
|
get x() {
|
|
391
|
-
return this.#dataView.getFloat32(
|
|
399
|
+
return this.#dataView.getFloat32(MOUSE_CTX_X_OFFSET, true);
|
|
392
400
|
}
|
|
393
401
|
get y() {
|
|
394
|
-
return this.#dataView.getFloat32(
|
|
402
|
+
return this.#dataView.getFloat32(MOUSE_CTX_Y_OFFSET, true);
|
|
395
403
|
}
|
|
396
404
|
get wheel() {
|
|
397
405
|
return { x: this.wheelX, y: this.wheelY };
|
|
398
406
|
}
|
|
399
407
|
get wheelX() {
|
|
400
|
-
return this.#dataView.getFloat32(
|
|
408
|
+
return this.#dataView.getFloat32(MOUSE_CTX_WHEEL_X_OFFSET, true);
|
|
401
409
|
}
|
|
402
410
|
get wheelY() {
|
|
403
|
-
return this.#dataView.getFloat32(
|
|
411
|
+
return this.#dataView.getFloat32(MOUSE_CTX_WHEEL_Y_OFFSET, true);
|
|
404
412
|
}
|
|
405
413
|
get left() {
|
|
406
414
|
return this.#buttonState(1 /* Left */);
|
|
@@ -419,7 +427,7 @@ class MouseContext {
|
|
|
419
427
|
state = { down: false, held: false, up: false };
|
|
420
428
|
this.#buttonStates.set(code, state);
|
|
421
429
|
}
|
|
422
|
-
const offset =
|
|
430
|
+
const offset = MOUSE_CTX_BUTTON_STATES_OFFSET;
|
|
423
431
|
state.held = !!(this.#dataView.getUint8(offset + code) & 1);
|
|
424
432
|
state.down = state.held && !(this.#dataView.getUint8(offset + code) & 2);
|
|
425
433
|
state.up = !state.held && !!(this.#dataView.getUint8(offset + code) & 2);
|
|
@@ -1042,14 +1050,6 @@ class KeyboardContext {
|
|
|
1042
1050
|
}
|
|
1043
1051
|
}
|
|
1044
1052
|
// js/contexts/netContext.ts
|
|
1045
|
-
var MAX_PEERS = 12;
|
|
1046
|
-
var PEERS_ARRAY_OFFSET = 32;
|
|
1047
|
-
var PEER_CTX_SIZE = 8;
|
|
1048
|
-
var PEER_CONNECTED_OFFSET = 0;
|
|
1049
|
-
var PEER_PACKET_COUNT_OFFSET = 1;
|
|
1050
|
-
var PEER_SEQ_OFFSET = 2;
|
|
1051
|
-
var PEER_ACK_OFFSET = 4;
|
|
1052
|
-
var PEER_ACK_COUNT_OFFSET = 6;
|
|
1053
1053
|
var STATUS_MAP = {
|
|
1054
1054
|
0: "offline",
|
|
1055
1055
|
1: "local",
|
|
@@ -1060,7 +1060,7 @@ var STATUS_MAP = {
|
|
|
1060
1060
|
|
|
1061
1061
|
class NetContext {
|
|
1062
1062
|
dataView;
|
|
1063
|
-
#peers = Array.from({ length:
|
|
1063
|
+
#peers = Array.from({ length: MAX_PLAYERS }, () => ({
|
|
1064
1064
|
isLocal: false,
|
|
1065
1065
|
seq: -1,
|
|
1066
1066
|
ack: -1
|
|
@@ -1078,38 +1078,38 @@ class NetContext {
|
|
|
1078
1078
|
if (!this.#hasValidBuffer()) {
|
|
1079
1079
|
throw new Error("NetContext dataView is not valid");
|
|
1080
1080
|
}
|
|
1081
|
-
return this.dataView.getUint8(
|
|
1081
|
+
return this.dataView.getUint8(NET_CTX_PEER_COUNT_OFFSET);
|
|
1082
1082
|
}
|
|
1083
1083
|
get localPeerId() {
|
|
1084
1084
|
if (!this.#hasValidBuffer()) {
|
|
1085
1085
|
throw new Error("NetContext dataView is not valid");
|
|
1086
1086
|
}
|
|
1087
|
-
return this.dataView.getUint8(
|
|
1087
|
+
return this.dataView.getUint8(NET_CTX_LOCAL_PEER_ID_OFFSET);
|
|
1088
1088
|
}
|
|
1089
1089
|
get isInSession() {
|
|
1090
1090
|
if (!this.#hasValidBuffer()) {
|
|
1091
1091
|
throw new Error("NetContext dataView is not valid");
|
|
1092
1092
|
}
|
|
1093
|
-
return this.dataView.getUint8(
|
|
1093
|
+
return this.dataView.getUint8(NET_CTX_IN_SESSION_OFFSET) !== 0;
|
|
1094
1094
|
}
|
|
1095
1095
|
get status() {
|
|
1096
1096
|
if (!this.#hasValidBuffer()) {
|
|
1097
1097
|
throw new Error("NetContext dataView is not valid");
|
|
1098
1098
|
}
|
|
1099
|
-
const statusByte = this.dataView.getUint8(
|
|
1099
|
+
const statusByte = this.dataView.getUint8(NET_CTX_STATUS_OFFSET);
|
|
1100
1100
|
return STATUS_MAP[statusByte] ?? "local";
|
|
1101
1101
|
}
|
|
1102
1102
|
get matchFrame() {
|
|
1103
1103
|
if (!this.#hasValidBuffer()) {
|
|
1104
1104
|
throw new Error("NetContext dataView is not valid");
|
|
1105
1105
|
}
|
|
1106
|
-
return this.dataView.getUint32(
|
|
1106
|
+
return this.dataView.getUint32(NET_CTX_MATCH_FRAME_OFFSET, true);
|
|
1107
1107
|
}
|
|
1108
1108
|
get sessionStartFrame() {
|
|
1109
1109
|
if (!this.#hasValidBuffer()) {
|
|
1110
1110
|
throw new Error("NetContext dataView is not valid");
|
|
1111
1111
|
}
|
|
1112
|
-
return this.dataView.getUint32(
|
|
1112
|
+
return this.dataView.getUint32(NET_CTX_SESSION_START_FRAME_OFFSET, true);
|
|
1113
1113
|
}
|
|
1114
1114
|
get roomCode() {
|
|
1115
1115
|
if (!this.#hasValidBuffer()) {
|
|
@@ -1117,7 +1117,7 @@ class NetContext {
|
|
|
1117
1117
|
}
|
|
1118
1118
|
const bytes = [];
|
|
1119
1119
|
for (let i = 0;i < 8; i++) {
|
|
1120
|
-
const byte = this.dataView.getUint8(
|
|
1120
|
+
const byte = this.dataView.getUint8(NET_CTX_ROOM_CODE_OFFSET + i);
|
|
1121
1121
|
if (byte === 0)
|
|
1122
1122
|
break;
|
|
1123
1123
|
bytes.push(byte);
|
|
@@ -1130,7 +1130,7 @@ class NetContext {
|
|
|
1130
1130
|
}
|
|
1131
1131
|
const bytes = [];
|
|
1132
1132
|
for (let i = 0;i < 8; i++) {
|
|
1133
|
-
const byte = this.dataView.getUint8(
|
|
1133
|
+
const byte = this.dataView.getUint8(NET_CTX_WANTS_ROOM_CODE_OFFSET + i);
|
|
1134
1134
|
if (byte === 0)
|
|
1135
1135
|
break;
|
|
1136
1136
|
bytes.push(byte);
|
|
@@ -1142,11 +1142,11 @@ class NetContext {
|
|
|
1142
1142
|
throw new Error("NetContext dataView is not valid");
|
|
1143
1143
|
}
|
|
1144
1144
|
for (let i = 0;i < 8; i++) {
|
|
1145
|
-
this.dataView.setUint8(
|
|
1145
|
+
this.dataView.setUint8(NET_CTX_WANTS_ROOM_CODE_OFFSET + i, 0);
|
|
1146
1146
|
}
|
|
1147
1147
|
if (code) {
|
|
1148
1148
|
for (let i = 0;i < Math.min(code.length, 7); i++) {
|
|
1149
|
-
this.dataView.setUint8(
|
|
1149
|
+
this.dataView.setUint8(NET_CTX_WANTS_ROOM_CODE_OFFSET + i, code.charCodeAt(i));
|
|
1150
1150
|
}
|
|
1151
1151
|
}
|
|
1152
1152
|
}
|
|
@@ -1154,13 +1154,13 @@ class NetContext {
|
|
|
1154
1154
|
if (!this.#hasValidBuffer()) {
|
|
1155
1155
|
return false;
|
|
1156
1156
|
}
|
|
1157
|
-
return this.dataView.getUint8(
|
|
1157
|
+
return this.dataView.getUint8(NET_CTX_WANTS_DISCONNECT_OFFSET) !== 0;
|
|
1158
1158
|
}
|
|
1159
1159
|
set wantsDisconnect(value) {
|
|
1160
1160
|
if (!this.#hasValidBuffer()) {
|
|
1161
1161
|
throw new Error("NetContext dataView is not valid");
|
|
1162
1162
|
}
|
|
1163
|
-
this.dataView.setUint8(
|
|
1163
|
+
this.dataView.setUint8(NET_CTX_WANTS_DISCONNECT_OFFSET, value ? 1 : 0);
|
|
1164
1164
|
}
|
|
1165
1165
|
get peers() {
|
|
1166
1166
|
if (!this.#hasValidBuffer()) {
|
|
@@ -1170,23 +1170,23 @@ class NetContext {
|
|
|
1170
1170
|
const localPeerId = this.localPeerId;
|
|
1171
1171
|
const matchFrame = this.matchFrame;
|
|
1172
1172
|
let minRemoteSeq = -1;
|
|
1173
|
-
for (let i = 0;i <
|
|
1173
|
+
for (let i = 0;i < MAX_PLAYERS; i++) {
|
|
1174
1174
|
if (i === localPeerId)
|
|
1175
1175
|
continue;
|
|
1176
|
-
const peerOffset =
|
|
1177
|
-
if (dv.getUint8(peerOffset +
|
|
1176
|
+
const peerOffset = NET_CTX_PEERS_OFFSET + i * PEER_CTX_SIZE;
|
|
1177
|
+
if (dv.getUint8(peerOffset + PEER_CTX_CONNECTED_OFFSET) !== 1)
|
|
1178
1178
|
continue;
|
|
1179
|
-
|
|
1179
|
+
const seq = dv.getInt16(peerOffset + PEER_CTX_SEQ_OFFSET, true);
|
|
1180
|
+
if (seq < 0)
|
|
1180
1181
|
continue;
|
|
1181
|
-
const seq = dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);
|
|
1182
1182
|
if (minRemoteSeq === -1 || seq < minRemoteSeq) {
|
|
1183
1183
|
minRemoteSeq = seq;
|
|
1184
1184
|
}
|
|
1185
1185
|
}
|
|
1186
1186
|
this.#peersResult.length = 0;
|
|
1187
|
-
for (let i = 0;i <
|
|
1188
|
-
const peerOffset =
|
|
1189
|
-
if (dv.getUint8(peerOffset +
|
|
1187
|
+
for (let i = 0;i < MAX_PLAYERS; i++) {
|
|
1188
|
+
const peerOffset = NET_CTX_PEERS_OFFSET + i * PEER_CTX_SIZE;
|
|
1189
|
+
if (dv.getUint8(peerOffset + PEER_CTX_CONNECTED_OFFSET) !== 1)
|
|
1190
1190
|
continue;
|
|
1191
1191
|
const peer = this.#peers[i];
|
|
1192
1192
|
if (!peer) {
|
|
@@ -1198,15 +1198,31 @@ class NetContext {
|
|
|
1198
1198
|
peer.seq = matchFrame;
|
|
1199
1199
|
peer.ack = minRemoteSeq;
|
|
1200
1200
|
} else {
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
peer.seq = packetCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_SEQ_OFFSET, true);
|
|
1204
|
-
peer.ack = ackCount === 0 ? -1 : dv.getUint16(peerOffset + PEER_ACK_OFFSET, true);
|
|
1201
|
+
peer.seq = dv.getInt16(peerOffset + PEER_CTX_SEQ_OFFSET, true);
|
|
1202
|
+
peer.ack = dv.getInt16(peerOffset + PEER_CTX_ACK_OFFSET, true);
|
|
1205
1203
|
}
|
|
1206
1204
|
this.#peersResult.push(peer);
|
|
1207
1205
|
}
|
|
1208
1206
|
return this.#peersResult;
|
|
1209
1207
|
}
|
|
1208
|
+
get lastRollbackDepth() {
|
|
1209
|
+
if (!this.#hasValidBuffer()) {
|
|
1210
|
+
throw new Error("NetContext dataView is not valid");
|
|
1211
|
+
}
|
|
1212
|
+
return this.dataView.getUint32(NET_CTX_LAST_ROLLBACK_DEPTH_OFFSET, true);
|
|
1213
|
+
}
|
|
1214
|
+
get totalRollbacks() {
|
|
1215
|
+
if (!this.#hasValidBuffer()) {
|
|
1216
|
+
throw new Error("NetContext dataView is not valid");
|
|
1217
|
+
}
|
|
1218
|
+
return this.dataView.getUint32(NET_CTX_TOTAL_ROLLBACKS_OFFSET, true);
|
|
1219
|
+
}
|
|
1220
|
+
get framesResimulated() {
|
|
1221
|
+
if (!this.#hasValidBuffer()) {
|
|
1222
|
+
throw new Error("NetContext dataView is not valid");
|
|
1223
|
+
}
|
|
1224
|
+
return Number(this.dataView.getBigUint64(NET_CTX_FRAMES_RESIMULATED_OFFSET, true));
|
|
1225
|
+
}
|
|
1210
1226
|
}
|
|
1211
1227
|
// js/contexts/timeContext.ts
|
|
1212
1228
|
class TimeContext {
|
|
@@ -1218,21 +1234,42 @@ class TimeContext {
|
|
|
1218
1234
|
if (!this.dataView) {
|
|
1219
1235
|
throw new Error("TimeContext DataView is not initialized");
|
|
1220
1236
|
}
|
|
1221
|
-
return this.dataView.getUint32(
|
|
1237
|
+
return this.dataView.getUint32(TIME_CTX_FRAME_OFFSET, true);
|
|
1222
1238
|
}
|
|
1223
1239
|
get dt() {
|
|
1224
1240
|
if (!this.dataView) {
|
|
1225
1241
|
throw new Error("TimeContext DataView is not initialized");
|
|
1226
1242
|
}
|
|
1227
|
-
return this.dataView.getUint32(
|
|
1243
|
+
return this.dataView.getUint32(TIME_CTX_DT_MS_OFFSET, true) / 1000;
|
|
1228
1244
|
}
|
|
1229
1245
|
get time() {
|
|
1230
1246
|
if (!this.dataView) {
|
|
1231
1247
|
throw new Error("TimeContext DataView is not initialized");
|
|
1232
1248
|
}
|
|
1233
|
-
return this.dataView.getUint32(
|
|
1249
|
+
return this.dataView.getUint32(TIME_CTX_TOTAL_MS_OFFSET, true) / 1000;
|
|
1234
1250
|
}
|
|
1235
1251
|
}
|
|
1252
|
+
// js/inputs.ts
|
|
1253
|
+
var EVENT_PAYLOAD_SIZE = 8;
|
|
1254
|
+
var EVENT_PAYLOAD_ALIGN = 4;
|
|
1255
|
+
function keyToKeyCode(key) {
|
|
1256
|
+
return Key[key];
|
|
1257
|
+
}
|
|
1258
|
+
function keyCodeToKey(code) {
|
|
1259
|
+
return Key[code];
|
|
1260
|
+
}
|
|
1261
|
+
function mouseButtonToMouseButtonCode(button) {
|
|
1262
|
+
return MouseButton[button];
|
|
1263
|
+
}
|
|
1264
|
+
function mouseButtonCodeToMouseButton(code) {
|
|
1265
|
+
return MouseButton[code];
|
|
1266
|
+
}
|
|
1267
|
+
function inputSourceToInputSourceCode(source) {
|
|
1268
|
+
return InputSource[source];
|
|
1269
|
+
}
|
|
1270
|
+
function inputSourceCodeToInputSource(code) {
|
|
1271
|
+
return InputSource[code];
|
|
1272
|
+
}
|
|
1236
1273
|
// js/tape.ts
|
|
1237
1274
|
var TAPE_MAGIC = 1413566533;
|
|
1238
1275
|
function readTapeHeader(tape) {
|
|
@@ -1250,7 +1287,7 @@ function readTapeHeader(tape) {
|
|
|
1250
1287
|
};
|
|
1251
1288
|
}
|
|
1252
1289
|
// js/defaultUrl.ts
|
|
1253
|
-
var DEFAULT_WASM_URL = new URL("https://unpkg.com/@bloopjs/engine@0.0.
|
|
1290
|
+
var DEFAULT_WASM_URL = new URL("https://unpkg.com/@bloopjs/engine@0.0.89/wasm/bloop.wasm");
|
|
1254
1291
|
|
|
1255
1292
|
// js/engine.ts
|
|
1256
1293
|
var MAX_ROLLBACK_FRAMES = 500;
|
|
@@ -1276,16 +1313,21 @@ export {
|
|
|
1276
1313
|
SNAPSHOT_HEADER_ENGINE_LEN_OFFSET,
|
|
1277
1314
|
PlayerInputContext,
|
|
1278
1315
|
PLAYER_INPUTS_SIZE,
|
|
1316
|
+
PLAYER_INPUTS_MOUSE_CTX_OFFSET,
|
|
1317
|
+
PLAYER_INPUTS_KEY_CTX_OFFSET,
|
|
1279
1318
|
NetContext,
|
|
1280
1319
|
NET_CTX_OFFSET,
|
|
1281
1320
|
MouseContext,
|
|
1282
|
-
MOUSE_OFFSET,
|
|
1283
|
-
|
|
1321
|
+
PLAYER_INPUTS_MOUSE_CTX_OFFSET as MOUSE_OFFSET,
|
|
1322
|
+
MOUSE_CTX_SIZE,
|
|
1323
|
+
MOUSE_CTX_BUTTON_STATES_OFFSET,
|
|
1324
|
+
MOUSE_CTX_BUTTON_STATES_OFFSET as MOUSE_BUTTONS_OFFSET,
|
|
1284
1325
|
MAX_ROLLBACK_FRAMES,
|
|
1285
1326
|
MAX_PLAYERS,
|
|
1286
1327
|
KeyboardContext,
|
|
1287
|
-
|
|
1288
|
-
|
|
1328
|
+
KEY_CTX_SIZE,
|
|
1329
|
+
KEY_CTX_SIZE as KEYBOARD_SIZE,
|
|
1330
|
+
PLAYER_INPUTS_KEY_CTX_OFFSET as KEYBOARD_OFFSET,
|
|
1289
1331
|
InputContext,
|
|
1290
1332
|
INPUT_CTX_SIZE,
|
|
1291
1333
|
INPUT_CTX_OFFSET,
|
|
@@ -1296,5 +1338,5 @@ export {
|
|
|
1296
1338
|
DEFAULT_WASM_URL
|
|
1297
1339
|
};
|
|
1298
1340
|
|
|
1299
|
-
//# debugId=
|
|
1341
|
+
//# debugId=E58B71F8E35933D164756E2164756E21
|
|
1300
1342
|
//# sourceMappingURL=engine.js.map
|