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
@@ -1,4 +1,9 @@
1
1
  // ../shared/dist/esm/index.js
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, { get: all[name], enumerable: true });
6
+ };
2
7
  var ZERO_VEC3 = { x: 0, y: 0, z: 0 };
3
8
  var STOP_EPSILON = 0.1;
4
9
  var DEG_TO_RAD = Math.PI / 180;
@@ -441,6 +446,41 @@ var ConfigStringIndex = ((ConfigStringIndex2) => {
441
446
  return ConfigStringIndex2;
442
447
  })(ConfigStringIndex || {});
443
448
  var MAX_CONFIGSTRINGS = ConfigStringIndex.MaxConfigStrings;
449
+ var replay_exports = {};
450
+ __export(replay_exports, {
451
+ addReplayFrame: () => addReplayFrame,
452
+ createReplaySession: () => createReplaySession,
453
+ deserializeReplay: () => deserializeReplay,
454
+ serializeReplay: () => serializeReplay
455
+ });
456
+ function serializeReplay(session) {
457
+ return JSON.stringify(session, null, 2);
458
+ }
459
+ function deserializeReplay(json) {
460
+ const session = JSON.parse(json);
461
+ if (!session.metadata || !Array.isArray(session.frames)) {
462
+ throw new Error("Invalid replay format: missing metadata or frames");
463
+ }
464
+ return session;
465
+ }
466
+ function createReplaySession(map, seed) {
467
+ return {
468
+ metadata: {
469
+ map,
470
+ date: (/* @__PURE__ */ new Date()).toISOString(),
471
+ version: "1.0",
472
+ seed
473
+ },
474
+ frames: []
475
+ };
476
+ }
477
+ function addReplayFrame(session, cmd, serverFrame, startTime) {
478
+ session.frames.push({
479
+ serverFrame,
480
+ cmd,
481
+ timestamp: Date.now() - startTime
482
+ });
483
+ }
444
484
  var WaterLevel = /* @__PURE__ */ ((WaterLevel3) => {
445
485
  WaterLevel3[WaterLevel3["None"] = 0] = "None";
446
486
  WaterLevel3[WaterLevel3["Feet"] = 1] = "Feet";
@@ -910,8 +950,23 @@ var ENTITY_FIELD_METADATA = [
910
950
  // src/physics/movement.ts
911
951
  function runGravity(ent, gravity, frametime) {
912
952
  if (ent.movetype === 7 /* Toss */) {
913
- ent.velocity = addVec3(ent.velocity, scaleVec3(gravity, ent.gravity * frametime));
914
- ent.origin = addVec3(ent.origin, scaleVec3(ent.velocity, frametime));
953
+ if (ent.waterlevel > 1) {
954
+ const speed = Math.sqrt(ent.velocity.x * ent.velocity.x + ent.velocity.y * ent.velocity.y + ent.velocity.z * ent.velocity.z);
955
+ if (speed > 1) {
956
+ const newspeed = speed - frametime * speed * 2;
957
+ if (newspeed < 0) {
958
+ ent.velocity = { x: 0, y: 0, z: 0 };
959
+ } else {
960
+ const scale = newspeed / speed;
961
+ ent.velocity = scaleVec3(ent.velocity, scale);
962
+ }
963
+ }
964
+ ent.velocity = addVec3(ent.velocity, scaleVec3(gravity, ent.gravity * frametime * 0.1));
965
+ ent.origin = addVec3(ent.origin, scaleVec3(ent.velocity, frametime));
966
+ } else {
967
+ ent.velocity = addVec3(ent.velocity, scaleVec3(gravity, ent.gravity * frametime));
968
+ ent.origin = addVec3(ent.origin, scaleVec3(ent.velocity, frametime));
969
+ }
915
970
  }
916
971
  }
917
972
  function runBouncing(ent, imports, frametime) {
@@ -1060,6 +1115,64 @@ function runPush(pusher, system, imports, frametime) {
1060
1115
  return true;
1061
1116
  }
1062
1117
 
1118
+ // src/physics/fluid.ts
1119
+ function checkWater2(ent, system, imports) {
1120
+ const origin = ent.origin;
1121
+ const mins = ent.mins;
1122
+ const maxs = ent.maxs;
1123
+ const point = {
1124
+ x: origin.x + (mins.x + maxs.x) * 0.5,
1125
+ y: origin.y + (mins.y + maxs.y) * 0.5,
1126
+ z: origin.z + mins.z + 1
1127
+ };
1128
+ let cont = imports.pointcontents(point);
1129
+ if ((cont & MASK_WATER) === 0) {
1130
+ if (ent.waterlevel > 0) {
1131
+ playLeaveWaterSound(ent, system);
1132
+ ent.flags &= ~2 /* Swim */;
1133
+ }
1134
+ ent.waterlevel = 0;
1135
+ ent.watertype = 0;
1136
+ return;
1137
+ }
1138
+ ent.watertype = cont;
1139
+ ent.waterlevel = 1;
1140
+ const waistZ = origin.z + mins.z + (maxs.z - mins.z) * 0.5;
1141
+ const headZ = origin.z + maxs.z - 1;
1142
+ const waistPoint = { ...point, z: waistZ };
1143
+ cont = imports.pointcontents(waistPoint);
1144
+ if (cont & MASK_WATER) {
1145
+ ent.waterlevel = 2;
1146
+ const headPoint = { ...point, z: headZ };
1147
+ cont = imports.pointcontents(headPoint);
1148
+ if (cont & MASK_WATER) {
1149
+ ent.waterlevel = 3;
1150
+ }
1151
+ }
1152
+ if ((ent.flags & 2 /* Swim */) === 0) {
1153
+ playEnterWaterSound(ent, system);
1154
+ ent.flags |= 2 /* Swim */;
1155
+ }
1156
+ }
1157
+ function playEnterWaterSound(ent, system) {
1158
+ if (ent.watertype & CONTENTS_LAVA) {
1159
+ system.sound(ent, 0, "player/lava_in.wav", 1, 1, 0);
1160
+ } else if (ent.watertype & CONTENTS_SLIME) {
1161
+ system.sound(ent, 0, "player/watr_in.wav", 1, 1, 0);
1162
+ } else if (ent.watertype & CONTENTS_WATER) {
1163
+ system.sound(ent, 0, "player/watr_in.wav", 1, 1, 0);
1164
+ }
1165
+ }
1166
+ function playLeaveWaterSound(ent, system) {
1167
+ if (ent.watertype & CONTENTS_LAVA) {
1168
+ system.sound(ent, 0, "player/lava_out.wav", 1, 1, 0);
1169
+ } else if (ent.watertype & CONTENTS_SLIME) {
1170
+ system.sound(ent, 0, "player/watr_out.wav", 1, 1, 0);
1171
+ } else if (ent.watertype & CONTENTS_WATER) {
1172
+ system.sound(ent, 0, "player/watr_out.wav", 1, 1, 0);
1173
+ }
1174
+ }
1175
+
1063
1176
  // src/entities/pool.ts
1064
1177
  var MAX_EDICTS = 2048;
1065
1178
  var WORLD_INDEX = 0;
@@ -1527,6 +1640,9 @@ var EntitySystem = class {
1527
1640
  if (!ent.inUse || ent.freePending) {
1528
1641
  continue;
1529
1642
  }
1643
+ if (ent.movetype !== 0 /* None */ && ent.movetype !== 2 /* Push */ && ent.movetype !== 3 /* Stop */ && ent.movetype !== 1 /* Noclip */) {
1644
+ checkWater2(ent, this, this.imports);
1645
+ }
1530
1646
  const frametime = this.currentTimeSeconds - (ent.timestamp || 0);
1531
1647
  switch (ent.movetype) {
1532
1648
  case 7 /* Toss */: