quake2ts 0.0.299 → 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 +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +279 -36
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +279 -36
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/index.d.ts.map +1 -1
- package/packages/client/dist/types/ui/demo-controls.d.ts +11 -0
- package/packages/client/dist/types/ui/demo-controls.d.ts.map +1 -0
- 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 +107 -28
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +107 -28
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/gibs.d.ts +1 -1
- package/packages/game/dist/types/entities/gibs.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
|
@@ -888,10 +888,14 @@ var _NetChan = class _NetChan2 {
|
|
|
888
888
|
this.incomingReliableSequence = 0;
|
|
889
889
|
this.outgoingReliableSequence = 0;
|
|
890
890
|
this.reliableLength = 0;
|
|
891
|
+
this.fragmentSendOffset = 0;
|
|
892
|
+
this.fragmentBuffer = null;
|
|
893
|
+
this.fragmentLength = 0;
|
|
894
|
+
this.fragmentReceived = 0;
|
|
891
895
|
this.lastReceived = 0;
|
|
892
896
|
this.lastSent = 0;
|
|
893
897
|
this.remoteAddress = null;
|
|
894
|
-
this.reliableMessage = new BinaryWriter(_NetChan2.
|
|
898
|
+
this.reliableMessage = new BinaryWriter(_NetChan2.MAX_RELIABLE_BUFFER);
|
|
895
899
|
const now = Date.now();
|
|
896
900
|
this.lastReceived = now;
|
|
897
901
|
this.lastSent = now;
|
|
@@ -917,6 +921,10 @@ var _NetChan = class _NetChan2 {
|
|
|
917
921
|
this.outgoingReliableSequence = 0;
|
|
918
922
|
this.reliableLength = 0;
|
|
919
923
|
this.reliableMessage.reset();
|
|
924
|
+
this.fragmentSendOffset = 0;
|
|
925
|
+
this.fragmentBuffer = null;
|
|
926
|
+
this.fragmentLength = 0;
|
|
927
|
+
this.fragmentReceived = 0;
|
|
920
928
|
this.lastReceived = Date.now();
|
|
921
929
|
this.lastSent = Date.now();
|
|
922
930
|
}
|
|
@@ -926,18 +934,38 @@ var _NetChan = class _NetChan2 {
|
|
|
926
934
|
transmit(unreliableData) {
|
|
927
935
|
this.outgoingSequence++;
|
|
928
936
|
this.lastSent = Date.now();
|
|
937
|
+
let sendReliableLength = 0;
|
|
938
|
+
let isFragment = false;
|
|
939
|
+
let fragmentStart = 0;
|
|
940
|
+
if (this.reliableLength > 0) {
|
|
941
|
+
if (this.reliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
942
|
+
isFragment = true;
|
|
943
|
+
if (this.fragmentSendOffset >= this.reliableLength) {
|
|
944
|
+
this.fragmentSendOffset = 0;
|
|
945
|
+
}
|
|
946
|
+
const remaining = this.reliableLength - this.fragmentSendOffset;
|
|
947
|
+
sendReliableLength = remaining;
|
|
948
|
+
if (sendReliableLength > _NetChan2.FRAGMENT_SIZE) {
|
|
949
|
+
sendReliableLength = _NetChan2.FRAGMENT_SIZE;
|
|
950
|
+
}
|
|
951
|
+
fragmentStart = this.fragmentSendOffset;
|
|
952
|
+
this.fragmentSendOffset += sendReliableLength;
|
|
953
|
+
} else {
|
|
954
|
+
sendReliableLength = this.reliableLength;
|
|
955
|
+
}
|
|
956
|
+
}
|
|
929
957
|
const headerSize = _NetChan2.PACKET_HEADER;
|
|
930
|
-
const
|
|
958
|
+
const reliableHeaderSize = sendReliableLength > 0 ? 2 + (isFragment ? 8 : 0) : 0;
|
|
931
959
|
let unreliableSize = unreliableData ? unreliableData.length : 0;
|
|
932
|
-
if (headerSize +
|
|
933
|
-
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize -
|
|
960
|
+
if (headerSize + reliableHeaderSize + sendReliableLength + unreliableSize > _NetChan2.MAX_MSGLEN) {
|
|
961
|
+
unreliableSize = _NetChan2.MAX_MSGLEN - headerSize - reliableHeaderSize - sendReliableLength;
|
|
934
962
|
if (unreliableSize < 0) unreliableSize = 0;
|
|
935
963
|
}
|
|
936
|
-
const buffer = new ArrayBuffer(headerSize +
|
|
964
|
+
const buffer = new ArrayBuffer(headerSize + reliableHeaderSize + sendReliableLength + unreliableSize);
|
|
937
965
|
const view = new DataView(buffer);
|
|
938
966
|
const result = new Uint8Array(buffer);
|
|
939
967
|
let sequence = this.outgoingSequence;
|
|
940
|
-
if (
|
|
968
|
+
if (sendReliableLength > 0) {
|
|
941
969
|
sequence |= 2147483648;
|
|
942
970
|
if ((this.outgoingReliableSequence & 1) !== 0) {
|
|
943
971
|
sequence |= 1073741824;
|
|
@@ -951,13 +979,23 @@ var _NetChan = class _NetChan2 {
|
|
|
951
979
|
view.setUint32(4, ack, true);
|
|
952
980
|
view.setUint16(8, this.qport, true);
|
|
953
981
|
let offset = headerSize;
|
|
954
|
-
if (
|
|
955
|
-
|
|
982
|
+
if (sendReliableLength > 0) {
|
|
983
|
+
let lengthField = sendReliableLength;
|
|
984
|
+
if (isFragment) {
|
|
985
|
+
lengthField |= 32768;
|
|
986
|
+
}
|
|
987
|
+
view.setUint16(offset, lengthField, true);
|
|
956
988
|
offset += 2;
|
|
989
|
+
if (isFragment) {
|
|
990
|
+
view.setUint32(offset, fragmentStart, true);
|
|
991
|
+
offset += 4;
|
|
992
|
+
view.setUint32(offset, this.reliableLength, true);
|
|
993
|
+
offset += 4;
|
|
994
|
+
}
|
|
957
995
|
const reliableBuffer = this.reliableMessage.getBuffer();
|
|
958
|
-
const reliableBytes = reliableBuffer.subarray(
|
|
996
|
+
const reliableBytes = reliableBuffer.subarray(fragmentStart, fragmentStart + sendReliableLength);
|
|
959
997
|
result.set(reliableBytes, offset);
|
|
960
|
-
offset +=
|
|
998
|
+
offset += sendReliableLength;
|
|
961
999
|
}
|
|
962
1000
|
if (unreliableData && unreliableSize > 0) {
|
|
963
1001
|
const chunk = unreliableData.slice(0, unreliableSize);
|
|
@@ -998,6 +1036,7 @@ var _NetChan = class _NetChan2 {
|
|
|
998
1036
|
this.reliableLength = 0;
|
|
999
1037
|
this.reliableMessage.reset();
|
|
1000
1038
|
this.outgoingReliableSequence ^= 1;
|
|
1039
|
+
this.fragmentSendOffset = 0;
|
|
1001
1040
|
}
|
|
1002
1041
|
}
|
|
1003
1042
|
const hasReliableData = (sequence & 2147483648) !== 0;
|
|
@@ -1006,13 +1045,45 @@ var _NetChan = class _NetChan2 {
|
|
|
1006
1045
|
let reliableData = null;
|
|
1007
1046
|
if (hasReliableData) {
|
|
1008
1047
|
if (payloadOffset + 2 > packet.byteLength) return null;
|
|
1009
|
-
|
|
1048
|
+
let reliableLen = view.getUint16(payloadOffset, true);
|
|
1010
1049
|
payloadOffset += 2;
|
|
1050
|
+
const isFragment = (reliableLen & 32768) !== 0;
|
|
1051
|
+
reliableLen &= 32767;
|
|
1011
1052
|
const expectedBit = this.incomingReliableSequence & 1;
|
|
1012
1053
|
if (reliableSeqBit === expectedBit) {
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1054
|
+
if (isFragment) {
|
|
1055
|
+
if (payloadOffset + 8 > packet.byteLength) return null;
|
|
1056
|
+
const fragStart = view.getUint32(payloadOffset, true);
|
|
1057
|
+
payloadOffset += 4;
|
|
1058
|
+
const fragTotal = view.getUint32(payloadOffset, true);
|
|
1059
|
+
payloadOffset += 4;
|
|
1060
|
+
if (fragTotal > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1061
|
+
console.warn(`NetChan: received invalid fragment total ${fragTotal} > ${_NetChan2.MAX_RELIABLE_BUFFER}`);
|
|
1062
|
+
return null;
|
|
1063
|
+
}
|
|
1064
|
+
if (!this.fragmentBuffer || this.fragmentBuffer.length !== fragTotal) {
|
|
1065
|
+
this.fragmentBuffer = new Uint8Array(fragTotal);
|
|
1066
|
+
this.fragmentLength = fragTotal;
|
|
1067
|
+
this.fragmentReceived = 0;
|
|
1068
|
+
}
|
|
1069
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
1070
|
+
const data = packet.subarray(payloadOffset, payloadOffset + reliableLen);
|
|
1071
|
+
if (fragStart === this.fragmentReceived && fragStart + reliableLen <= fragTotal) {
|
|
1072
|
+
this.fragmentBuffer.set(data, fragStart);
|
|
1073
|
+
this.fragmentReceived += reliableLen;
|
|
1074
|
+
if (this.fragmentReceived >= fragTotal) {
|
|
1075
|
+
reliableData = this.fragmentBuffer;
|
|
1076
|
+
this.incomingReliableSequence++;
|
|
1077
|
+
this.fragmentBuffer = null;
|
|
1078
|
+
this.fragmentLength = 0;
|
|
1079
|
+
this.fragmentReceived = 0;
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
} else {
|
|
1083
|
+
this.incomingReliableSequence++;
|
|
1084
|
+
if (payloadOffset + reliableLen > packet.byteLength) return null;
|
|
1085
|
+
reliableData = packet.slice(payloadOffset, payloadOffset + reliableLen);
|
|
1086
|
+
}
|
|
1016
1087
|
}
|
|
1017
1088
|
payloadOffset += reliableLen;
|
|
1018
1089
|
}
|
|
@@ -1039,7 +1110,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1039
1110
|
* Writes a byte to the reliable message buffer
|
|
1040
1111
|
*/
|
|
1041
1112
|
writeReliableByte(value) {
|
|
1042
|
-
if (this.reliableLength + 1 > _NetChan2.
|
|
1113
|
+
if (this.reliableLength + 1 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1043
1114
|
throw new Error("NetChan reliable buffer overflow");
|
|
1044
1115
|
}
|
|
1045
1116
|
this.reliableMessage.writeByte(value);
|
|
@@ -1049,7 +1120,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1049
1120
|
* Writes a short to the reliable message buffer
|
|
1050
1121
|
*/
|
|
1051
1122
|
writeReliableShort(value) {
|
|
1052
|
-
if (this.reliableLength + 2 > _NetChan2.
|
|
1123
|
+
if (this.reliableLength + 2 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1053
1124
|
throw new Error("NetChan reliable buffer overflow");
|
|
1054
1125
|
}
|
|
1055
1126
|
this.reliableMessage.writeShort(value);
|
|
@@ -1059,7 +1130,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1059
1130
|
* Writes a long to the reliable message buffer
|
|
1060
1131
|
*/
|
|
1061
1132
|
writeReliableLong(value) {
|
|
1062
|
-
if (this.reliableLength + 4 > _NetChan2.
|
|
1133
|
+
if (this.reliableLength + 4 > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1063
1134
|
throw new Error("NetChan reliable buffer overflow");
|
|
1064
1135
|
}
|
|
1065
1136
|
this.reliableMessage.writeLong(value);
|
|
@@ -1070,7 +1141,7 @@ var _NetChan = class _NetChan2 {
|
|
|
1070
1141
|
*/
|
|
1071
1142
|
writeReliableString(value) {
|
|
1072
1143
|
const len = value.length + 1;
|
|
1073
|
-
if (this.reliableLength + len > _NetChan2.
|
|
1144
|
+
if (this.reliableLength + len > _NetChan2.MAX_RELIABLE_BUFFER) {
|
|
1074
1145
|
throw new Error("NetChan reliable buffer overflow");
|
|
1075
1146
|
}
|
|
1076
1147
|
this.reliableMessage.writeString(value);
|
|
@@ -1103,6 +1174,7 @@ _NetChan.MAX_MSGLEN = 1400;
|
|
|
1103
1174
|
_NetChan.FRAGMENT_SIZE = 1024;
|
|
1104
1175
|
_NetChan.PACKET_HEADER = 10;
|
|
1105
1176
|
_NetChan.HEADER_OVERHEAD = _NetChan.PACKET_HEADER + 2;
|
|
1177
|
+
_NetChan.MAX_RELIABLE_BUFFER = 262144;
|
|
1106
1178
|
var AmmoType = /* @__PURE__ */ ((AmmoType2) => {
|
|
1107
1179
|
AmmoType2[AmmoType2["Bullets"] = 0] = "Bullets";
|
|
1108
1180
|
AmmoType2[AmmoType2["Shells"] = 1] = "Shells";
|