quake2ts 0.0.86 → 0.0.87

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.
Files changed (46) hide show
  1. package/package.json +1 -1
  2. package/packages/client/dist/browser/index.global.js +1 -1
  3. package/packages/client/dist/browser/index.global.js.map +1 -1
  4. package/packages/client/dist/cjs/index.cjs +80 -0
  5. package/packages/client/dist/cjs/index.cjs.map +1 -1
  6. package/packages/client/dist/esm/index.js +80 -0
  7. package/packages/client/dist/esm/index.js.map +1 -1
  8. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  9. package/packages/engine/dist/browser/index.global.js +7 -7
  10. package/packages/engine/dist/browser/index.global.js.map +1 -1
  11. package/packages/engine/dist/cjs/index.cjs +40 -0
  12. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  13. package/packages/engine/dist/esm/index.js +40 -0
  14. package/packages/engine/dist/esm/index.js.map +1 -1
  15. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  16. package/packages/engine/dist/types/render/collisionVis.d.ts +53 -0
  17. package/packages/engine/dist/types/render/collisionVis.d.ts.map +1 -0
  18. package/packages/engine/dist/types/render/renderer.d.ts +2 -0
  19. package/packages/engine/dist/types/render/renderer.d.ts.map +1 -1
  20. package/packages/game/dist/browser/index.global.js +1 -1
  21. package/packages/game/dist/browser/index.global.js.map +1 -1
  22. package/packages/game/dist/cjs/index.cjs +118 -2
  23. package/packages/game/dist/cjs/index.cjs.map +1 -1
  24. package/packages/game/dist/esm/index.js +118 -2
  25. package/packages/game/dist/esm/index.js.map +1 -1
  26. package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
  27. package/packages/game/dist/types/entities/system.d.ts.map +1 -1
  28. package/packages/game/dist/types/physics/fluid.d.ts +5 -0
  29. package/packages/game/dist/types/physics/fluid.d.ts.map +1 -0
  30. package/packages/game/dist/types/physics/movement.d.ts.map +1 -1
  31. package/packages/shared/dist/browser/index.global.js +1 -1
  32. package/packages/shared/dist/browser/index.global.js.map +1 -1
  33. package/packages/shared/dist/cjs/index.cjs +41 -0
  34. package/packages/shared/dist/cjs/index.cjs.map +1 -1
  35. package/packages/shared/dist/esm/index.js +46 -0
  36. package/packages/shared/dist/esm/index.js.map +1 -1
  37. package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
  38. package/packages/shared/dist/types/index.d.ts +1 -0
  39. package/packages/shared/dist/types/index.d.ts.map +1 -1
  40. package/packages/shared/dist/types/replay/index.d.ts +3 -0
  41. package/packages/shared/dist/types/replay/index.d.ts.map +1 -0
  42. package/packages/shared/dist/types/replay/io.d.ts +7 -0
  43. package/packages/shared/dist/types/replay/io.d.ts.map +1 -0
  44. package/packages/shared/dist/types/replay/schema.d.ts +31 -0
  45. package/packages/shared/dist/types/replay/schema.d.ts.map +1 -0
  46. package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
@@ -153,6 +153,11 @@ __export(index_exports, {
153
153
  module.exports = __toCommonJS(index_exports);
154
154
 
155
155
  // ../shared/dist/esm/index.js
156
+ var __defProp2 = Object.defineProperty;
157
+ var __export2 = (target, all) => {
158
+ for (var name in all)
159
+ __defProp2(target, name, { get: all[name], enumerable: true });
160
+ };
156
161
  var ZERO_VEC3 = { x: 0, y: 0, z: 0 };
157
162
  var STOP_EPSILON = 0.1;
158
163
  var DEG_TO_RAD = Math.PI / 180;
@@ -595,6 +600,41 @@ var ConfigStringIndex = ((ConfigStringIndex2) => {
595
600
  return ConfigStringIndex2;
596
601
  })(ConfigStringIndex || {});
597
602
  var MAX_CONFIGSTRINGS = ConfigStringIndex.MaxConfigStrings;
603
+ var replay_exports = {};
604
+ __export2(replay_exports, {
605
+ addReplayFrame: () => addReplayFrame,
606
+ createReplaySession: () => createReplaySession,
607
+ deserializeReplay: () => deserializeReplay,
608
+ serializeReplay: () => serializeReplay
609
+ });
610
+ function serializeReplay(session) {
611
+ return JSON.stringify(session, null, 2);
612
+ }
613
+ function deserializeReplay(json) {
614
+ const session = JSON.parse(json);
615
+ if (!session.metadata || !Array.isArray(session.frames)) {
616
+ throw new Error("Invalid replay format: missing metadata or frames");
617
+ }
618
+ return session;
619
+ }
620
+ function createReplaySession(map, seed) {
621
+ return {
622
+ metadata: {
623
+ map,
624
+ date: (/* @__PURE__ */ new Date()).toISOString(),
625
+ version: "1.0",
626
+ seed
627
+ },
628
+ frames: []
629
+ };
630
+ }
631
+ function addReplayFrame(session, cmd, serverFrame, startTime) {
632
+ session.frames.push({
633
+ serverFrame,
634
+ cmd,
635
+ timestamp: Date.now() - startTime
636
+ });
637
+ }
598
638
  var WaterLevel = /* @__PURE__ */ ((WaterLevel3) => {
599
639
  WaterLevel3[WaterLevel3["None"] = 0] = "None";
600
640
  WaterLevel3[WaterLevel3["Feet"] = 1] = "Feet";
@@ -1064,8 +1104,23 @@ var ENTITY_FIELD_METADATA = [
1064
1104
  // src/physics/movement.ts
1065
1105
  function runGravity(ent, gravity, frametime) {
1066
1106
  if (ent.movetype === 7 /* Toss */) {
1067
- ent.velocity = addVec3(ent.velocity, scaleVec3(gravity, ent.gravity * frametime));
1068
- ent.origin = addVec3(ent.origin, scaleVec3(ent.velocity, frametime));
1107
+ if (ent.waterlevel > 1) {
1108
+ const speed = Math.sqrt(ent.velocity.x * ent.velocity.x + ent.velocity.y * ent.velocity.y + ent.velocity.z * ent.velocity.z);
1109
+ if (speed > 1) {
1110
+ const newspeed = speed - frametime * speed * 2;
1111
+ if (newspeed < 0) {
1112
+ ent.velocity = { x: 0, y: 0, z: 0 };
1113
+ } else {
1114
+ const scale = newspeed / speed;
1115
+ ent.velocity = scaleVec3(ent.velocity, scale);
1116
+ }
1117
+ }
1118
+ ent.velocity = addVec3(ent.velocity, scaleVec3(gravity, ent.gravity * frametime * 0.1));
1119
+ ent.origin = addVec3(ent.origin, scaleVec3(ent.velocity, frametime));
1120
+ } else {
1121
+ ent.velocity = addVec3(ent.velocity, scaleVec3(gravity, ent.gravity * frametime));
1122
+ ent.origin = addVec3(ent.origin, scaleVec3(ent.velocity, frametime));
1123
+ }
1069
1124
  }
1070
1125
  }
1071
1126
  function runBouncing(ent, imports, frametime) {
@@ -1214,6 +1269,64 @@ function runPush(pusher, system, imports, frametime) {
1214
1269
  return true;
1215
1270
  }
1216
1271
 
1272
+ // src/physics/fluid.ts
1273
+ function checkWater2(ent, system, imports) {
1274
+ const origin = ent.origin;
1275
+ const mins = ent.mins;
1276
+ const maxs = ent.maxs;
1277
+ const point = {
1278
+ x: origin.x + (mins.x + maxs.x) * 0.5,
1279
+ y: origin.y + (mins.y + maxs.y) * 0.5,
1280
+ z: origin.z + mins.z + 1
1281
+ };
1282
+ let cont = imports.pointcontents(point);
1283
+ if ((cont & MASK_WATER) === 0) {
1284
+ if (ent.waterlevel > 0) {
1285
+ playLeaveWaterSound(ent, system);
1286
+ ent.flags &= ~2 /* Swim */;
1287
+ }
1288
+ ent.waterlevel = 0;
1289
+ ent.watertype = 0;
1290
+ return;
1291
+ }
1292
+ ent.watertype = cont;
1293
+ ent.waterlevel = 1;
1294
+ const waistZ = origin.z + mins.z + (maxs.z - mins.z) * 0.5;
1295
+ const headZ = origin.z + maxs.z - 1;
1296
+ const waistPoint = { ...point, z: waistZ };
1297
+ cont = imports.pointcontents(waistPoint);
1298
+ if (cont & MASK_WATER) {
1299
+ ent.waterlevel = 2;
1300
+ const headPoint = { ...point, z: headZ };
1301
+ cont = imports.pointcontents(headPoint);
1302
+ if (cont & MASK_WATER) {
1303
+ ent.waterlevel = 3;
1304
+ }
1305
+ }
1306
+ if ((ent.flags & 2 /* Swim */) === 0) {
1307
+ playEnterWaterSound(ent, system);
1308
+ ent.flags |= 2 /* Swim */;
1309
+ }
1310
+ }
1311
+ function playEnterWaterSound(ent, system) {
1312
+ if (ent.watertype & CONTENTS_LAVA) {
1313
+ system.sound(ent, 0, "player/lava_in.wav", 1, 1, 0);
1314
+ } else if (ent.watertype & CONTENTS_SLIME) {
1315
+ system.sound(ent, 0, "player/watr_in.wav", 1, 1, 0);
1316
+ } else if (ent.watertype & CONTENTS_WATER) {
1317
+ system.sound(ent, 0, "player/watr_in.wav", 1, 1, 0);
1318
+ }
1319
+ }
1320
+ function playLeaveWaterSound(ent, system) {
1321
+ if (ent.watertype & CONTENTS_LAVA) {
1322
+ system.sound(ent, 0, "player/lava_out.wav", 1, 1, 0);
1323
+ } else if (ent.watertype & CONTENTS_SLIME) {
1324
+ system.sound(ent, 0, "player/watr_out.wav", 1, 1, 0);
1325
+ } else if (ent.watertype & CONTENTS_WATER) {
1326
+ system.sound(ent, 0, "player/watr_out.wav", 1, 1, 0);
1327
+ }
1328
+ }
1329
+
1217
1330
  // src/entities/pool.ts
1218
1331
  var MAX_EDICTS = 2048;
1219
1332
  var WORLD_INDEX = 0;
@@ -1681,6 +1794,9 @@ var EntitySystem = class {
1681
1794
  if (!ent.inUse || ent.freePending) {
1682
1795
  continue;
1683
1796
  }
1797
+ if (ent.movetype !== 0 /* None */ && ent.movetype !== 2 /* Push */ && ent.movetype !== 3 /* Stop */ && ent.movetype !== 1 /* Noclip */) {
1798
+ checkWater2(ent, this, this.imports);
1799
+ }
1684
1800
  const frametime = this.currentTimeSeconds - (ent.timestamp || 0);
1685
1801
  switch (ent.movetype) {
1686
1802
  case 7 /* Toss */: