@quake2ts/engine 0.0.1

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 (276) hide show
  1. package/dist/browser/index.global.js +617 -0
  2. package/dist/browser/index.global.js.map +1 -0
  3. package/dist/cjs/index.cjs +17604 -0
  4. package/dist/cjs/index.cjs.map +1 -0
  5. package/dist/esm/index.js +17373 -0
  6. package/dist/esm/index.js.map +1 -0
  7. package/dist/tsconfig.tsbuildinfo +1 -0
  8. package/dist/types/assets/animation.d.ts +33 -0
  9. package/dist/types/assets/animation.d.ts.map +1 -0
  10. package/dist/types/assets/audio.d.ts +27 -0
  11. package/dist/types/assets/audio.d.ts.map +1 -0
  12. package/dist/types/assets/audio.worker.d.ts +2 -0
  13. package/dist/types/assets/audio.worker.d.ts.map +1 -0
  14. package/dist/types/assets/browserIngestion.d.ts +7 -0
  15. package/dist/types/assets/browserIngestion.d.ts.map +1 -0
  16. package/dist/types/assets/bsp.d.ts +197 -0
  17. package/dist/types/assets/bsp.d.ts.map +1 -0
  18. package/dist/types/assets/bsp.worker.d.ts +2 -0
  19. package/dist/types/assets/bsp.worker.d.ts.map +1 -0
  20. package/dist/types/assets/cache.d.ts +26 -0
  21. package/dist/types/assets/cache.d.ts.map +1 -0
  22. package/dist/types/assets/crossReference.d.ts +35 -0
  23. package/dist/types/assets/crossReference.d.ts.map +1 -0
  24. package/dist/types/assets/ent.d.ts +31 -0
  25. package/dist/types/assets/ent.d.ts.map +1 -0
  26. package/dist/types/assets/fileType.d.ts +18 -0
  27. package/dist/types/assets/fileType.d.ts.map +1 -0
  28. package/dist/types/assets/headlessLoader.d.ts +11 -0
  29. package/dist/types/assets/headlessLoader.d.ts.map +1 -0
  30. package/dist/types/assets/index.d.ts +30 -0
  31. package/dist/types/assets/index.d.ts.map +1 -0
  32. package/dist/types/assets/ingestion.d.ts +62 -0
  33. package/dist/types/assets/ingestion.d.ts.map +1 -0
  34. package/dist/types/assets/interactionGraph.d.ts +21 -0
  35. package/dist/types/assets/interactionGraph.d.ts.map +1 -0
  36. package/dist/types/assets/manager.d.ts +97 -0
  37. package/dist/types/assets/manager.d.ts.map +1 -0
  38. package/dist/types/assets/mapStatistics.d.ts +20 -0
  39. package/dist/types/assets/mapStatistics.d.ts.map +1 -0
  40. package/dist/types/assets/md2.d.ts +82 -0
  41. package/dist/types/assets/md2.d.ts.map +1 -0
  42. package/dist/types/assets/md3.d.ts +72 -0
  43. package/dist/types/assets/md3.d.ts.map +1 -0
  44. package/dist/types/assets/ogg.d.ts +12 -0
  45. package/dist/types/assets/ogg.d.ts.map +1 -0
  46. package/dist/types/assets/pak.d.ts +32 -0
  47. package/dist/types/assets/pak.d.ts.map +1 -0
  48. package/dist/types/assets/pakIndexStore.d.ts +19 -0
  49. package/dist/types/assets/pakIndexStore.d.ts.map +1 -0
  50. package/dist/types/assets/pakValidation.d.ts +28 -0
  51. package/dist/types/assets/pakValidation.d.ts.map +1 -0
  52. package/dist/types/assets/pakWriter.d.ts +27 -0
  53. package/dist/types/assets/pakWriter.d.ts.map +1 -0
  54. package/dist/types/assets/pcx.d.ts +13 -0
  55. package/dist/types/assets/pcx.d.ts.map +1 -0
  56. package/dist/types/assets/preview.d.ts +15 -0
  57. package/dist/types/assets/preview.d.ts.map +1 -0
  58. package/dist/types/assets/resourceTracker.d.ts +33 -0
  59. package/dist/types/assets/resourceTracker.d.ts.map +1 -0
  60. package/dist/types/assets/sprite.d.ts +23 -0
  61. package/dist/types/assets/sprite.d.ts.map +1 -0
  62. package/dist/types/assets/streamer.d.ts +17 -0
  63. package/dist/types/assets/streamer.d.ts.map +1 -0
  64. package/dist/types/assets/streamingPak.d.ts +28 -0
  65. package/dist/types/assets/streamingPak.d.ts.map +1 -0
  66. package/dist/types/assets/texture.d.ts +37 -0
  67. package/dist/types/assets/texture.d.ts.map +1 -0
  68. package/dist/types/assets/tga.d.ts +15 -0
  69. package/dist/types/assets/tga.d.ts.map +1 -0
  70. package/dist/types/assets/vfs.d.ts +57 -0
  71. package/dist/types/assets/vfs.d.ts.map +1 -0
  72. package/dist/types/assets/visibilityAnalyzer.d.ts +28 -0
  73. package/dist/types/assets/visibilityAnalyzer.d.ts.map +1 -0
  74. package/dist/types/assets/wal.d.ts +21 -0
  75. package/dist/types/assets/wal.d.ts.map +1 -0
  76. package/dist/types/assets/wav.d.ts +11 -0
  77. package/dist/types/assets/wav.d.ts.map +1 -0
  78. package/dist/types/audio/ambient.d.ts +22 -0
  79. package/dist/types/audio/ambient.d.ts.map +1 -0
  80. package/dist/types/audio/api.d.ts +37 -0
  81. package/dist/types/audio/api.d.ts.map +1 -0
  82. package/dist/types/audio/channels.d.ts +15 -0
  83. package/dist/types/audio/channels.d.ts.map +1 -0
  84. package/dist/types/audio/constants.d.ts +2 -0
  85. package/dist/types/audio/constants.d.ts.map +1 -0
  86. package/dist/types/audio/context.d.ts +79 -0
  87. package/dist/types/audio/context.d.ts.map +1 -0
  88. package/dist/types/audio/music.d.ts +49 -0
  89. package/dist/types/audio/music.d.ts.map +1 -0
  90. package/dist/types/audio/occlusion.d.ts +15 -0
  91. package/dist/types/audio/occlusion.d.ts.map +1 -0
  92. package/dist/types/audio/precache.d.ts +28 -0
  93. package/dist/types/audio/precache.d.ts.map +1 -0
  94. package/dist/types/audio/registry.d.ts +14 -0
  95. package/dist/types/audio/registry.d.ts.map +1 -0
  96. package/dist/types/audio/reverb.d.ts +17 -0
  97. package/dist/types/audio/reverb.d.ts.map +1 -0
  98. package/dist/types/audio/room.d.ts +5 -0
  99. package/dist/types/audio/room.d.ts.map +1 -0
  100. package/dist/types/audio/system.d.ts +112 -0
  101. package/dist/types/audio/system.d.ts.map +1 -0
  102. package/dist/types/cli/demoOptimizer.d.ts +10 -0
  103. package/dist/types/cli/demoOptimizer.d.ts.map +1 -0
  104. package/dist/types/commands.d.ts +27 -0
  105. package/dist/types/commands.d.ts.map +1 -0
  106. package/dist/types/configstrings.d.ts +36 -0
  107. package/dist/types/configstrings.d.ts.map +1 -0
  108. package/dist/types/cvars.d.ts +58 -0
  109. package/dist/types/cvars.d.ts.map +1 -0
  110. package/dist/types/demo/analysis.d.ts +83 -0
  111. package/dist/types/demo/analysis.d.ts.map +1 -0
  112. package/dist/types/demo/analyzer.d.ts +33 -0
  113. package/dist/types/demo/analyzer.d.ts.map +1 -0
  114. package/dist/types/demo/api.d.ts +40 -0
  115. package/dist/types/demo/api.d.ts.map +1 -0
  116. package/dist/types/demo/asyncParser.d.ts +15 -0
  117. package/dist/types/demo/asyncParser.d.ts.map +1 -0
  118. package/dist/types/demo/camera.d.ts +17 -0
  119. package/dist/types/demo/camera.d.ts.map +1 -0
  120. package/dist/types/demo/clipper.d.ts +34 -0
  121. package/dist/types/demo/clipper.d.ts.map +1 -0
  122. package/dist/types/demo/delta.d.ts +3 -0
  123. package/dist/types/demo/delta.d.ts.map +1 -0
  124. package/dist/types/demo/demo.worker.d.ts +126 -0
  125. package/dist/types/demo/demo.worker.d.ts.map +1 -0
  126. package/dist/types/demo/demoReader.d.ts +62 -0
  127. package/dist/types/demo/demoReader.d.ts.map +1 -0
  128. package/dist/types/demo/demoRecorder.d.ts +15 -0
  129. package/dist/types/demo/demoRecorder.d.ts.map +1 -0
  130. package/dist/types/demo/demoStream.d.ts +39 -0
  131. package/dist/types/demo/demoStream.d.ts.map +1 -0
  132. package/dist/types/demo/demoWriter.d.ts +8 -0
  133. package/dist/types/demo/demoWriter.d.ts.map +1 -0
  134. package/dist/types/demo/index.d.ts +6 -0
  135. package/dist/types/demo/index.d.ts.map +1 -0
  136. package/dist/types/demo/message.d.ts +178 -0
  137. package/dist/types/demo/message.d.ts.map +1 -0
  138. package/dist/types/demo/optimalClipFinder.d.ts +35 -0
  139. package/dist/types/demo/optimalClipFinder.d.ts.map +1 -0
  140. package/dist/types/demo/packager.d.ts +46 -0
  141. package/dist/types/demo/packager.d.ts.map +1 -0
  142. package/dist/types/demo/parser.d.ts +222 -0
  143. package/dist/types/demo/parser.d.ts.map +1 -0
  144. package/dist/types/demo/playback.d.ts +135 -0
  145. package/dist/types/demo/playback.d.ts.map +1 -0
  146. package/dist/types/demo/reader.d.ts +15 -0
  147. package/dist/types/demo/reader.d.ts.map +1 -0
  148. package/dist/types/demo/recorder.d.ts +14 -0
  149. package/dist/types/demo/recorder.d.ts.map +1 -0
  150. package/dist/types/demo/types.d.ts +37 -0
  151. package/dist/types/demo/types.d.ts.map +1 -0
  152. package/dist/types/demo/validator.d.ts +13 -0
  153. package/dist/types/demo/validator.d.ts.map +1 -0
  154. package/dist/types/demo/worldStateOptimizer.d.ts +13 -0
  155. package/dist/types/demo/worldStateOptimizer.d.ts.map +1 -0
  156. package/dist/types/demo/writer.d.ts +28 -0
  157. package/dist/types/demo/writer.d.ts.map +1 -0
  158. package/dist/types/editor/bsp-inspector.d.ts +39 -0
  159. package/dist/types/editor/bsp-inspector.d.ts.map +1 -0
  160. package/dist/types/editor/ent.d.ts +21 -0
  161. package/dist/types/editor/ent.d.ts.map +1 -0
  162. package/dist/types/host.d.ts +52 -0
  163. package/dist/types/host.d.ts.map +1 -0
  164. package/dist/types/index.d.ts +104 -0
  165. package/dist/types/index.d.ts.map +1 -0
  166. package/dist/types/loop.d.ts +40 -0
  167. package/dist/types/loop.d.ts.map +1 -0
  168. package/dist/types/network/clientConnection.d.ts +139 -0
  169. package/dist/types/network/clientConnection.d.ts.map +1 -0
  170. package/dist/types/render/__mocks__/frame.d.ts +31 -0
  171. package/dist/types/render/__mocks__/frame.d.ts.map +1 -0
  172. package/dist/types/render/bloom.d.ts +19 -0
  173. package/dist/types/render/bloom.d.ts.map +1 -0
  174. package/dist/types/render/bsp/generator.d.ts +25 -0
  175. package/dist/types/render/bsp/generator.d.ts.map +1 -0
  176. package/dist/types/render/bsp/geometry.d.ts +37 -0
  177. package/dist/types/render/bsp/geometry.d.ts.map +1 -0
  178. package/dist/types/render/bsp/renderer.d.ts +12 -0
  179. package/dist/types/render/bsp/renderer.d.ts.map +1 -0
  180. package/dist/types/render/bsp/surface.d.ts +4 -0
  181. package/dist/types/render/bsp/surface.d.ts.map +1 -0
  182. package/dist/types/render/bsp.d.ts +66 -0
  183. package/dist/types/render/bsp.d.ts.map +1 -0
  184. package/dist/types/render/bspPipeline.d.ts +78 -0
  185. package/dist/types/render/bspPipeline.d.ts.map +1 -0
  186. package/dist/types/render/bspTraversal.d.ts +13 -0
  187. package/dist/types/render/bspTraversal.d.ts.map +1 -0
  188. package/dist/types/render/camera.d.ts +54 -0
  189. package/dist/types/render/camera.d.ts.map +1 -0
  190. package/dist/types/render/cameraController.d.ts +28 -0
  191. package/dist/types/render/cameraController.d.ts.map +1 -0
  192. package/dist/types/render/collisionVis.d.ts +54 -0
  193. package/dist/types/render/collisionVis.d.ts.map +1 -0
  194. package/dist/types/render/colors.d.ts +6 -0
  195. package/dist/types/render/colors.d.ts.map +1 -0
  196. package/dist/types/render/context.d.ts +36 -0
  197. package/dist/types/render/context.d.ts.map +1 -0
  198. package/dist/types/render/culling.d.ts +12 -0
  199. package/dist/types/render/culling.d.ts.map +1 -0
  200. package/dist/types/render/debug.d.ts +36 -0
  201. package/dist/types/render/debug.d.ts.map +1 -0
  202. package/dist/types/render/debugMode.d.ts +10 -0
  203. package/dist/types/render/debugMode.d.ts.map +1 -0
  204. package/dist/types/render/dlight.d.ts +43 -0
  205. package/dist/types/render/dlight.d.ts.map +1 -0
  206. package/dist/types/render/frame.d.ts +78 -0
  207. package/dist/types/render/frame.d.ts.map +1 -0
  208. package/dist/types/render/geometry.d.ts +2 -0
  209. package/dist/types/render/geometry.d.ts.map +1 -0
  210. package/dist/types/render/gizmo.d.ts +32 -0
  211. package/dist/types/render/gizmo.d.ts.map +1 -0
  212. package/dist/types/render/gpuProfiler.d.ts +59 -0
  213. package/dist/types/render/gpuProfiler.d.ts.map +1 -0
  214. package/dist/types/render/instancing.d.ts +12 -0
  215. package/dist/types/render/instancing.d.ts.map +1 -0
  216. package/dist/types/render/interface.d.ts +50 -0
  217. package/dist/types/render/interface.d.ts.map +1 -0
  218. package/dist/types/render/light.d.ts +10 -0
  219. package/dist/types/render/light.d.ts.map +1 -0
  220. package/dist/types/render/lightCulling.d.ts +17 -0
  221. package/dist/types/render/lightCulling.d.ts.map +1 -0
  222. package/dist/types/render/lightStyles.d.ts +10 -0
  223. package/dist/types/render/lightStyles.d.ts.map +1 -0
  224. package/dist/types/render/materialLoader.d.ts +5 -0
  225. package/dist/types/render/materialLoader.d.ts.map +1 -0
  226. package/dist/types/render/materials.d.ts +39 -0
  227. package/dist/types/render/materials.d.ts.map +1 -0
  228. package/dist/types/render/md2Pipeline.d.ts +74 -0
  229. package/dist/types/render/md2Pipeline.d.ts.map +1 -0
  230. package/dist/types/render/md3Pipeline.d.ts +94 -0
  231. package/dist/types/render/md3Pipeline.d.ts.map +1 -0
  232. package/dist/types/render/options.d.ts +9 -0
  233. package/dist/types/render/options.d.ts.map +1 -0
  234. package/dist/types/render/particleSystem.d.ts +125 -0
  235. package/dist/types/render/particleSystem.d.ts.map +1 -0
  236. package/dist/types/render/postprocessing/pipeline.d.ts +13 -0
  237. package/dist/types/render/postprocessing/pipeline.d.ts.map +1 -0
  238. package/dist/types/render/renderer.d.ts +8 -0
  239. package/dist/types/render/renderer.d.ts.map +1 -0
  240. package/dist/types/render/resources.d.ts +69 -0
  241. package/dist/types/render/resources.d.ts.map +1 -0
  242. package/dist/types/render/scene.d.ts +31 -0
  243. package/dist/types/render/scene.d.ts.map +1 -0
  244. package/dist/types/render/shaderProgram.d.ts +19 -0
  245. package/dist/types/render/shaderProgram.d.ts.map +1 -0
  246. package/dist/types/render/skybox.d.ts +28 -0
  247. package/dist/types/render/skybox.d.ts.map +1 -0
  248. package/dist/types/render/sprite.d.ts +21 -0
  249. package/dist/types/render/sprite.d.ts.map +1 -0
  250. package/dist/types/render/types.d.ts +29 -0
  251. package/dist/types/render/types.d.ts.map +1 -0
  252. package/dist/types/render/webgpu/constants.d.ts +29 -0
  253. package/dist/types/render/webgpu/constants.d.ts.map +1 -0
  254. package/dist/types/render/webgpu/context.d.ts +41 -0
  255. package/dist/types/render/webgpu/context.d.ts.map +1 -0
  256. package/dist/types/render/webgpu/frame.d.ts +58 -0
  257. package/dist/types/render/webgpu/frame.d.ts.map +1 -0
  258. package/dist/types/render/webgpu/headless.d.ts +9 -0
  259. package/dist/types/render/webgpu/headless.d.ts.map +1 -0
  260. package/dist/types/render/webgpu/pipelines/sprite.d.ts +31 -0
  261. package/dist/types/render/webgpu/pipelines/sprite.d.ts.map +1 -0
  262. package/dist/types/render/webgpu/renderer.d.ts +30 -0
  263. package/dist/types/render/webgpu/renderer.d.ts.map +1 -0
  264. package/dist/types/render/webgpu/resources.d.ts +240 -0
  265. package/dist/types/render/webgpu/resources.d.ts.map +1 -0
  266. package/dist/types/render/webgpu/shaders/mipmapShader.d.ts +2 -0
  267. package/dist/types/render/webgpu/shaders/mipmapShader.d.ts.map +1 -0
  268. package/dist/types/render/webgpu/shaders/spriteShader.d.ts +2 -0
  269. package/dist/types/render/webgpu/shaders/spriteShader.d.ts.map +1 -0
  270. package/dist/types/runtime.d.ts +19 -0
  271. package/dist/types/runtime.d.ts.map +1 -0
  272. package/dist/types/stream/streamingBuffer.d.ts +102 -0
  273. package/dist/types/stream/streamingBuffer.d.ts.map +1 -0
  274. package/dist/types/tools/lightmapExport.d.ts +17 -0
  275. package/dist/types/tools/lightmapExport.d.ts.map +1 -0
  276. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../src/assets/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,aAAa;IAMZ,OAAO,CAAC,QAAQ,CAAC,GAAG;IALhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;IACjC,OAAO,CAAC,aAAa,CAAK;gBAEG,GAAG,EAAE,iBAAiB,EAAE,OAAO,GAAE,oBAAyB;IAOvF,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAEK,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAgB/C,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAW3B,QAAQ,IAAI,IAAI;IAKhB,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;YAEa,iBAAiB;IAoB/B,OAAO,CAAC,iBAAiB;CA+B1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=audio.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.worker.d.ts","sourceRoot":"","sources":["../../../src/assets/audio.worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ import { type PakIngestionOptions, type PakIngestionResult, type PakSource } from './ingestion.js';
2
+ import { VirtualFileSystem } from './vfs.js';
3
+ export declare function filesToPakSources(files: Iterable<File>): PakSource[];
4
+ export declare function ingestPakFiles(vfs: VirtualFileSystem, files: Iterable<File>, options?: PakIngestionOptions): Promise<PakIngestionResult[]>;
5
+ export declare function wireDropTarget(element: HTMLElement, handler: (files: File[]) => void): () => void;
6
+ export declare function wireFileInput(input: HTMLInputElement, handler: (files: FileList) => void): () => void;
7
+ //# sourceMappingURL=browserIngestion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browserIngestion.d.ts","sourceRoot":"","sources":["../../../src/assets/browserIngestion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAM7C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE,CAEpE;AAED,wBAAsB,cAAc,CAClC,GAAG,EAAE,iBAAiB,EACtB,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAG/B;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,GAC/B,MAAM,IAAI,CAqBZ;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GACjC,MAAM,IAAI,CAYZ"}
@@ -0,0 +1,197 @@
1
+ import { VirtualFileSystem } from './vfs.js';
2
+ export type Vec3 = [number, number, number];
3
+ export interface BspLumpInfo {
4
+ readonly offset: number;
5
+ readonly length: number;
6
+ }
7
+ export interface BspHeader {
8
+ readonly version: number;
9
+ readonly lumps: ReadonlyMap<BspLump, BspLumpInfo>;
10
+ }
11
+ export interface BspEntities {
12
+ readonly raw: string;
13
+ readonly entities: BspEntity[];
14
+ readonly worldspawn: BspEntity | undefined;
15
+ /**
16
+ * Returns a sorted array of unique entity classnames present in the map.
17
+ */
18
+ getUniqueClassnames(): string[];
19
+ }
20
+ export interface BspEntity {
21
+ readonly classname?: string;
22
+ readonly properties: Record<string, string>;
23
+ }
24
+ export interface BspPlane {
25
+ readonly normal: Vec3;
26
+ readonly dist: number;
27
+ readonly type: number;
28
+ }
29
+ export interface BspNode {
30
+ readonly planeIndex: number;
31
+ readonly children: [number, number];
32
+ readonly mins: [number, number, number];
33
+ readonly maxs: [number, number, number];
34
+ readonly firstFace: number;
35
+ readonly numFaces: number;
36
+ }
37
+ export interface BspLeaf {
38
+ readonly contents: number;
39
+ readonly cluster: number;
40
+ readonly area: number;
41
+ readonly mins: [number, number, number];
42
+ readonly maxs: [number, number, number];
43
+ readonly firstLeafFace: number;
44
+ readonly numLeafFaces: number;
45
+ readonly firstLeafBrush: number;
46
+ readonly numLeafBrushes: number;
47
+ }
48
+ export interface BspTexInfo {
49
+ readonly s: Vec3;
50
+ readonly sOffset: number;
51
+ readonly t: Vec3;
52
+ readonly tOffset: number;
53
+ readonly flags: number;
54
+ readonly value: number;
55
+ readonly texture: string;
56
+ readonly nextTexInfo: number;
57
+ }
58
+ export interface BspFace {
59
+ readonly planeIndex: number;
60
+ readonly side: number;
61
+ readonly firstEdge: number;
62
+ readonly numEdges: number;
63
+ readonly texInfo: number;
64
+ readonly styles: [number, number, number, number];
65
+ readonly lightOffset: number;
66
+ }
67
+ export interface BspEdge {
68
+ readonly vertices: [number, number];
69
+ }
70
+ export interface BspModel {
71
+ readonly mins: Vec3;
72
+ readonly maxs: Vec3;
73
+ readonly origin: Vec3;
74
+ readonly headNode: number;
75
+ readonly firstFace: number;
76
+ readonly numFaces: number;
77
+ }
78
+ export interface BspBrush {
79
+ readonly firstSide: number;
80
+ readonly numSides: number;
81
+ readonly contents: number;
82
+ }
83
+ export interface BspBrushSide {
84
+ readonly planeIndex: number;
85
+ readonly texInfo: number;
86
+ }
87
+ export interface BspArea {
88
+ readonly numAreaPortals: number;
89
+ readonly firstAreaPortal: number;
90
+ }
91
+ export interface BspAreaPortal {
92
+ readonly portalNumber: number;
93
+ readonly otherArea: number;
94
+ }
95
+ export interface BspVisibilityCluster {
96
+ readonly pvs: Uint8Array;
97
+ readonly phs: Uint8Array;
98
+ }
99
+ export interface BspVisibility {
100
+ readonly numClusters: number;
101
+ readonly clusters: readonly BspVisibilityCluster[];
102
+ }
103
+ export interface BspLightmapInfo {
104
+ readonly offset: number;
105
+ readonly length: number;
106
+ }
107
+ export interface BspLeafLists {
108
+ readonly leafFaces: readonly number[][];
109
+ readonly leafBrushes: readonly number[][];
110
+ }
111
+ export interface BspData {
112
+ readonly header: BspHeader;
113
+ readonly entities: BspEntities;
114
+ readonly planes: readonly BspPlane[];
115
+ readonly vertices: readonly Vec3[];
116
+ readonly nodes: readonly BspNode[];
117
+ readonly texInfo: readonly BspTexInfo[];
118
+ readonly faces: readonly BspFace[];
119
+ readonly lightMaps: Uint8Array;
120
+ readonly lightMapInfo: readonly (BspLightmapInfo | undefined)[];
121
+ readonly leafs: readonly BspLeaf[];
122
+ readonly leafLists: BspLeafLists;
123
+ readonly edges: readonly BspEdge[];
124
+ readonly surfEdges: Int32Array;
125
+ readonly models: readonly BspModel[];
126
+ readonly brushes: readonly BspBrush[];
127
+ readonly brushSides: readonly BspBrushSide[];
128
+ readonly visibility: BspVisibility | undefined;
129
+ readonly areas: readonly BspArea[];
130
+ readonly areaPortals: readonly BspAreaPortal[];
131
+ }
132
+ export interface BspMap extends BspData {
133
+ /**
134
+ * Finds the closest brush-based entity that intersects with the given ray.
135
+ * @param ray An object defining the origin and direction of the ray.
136
+ * @returns An object containing the intersected entity, its model, and the
137
+ * distance from the ray's origin, or null if no intersection occurs.
138
+ */
139
+ pickEntity(ray: {
140
+ origin: Vec3;
141
+ direction: Vec3;
142
+ }): {
143
+ entity: BspEntity;
144
+ model: BspModel;
145
+ distance: number;
146
+ } | null;
147
+ /**
148
+ * Finds the leaf node containing the given point.
149
+ */
150
+ findLeaf(origin: Vec3): BspLeaf;
151
+ /**
152
+ * Returns the PVS (Potentially Visible Set) for the given point.
153
+ * Returns undefined if the point is not in a valid cluster or visibility data is missing.
154
+ */
155
+ calculatePVS(origin: Vec3): Uint8Array | undefined;
156
+ }
157
+ export declare enum BspLump {
158
+ Entities = 0,
159
+ Planes = 1,
160
+ Vertices = 2,
161
+ Visibility = 3,
162
+ Nodes = 4,
163
+ TexInfo = 5,
164
+ Faces = 6,
165
+ Lighting = 7,
166
+ Leafs = 8,
167
+ LeafFaces = 9,
168
+ LeafBrushes = 10,
169
+ Edges = 11,
170
+ SurfEdges = 12,
171
+ Models = 13,
172
+ Brushes = 14,
173
+ BrushSides = 15,
174
+ Pop = 16,
175
+ Areas = 17,
176
+ AreaPortals = 18
177
+ }
178
+ export declare class BspParseError extends Error {
179
+ }
180
+ export interface BspLoaderOptions {
181
+ useWorker?: boolean;
182
+ workerPath?: string;
183
+ }
184
+ export declare class BspLoader {
185
+ private readonly vfs;
186
+ private readonly options;
187
+ constructor(vfs: VirtualFileSystem, options?: BspLoaderOptions);
188
+ load(path: string): Promise<BspMap>;
189
+ private parseInWorker;
190
+ private rehydrateData;
191
+ }
192
+ export declare function parseBsp(buffer: ArrayBuffer): BspMap;
193
+ export declare function createBspMap(data: BspData): BspMap;
194
+ export declare function parseBspData(buffer: ArrayBuffer): BspData;
195
+ export declare function createFaceLightmap(face: BspFace, lightMaps: Uint8Array, info?: BspLightmapInfo): Uint8Array | undefined;
196
+ export declare function parseWorldspawnSettings(entities: BspEntities): Record<string, string>;
197
+ //# sourceMappingURL=bsp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bsp.d.ts","sourceRoot":"","sources":["../../../src/assets/bsp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=bsp.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bsp.worker.d.ts","sourceRoot":"","sources":["../../../src/assets/bsp.worker.ts"],"names":[],"mappings":""}
@@ -0,0 +1,26 @@
1
+ export interface CacheEntry<T> {
2
+ key: string;
3
+ value: T;
4
+ }
5
+ export declare class LruCache<T> {
6
+ private _capacity;
7
+ private _maxMemory;
8
+ private readonly sizeCalculator;
9
+ private readonly map;
10
+ private currentMemoryUsage;
11
+ constructor(_capacity: number, _maxMemory?: number, sizeCalculator?: (value: T) => number);
12
+ get size(): number;
13
+ get memoryUsage(): number;
14
+ get capacity(): number;
15
+ set capacity(value: number);
16
+ get maxMemory(): number;
17
+ set maxMemory(value: number);
18
+ has(key: string): boolean;
19
+ get(key: string): T | undefined;
20
+ set(key: string, value: T): void;
21
+ delete(key: string): boolean;
22
+ clear(): void;
23
+ entries(): CacheEntry<T>[];
24
+ private evict;
25
+ }
26
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/assets/cache.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,CAAC,CAAC;CACV;AAED,qBAAa,QAAQ,CAAC,CAAC;IAKnB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ,CAAC,cAAc;IANjC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAwB;IAC5C,OAAO,CAAC,kBAAkB,CAAK;gBAGrB,SAAS,EAAE,MAAM,EACjB,UAAU,GAAE,MAAiB,EACpB,cAAc,GAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAgB;IAOjE,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAMzB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAG1B;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAW/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAchC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAS5B,KAAK,IAAI,IAAI;IAKb,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;IAI1B,OAAO,CAAC,KAAK;CAqBd"}
@@ -0,0 +1,35 @@
1
+ import { VirtualFileSystem } from './vfs.js';
2
+ import { AssetManager } from './manager.js';
3
+ import { BspEntity } from './bsp.js';
4
+ export interface MapDependencies {
5
+ textures: string[];
6
+ models: string[];
7
+ sounds: string[];
8
+ }
9
+ export declare class AssetCrossReference {
10
+ private readonly vfs;
11
+ private readonly assetManager;
12
+ constructor(vfs: VirtualFileSystem, assetManager: AssetManager);
13
+ /**
14
+ * Find which models use this texture
15
+ */
16
+ getModelsUsingTexture(texturePath: string): Promise<string[]>;
17
+ /**
18
+ * Find which maps use this model
19
+ */
20
+ getMapsUsingModel(modelPath: string): Promise<string[]>;
21
+ /**
22
+ * Find which entities use this sound.
23
+ * Scans all maps and returns entities that reference the sound.
24
+ * Note: The BspEntity object doesn't inherently store its origin map,
25
+ * so checking the context requires correlating with the map iteration if needed by the caller,
26
+ * but the interface is just BspEntity[].
27
+ */
28
+ getEntitiesUsingSound(soundPath: string): Promise<BspEntity[]>;
29
+ /**
30
+ * Get all assets referenced by this map
31
+ */
32
+ getMapDependencies(mapPath: string): Promise<MapDependencies>;
33
+ private extractEntityAssets;
34
+ }
35
+ //# sourceMappingURL=crossReference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crossReference.d.ts","sourceRoot":"","sources":["../../../src/assets/crossReference.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAoB,SAAS,EAAE,MAAM,UAAU,CAAC;AAKvD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBADZ,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,YAAY;IAG7C;;OAEG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA4CnE;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAoC7D;;;;;;OAMG;IACG,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsCpE;;OAEG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAmCnE,OAAO,CAAC,mBAAmB;CA0B5B"}
@@ -0,0 +1,31 @@
1
+ export interface EntEntity {
2
+ classname?: string;
3
+ properties: Record<string, string>;
4
+ }
5
+ export interface ValidationResult {
6
+ valid: boolean;
7
+ errors: string[];
8
+ warnings: string[];
9
+ }
10
+ /**
11
+ * Parses an ENT entity lump string into an array of entity objects.
12
+ *
13
+ * @param text The ENT file content (string).
14
+ * @returns Array of parsed entities with properties.
15
+ */
16
+ export declare function parseEntLump(text: string): EntEntity[];
17
+ /**
18
+ * Serializes an array of entities to the ENT file format.
19
+ *
20
+ * @param entities Array of entities to serialize.
21
+ * @returns The ENT string.
22
+ */
23
+ export declare function serializeEntLump(entities: EntEntity[]): string;
24
+ /**
25
+ * Validates an entity against basic rules.
26
+ *
27
+ * @param entity The entity to validate.
28
+ * @returns validation result
29
+ */
30
+ export declare function validateEntity(entity: EntEntity): ValidationResult;
31
+ //# sourceMappingURL=ent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ent.d.ts","sourceRoot":"","sources":["../../../src/assets/ent.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAqHtD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CA4B9D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CA4BlE"}
@@ -0,0 +1,18 @@
1
+ export declare enum FileType {
2
+ Unknown = "unknown",
3
+ BSP = "bsp",
4
+ MD2 = "md2",
5
+ MD3 = "md3",
6
+ WAL = "wal",
7
+ PCX = "pcx",
8
+ TGA = "tga",
9
+ WAV = "wav",
10
+ OGG = "ogg",
11
+ TXT = "txt",
12
+ CFG = "cfg",
13
+ DEM = "dem"
14
+ }
15
+ export declare function detectFileType(path: string, data?: Uint8Array): FileType;
16
+ export declare function isTextFile(path: string): boolean;
17
+ export declare function isBinaryFile(path: string): boolean;
18
+ //# sourceMappingURL=fileType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileType.d.ts","sourceRoot":"","sources":["../../../src/assets/fileType.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,YAAY;IACnB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAsCD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CA2BxE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGhD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD"}
@@ -0,0 +1,11 @@
1
+ import { BspLoader, BspMap } from '../assets/bsp.js';
2
+ import { MapGeometry, TextureReference, LightmapData } from '../render/types.js';
3
+ export declare class HeadlessMapLoader {
4
+ private readonly loader;
5
+ constructor(loader: BspLoader);
6
+ load(mapName: string): Promise<BspMap>;
7
+ getMapGeometry(mapName: string): Promise<MapGeometry>;
8
+ getMapTextures(mapName: string): Promise<TextureReference[]>;
9
+ getMapLightmaps(mapName: string): Promise<LightmapData[]>;
10
+ }
11
+ //# sourceMappingURL=headlessLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"headlessLoader.d.ts","sourceRoot":"","sources":["../../../src/assets/headlessLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEjF,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAExC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItC,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBrD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgB5D,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;CAiBhE"}
@@ -0,0 +1,30 @@
1
+ export * from './animation.js';
2
+ export * from './audio.js';
3
+ export * from './browserIngestion.js';
4
+ export * from './bsp.js';
5
+ export * from './cache.js';
6
+ export * from './fileType.js';
7
+ export * from './headlessLoader.js';
8
+ export * from './ingestion.js';
9
+ export * from './manager.js';
10
+ export * from './mapStatistics.js';
11
+ export * from './md2.js';
12
+ export * from './md3.js';
13
+ export * from './ogg.js';
14
+ export * from './pak.js';
15
+ export * from './pakIndexStore.js';
16
+ export * from './pakValidation.js';
17
+ export * from './pakWriter.js';
18
+ export * from './pcx.js';
19
+ export * from './preview.js';
20
+ export * from './resourceTracker.js';
21
+ export * from './sprite.js';
22
+ export * from './streamer.js';
23
+ export * from './texture.js';
24
+ export * from './tga.js';
25
+ export * from './vfs.js';
26
+ export * from './visibilityAnalyzer.js';
27
+ export * from './interactionGraph.js';
28
+ export * from './wal.js';
29
+ export * from './wav.js';
30
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/assets/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { PakArchive } from './pak.js';
2
+ import { VirtualFileSystem } from './vfs.js';
3
+ import { PakIndexStore } from './pakIndexStore.js';
4
+ import { PakValidator, type PakValidationOutcome } from './pakValidation.js';
5
+ export interface PakSource {
6
+ readonly name: string;
7
+ readonly data: ArrayBuffer | Blob | ArrayBufferView;
8
+ }
9
+ export interface PakIngestionProgress {
10
+ readonly file: string;
11
+ readonly loadedBytes: number;
12
+ readonly totalBytes: number;
13
+ readonly state: 'reading' | 'parsed' | 'error';
14
+ }
15
+ export interface PakIngestionResult {
16
+ readonly archive: PakArchive;
17
+ readonly mounted: boolean;
18
+ readonly validation?: PakValidationOutcome;
19
+ }
20
+ export interface PakIngestionOptions {
21
+ readonly onProgress?: (progress: PakIngestionProgress) => void;
22
+ readonly onError?: (file: string, error: unknown) => void;
23
+ /**
24
+ * Whether ingestion should abort when a single PAK fails to parse or mount.
25
+ * Defaults to false to allow partial success in multi-PAK scenarios.
26
+ */
27
+ readonly stopOnError?: boolean;
28
+ /**
29
+ * Optional persistence target for PAK directory indexes. When provided, each successfully
30
+ * parsed archive will be stored in IndexedDB so the browser can rebuild listings without
31
+ * reparsing the binary payload.
32
+ */
33
+ readonly pakIndexStore?: PakIndexStore;
34
+ /**
35
+ * Whether to persist parsed PAK indexes. Defaults to true when a pakIndexStore is provided.
36
+ */
37
+ readonly persistIndexes?: boolean;
38
+ /**
39
+ * Optional checksum validator. When provided, PAKs whose checksums do not match the known list will
40
+ * raise a PakValidationError unless `enforceValidation` is explicitly set to false.
41
+ */
42
+ readonly validator?: PakValidator;
43
+ /**
44
+ * Whether checksum mismatches should prevent mounting the archive. Defaults to true when a validator
45
+ * is supplied.
46
+ */
47
+ readonly enforceValidation?: boolean;
48
+ /**
49
+ * Whether unknown PAKs (not present in the validator list) are allowed. Defaults to true.
50
+ */
51
+ readonly allowUnknownPaks?: boolean;
52
+ /**
53
+ * Callback invoked with the validation outcome when a validator is provided.
54
+ */
55
+ readonly onValidationResult?: (outcome: PakValidationOutcome) => void;
56
+ }
57
+ export declare class PakIngestionError extends Error {
58
+ readonly file: string;
59
+ constructor(file: string, cause: unknown);
60
+ }
61
+ export declare function ingestPaks(vfs: VirtualFileSystem, sources: PakSource[], onProgressOrOptions?: PakIngestionOptions | ((progress: PakIngestionProgress) => void)): Promise<PakIngestionResult[]>;
62
+ //# sourceMappingURL=ingestion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingestion.d.ts","sourceRoot":"","sources":["../../../src/assets/ingestion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAsB,YAAY,EAAE,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEjG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,eAAe,CAAC;CACrD;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;CAChD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1D;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,YAAY,CAAC;IAClC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC;;OAEG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC;;OAEG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACvE;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CASlD;AAwFD,wBAAsB,UAAU,CAC9B,GAAG,EAAE,iBAAiB,EACtB,OAAO,EAAE,SAAS,EAAE,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GAAG,CAAC,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC,GACrF,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAsD/B"}
@@ -0,0 +1,21 @@
1
+ import { VisibilityTimeline } from './visibilityAnalyzer.js';
2
+ import { AssetManager } from './manager.js';
3
+ export interface ResourceGraph {
4
+ nodes: Set<string>;
5
+ edges: Map<string, Set<string>>;
6
+ reverseEdges: Map<string, Set<string>>;
7
+ }
8
+ export declare class ResourceInteractionGraph {
9
+ private graph;
10
+ constructor();
11
+ getGraph(): ResourceGraph;
12
+ buildGraph(timeline: VisibilityTimeline, assetManager: AssetManager): Promise<ResourceGraph>;
13
+ getTransitiveDependencies(resource: string): Set<string>;
14
+ getMinimalSetForFrame(frame: number, timeline: VisibilityTimeline): Set<string>;
15
+ getMinimalSetForRange(start: number, end: number, timeline: VisibilityTimeline): Set<string>;
16
+ private clear;
17
+ private addNode;
18
+ private addDependency;
19
+ private resolveDependencies;
20
+ }
21
+ //# sourceMappingURL=interactionGraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionGraph.d.ts","sourceRoot":"","sources":["../../../src/assets/interactionGraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAEnB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC1C;AAED,qBAAa,wBAAwB;IACjC,OAAO,CAAC,KAAK,CAAgB;;IAUtB,QAAQ,IAAI,aAAa;IAInB,UAAU,CAAC,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAuClG,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAiBxD,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC;IAkB/E,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG,GAAG,CAAC,MAAM,CAAC;IAcnG,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,aAAa;YAeP,mBAAmB;CAoBpC"}
@@ -0,0 +1,97 @@
1
+ import { TextureCache, type PreparedTexture } from './texture.js';
2
+ import { AudioRegistry, type DecodedAudio } from './audio.js';
3
+ import { type Md2Model } from './md2.js';
4
+ import { type Md3Model } from './md3.js';
5
+ import { type SpriteModel } from './sprite.js';
6
+ import { VirtualFileSystem, VirtualFileHandle } from './vfs.js';
7
+ import { type BspMap } from './bsp.js';
8
+ import { ResourceLoadTracker } from './resourceTracker.js';
9
+ export type AssetType = 'texture' | 'model' | 'sound' | 'sprite' | 'map';
10
+ export interface MemoryUsage {
11
+ textures: number;
12
+ audio: number;
13
+ heapTotal?: number;
14
+ heapUsed?: number;
15
+ }
16
+ export interface MemoryBudget {
17
+ textureMemoryLimit?: number;
18
+ textureCacheCapacity?: number;
19
+ audioCacheSize?: number;
20
+ }
21
+ export declare class AssetDependencyError extends Error {
22
+ readonly missing: readonly string[];
23
+ constructor(missing: readonly string[], message?: string);
24
+ }
25
+ export declare class AssetDependencyTracker {
26
+ private readonly nodes;
27
+ register(assetKey: string, dependencies?: readonly string[]): void;
28
+ markLoaded(assetKey: string): void;
29
+ markUnloaded(assetKey: string): void;
30
+ isLoaded(assetKey: string): boolean;
31
+ missingDependencies(assetKey: string): string[];
32
+ reset(): void;
33
+ private getMissingDependencies;
34
+ }
35
+ export interface AssetManagerOptions {
36
+ readonly textureCacheCapacity?: number;
37
+ readonly textureMemoryLimit?: number;
38
+ readonly audioCacheSize?: number;
39
+ readonly dependencyTracker?: AssetDependencyTracker;
40
+ readonly resourceTracker?: ResourceLoadTracker;
41
+ readonly maxConcurrentLoads?: number;
42
+ readonly bspWorkerPath?: string;
43
+ readonly audioWorkerPath?: string;
44
+ }
45
+ export declare class AssetManager {
46
+ private readonly vfs;
47
+ readonly textures: TextureCache;
48
+ readonly audio: AudioRegistry;
49
+ readonly dependencyTracker: AssetDependencyTracker;
50
+ readonly resourceTracker?: ResourceLoadTracker;
51
+ private readonly md2;
52
+ private readonly md3;
53
+ private readonly sprite;
54
+ private readonly bsp;
55
+ private palette;
56
+ private readonly maps;
57
+ private readonly loadQueue;
58
+ private activeLoads;
59
+ private readonly maxConcurrentLoads;
60
+ constructor(vfs: VirtualFileSystem, options?: AssetManagerOptions);
61
+ /**
62
+ * Loads the global palette (pics/colormap.pcx) if available.
63
+ * This is required for loading WAL textures.
64
+ */
65
+ loadPalette(path?: string): Promise<void>;
66
+ isAssetLoaded(type: AssetType, path: string): boolean;
67
+ registerTexture(path: string, texture: PreparedTexture): void;
68
+ loadTexture(path: string): Promise<PreparedTexture>;
69
+ loadSound(path: string): Promise<DecodedAudio>;
70
+ loadMd2Model(path: string, textureDependencies?: readonly string[]): Promise<Md2Model>;
71
+ getMd2Model(path: string): Md2Model | undefined;
72
+ loadMd3Model(path: string, textureDependencies?: readonly string[]): Promise<Md3Model>;
73
+ getMd3Model(path: string): Md3Model | undefined;
74
+ loadSprite(path: string): Promise<SpriteModel>;
75
+ loadMap(path: string): Promise<BspMap>;
76
+ getMap(path: string): BspMap | undefined;
77
+ listFiles(extension: string): VirtualFileHandle[];
78
+ resetForLevelChange(): void;
79
+ getMemoryUsage(): MemoryUsage;
80
+ enforceMemoryBudget(budget: MemoryBudget): void;
81
+ clearCache(type: AssetType): void;
82
+ /**
83
+ * Preload a list of assets with low priority.
84
+ */
85
+ preloadAssets(paths: string[]): Promise<void>;
86
+ /**
87
+ * Queue an asset for loading.
88
+ * @param path The path to the asset.
89
+ * @param type The type of asset.
90
+ * @param priority Higher priority assets are loaded first. Default 1 (High).
91
+ */
92
+ queueLoad<T>(path: string, type: AssetType, priority?: number): Promise<T>;
93
+ private processQueue;
94
+ private detectAssetType;
95
+ private makeKey;
96
+ }
97
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/assets/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { BspLoader } from './bsp.js';
2
+ export interface MapStatistics {
3
+ readonly entityCount: number;
4
+ readonly surfaceCount: number;
5
+ readonly lightmapCount: number;
6
+ readonly vertexCount: number;
7
+ readonly bounds: {
8
+ readonly mins: [number, number, number];
9
+ readonly maxs: [number, number, number];
10
+ };
11
+ }
12
+ export declare class MapAnalyzer {
13
+ private readonly loader;
14
+ constructor(loader: BspLoader);
15
+ getMapStatistics(mapName: string): Promise<MapStatistics>;
16
+ getUsedTextures(mapName: string): Promise<string[]>;
17
+ getUsedModels(mapName: string): Promise<string[]>;
18
+ getUsedSounds(mapName: string): Promise<string[]>;
19
+ }
20
+ //# sourceMappingURL=mapStatistics.d.ts.map