quake2ts 0.0.70 → 0.0.72

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 (36) 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.map +1 -1
  5. package/packages/client/dist/esm/index.js.map +1 -1
  6. package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
  7. package/packages/engine/dist/browser/index.global.js +14 -14
  8. package/packages/engine/dist/browser/index.global.js.map +1 -1
  9. package/packages/engine/dist/cjs/index.cjs +84 -0
  10. package/packages/engine/dist/cjs/index.cjs.map +1 -1
  11. package/packages/engine/dist/esm/index.js +81 -0
  12. package/packages/engine/dist/esm/index.js.map +1 -1
  13. package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
  14. package/packages/engine/dist/types/assets/manager.d.ts +4 -1
  15. package/packages/engine/dist/types/assets/manager.d.ts.map +1 -1
  16. package/packages/engine/dist/types/assets/sprite.d.ts +23 -0
  17. package/packages/engine/dist/types/assets/sprite.d.ts.map +1 -0
  18. package/packages/engine/dist/types/index.d.ts +1 -0
  19. package/packages/engine/dist/types/index.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 +259 -40
  23. package/packages/game/dist/cjs/index.cjs.map +1 -1
  24. package/packages/game/dist/esm/index.js +259 -40
  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/entity.d.ts +4 -1
  28. package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
  29. package/packages/game/dist/types/entities/funcs.d.ts.map +1 -1
  30. package/packages/game/dist/types/entities/lights.d.ts +3 -0
  31. package/packages/game/dist/types/entities/lights.d.ts.map +1 -0
  32. package/packages/game/dist/types/entities/paths.d.ts +3 -0
  33. package/packages/game/dist/types/entities/paths.d.ts.map +1 -0
  34. package/packages/game/dist/types/entities/spawn.d.ts.map +1 -1
  35. package/packages/game/dist/types/entities/utils.d.ts +5 -0
  36. package/packages/game/dist/types/entities/utils.d.ts.map +1 -1
@@ -1637,6 +1637,76 @@ var Md3Loader = class {
1637
1637
  }
1638
1638
  };
1639
1639
 
1640
+ // src/assets/sprite.ts
1641
+ var IDSPRITEHEADER = 1229214514;
1642
+ var SPRITE_VERSION = 2;
1643
+ var MAX_SKINNAME = 64;
1644
+ var HEADER_SIZE3 = 12;
1645
+ var SpriteParseError = class extends Error {
1646
+ };
1647
+ function readCString3(view, offset, maxLength) {
1648
+ const chars = [];
1649
+ for (let i = 0; i < maxLength; i += 1) {
1650
+ const code = view.getUint8(offset + i);
1651
+ if (code === 0) break;
1652
+ chars.push(code);
1653
+ }
1654
+ return String.fromCharCode(...chars);
1655
+ }
1656
+ function parseSprite(buffer) {
1657
+ if (buffer.byteLength < HEADER_SIZE3) {
1658
+ throw new SpriteParseError("Sprite buffer too small to contain header");
1659
+ }
1660
+ const view = new DataView(buffer);
1661
+ const ident = view.getInt32(0, true);
1662
+ const version = view.getInt32(4, true);
1663
+ const numFrames = view.getInt32(8, true);
1664
+ if (ident !== IDSPRITEHEADER) {
1665
+ throw new SpriteParseError(`Invalid Sprite ident: ${ident}`);
1666
+ }
1667
+ if (version !== SPRITE_VERSION) {
1668
+ throw new SpriteParseError(`Unsupported Sprite version: ${version}`);
1669
+ }
1670
+ const frames = [];
1671
+ const frameSize = 16 + MAX_SKINNAME;
1672
+ let offset = HEADER_SIZE3;
1673
+ for (let i = 0; i < numFrames; i += 1) {
1674
+ if (offset + frameSize > buffer.byteLength) {
1675
+ throw new SpriteParseError("Sprite frame data exceeds buffer length");
1676
+ }
1677
+ const width = view.getInt32(offset, true);
1678
+ const height = view.getInt32(offset + 4, true);
1679
+ const originX = view.getInt32(offset + 8, true);
1680
+ const originY = view.getInt32(offset + 12, true);
1681
+ const name = readCString3(view, offset + 16, MAX_SKINNAME);
1682
+ frames.push({
1683
+ width,
1684
+ height,
1685
+ originX,
1686
+ originY,
1687
+ name
1688
+ });
1689
+ offset += frameSize;
1690
+ }
1691
+ return {
1692
+ ident,
1693
+ version,
1694
+ numFrames,
1695
+ frames
1696
+ };
1697
+ }
1698
+ var SpriteLoader = class {
1699
+ constructor(vfs) {
1700
+ this.vfs = vfs;
1701
+ }
1702
+ async load(path) {
1703
+ const bytes = await this.vfs.readFile(path);
1704
+ const copy = new Uint8Array(bytes.byteLength);
1705
+ copy.set(bytes);
1706
+ return parseSprite(copy.buffer);
1707
+ }
1708
+ };
1709
+
1640
1710
  // src/assets/animation.ts
1641
1711
  function advanceAnimation(state, deltaSeconds) {
1642
1712
  const duration = (state.sequence.end - state.sequence.start + 1) / state.sequence.fps;
@@ -2195,6 +2265,7 @@ var AssetManager = class {
2195
2265
  this.dependencyTracker = options.dependencyTracker ?? new AssetDependencyTracker();
2196
2266
  this.md2 = new Md2Loader(vfs);
2197
2267
  this.md3 = new Md3Loader(vfs);
2268
+ this.sprite = new SpriteLoader(vfs);
2198
2269
  }
2199
2270
  isAssetLoaded(type, path) {
2200
2271
  return this.dependencyTracker.isLoaded(this.makeKey(type, path));
@@ -2236,6 +2307,13 @@ var AssetManager = class {
2236
2307
  this.dependencyTracker.markLoaded(modelKey);
2237
2308
  return model;
2238
2309
  }
2310
+ async loadSprite(path) {
2311
+ const spriteKey = this.makeKey("sprite", path);
2312
+ this.dependencyTracker.register(spriteKey);
2313
+ const sprite = await this.sprite.load(path);
2314
+ this.dependencyTracker.markLoaded(spriteKey);
2315
+ return sprite;
2316
+ }
2239
2317
  resetForLevelChange() {
2240
2318
  this.textures.clear();
2241
2319
  this.audio.clearAll();
@@ -4981,6 +5059,8 @@ export {
4981
5059
  SoundChannel,
4982
5060
  SoundPrecache,
4983
5061
  SoundRegistry,
5062
+ SpriteLoader,
5063
+ SpriteParseError,
4984
5064
  Texture2D,
4985
5065
  TextureCache,
4986
5066
  TextureCubeMap,
@@ -5021,6 +5101,7 @@ export {
5021
5101
  parseMd2,
5022
5102
  parseMd3,
5023
5103
  parsePcx,
5104
+ parseSprite,
5024
5105
  parseWal,
5025
5106
  parseWalTexture,
5026
5107
  parseWav,