quake2ts 0.0.301 → 0.0.302
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 +8 -8
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +180 -36
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +180 -36
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +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/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 +90 -18
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +90 -18
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +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
|
@@ -1431,10 +1431,14 @@ var init_esm = __esm({
|
|
|
1431
1431
|
this.incomingReliableSequence = 0;
|
|
1432
1432
|
this.outgoingReliableSequence = 0;
|
|
1433
1433
|
this.reliableLength = 0;
|
|
1434
|
+
this.fragmentSendOffset = 0;
|
|
1435
|
+
this.fragmentBuffer = null;
|
|
1436
|
+
this.fragmentLength = 0;
|
|
1437
|
+
this.fragmentReceived = 0;
|
|
1434
1438
|
this.lastReceived = 0;
|
|
1435
1439
|
this.lastSent = 0;
|
|
1436
1440
|
this.remoteAddress = null;
|
|
1437
|
-
this.reliableMessage = new BinaryWriter(_NetChan2.
|
|
1441
|
+
this.reliableMessage = new BinaryWriter(_NetChan2.MAX_RELIABLE_BUFFER);
|
|
1438
1442
|
const now = Date.now();
|
|
1439
1443
|
this.lastReceived = now;
|
|
1440
1444
|
this.lastSent = now;
|
|
@@ -1460,6 +1464,10 @@ var init_esm = __esm({
|
|
|
1460
1464
|
this.outgoingReliableSequence = 0;
|
|
1461
1465
|
this.reliableLength = 0;
|
|
1462
1466
|
this.reliableMessage.reset();
|
|
1467
|
+
this.fragmentSendOffset = 0;
|
|
1468
|
+
this.fragmentBuffer = null;
|
|
1469
|
+
this.fragmentLength = 0;
|
|
1470
|
+
this.fragmentReceived = 0;
|
|
1463
1471
|
this.lastReceived = Date.now();
|
|
1464
1472
|
this.lastSent = Date.now();
|
|
1465
1473
|
}
|
|
@@ -1469,18 +1477,38 @@ var init_esm = __esm({
|
|
|
1469
1477
|
transmit(unreliableData) {
|
|
1470
1478
|
this.outgoingSequence++;
|
|
1471
1479
|
this.lastSent = Date.now();
|
|
1480
|
+
let sendReliableLength = 0;
|
|
1481
|
+
let isFragment = false;
|
|
1482
|
+
let fragmentStart = 0;
|
|
1483
|
+
if (this.reliableLength > 0) {
|
|
1484
|
+
if (this.reliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
1485
|
+
isFragment = true;
|
|
1486
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
1487
|
+
this.fragmentSendOffset = 0;
|
|
1488
|
+
}
|
|
1489
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
1490
|
+
sendReliableLength = remaining;
|
|
1491
|
+
if (sendReliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
1492
|
+
sendReliableLength = _NetChan2.FRAGMENT_SIZE;
|
|
1493
|
+
}
|
|
1494
|
+
fragmentStart = this.fragmentSendOffset;
|
|
1495
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
1496
|
+
} else {
|
|
1497
|
+
sendReliableLength = this.reliableLength;
|
|
1498
|
+
}
|
|
1499
|
+
}
|
|
1472
1500
|
const headerSize = _NetChan2.PACKET_HEADER;
|
|
1473
|
-
const
|
|
1501
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
1474
1502
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
1475
|
-
if (headerSize +
|
|
1476
|
-
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize -
|
|
1503
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan2.MAX_MSGLEN) {
|
|
1504
|
+
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
1477
1505
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
1478
1506
|
}
|
|
1479
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
1507
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
1480
1508
|
const view = new DataView(buffer);
|
|
1481
1509
|
const result = new Uint8Array(buffer);
|
|
1482
1510
|
let sequence = this.outgoingSequence;
|
|
1483
|
-
if (
|
|
1511
|
+
if (sendReliableLength > 0) {
|
|
1484
1512
|
sequence |= 2147483648;
|
|
1485
1513
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
1486
1514
|
sequence |= 1073741824;
|
|
@@ -1494,13 +1522,23 @@ var init_esm = __esm({
|
|
|
1494
1522
|
view.setUint32(4, ack, true);
|
|
1495
1523
|
view.setUint16(8, this.qport, true);
|
|
1496
1524
|
let offset = headerSize;
|
|
1497
|
-
if (
|
|
1498
|
-
|
|
1525
|
+
if (sendReliableLength > 0) {
|
|
1526
|
+
let lengthField = sendReliableLength;
|
|
1527
|
+
if (isFragment) {
|
|
1528
|
+
lengthField |= 32768;
|
|
1529
|
+
}
|
|
1530
|
+
view.setUint16(offset, lengthField, true);
|
|
1499
1531
|
offset += 2;
|
|
1532
|
+
if (isFragment) {
|
|
1533
|
+
view.setUint32(offset, fragmentStart, true);
|
|
1534
|
+
offset += 4;
|
|
1535
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
1536
|
+
offset += 4;
|
|
1537
|
+
}
|
|
1500
1538
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
1501
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
1539
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
1502
1540
|
result.set(reliableBytes, offset);
|
|
1503
|
-
offset +=
|
|
1541
|
+
offset += sendReliableLength;
|
|
1504
1542
|
}
|
|
1505
1543
|
if (unreliableData && unreliableSize > 0) {
|
|
1506
1544
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -1541,6 +1579,7 @@ var init_esm = __esm({
|
|
|
1541
1579
|
this.reliableLength = 0;
|
|
1542
1580
|
this.reliableMessage.reset();
|
|
1543
1581
|
this.outgoingReliableSequence ^= 1;
|
|
1582
|
+
this.fragmentSendOffset = 0;
|
|
1544
1583
|
}
|
|
1545
1584
|
}
|
|
1546
1585
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -1549,13 +1588,45 @@ var init_esm = __esm({
|
|
|
1549
1588
|
let reliableData = null;
|
|
1550
1589
|
if (hasReliableData) {
|
|
1551
1590
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
1552
|
-
|
|
1591
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
1553
1592
|
payloadOffset += 2;
|
|
1593
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
1594
|
+
reliableLen &= 32767;
|
|
1554
1595
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
1555
1596
|
if (reliableSeqBit === expectedBit) {
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1597
|
+
if (isFragment) {
|
|
1598
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
1599
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
1600
|
+
payloadOffset += 4;
|
|
1601
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
1602
|
+
payloadOffset += 4;
|
|
1603
|
+
if (fragTotal > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1604
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan2.MAX_RELIABLE_BUFFER}`);
|
|
1605
|
+
return null;
|
|
1606
|
+
}
|
|
1607
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
1608
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
1609
|
+
this.fragmentLength = fragTotal;
|
|
1610
|
+
this.fragmentReceived = 0;
|
|
1611
|
+
}
|
|
1612
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
1613
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
1614
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
1615
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
1616
|
+
this.fragmentReceived += reliableLen;
|
|
1617
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
1618
|
+
reliableData = this.fragmentBuffer;
|
|
1619
|
+
this.incomingReliableSequence++;
|
|
1620
|
+
this.fragmentBuffer = null;
|
|
1621
|
+
this.fragmentLength = 0;
|
|
1622
|
+
this.fragmentReceived = 0;
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
} else {
|
|
1626
|
+
this.incomingReliableSequence++;
|
|
1627
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
1628
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
1629
|
+
}
|
|
1559
1630
|
}
|
|
1560
1631
|
payloadOffset += reliableLen;
|
|
1561
1632
|
}
|
|
@@ -1582,7 +1653,7 @@ var init_esm = __esm({
|
|
|
1582
1653
|
* Writes a byte to the reliable message buffer
|
|
1583
1654
|
*/
|
|
1584
1655
|
writeReliableByte(value) {
|
|
1585
|
-
if (this.reliableLength + 1 > _NetChan2.
|
|
1656
|
+
if (this.reliableLength + 1 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1586
1657
|
throw new Error("NetChan reliable buffer overflow");
|
|
1587
1658
|
}
|
|
1588
1659
|
this.reliableMessage.writeByte(value);
|
|
@@ -1592,7 +1663,7 @@ var init_esm = __esm({
|
|
|
1592
1663
|
* Writes a short to the reliable message buffer
|
|
1593
1664
|
*/
|
|
1594
1665
|
writeReliableShort(value) {
|
|
1595
|
-
if (this.reliableLength + 2 > _NetChan2.
|
|
1666
|
+
if (this.reliableLength + 2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1596
1667
|
throw new Error("NetChan reliable buffer overflow");
|
|
1597
1668
|
}
|
|
1598
1669
|
this.reliableMessage.writeShort(value);
|
|
@@ -1602,7 +1673,7 @@ var init_esm = __esm({
|
|
|
1602
1673
|
* Writes a long to the reliable message buffer
|
|
1603
1674
|
*/
|
|
1604
1675
|
writeReliableLong(value) {
|
|
1605
|
-
if (this.reliableLength + 4 > _NetChan2.
|
|
1676
|
+
if (this.reliableLength + 4 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1606
1677
|
throw new Error("NetChan reliable buffer overflow");
|
|
1607
1678
|
}
|
|
1608
1679
|
this.reliableMessage.writeLong(value);
|
|
@@ -1613,7 +1684,7 @@ var init_esm = __esm({
|
|
|
1613
1684
|
*/
|
|
1614
1685
|
writeReliableString(value) {
|
|
1615
1686
|
const len = value.length + 1;
|
|
1616
|
-
if (this.reliableLength + len > _NetChan2.
|
|
1687
|
+
if (this.reliableLength + len > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1617
1688
|
throw new Error("NetChan reliable buffer overflow");
|
|
1618
1689
|
}
|
|
1619
1690
|
this.reliableMessage.writeString(value);
|
|
@@ -1646,6 +1717,7 @@ var init_esm = __esm({
|
|
|
1646
1717
|
_NetChan.FRAGMENT_SIZE = 1024;
|
|
1647
1718
|
_NetChan.PACKET_HEADER = 10;
|
|
1648
1719
|
_NetChan.HEADER_OVERHEAD = _NetChan.PACKET_HEADER + 2;
|
|
1720
|
+
_NetChan.MAX_RELIABLE_BUFFER = 262144;
|
|
1649
1721
|
WeaponId = /* @__PURE__ */ ((WeaponId22) => {
|
|
1650
1722
|
WeaponId22["Blaster"] = "blaster";
|
|
1651
1723
|
WeaponId22["Shotgun"] = "shotgun";
|