quake2ts 0.0.301 → 0.0.303
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/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +221 -38
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +221 -38
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/entities.d.ts +1 -0
- package/packages/client/dist/types/entities.d.ts.map +1 -1
- package/packages/engine/dist/browser/index.global.js +9 -9
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +90 -18
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +90 -18
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/render/renderer.d.ts.map +1 -1
- package/packages/engine/dist/types/render/scene.d.ts +2 -0
- package/packages/engine/dist/types/render/scene.d.ts.map +1 -1
- package/packages/game/dist/browser/index.global.js +4 -4
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +104 -19
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +104 -19
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/ai/monster.d.ts.map +1 -1
- package/packages/shared/dist/browser/index.global.js +1 -1
- package/packages/shared/dist/browser/index.global.js.map +1 -1
- package/packages/shared/dist/cjs/index.cjs +97 -19
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +97 -19
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/net/netchan.d.ts +5 -0
- package/packages/shared/dist/types/net/netchan.d.ts.map +1 -1
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -2442,10 +2442,14 @@ var _NetChan = class _NetChan2 {
|
|
|
2442
2442
|
this.incomingReliableSequence = 0;
|
|
2443
2443
|
this.outgoingReliableSequence = 0;
|
|
2444
2444
|
this.reliableLength = 0;
|
|
2445
|
+
this.fragmentSendOffset = 0;
|
|
2446
|
+
this.fragmentBuffer = null;
|
|
2447
|
+
this.fragmentLength = 0;
|
|
2448
|
+
this.fragmentReceived = 0;
|
|
2445
2449
|
this.lastReceived = 0;
|
|
2446
2450
|
this.lastSent = 0;
|
|
2447
2451
|
this.remoteAddress = null;
|
|
2448
|
-
this.reliableMessage = new BinaryWriter(_NetChan2.
|
|
2452
|
+
this.reliableMessage = new BinaryWriter(_NetChan2.MAX_RELIABLE_BUFFER);
|
|
2449
2453
|
const now = Date.now();
|
|
2450
2454
|
this.lastReceived = now;
|
|
2451
2455
|
this.lastSent = now;
|
|
@@ -2471,6 +2475,10 @@ var _NetChan = class _NetChan2 {
|
|
|
2471
2475
|
this.outgoingReliableSequence = 0;
|
|
2472
2476
|
this.reliableLength = 0;
|
|
2473
2477
|
this.reliableMessage.reset();
|
|
2478
|
+
this.fragmentSendOffset = 0;
|
|
2479
|
+
this.fragmentBuffer = null;
|
|
2480
|
+
this.fragmentLength = 0;
|
|
2481
|
+
this.fragmentReceived = 0;
|
|
2474
2482
|
this.lastReceived = Date.now();
|
|
2475
2483
|
this.lastSent = Date.now();
|
|
2476
2484
|
}
|
|
@@ -2480,18 +2488,38 @@ var _NetChan = class _NetChan2 {
|
|
|
2480
2488
|
transmit(unreliableData) {
|
|
2481
2489
|
this.outgoingSequence++;
|
|
2482
2490
|
this.lastSent = Date.now();
|
|
2491
|
+
let sendReliableLength = 0;
|
|
2492
|
+
let isFragment = false;
|
|
2493
|
+
let fragmentStart = 0;
|
|
2494
|
+
if (this.reliableLength > 0) {
|
|
2495
|
+
if (this.reliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
2496
|
+
isFragment = true;
|
|
2497
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
2498
|
+
this.fragmentSendOffset = 0;
|
|
2499
|
+
}
|
|
2500
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
2501
|
+
sendReliableLength = remaining;
|
|
2502
|
+
if (sendReliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
2503
|
+
sendReliableLength = _NetChan2.FRAGMENT_SIZE;
|
|
2504
|
+
}
|
|
2505
|
+
fragmentStart = this.fragmentSendOffset;
|
|
2506
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
2507
|
+
} else {
|
|
2508
|
+
sendReliableLength = this.reliableLength;
|
|
2509
|
+
}
|
|
2510
|
+
}
|
|
2483
2511
|
const headerSize = _NetChan2.PACKET_HEADER;
|
|
2484
|
-
const
|
|
2512
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
2485
2513
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
2486
|
-
if (headerSize +
|
|
2487
|
-
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize -
|
|
2514
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan2.MAX_MSGLEN) {
|
|
2515
|
+
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
2488
2516
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
2489
2517
|
}
|
|
2490
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
2518
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
2491
2519
|
const view = new DataView(buffer);
|
|
2492
2520
|
const result = new Uint8Array(buffer);
|
|
2493
2521
|
let sequence = this.outgoingSequence;
|
|
2494
|
-
if (
|
|
2522
|
+
if (sendReliableLength > 0) {
|
|
2495
2523
|
sequence |= 2147483648;
|
|
2496
2524
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
2497
2525
|
sequence |= 1073741824;
|
|
@@ -2505,13 +2533,23 @@ var _NetChan = class _NetChan2 {
|
|
|
2505
2533
|
view.setUint32(4, ack, true);
|
|
2506
2534
|
view.setUint16(8, this.qport, true);
|
|
2507
2535
|
let offset = headerSize;
|
|
2508
|
-
if (
|
|
2509
|
-
|
|
2536
|
+
if (sendReliableLength > 0) {
|
|
2537
|
+
let lengthField = sendReliableLength;
|
|
2538
|
+
if (isFragment) {
|
|
2539
|
+
lengthField |= 32768;
|
|
2540
|
+
}
|
|
2541
|
+
view.setUint16(offset, lengthField, true);
|
|
2510
2542
|
offset += 2;
|
|
2543
|
+
if (isFragment) {
|
|
2544
|
+
view.setUint32(offset, fragmentStart, true);
|
|
2545
|
+
offset += 4;
|
|
2546
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
2547
|
+
offset += 4;
|
|
2548
|
+
}
|
|
2511
2549
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
2512
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
2550
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
2513
2551
|
result.set(reliableBytes, offset);
|
|
2514
|
-
offset +=
|
|
2552
|
+
offset += sendReliableLength;
|
|
2515
2553
|
}
|
|
2516
2554
|
if (unreliableData && unreliableSize > 0) {
|
|
2517
2555
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -2552,6 +2590,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2552
2590
|
this.reliableLength = 0;
|
|
2553
2591
|
this.reliableMessage.reset();
|
|
2554
2592
|
this.outgoingReliableSequence ^= 1;
|
|
2593
|
+
this.fragmentSendOffset = 0;
|
|
2555
2594
|
}
|
|
2556
2595
|
}
|
|
2557
2596
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -2560,13 +2599,45 @@ var _NetChan = class _NetChan2 {
|
|
|
2560
2599
|
let reliableData = null;
|
|
2561
2600
|
if (hasReliableData) {
|
|
2562
2601
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
2563
|
-
|
|
2602
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
2564
2603
|
payloadOffset += 2;
|
|
2604
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
2605
|
+
reliableLen &= 32767;
|
|
2565
2606
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
2566
2607
|
if (reliableSeqBit === expectedBit) {
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2608
|
+
if (isFragment) {
|
|
2609
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
2610
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
2611
|
+
payloadOffset += 4;
|
|
2612
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
2613
|
+
payloadOffset += 4;
|
|
2614
|
+
if (fragTotal > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2615
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan2.MAX_RELIABLE_BUFFER}`);
|
|
2616
|
+
return null;
|
|
2617
|
+
}
|
|
2618
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
2619
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
2620
|
+
this.fragmentLength = fragTotal;
|
|
2621
|
+
this.fragmentReceived = 0;
|
|
2622
|
+
}
|
|
2623
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
2624
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
2625
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
2626
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
2627
|
+
this.fragmentReceived += reliableLen;
|
|
2628
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
2629
|
+
reliableData = this.fragmentBuffer;
|
|
2630
|
+
this.incomingReliableSequence++;
|
|
2631
|
+
this.fragmentBuffer = null;
|
|
2632
|
+
this.fragmentLength = 0;
|
|
2633
|
+
this.fragmentReceived = 0;
|
|
2634
|
+
}
|
|
2635
|
+
}
|
|
2636
|
+
} else {
|
|
2637
|
+
this.incomingReliableSequence++;
|
|
2638
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
2639
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
2640
|
+
}
|
|
2570
2641
|
}
|
|
2571
2642
|
payloadOffset += reliableLen;
|
|
2572
2643
|
}
|
|
@@ -2593,7 +2664,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2593
2664
|
* Writes a byte to the reliable message buffer
|
|
2594
2665
|
*/
|
|
2595
2666
|
writeReliableByte(value) {
|
|
2596
|
-
if (this.reliableLength + 1 > _NetChan2.
|
|
2667
|
+
if (this.reliableLength + 1 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2597
2668
|
throw new Error("NetChan reliable buffer overflow");
|
|
2598
2669
|
}
|
|
2599
2670
|
this.reliableMessage.writeByte(value);
|
|
@@ -2603,7 +2674,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2603
2674
|
* Writes a short to the reliable message buffer
|
|
2604
2675
|
*/
|
|
2605
2676
|
writeReliableShort(value) {
|
|
2606
|
-
if (this.reliableLength + 2 > _NetChan2.
|
|
2677
|
+
if (this.reliableLength + 2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2607
2678
|
throw new Error("NetChan reliable buffer overflow");
|
|
2608
2679
|
}
|
|
2609
2680
|
this.reliableMessage.writeShort(value);
|
|
@@ -2613,7 +2684,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2613
2684
|
* Writes a long to the reliable message buffer
|
|
2614
2685
|
*/
|
|
2615
2686
|
writeReliableLong(value) {
|
|
2616
|
-
if (this.reliableLength + 4 > _NetChan2.
|
|
2687
|
+
if (this.reliableLength + 4 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2617
2688
|
throw new Error("NetChan reliable buffer overflow");
|
|
2618
2689
|
}
|
|
2619
2690
|
this.reliableMessage.writeLong(value);
|
|
@@ -2624,7 +2695,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2624
2695
|
*/
|
|
2625
2696
|
writeReliableString(value) {
|
|
2626
2697
|
const len2 = value.length + 1;
|
|
2627
|
-
if (this.reliableLength + len2 > _NetChan2.
|
|
2698
|
+
if (this.reliableLength + len2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2628
2699
|
throw new Error("NetChan reliable buffer overflow");
|
|
2629
2700
|
}
|
|
2630
2701
|
this.reliableMessage.writeString(value);
|
|
@@ -2657,6 +2728,7 @@ _NetChan.MAX_MSGLEN = 1400;
|
|
|
2657
2728
|
_NetChan.FRAGMENT_SIZE = 1024;
|
|
2658
2729
|
_NetChan.PACKET_HEADER = 10;
|
|
2659
2730
|
_NetChan.HEADER_OVERHEAD = _NetChan.PACKET_HEADER + 2;
|
|
2731
|
+
_NetChan.MAX_RELIABLE_BUFFER = 262144;
|
|
2660
2732
|
var AmmoType = /* @__PURE__ */ ((AmmoType22) => {
|
|
2661
2733
|
AmmoType22[AmmoType22["Bullets"] = 0] = "Bullets";
|
|
2662
2734
|
AmmoType22[AmmoType22["Shells"] = 1] = "Shells";
|
|
@@ -9066,6 +9138,28 @@ function writeUserCommand(writer, cmd) {
|
|
|
9066
9138
|
writer.writeByte(0);
|
|
9067
9139
|
writer.writeByte(0);
|
|
9068
9140
|
}
|
|
9141
|
+
var RenderFx = /* @__PURE__ */ ((RenderFx2) => {
|
|
9142
|
+
RenderFx2[RenderFx2["MinLight"] = 1] = "MinLight";
|
|
9143
|
+
RenderFx2[RenderFx2["ViewerModel"] = 2] = "ViewerModel";
|
|
9144
|
+
RenderFx2[RenderFx2["WeaponModel"] = 4] = "WeaponModel";
|
|
9145
|
+
RenderFx2[RenderFx2["FullBright"] = 8] = "FullBright";
|
|
9146
|
+
RenderFx2[RenderFx2["DepthHack"] = 16] = "DepthHack";
|
|
9147
|
+
RenderFx2[RenderFx2["Translucent"] = 32] = "Translucent";
|
|
9148
|
+
RenderFx2[RenderFx2["FrameLerp"] = 64] = "FrameLerp";
|
|
9149
|
+
RenderFx2[RenderFx2["Beam"] = 128] = "Beam";
|
|
9150
|
+
RenderFx2[RenderFx2["CustomLight"] = 256] = "CustomLight";
|
|
9151
|
+
RenderFx2[RenderFx2["Glow"] = 512] = "Glow";
|
|
9152
|
+
RenderFx2[RenderFx2["ShellRed"] = 1024] = "ShellRed";
|
|
9153
|
+
RenderFx2[RenderFx2["ShellGreen"] = 2048] = "ShellGreen";
|
|
9154
|
+
RenderFx2[RenderFx2["ShellBlue"] = 4096] = "ShellBlue";
|
|
9155
|
+
RenderFx2[RenderFx2["IrVisible"] = 32768] = "IrVisible";
|
|
9156
|
+
RenderFx2[RenderFx2["ShellDouble"] = 65536] = "ShellDouble";
|
|
9157
|
+
RenderFx2[RenderFx2["ShellHalfDam"] = 131072] = "ShellHalfDam";
|
|
9158
|
+
RenderFx2[RenderFx2["MinLightPlus"] = 262144] = "MinLightPlus";
|
|
9159
|
+
RenderFx2[RenderFx2["ExtraLight"] = 524288] = "ExtraLight";
|
|
9160
|
+
RenderFx2[RenderFx2["BeamLightning"] = 1048576] = "BeamLightning";
|
|
9161
|
+
return RenderFx2;
|
|
9162
|
+
})(RenderFx || {});
|
|
9069
9163
|
var entityFlags_exports2 = {};
|
|
9070
9164
|
__export3(entityFlags_exports2, {
|
|
9071
9165
|
U_ANGLE1: () => U_ANGLE13,
|
|
@@ -9426,10 +9520,14 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9426
9520
|
this.incomingReliableSequence = 0;
|
|
9427
9521
|
this.outgoingReliableSequence = 0;
|
|
9428
9522
|
this.reliableLength = 0;
|
|
9523
|
+
this.fragmentSendOffset = 0;
|
|
9524
|
+
this.fragmentBuffer = null;
|
|
9525
|
+
this.fragmentLength = 0;
|
|
9526
|
+
this.fragmentReceived = 0;
|
|
9429
9527
|
this.lastReceived = 0;
|
|
9430
9528
|
this.lastSent = 0;
|
|
9431
9529
|
this.remoteAddress = null;
|
|
9432
|
-
this.reliableMessage = new BinaryWriter2(_NetChan4.
|
|
9530
|
+
this.reliableMessage = new BinaryWriter2(_NetChan4.MAX_RELIABLE_BUFFER);
|
|
9433
9531
|
const now = Date.now();
|
|
9434
9532
|
this.lastReceived = now;
|
|
9435
9533
|
this.lastSent = now;
|
|
@@ -9455,6 +9553,10 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9455
9553
|
this.outgoingReliableSequence = 0;
|
|
9456
9554
|
this.reliableLength = 0;
|
|
9457
9555
|
this.reliableMessage.reset();
|
|
9556
|
+
this.fragmentSendOffset = 0;
|
|
9557
|
+
this.fragmentBuffer = null;
|
|
9558
|
+
this.fragmentLength = 0;
|
|
9559
|
+
this.fragmentReceived = 0;
|
|
9458
9560
|
this.lastReceived = Date.now();
|
|
9459
9561
|
this.lastSent = Date.now();
|
|
9460
9562
|
}
|
|
@@ -9464,18 +9566,38 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9464
9566
|
transmit(unreliableData) {
|
|
9465
9567
|
this.outgoingSequence++;
|
|
9466
9568
|
this.lastSent = Date.now();
|
|
9569
|
+
let sendReliableLength = 0;
|
|
9570
|
+
let isFragment = false;
|
|
9571
|
+
let fragmentStart = 0;
|
|
9572
|
+
if (this.reliableLength > 0) {
|
|
9573
|
+
if (this.reliableLength > _NetChan4.FRAGMENT_SIZE) {
|
|
9574
|
+
isFragment = true;
|
|
9575
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
9576
|
+
this.fragmentSendOffset = 0;
|
|
9577
|
+
}
|
|
9578
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
9579
|
+
sendReliableLength = remaining;
|
|
9580
|
+
if (sendReliableLength > _NetChan4.FRAGMENT_SIZE) {
|
|
9581
|
+
sendReliableLength = _NetChan4.FRAGMENT_SIZE;
|
|
9582
|
+
}
|
|
9583
|
+
fragmentStart = this.fragmentSendOffset;
|
|
9584
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
9585
|
+
} else {
|
|
9586
|
+
sendReliableLength = this.reliableLength;
|
|
9587
|
+
}
|
|
9588
|
+
}
|
|
9467
9589
|
const headerSize = _NetChan4.PACKET_HEADER;
|
|
9468
|
-
const
|
|
9590
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
9469
9591
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
9470
|
-
if (headerSize +
|
|
9471
|
-
unreliableSize = _NetChan4.MAX_MSGLEN - headerSize -
|
|
9592
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan4.MAX_MSGLEN) {
|
|
9593
|
+
unreliableSize = _NetChan4.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
9472
9594
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
9473
9595
|
}
|
|
9474
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
9596
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
9475
9597
|
const view = new DataView(buffer);
|
|
9476
9598
|
const result = new Uint8Array(buffer);
|
|
9477
9599
|
let sequence = this.outgoingSequence;
|
|
9478
|
-
if (
|
|
9600
|
+
if (sendReliableLength > 0) {
|
|
9479
9601
|
sequence |= 2147483648;
|
|
9480
9602
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
9481
9603
|
sequence |= 1073741824;
|
|
@@ -9489,13 +9611,23 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9489
9611
|
view.setUint32(4, ack, true);
|
|
9490
9612
|
view.setUint16(8, this.qport, true);
|
|
9491
9613
|
let offset = headerSize;
|
|
9492
|
-
if (
|
|
9493
|
-
|
|
9614
|
+
if (sendReliableLength > 0) {
|
|
9615
|
+
let lengthField = sendReliableLength;
|
|
9616
|
+
if (isFragment) {
|
|
9617
|
+
lengthField |= 32768;
|
|
9618
|
+
}
|
|
9619
|
+
view.setUint16(offset, lengthField, true);
|
|
9494
9620
|
offset += 2;
|
|
9621
|
+
if (isFragment) {
|
|
9622
|
+
view.setUint32(offset, fragmentStart, true);
|
|
9623
|
+
offset += 4;
|
|
9624
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
9625
|
+
offset += 4;
|
|
9626
|
+
}
|
|
9495
9627
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
9496
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
9628
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
9497
9629
|
result.set(reliableBytes, offset);
|
|
9498
|
-
offset +=
|
|
9630
|
+
offset += sendReliableLength;
|
|
9499
9631
|
}
|
|
9500
9632
|
if (unreliableData && unreliableSize > 0) {
|
|
9501
9633
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -9536,6 +9668,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9536
9668
|
this.reliableLength = 0;
|
|
9537
9669
|
this.reliableMessage.reset();
|
|
9538
9670
|
this.outgoingReliableSequence ^= 1;
|
|
9671
|
+
this.fragmentSendOffset = 0;
|
|
9539
9672
|
}
|
|
9540
9673
|
}
|
|
9541
9674
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -9544,13 +9677,45 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9544
9677
|
let reliableData = null;
|
|
9545
9678
|
if (hasReliableData) {
|
|
9546
9679
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
9547
|
-
|
|
9680
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
9548
9681
|
payloadOffset += 2;
|
|
9682
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
9683
|
+
reliableLen &= 32767;
|
|
9549
9684
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
9550
9685
|
if (reliableSeqBit === expectedBit) {
|
|
9551
|
-
|
|
9552
|
-
|
|
9553
|
-
|
|
9686
|
+
if (isFragment) {
|
|
9687
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
9688
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
9689
|
+
payloadOffset += 4;
|
|
9690
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
9691
|
+
payloadOffset += 4;
|
|
9692
|
+
if (fragTotal > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9693
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan4.MAX_RELIABLE_BUFFER}`);
|
|
9694
|
+
return null;
|
|
9695
|
+
}
|
|
9696
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
9697
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
9698
|
+
this.fragmentLength = fragTotal;
|
|
9699
|
+
this.fragmentReceived = 0;
|
|
9700
|
+
}
|
|
9701
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
9702
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
9703
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
9704
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
9705
|
+
this.fragmentReceived += reliableLen;
|
|
9706
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
9707
|
+
reliableData = this.fragmentBuffer;
|
|
9708
|
+
this.incomingReliableSequence++;
|
|
9709
|
+
this.fragmentBuffer = null;
|
|
9710
|
+
this.fragmentLength = 0;
|
|
9711
|
+
this.fragmentReceived = 0;
|
|
9712
|
+
}
|
|
9713
|
+
}
|
|
9714
|
+
} else {
|
|
9715
|
+
this.incomingReliableSequence++;
|
|
9716
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
9717
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
9718
|
+
}
|
|
9554
9719
|
}
|
|
9555
9720
|
payloadOffset += reliableLen;
|
|
9556
9721
|
}
|
|
@@ -9577,7 +9742,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9577
9742
|
* Writes a byte to the reliable message buffer
|
|
9578
9743
|
*/
|
|
9579
9744
|
writeReliableByte(value) {
|
|
9580
|
-
if (this.reliableLength + 1 > _NetChan4.
|
|
9745
|
+
if (this.reliableLength + 1 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9581
9746
|
throw new Error("NetChan reliable buffer overflow");
|
|
9582
9747
|
}
|
|
9583
9748
|
this.reliableMessage.writeByte(value);
|
|
@@ -9587,7 +9752,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9587
9752
|
* Writes a short to the reliable message buffer
|
|
9588
9753
|
*/
|
|
9589
9754
|
writeReliableShort(value) {
|
|
9590
|
-
if (this.reliableLength + 2 > _NetChan4.
|
|
9755
|
+
if (this.reliableLength + 2 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9591
9756
|
throw new Error("NetChan reliable buffer overflow");
|
|
9592
9757
|
}
|
|
9593
9758
|
this.reliableMessage.writeShort(value);
|
|
@@ -9597,7 +9762,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9597
9762
|
* Writes a long to the reliable message buffer
|
|
9598
9763
|
*/
|
|
9599
9764
|
writeReliableLong(value) {
|
|
9600
|
-
if (this.reliableLength + 4 > _NetChan4.
|
|
9765
|
+
if (this.reliableLength + 4 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9601
9766
|
throw new Error("NetChan reliable buffer overflow");
|
|
9602
9767
|
}
|
|
9603
9768
|
this.reliableMessage.writeLong(value);
|
|
@@ -9608,7 +9773,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9608
9773
|
*/
|
|
9609
9774
|
writeReliableString(value) {
|
|
9610
9775
|
const len2 = value.length + 1;
|
|
9611
|
-
if (this.reliableLength + len2 > _NetChan4.
|
|
9776
|
+
if (this.reliableLength + len2 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9612
9777
|
throw new Error("NetChan reliable buffer overflow");
|
|
9613
9778
|
}
|
|
9614
9779
|
this.reliableMessage.writeString(value);
|
|
@@ -9641,6 +9806,7 @@ _NetChan3.MAX_MSGLEN = 1400;
|
|
|
9641
9806
|
_NetChan3.FRAGMENT_SIZE = 1024;
|
|
9642
9807
|
_NetChan3.PACKET_HEADER = 10;
|
|
9643
9808
|
_NetChan3.HEADER_OVERHEAD = _NetChan3.PACKET_HEADER + 2;
|
|
9809
|
+
_NetChan3.MAX_RELIABLE_BUFFER = 262144;
|
|
9644
9810
|
var NetChan = _NetChan3;
|
|
9645
9811
|
var AmmoType2 = /* @__PURE__ */ ((AmmoType22) => {
|
|
9646
9812
|
AmmoType22[AmmoType22["Bullets"] = 0] = "Bullets";
|
|
@@ -10251,6 +10417,21 @@ function buildRenderableEntities(latestEntities, previousEntities, alpha, config
|
|
|
10251
10417
|
mat4_exports.rotateX(mat, mat, angles.x * Math.PI / 180);
|
|
10252
10418
|
mat4_exports.scale(mat, mat, [scale3, scale3, scale3]);
|
|
10253
10419
|
const skinName = skinNum !== void 0 && skinNum > 0 ? configStrings.getImageName(skinNum) : void 0;
|
|
10420
|
+
let tint;
|
|
10421
|
+
const renderfx = ent.renderfx ?? 0;
|
|
10422
|
+
if ((renderfx & (RenderFx.ShellGreen | RenderFx.ShellBlue)) === (RenderFx.ShellGreen | RenderFx.ShellBlue)) {
|
|
10423
|
+
tint = [0, 1, 1, 1];
|
|
10424
|
+
} else if (renderfx & RenderFx.ShellRed) {
|
|
10425
|
+
tint = [1, 0, 0, 1];
|
|
10426
|
+
} else if (renderfx & RenderFx.ShellGreen) {
|
|
10427
|
+
tint = [0, 1, 0, 1];
|
|
10428
|
+
} else if (renderfx & RenderFx.ShellBlue) {
|
|
10429
|
+
tint = [0, 0, 1, 1];
|
|
10430
|
+
} else if (renderfx & RenderFx.ShellDouble) {
|
|
10431
|
+
tint = [1, 1, 0, 1];
|
|
10432
|
+
} else if (renderfx & RenderFx.ShellHalfDam) {
|
|
10433
|
+
tint = [0.5, 0.5, 0.5, 1];
|
|
10434
|
+
}
|
|
10254
10435
|
if (model.header.magic === 844121161) {
|
|
10255
10436
|
renderables.push({
|
|
10256
10437
|
type: "md2",
|
|
@@ -10263,7 +10444,8 @@ function buildRenderableEntities(latestEntities, previousEntities, alpha, config
|
|
|
10263
10444
|
},
|
|
10264
10445
|
transform: mat,
|
|
10265
10446
|
skin: skinName,
|
|
10266
|
-
alpha: normalizedAlpha
|
|
10447
|
+
alpha: normalizedAlpha,
|
|
10448
|
+
tint
|
|
10267
10449
|
});
|
|
10268
10450
|
} else if (model.header.magic === 860898377) {
|
|
10269
10451
|
renderables.push({
|
|
@@ -10275,7 +10457,8 @@ function buildRenderableEntities(latestEntities, previousEntities, alpha, config
|
|
|
10275
10457
|
lerp: alpha
|
|
10276
10458
|
},
|
|
10277
10459
|
transform: mat,
|
|
10278
|
-
alpha: normalizedAlpha
|
|
10460
|
+
alpha: normalizedAlpha,
|
|
10461
|
+
tint
|
|
10279
10462
|
// Lighting? Skins?
|
|
10280
10463
|
});
|
|
10281
10464
|
}
|