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
|
@@ -1082,10 +1082,14 @@ var _NetChan = class _NetChan2 {
|
|
|
1082
1082
|
this.incomingReliableSequence = 0;
|
|
1083
1083
|
this.outgoingReliableSequence = 0;
|
|
1084
1084
|
this.reliableLength = 0;
|
|
1085
|
+
this.fragmentSendOffset = 0;
|
|
1086
|
+
this.fragmentBuffer = null;
|
|
1087
|
+
this.fragmentLength = 0;
|
|
1088
|
+
this.fragmentReceived = 0;
|
|
1085
1089
|
this.lastReceived = 0;
|
|
1086
1090
|
this.lastSent = 0;
|
|
1087
1091
|
this.remoteAddress = null;
|
|
1088
|
-
this.reliableMessage = new BinaryWriter(_NetChan2.
|
|
1092
|
+
this.reliableMessage = new BinaryWriter(_NetChan2.MAX_RELIABLE_BUFFER);
|
|
1089
1093
|
const now = Date.now();
|
|
1090
1094
|
this.lastReceived = now;
|
|
1091
1095
|
this.lastSent = now;
|
|
@@ -1111,6 +1115,10 @@ var _NetChan = class _NetChan2 {
|
|
|
1111
1115
|
this.outgoingReliableSequence = 0;
|
|
1112
1116
|
this.reliableLength = 0;
|
|
1113
1117
|
this.reliableMessage.reset();
|
|
1118
|
+
this.fragmentSendOffset = 0;
|
|
1119
|
+
this.fragmentBuffer = null;
|
|
1120
|
+
this.fragmentLength = 0;
|
|
1121
|
+
this.fragmentReceived = 0;
|
|
1114
1122
|
this.lastReceived = Date.now();
|
|
1115
1123
|
this.lastSent = Date.now();
|
|
1116
1124
|
}
|
|
@@ -1120,18 +1128,38 @@ var _NetChan = class _NetChan2 {
|
|
|
1120
1128
|
transmit(unreliableData) {
|
|
1121
1129
|
this.outgoingSequence++;
|
|
1122
1130
|
this.lastSent = Date.now();
|
|
1131
|
+
let sendReliableLength = 0;
|
|
1132
|
+
let isFragment = false;
|
|
1133
|
+
let fragmentStart = 0;
|
|
1134
|
+
if (this.reliableLength > 0) {
|
|
1135
|
+
if (this.reliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
1136
|
+
isFragment = true;
|
|
1137
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
1138
|
+
this.fragmentSendOffset = 0;
|
|
1139
|
+
}
|
|
1140
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
1141
|
+
sendReliableLength = remaining;
|
|
1142
|
+
if (sendReliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
1143
|
+
sendReliableLength = _NetChan2.FRAGMENT_SIZE;
|
|
1144
|
+
}
|
|
1145
|
+
fragmentStart = this.fragmentSendOffset;
|
|
1146
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
1147
|
+
} else {
|
|
1148
|
+
sendReliableLength = this.reliableLength;
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1123
1151
|
const headerSize = _NetChan2.PACKET_HEADER;
|
|
1124
|
-
const
|
|
1152
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
1125
1153
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
1126
|
-
if (headerSize +
|
|
1127
|
-
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize -
|
|
1154
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan2.MAX_MSGLEN) {
|
|
1155
|
+
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
1128
1156
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
1129
1157
|
}
|
|
1130
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
1158
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
1131
1159
|
const view = new DataView(buffer);
|
|
1132
1160
|
const result = new Uint8Array(buffer);
|
|
1133
1161
|
let sequence = this.outgoingSequence;
|
|
1134
|
-
if (
|
|
1162
|
+
if (sendReliableLength > 0) {
|
|
1135
1163
|
sequence |= 2147483648;
|
|
1136
1164
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
1137
1165
|
sequence |= 1073741824;
|
|
@@ -1145,13 +1173,23 @@ var _NetChan = class _NetChan2 {
|
|
|
1145
1173
|
view.setUint32(4, ack, true);
|
|
1146
1174
|
view.setUint16(8, this.qport, true);
|
|
1147
1175
|
let offset = headerSize;
|
|
1148
|
-
if (
|
|
1149
|
-
|
|
1176
|
+
if (sendReliableLength > 0) {
|
|
1177
|
+
let lengthField = sendReliableLength;
|
|
1178
|
+
if (isFragment) {
|
|
1179
|
+
lengthField |= 32768;
|
|
1180
|
+
}
|
|
1181
|
+
view.setUint16(offset, lengthField, true);
|
|
1150
1182
|
offset += 2;
|
|
1183
|
+
if (isFragment) {
|
|
1184
|
+
view.setUint32(offset, fragmentStart, true);
|
|
1185
|
+
offset += 4;
|
|
1186
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
1187
|
+
offset += 4;
|
|
1188
|
+
}
|
|
1151
1189
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
1152
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
1190
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
1153
1191
|
result.set(reliableBytes, offset);
|
|
1154
|
-
offset +=
|
|
1192
|
+
offset += sendReliableLength;
|
|
1155
1193
|
}
|
|
1156
1194
|
if (unreliableData && unreliableSize > 0) {
|
|
1157
1195
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -1192,6 +1230,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1192
1230
|
this.reliableLength = 0;
|
|
1193
1231
|
this.reliableMessage.reset();
|
|
1194
1232
|
this.outgoingReliableSequence ^= 1;
|
|
1233
|
+
this.fragmentSendOffset = 0;
|
|
1195
1234
|
}
|
|
1196
1235
|
}
|
|
1197
1236
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -1200,13 +1239,45 @@ var _NetChan = class _NetChan2 {
|
|
|
1200
1239
|
let reliableData = null;
|
|
1201
1240
|
if (hasReliableData) {
|
|
1202
1241
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
1203
|
-
|
|
1242
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
1204
1243
|
payloadOffset += 2;
|
|
1244
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
1245
|
+
reliableLen &= 32767;
|
|
1205
1246
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
1206
1247
|
if (reliableSeqBit === expectedBit) {
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1248
|
+
if (isFragment) {
|
|
1249
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
1250
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
1251
|
+
payloadOffset += 4;
|
|
1252
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
1253
|
+
payloadOffset += 4;
|
|
1254
|
+
if (fragTotal > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1255
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan2.MAX_RELIABLE_BUFFER}`);
|
|
1256
|
+
return null;
|
|
1257
|
+
}
|
|
1258
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
1259
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
1260
|
+
this.fragmentLength = fragTotal;
|
|
1261
|
+
this.fragmentReceived = 0;
|
|
1262
|
+
}
|
|
1263
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
1264
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
1265
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
1266
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
1267
|
+
this.fragmentReceived += reliableLen;
|
|
1268
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
1269
|
+
reliableData = this.fragmentBuffer;
|
|
1270
|
+
this.incomingReliableSequence++;
|
|
1271
|
+
this.fragmentBuffer = null;
|
|
1272
|
+
this.fragmentLength = 0;
|
|
1273
|
+
this.fragmentReceived = 0;
|
|
1274
|
+
}
|
|
1275
|
+
}
|
|
1276
|
+
} else {
|
|
1277
|
+
this.incomingReliableSequence++;
|
|
1278
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
1279
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
1280
|
+
}
|
|
1210
1281
|
}
|
|
1211
1282
|
payloadOffset += reliableLen;
|
|
1212
1283
|
}
|
|
@@ -1233,7 +1304,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1233
1304
|
* Writes a byte to the reliable message buffer
|
|
1234
1305
|
*/
|
|
1235
1306
|
writeReliableByte(value) {
|
|
1236
|
-
if (this.reliableLength + 1 > _NetChan2.
|
|
1307
|
+
if (this.reliableLength + 1 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1237
1308
|
throw new Error("NetChan reliable buffer overflow");
|
|
1238
1309
|
}
|
|
1239
1310
|
this.reliableMessage.writeByte(value);
|
|
@@ -1243,7 +1314,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1243
1314
|
* Writes a short to the reliable message buffer
|
|
1244
1315
|
*/
|
|
1245
1316
|
writeReliableShort(value) {
|
|
1246
|
-
if (this.reliableLength + 2 > _NetChan2.
|
|
1317
|
+
if (this.reliableLength + 2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1247
1318
|
throw new Error("NetChan reliable buffer overflow");
|
|
1248
1319
|
}
|
|
1249
1320
|
this.reliableMessage.writeShort(value);
|
|
@@ -1253,7 +1324,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1253
1324
|
* Writes a long to the reliable message buffer
|
|
1254
1325
|
*/
|
|
1255
1326
|
writeReliableLong(value) {
|
|
1256
|
-
if (this.reliableLength + 4 > _NetChan2.
|
|
1327
|
+
if (this.reliableLength + 4 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1257
1328
|
throw new Error("NetChan reliable buffer overflow");
|
|
1258
1329
|
}
|
|
1259
1330
|
this.reliableMessage.writeLong(value);
|
|
@@ -1264,7 +1335,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1264
1335
|
*/
|
|
1265
1336
|
writeReliableString(value) {
|
|
1266
1337
|
const len = value.length + 1;
|
|
1267
|
-
if (this.reliableLength + len > _NetChan2.
|
|
1338
|
+
if (this.reliableLength + len > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1268
1339
|
throw new Error("NetChan reliable buffer overflow");
|
|
1269
1340
|
}
|
|
1270
1341
|
this.reliableMessage.writeString(value);
|
|
@@ -1297,6 +1368,7 @@ _NetChan.MAX_MSGLEN = 1400;
|
|
|
1297
1368
|
_NetChan.FRAGMENT_SIZE = 1024;
|
|
1298
1369
|
_NetChan.PACKET_HEADER = 10;
|
|
1299
1370
|
_NetChan.HEADER_OVERHEAD = _NetChan.PACKET_HEADER + 2;
|
|
1371
|
+
_NetChan.MAX_RELIABLE_BUFFER = 262144;
|
|
1300
1372
|
var AmmoType = /* @__PURE__ */ ((AmmoType2) => {
|
|
1301
1373
|
AmmoType2[AmmoType2["Bullets"] = 0] = "Bullets";
|
|
1302
1374
|
AmmoType2[AmmoType2["Shells"] = 1] = "Shells";
|