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
|
@@ -2410,10 +2410,14 @@ var _NetChan = class _NetChan2 {
|
|
|
2410
2410
|
this.incomingReliableSequence = 0;
|
|
2411
2411
|
this.outgoingReliableSequence = 0;
|
|
2412
2412
|
this.reliableLength = 0;
|
|
2413
|
+
this.fragmentSendOffset = 0;
|
|
2414
|
+
this.fragmentBuffer = null;
|
|
2415
|
+
this.fragmentLength = 0;
|
|
2416
|
+
this.fragmentReceived = 0;
|
|
2413
2417
|
this.lastReceived = 0;
|
|
2414
2418
|
this.lastSent = 0;
|
|
2415
2419
|
this.remoteAddress = null;
|
|
2416
|
-
this.reliableMessage = new BinaryWriter(_NetChan2.
|
|
2420
|
+
this.reliableMessage = new BinaryWriter(_NetChan2.MAX_RELIABLE_BUFFER);
|
|
2417
2421
|
const now = Date.now();
|
|
2418
2422
|
this.lastReceived = now;
|
|
2419
2423
|
this.lastSent = now;
|
|
@@ -2439,6 +2443,10 @@ var _NetChan = class _NetChan2 {
|
|
|
2439
2443
|
this.outgoingReliableSequence = 0;
|
|
2440
2444
|
this.reliableLength = 0;
|
|
2441
2445
|
this.reliableMessage.reset();
|
|
2446
|
+
this.fragmentSendOffset = 0;
|
|
2447
|
+
this.fragmentBuffer = null;
|
|
2448
|
+
this.fragmentLength = 0;
|
|
2449
|
+
this.fragmentReceived = 0;
|
|
2442
2450
|
this.lastReceived = Date.now();
|
|
2443
2451
|
this.lastSent = Date.now();
|
|
2444
2452
|
}
|
|
@@ -2448,18 +2456,38 @@ var _NetChan = class _NetChan2 {
|
|
|
2448
2456
|
transmit(unreliableData) {
|
|
2449
2457
|
this.outgoingSequence++;
|
|
2450
2458
|
this.lastSent = Date.now();
|
|
2459
|
+
let sendReliableLength = 0;
|
|
2460
|
+
let isFragment = false;
|
|
2461
|
+
let fragmentStart = 0;
|
|
2462
|
+
if (this.reliableLength > 0) {
|
|
2463
|
+
if (this.reliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
2464
|
+
isFragment = true;
|
|
2465
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
2466
|
+
this.fragmentSendOffset = 0;
|
|
2467
|
+
}
|
|
2468
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
2469
|
+
sendReliableLength = remaining;
|
|
2470
|
+
if (sendReliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
2471
|
+
sendReliableLength = _NetChan2.FRAGMENT_SIZE;
|
|
2472
|
+
}
|
|
2473
|
+
fragmentStart = this.fragmentSendOffset;
|
|
2474
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
2475
|
+
} else {
|
|
2476
|
+
sendReliableLength = this.reliableLength;
|
|
2477
|
+
}
|
|
2478
|
+
}
|
|
2451
2479
|
const headerSize = _NetChan2.PACKET_HEADER;
|
|
2452
|
-
const
|
|
2480
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
2453
2481
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
2454
|
-
if (headerSize +
|
|
2455
|
-
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize -
|
|
2482
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan2.MAX_MSGLEN) {
|
|
2483
|
+
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
2456
2484
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
2457
2485
|
}
|
|
2458
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
2486
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
2459
2487
|
const view = new DataView(buffer);
|
|
2460
2488
|
const result = new Uint8Array(buffer);
|
|
2461
2489
|
let sequence = this.outgoingSequence;
|
|
2462
|
-
if (
|
|
2490
|
+
if (sendReliableLength > 0) {
|
|
2463
2491
|
sequence |= 2147483648;
|
|
2464
2492
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
2465
2493
|
sequence |= 1073741824;
|
|
@@ -2473,13 +2501,23 @@ var _NetChan = class _NetChan2 {
|
|
|
2473
2501
|
view.setUint32(4, ack, true);
|
|
2474
2502
|
view.setUint16(8, this.qport, true);
|
|
2475
2503
|
let offset = headerSize;
|
|
2476
|
-
if (
|
|
2477
|
-
|
|
2504
|
+
if (sendReliableLength > 0) {
|
|
2505
|
+
let lengthField = sendReliableLength;
|
|
2506
|
+
if (isFragment) {
|
|
2507
|
+
lengthField |= 32768;
|
|
2508
|
+
}
|
|
2509
|
+
view.setUint16(offset, lengthField, true);
|
|
2478
2510
|
offset += 2;
|
|
2511
|
+
if (isFragment) {
|
|
2512
|
+
view.setUint32(offset, fragmentStart, true);
|
|
2513
|
+
offset += 4;
|
|
2514
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
2515
|
+
offset += 4;
|
|
2516
|
+
}
|
|
2479
2517
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
2480
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
2518
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
2481
2519
|
result.set(reliableBytes, offset);
|
|
2482
|
-
offset +=
|
|
2520
|
+
offset += sendReliableLength;
|
|
2483
2521
|
}
|
|
2484
2522
|
if (unreliableData && unreliableSize > 0) {
|
|
2485
2523
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -2520,6 +2558,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2520
2558
|
this.reliableLength = 0;
|
|
2521
2559
|
this.reliableMessage.reset();
|
|
2522
2560
|
this.outgoingReliableSequence ^= 1;
|
|
2561
|
+
this.fragmentSendOffset = 0;
|
|
2523
2562
|
}
|
|
2524
2563
|
}
|
|
2525
2564
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -2528,13 +2567,45 @@ var _NetChan = class _NetChan2 {
|
|
|
2528
2567
|
let reliableData = null;
|
|
2529
2568
|
if (hasReliableData) {
|
|
2530
2569
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
2531
|
-
|
|
2570
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
2532
2571
|
payloadOffset += 2;
|
|
2572
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
2573
|
+
reliableLen &= 32767;
|
|
2533
2574
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
2534
2575
|
if (reliableSeqBit === expectedBit) {
|
|
2535
|
-
|
|
2536
|
-
|
|
2537
|
-
|
|
2576
|
+
if (isFragment) {
|
|
2577
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
2578
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
2579
|
+
payloadOffset += 4;
|
|
2580
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
2581
|
+
payloadOffset += 4;
|
|
2582
|
+
if (fragTotal > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2583
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan2.MAX_RELIABLE_BUFFER}`);
|
|
2584
|
+
return null;
|
|
2585
|
+
}
|
|
2586
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
2587
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
2588
|
+
this.fragmentLength = fragTotal;
|
|
2589
|
+
this.fragmentReceived = 0;
|
|
2590
|
+
}
|
|
2591
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
2592
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
2593
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
2594
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
2595
|
+
this.fragmentReceived += reliableLen;
|
|
2596
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
2597
|
+
reliableData = this.fragmentBuffer;
|
|
2598
|
+
this.incomingReliableSequence++;
|
|
2599
|
+
this.fragmentBuffer = null;
|
|
2600
|
+
this.fragmentLength = 0;
|
|
2601
|
+
this.fragmentReceived = 0;
|
|
2602
|
+
}
|
|
2603
|
+
}
|
|
2604
|
+
} else {
|
|
2605
|
+
this.incomingReliableSequence++;
|
|
2606
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
2607
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
2608
|
+
}
|
|
2538
2609
|
}
|
|
2539
2610
|
payloadOffset += reliableLen;
|
|
2540
2611
|
}
|
|
@@ -2561,7 +2632,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2561
2632
|
* Writes a byte to the reliable message buffer
|
|
2562
2633
|
*/
|
|
2563
2634
|
writeReliableByte(value) {
|
|
2564
|
-
if (this.reliableLength + 1 > _NetChan2.
|
|
2635
|
+
if (this.reliableLength + 1 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2565
2636
|
throw new Error("NetChan reliable buffer overflow");
|
|
2566
2637
|
}
|
|
2567
2638
|
this.reliableMessage.writeByte(value);
|
|
@@ -2571,7 +2642,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2571
2642
|
* Writes a short to the reliable message buffer
|
|
2572
2643
|
*/
|
|
2573
2644
|
writeReliableShort(value) {
|
|
2574
|
-
if (this.reliableLength + 2 > _NetChan2.
|
|
2645
|
+
if (this.reliableLength + 2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2575
2646
|
throw new Error("NetChan reliable buffer overflow");
|
|
2576
2647
|
}
|
|
2577
2648
|
this.reliableMessage.writeShort(value);
|
|
@@ -2581,7 +2652,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2581
2652
|
* Writes a long to the reliable message buffer
|
|
2582
2653
|
*/
|
|
2583
2654
|
writeReliableLong(value) {
|
|
2584
|
-
if (this.reliableLength + 4 > _NetChan2.
|
|
2655
|
+
if (this.reliableLength + 4 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2585
2656
|
throw new Error("NetChan reliable buffer overflow");
|
|
2586
2657
|
}
|
|
2587
2658
|
this.reliableMessage.writeLong(value);
|
|
@@ -2592,7 +2663,7 @@ var _NetChan = class _NetChan2 {
|
|
|
2592
2663
|
*/
|
|
2593
2664
|
writeReliableString(value) {
|
|
2594
2665
|
const len2 = value.length + 1;
|
|
2595
|
-
if (this.reliableLength + len2 > _NetChan2.
|
|
2666
|
+
if (this.reliableLength + len2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
2596
2667
|
throw new Error("NetChan reliable buffer overflow");
|
|
2597
2668
|
}
|
|
2598
2669
|
this.reliableMessage.writeString(value);
|
|
@@ -2625,6 +2696,7 @@ _NetChan.MAX_MSGLEN = 1400;
|
|
|
2625
2696
|
_NetChan.FRAGMENT_SIZE = 1024;
|
|
2626
2697
|
_NetChan.PACKET_HEADER = 10;
|
|
2627
2698
|
_NetChan.HEADER_OVERHEAD = _NetChan.PACKET_HEADER + 2;
|
|
2699
|
+
_NetChan.MAX_RELIABLE_BUFFER = 262144;
|
|
2628
2700
|
var AmmoType = /* @__PURE__ */ ((AmmoType22) => {
|
|
2629
2701
|
AmmoType22[AmmoType22["Bullets"] = 0] = "Bullets";
|
|
2630
2702
|
AmmoType22[AmmoType22["Shells"] = 1] = "Shells";
|
|
@@ -9034,6 +9106,28 @@ function writeUserCommand(writer, cmd) {
|
|
|
9034
9106
|
writer.writeByte(0);
|
|
9035
9107
|
writer.writeByte(0);
|
|
9036
9108
|
}
|
|
9109
|
+
var RenderFx = /* @__PURE__ */ ((RenderFx2) => {
|
|
9110
|
+
RenderFx2[RenderFx2["MinLight"] = 1] = "MinLight";
|
|
9111
|
+
RenderFx2[RenderFx2["ViewerModel"] = 2] = "ViewerModel";
|
|
9112
|
+
RenderFx2[RenderFx2["WeaponModel"] = 4] = "WeaponModel";
|
|
9113
|
+
RenderFx2[RenderFx2["FullBright"] = 8] = "FullBright";
|
|
9114
|
+
RenderFx2[RenderFx2["DepthHack"] = 16] = "DepthHack";
|
|
9115
|
+
RenderFx2[RenderFx2["Translucent"] = 32] = "Translucent";
|
|
9116
|
+
RenderFx2[RenderFx2["FrameLerp"] = 64] = "FrameLerp";
|
|
9117
|
+
RenderFx2[RenderFx2["Beam"] = 128] = "Beam";
|
|
9118
|
+
RenderFx2[RenderFx2["CustomLight"] = 256] = "CustomLight";
|
|
9119
|
+
RenderFx2[RenderFx2["Glow"] = 512] = "Glow";
|
|
9120
|
+
RenderFx2[RenderFx2["ShellRed"] = 1024] = "ShellRed";
|
|
9121
|
+
RenderFx2[RenderFx2["ShellGreen"] = 2048] = "ShellGreen";
|
|
9122
|
+
RenderFx2[RenderFx2["ShellBlue"] = 4096] = "ShellBlue";
|
|
9123
|
+
RenderFx2[RenderFx2["IrVisible"] = 32768] = "IrVisible";
|
|
9124
|
+
RenderFx2[RenderFx2["ShellDouble"] = 65536] = "ShellDouble";
|
|
9125
|
+
RenderFx2[RenderFx2["ShellHalfDam"] = 131072] = "ShellHalfDam";
|
|
9126
|
+
RenderFx2[RenderFx2["MinLightPlus"] = 262144] = "MinLightPlus";
|
|
9127
|
+
RenderFx2[RenderFx2["ExtraLight"] = 524288] = "ExtraLight";
|
|
9128
|
+
RenderFx2[RenderFx2["BeamLightning"] = 1048576] = "BeamLightning";
|
|
9129
|
+
return RenderFx2;
|
|
9130
|
+
})(RenderFx || {});
|
|
9037
9131
|
var entityFlags_exports2 = {};
|
|
9038
9132
|
__export3(entityFlags_exports2, {
|
|
9039
9133
|
U_ANGLE1: () => U_ANGLE13,
|
|
@@ -9394,10 +9488,14 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9394
9488
|
this.incomingReliableSequence = 0;
|
|
9395
9489
|
this.outgoingReliableSequence = 0;
|
|
9396
9490
|
this.reliableLength = 0;
|
|
9491
|
+
this.fragmentSendOffset = 0;
|
|
9492
|
+
this.fragmentBuffer = null;
|
|
9493
|
+
this.fragmentLength = 0;
|
|
9494
|
+
this.fragmentReceived = 0;
|
|
9397
9495
|
this.lastReceived = 0;
|
|
9398
9496
|
this.lastSent = 0;
|
|
9399
9497
|
this.remoteAddress = null;
|
|
9400
|
-
this.reliableMessage = new BinaryWriter2(_NetChan4.
|
|
9498
|
+
this.reliableMessage = new BinaryWriter2(_NetChan4.MAX_RELIABLE_BUFFER);
|
|
9401
9499
|
const now = Date.now();
|
|
9402
9500
|
this.lastReceived = now;
|
|
9403
9501
|
this.lastSent = now;
|
|
@@ -9423,6 +9521,10 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9423
9521
|
this.outgoingReliableSequence = 0;
|
|
9424
9522
|
this.reliableLength = 0;
|
|
9425
9523
|
this.reliableMessage.reset();
|
|
9524
|
+
this.fragmentSendOffset = 0;
|
|
9525
|
+
this.fragmentBuffer = null;
|
|
9526
|
+
this.fragmentLength = 0;
|
|
9527
|
+
this.fragmentReceived = 0;
|
|
9426
9528
|
this.lastReceived = Date.now();
|
|
9427
9529
|
this.lastSent = Date.now();
|
|
9428
9530
|
}
|
|
@@ -9432,18 +9534,38 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9432
9534
|
transmit(unreliableData) {
|
|
9433
9535
|
this.outgoingSequence++;
|
|
9434
9536
|
this.lastSent = Date.now();
|
|
9537
|
+
let sendReliableLength = 0;
|
|
9538
|
+
let isFragment = false;
|
|
9539
|
+
let fragmentStart = 0;
|
|
9540
|
+
if (this.reliableLength > 0) {
|
|
9541
|
+
if (this.reliableLength > _NetChan4.FRAGMENT_SIZE) {
|
|
9542
|
+
isFragment = true;
|
|
9543
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
9544
|
+
this.fragmentSendOffset = 0;
|
|
9545
|
+
}
|
|
9546
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
9547
|
+
sendReliableLength = remaining;
|
|
9548
|
+
if (sendReliableLength > _NetChan4.FRAGMENT_SIZE) {
|
|
9549
|
+
sendReliableLength = _NetChan4.FRAGMENT_SIZE;
|
|
9550
|
+
}
|
|
9551
|
+
fragmentStart = this.fragmentSendOffset;
|
|
9552
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
9553
|
+
} else {
|
|
9554
|
+
sendReliableLength = this.reliableLength;
|
|
9555
|
+
}
|
|
9556
|
+
}
|
|
9435
9557
|
const headerSize = _NetChan4.PACKET_HEADER;
|
|
9436
|
-
const
|
|
9558
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
9437
9559
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
9438
|
-
if (headerSize +
|
|
9439
|
-
unreliableSize = _NetChan4.MAX_MSGLEN - headerSize -
|
|
9560
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan4.MAX_MSGLEN) {
|
|
9561
|
+
unreliableSize = _NetChan4.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
9440
9562
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
9441
9563
|
}
|
|
9442
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
9564
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
9443
9565
|
const view = new DataView(buffer);
|
|
9444
9566
|
const result = new Uint8Array(buffer);
|
|
9445
9567
|
let sequence = this.outgoingSequence;
|
|
9446
|
-
if (
|
|
9568
|
+
if (sendReliableLength > 0) {
|
|
9447
9569
|
sequence |= 2147483648;
|
|
9448
9570
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
9449
9571
|
sequence |= 1073741824;
|
|
@@ -9457,13 +9579,23 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9457
9579
|
view.setUint32(4, ack, true);
|
|
9458
9580
|
view.setUint16(8, this.qport, true);
|
|
9459
9581
|
let offset = headerSize;
|
|
9460
|
-
if (
|
|
9461
|
-
|
|
9582
|
+
if (sendReliableLength > 0) {
|
|
9583
|
+
let lengthField = sendReliableLength;
|
|
9584
|
+
if (isFragment) {
|
|
9585
|
+
lengthField |= 32768;
|
|
9586
|
+
}
|
|
9587
|
+
view.setUint16(offset, lengthField, true);
|
|
9462
9588
|
offset += 2;
|
|
9589
|
+
if (isFragment) {
|
|
9590
|
+
view.setUint32(offset, fragmentStart, true);
|
|
9591
|
+
offset += 4;
|
|
9592
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
9593
|
+
offset += 4;
|
|
9594
|
+
}
|
|
9463
9595
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
9464
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
9596
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
9465
9597
|
result.set(reliableBytes, offset);
|
|
9466
|
-
offset +=
|
|
9598
|
+
offset += sendReliableLength;
|
|
9467
9599
|
}
|
|
9468
9600
|
if (unreliableData && unreliableSize > 0) {
|
|
9469
9601
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -9504,6 +9636,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9504
9636
|
this.reliableLength = 0;
|
|
9505
9637
|
this.reliableMessage.reset();
|
|
9506
9638
|
this.outgoingReliableSequence ^= 1;
|
|
9639
|
+
this.fragmentSendOffset = 0;
|
|
9507
9640
|
}
|
|
9508
9641
|
}
|
|
9509
9642
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -9512,13 +9645,45 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9512
9645
|
let reliableData = null;
|
|
9513
9646
|
if (hasReliableData) {
|
|
9514
9647
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
9515
|
-
|
|
9648
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
9516
9649
|
payloadOffset += 2;
|
|
9650
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
9651
|
+
reliableLen &= 32767;
|
|
9517
9652
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
9518
9653
|
if (reliableSeqBit === expectedBit) {
|
|
9519
|
-
|
|
9520
|
-
|
|
9521
|
-
|
|
9654
|
+
if (isFragment) {
|
|
9655
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
9656
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
9657
|
+
payloadOffset += 4;
|
|
9658
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
9659
|
+
payloadOffset += 4;
|
|
9660
|
+
if (fragTotal > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9661
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan4.MAX_RELIABLE_BUFFER}`);
|
|
9662
|
+
return null;
|
|
9663
|
+
}
|
|
9664
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
9665
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
9666
|
+
this.fragmentLength = fragTotal;
|
|
9667
|
+
this.fragmentReceived = 0;
|
|
9668
|
+
}
|
|
9669
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
9670
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
9671
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
9672
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
9673
|
+
this.fragmentReceived += reliableLen;
|
|
9674
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
9675
|
+
reliableData = this.fragmentBuffer;
|
|
9676
|
+
this.incomingReliableSequence++;
|
|
9677
|
+
this.fragmentBuffer = null;
|
|
9678
|
+
this.fragmentLength = 0;
|
|
9679
|
+
this.fragmentReceived = 0;
|
|
9680
|
+
}
|
|
9681
|
+
}
|
|
9682
|
+
} else {
|
|
9683
|
+
this.incomingReliableSequence++;
|
|
9684
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
9685
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
9686
|
+
}
|
|
9522
9687
|
}
|
|
9523
9688
|
payloadOffset += reliableLen;
|
|
9524
9689
|
}
|
|
@@ -9545,7 +9710,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9545
9710
|
* Writes a byte to the reliable message buffer
|
|
9546
9711
|
*/
|
|
9547
9712
|
writeReliableByte(value) {
|
|
9548
|
-
if (this.reliableLength + 1 > _NetChan4.
|
|
9713
|
+
if (this.reliableLength + 1 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9549
9714
|
throw new Error("NetChan reliable buffer overflow");
|
|
9550
9715
|
}
|
|
9551
9716
|
this.reliableMessage.writeByte(value);
|
|
@@ -9555,7 +9720,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9555
9720
|
* Writes a short to the reliable message buffer
|
|
9556
9721
|
*/
|
|
9557
9722
|
writeReliableShort(value) {
|
|
9558
|
-
if (this.reliableLength + 2 > _NetChan4.
|
|
9723
|
+
if (this.reliableLength + 2 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9559
9724
|
throw new Error("NetChan reliable buffer overflow");
|
|
9560
9725
|
}
|
|
9561
9726
|
this.reliableMessage.writeShort(value);
|
|
@@ -9565,7 +9730,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9565
9730
|
* Writes a long to the reliable message buffer
|
|
9566
9731
|
*/
|
|
9567
9732
|
writeReliableLong(value) {
|
|
9568
|
-
if (this.reliableLength + 4 > _NetChan4.
|
|
9733
|
+
if (this.reliableLength + 4 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9569
9734
|
throw new Error("NetChan reliable buffer overflow");
|
|
9570
9735
|
}
|
|
9571
9736
|
this.reliableMessage.writeLong(value);
|
|
@@ -9576,7 +9741,7 @@ var _NetChan3 = class _NetChan4 {
|
|
|
9576
9741
|
*/
|
|
9577
9742
|
writeReliableString(value) {
|
|
9578
9743
|
const len2 = value.length + 1;
|
|
9579
|
-
if (this.reliableLength + len2 > _NetChan4.
|
|
9744
|
+
if (this.reliableLength + len2 > _NetChan4.MAX_RELIABLE_BUFFER) {
|
|
9580
9745
|
throw new Error("NetChan reliable buffer overflow");
|
|
9581
9746
|
}
|
|
9582
9747
|
this.reliableMessage.writeString(value);
|
|
@@ -9609,6 +9774,7 @@ _NetChan3.MAX_MSGLEN = 1400;
|
|
|
9609
9774
|
_NetChan3.FRAGMENT_SIZE = 1024;
|
|
9610
9775
|
_NetChan3.PACKET_HEADER = 10;
|
|
9611
9776
|
_NetChan3.HEADER_OVERHEAD = _NetChan3.PACKET_HEADER + 2;
|
|
9777
|
+
_NetChan3.MAX_RELIABLE_BUFFER = 262144;
|
|
9612
9778
|
var NetChan = _NetChan3;
|
|
9613
9779
|
var AmmoType2 = /* @__PURE__ */ ((AmmoType22) => {
|
|
9614
9780
|
AmmoType22[AmmoType22["Bullets"] = 0] = "Bullets";
|
|
@@ -10219,6 +10385,21 @@ function buildRenderableEntities(latestEntities, previousEntities, alpha, config
|
|
|
10219
10385
|
mat4_exports.rotateX(mat, mat, angles.x * Math.PI / 180);
|
|
10220
10386
|
mat4_exports.scale(mat, mat, [scale3, scale3, scale3]);
|
|
10221
10387
|
const skinName = skinNum !== void 0 && skinNum > 0 ? configStrings.getImageName(skinNum) : void 0;
|
|
10388
|
+
let tint;
|
|
10389
|
+
const renderfx = ent.renderfx ?? 0;
|
|
10390
|
+
if ((renderfx & (RenderFx.ShellGreen | RenderFx.ShellBlue)) === (RenderFx.ShellGreen | RenderFx.ShellBlue)) {
|
|
10391
|
+
tint = [0, 1, 1, 1];
|
|
10392
|
+
} else if (renderfx & RenderFx.ShellRed) {
|
|
10393
|
+
tint = [1, 0, 0, 1];
|
|
10394
|
+
} else if (renderfx & RenderFx.ShellGreen) {
|
|
10395
|
+
tint = [0, 1, 0, 1];
|
|
10396
|
+
} else if (renderfx & RenderFx.ShellBlue) {
|
|
10397
|
+
tint = [0, 0, 1, 1];
|
|
10398
|
+
} else if (renderfx & RenderFx.ShellDouble) {
|
|
10399
|
+
tint = [1, 1, 0, 1];
|
|
10400
|
+
} else if (renderfx & RenderFx.ShellHalfDam) {
|
|
10401
|
+
tint = [0.5, 0.5, 0.5, 1];
|
|
10402
|
+
}
|
|
10222
10403
|
if (model.header.magic === 844121161) {
|
|
10223
10404
|
renderables.push({
|
|
10224
10405
|
type: "md2",
|
|
@@ -10231,7 +10412,8 @@ function buildRenderableEntities(latestEntities, previousEntities, alpha, config
|
|
|
10231
10412
|
},
|
|
10232
10413
|
transform: mat,
|
|
10233
10414
|
skin: skinName,
|
|
10234
|
-
alpha: normalizedAlpha
|
|
10415
|
+
alpha: normalizedAlpha,
|
|
10416
|
+
tint
|
|
10235
10417
|
});
|
|
10236
10418
|
} else if (model.header.magic === 860898377) {
|
|
10237
10419
|
renderables.push({
|
|
@@ -10243,7 +10425,8 @@ function buildRenderableEntities(latestEntities, previousEntities, alpha, config
|
|
|
10243
10425
|
lerp: alpha
|
|
10244
10426
|
},
|
|
10245
10427
|
transform: mat,
|
|
10246
|
-
alpha: normalizedAlpha
|
|
10428
|
+
alpha: normalizedAlpha,
|
|
10429
|
+
tint
|
|
10247
10430
|
// Lighting? Skins?
|
|
10248
10431
|
});
|
|
10249
10432
|
}
|