@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":"mapStatistics.d.ts","sourceRoot":"","sources":["../../../src/assets/mapStatistics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAW,MAAM,UAAU,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC,CAAC;CACH;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,SAAS;IAExC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IA+BzD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAcnD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAkBjD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CA0BxD"}
@@ -0,0 +1,82 @@
1
+ import { Vec3 } from '@quake2ts/shared';
2
+ import { VirtualFileSystem } from './vfs.js';
3
+ export interface Md2Header {
4
+ readonly ident: number;
5
+ readonly version: number;
6
+ readonly skinWidth: number;
7
+ readonly skinHeight: number;
8
+ readonly frameSize: number;
9
+ readonly numSkins: number;
10
+ readonly numVertices: number;
11
+ readonly numTexCoords: number;
12
+ readonly numTriangles: number;
13
+ readonly numGlCommands: number;
14
+ readonly numFrames: number;
15
+ readonly offsetSkins: number;
16
+ readonly offsetTexCoords: number;
17
+ readonly offsetTriangles: number;
18
+ readonly offsetFrames: number;
19
+ readonly offsetGlCommands: number;
20
+ readonly offsetEnd: number;
21
+ readonly magic: number;
22
+ }
23
+ export interface Md2Skin {
24
+ readonly name: string;
25
+ }
26
+ export interface Md2TexCoord {
27
+ readonly s: number;
28
+ readonly t: number;
29
+ }
30
+ export interface Md2Triangle {
31
+ readonly vertexIndices: [number, number, number];
32
+ readonly texCoordIndices: [number, number, number];
33
+ }
34
+ export interface Md2Vertex {
35
+ readonly position: Vec3;
36
+ readonly normalIndex: number;
37
+ readonly normal: Vec3;
38
+ }
39
+ export interface Md2Frame {
40
+ readonly name: string;
41
+ readonly vertices: readonly Md2Vertex[];
42
+ readonly minBounds: Vec3;
43
+ readonly maxBounds: Vec3;
44
+ }
45
+ export interface Md2GlCommandVertex {
46
+ readonly s: number;
47
+ readonly t: number;
48
+ readonly vertexIndex: number;
49
+ }
50
+ export interface Md2GlCommand {
51
+ readonly mode: 'strip' | 'fan';
52
+ readonly vertices: readonly Md2GlCommandVertex[];
53
+ }
54
+ export interface Md2Model {
55
+ readonly header: Md2Header;
56
+ readonly skins: readonly Md2Skin[];
57
+ readonly texCoords: readonly Md2TexCoord[];
58
+ readonly triangles: readonly Md2Triangle[];
59
+ readonly frames: readonly Md2Frame[];
60
+ readonly glCommands: readonly Md2GlCommand[];
61
+ /**
62
+ * Multiple LOD versions of model (high, medium, low poly)
63
+ */
64
+ readonly lods?: Md2Model[];
65
+ }
66
+ export interface Md2Animation {
67
+ readonly name: string;
68
+ readonly firstFrame: number;
69
+ readonly lastFrame: number;
70
+ }
71
+ export declare class Md2ParseError extends Error {
72
+ }
73
+ export declare class Md2Loader {
74
+ private readonly vfs;
75
+ private readonly cache;
76
+ constructor(vfs: VirtualFileSystem);
77
+ load(path: string): Promise<Md2Model>;
78
+ get(path: string): Md2Model | undefined;
79
+ }
80
+ export declare function parseMd2(buffer: ArrayBuffer): Md2Model;
81
+ export declare function groupMd2Animations(frames: readonly Md2Frame[]): Md2Animation[];
82
+ //# sourceMappingURL=md2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md2.d.ts","sourceRoot":"","sources":["../../../src/assets/md2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { Vec3 } from '@quake2ts/shared';
2
+ import { VirtualFileSystem } from './vfs.js';
3
+ export interface Md3Header {
4
+ readonly ident: number;
5
+ readonly version: number;
6
+ readonly name: string;
7
+ readonly flags: number;
8
+ readonly numFrames: number;
9
+ readonly numTags: number;
10
+ readonly numSurfaces: number;
11
+ readonly numSkins: number;
12
+ readonly ofsFrames: number;
13
+ readonly ofsTags: number;
14
+ readonly ofsSurfaces: number;
15
+ readonly ofsEnd: number;
16
+ readonly magic?: number;
17
+ }
18
+ export interface Md3Frame {
19
+ readonly minBounds: Vec3;
20
+ readonly maxBounds: Vec3;
21
+ readonly localOrigin: Vec3;
22
+ readonly radius: number;
23
+ readonly name: string;
24
+ }
25
+ export interface Md3Tag {
26
+ readonly name: string;
27
+ readonly origin: Vec3;
28
+ readonly axis: readonly [Vec3, Vec3, Vec3];
29
+ }
30
+ export interface Md3Triangle {
31
+ readonly indices: readonly [number, number, number];
32
+ }
33
+ export interface Md3Shader {
34
+ readonly name: string;
35
+ readonly shaderIndex: number;
36
+ }
37
+ export interface Md3TexCoord {
38
+ readonly s: number;
39
+ readonly t: number;
40
+ }
41
+ export interface Md3Vertex {
42
+ readonly position: Vec3;
43
+ readonly normal: Vec3;
44
+ readonly latLng: number;
45
+ }
46
+ export interface Md3Surface {
47
+ readonly name: string;
48
+ readonly flags: number;
49
+ readonly numFrames: number;
50
+ readonly shaders: readonly Md3Shader[];
51
+ readonly triangles: readonly Md3Triangle[];
52
+ readonly texCoords: readonly Md3TexCoord[];
53
+ readonly vertices: readonly (readonly Md3Vertex[])[];
54
+ }
55
+ export interface Md3Model {
56
+ readonly header: Md3Header;
57
+ readonly frames: readonly Md3Frame[];
58
+ readonly tags: readonly Md3Tag[][];
59
+ readonly surfaces: readonly Md3Surface[];
60
+ }
61
+ export declare class Md3ParseError extends Error {
62
+ constructor(message: string);
63
+ }
64
+ export declare function parseMd3(buffer: ArrayBufferLike): Md3Model;
65
+ export declare class Md3Loader {
66
+ private readonly vfs;
67
+ private readonly cache;
68
+ constructor(vfs: VirtualFileSystem);
69
+ load(path: string): Promise<Md3Model>;
70
+ get(path: string): Md3Model | undefined;
71
+ }
72
+ //# sourceMappingURL=md3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"md3.d.ts","sourceRoot":"","sources":["../../../src/assets/md3.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { OggVorbisDecoder } from '@wasm-audio-decoders/ogg-vorbis';
2
+ export interface OggAudio {
3
+ readonly sampleRate: number;
4
+ readonly channels: number;
5
+ readonly bitDepth: number;
6
+ readonly channelData: readonly Float32Array[];
7
+ }
8
+ export declare class OggDecodeError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ export declare function decodeOgg(buffer: ArrayBuffer, decoder?: OggVorbisDecoder): Promise<OggAudio>;
12
+ //# sourceMappingURL=ogg.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ogg.d.ts","sourceRoot":"","sources":["../../../src/assets/ogg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;CAC/C;AAED,qBAAa,cAAe,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,gBAAyC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAe1H"}
@@ -0,0 +1,32 @@
1
+ export interface PakDirectoryEntry {
2
+ readonly name: string;
3
+ readonly offset: number;
4
+ readonly length: number;
5
+ }
6
+ export interface PakValidationResult {
7
+ readonly checksum: number;
8
+ readonly entries: readonly PakDirectoryEntry[];
9
+ }
10
+ declare function normalizePath(path: string): string;
11
+ export declare class PakParseError extends Error {
12
+ }
13
+ export declare class PakArchive {
14
+ readonly name: string;
15
+ private readonly buffer;
16
+ static fromArrayBuffer(name: string, buffer: ArrayBuffer): PakArchive;
17
+ readonly entries: ReadonlyMap<string, PakDirectoryEntry>;
18
+ readonly checksum: number;
19
+ readonly size: number;
20
+ private constructor();
21
+ getEntry(path: string): PakDirectoryEntry | undefined;
22
+ listEntries(): PakDirectoryEntry[];
23
+ /**
24
+ * Returns a list of all file paths in the PAK archive.
25
+ */
26
+ list(): string[];
27
+ readFile(path: string): Uint8Array;
28
+ validate(): PakValidationResult;
29
+ }
30
+ export declare function calculatePakChecksum(buffer: ArrayBuffer): number;
31
+ export { normalizePath };
32
+ //# sourceMappingURL=pak.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pak.d.ts","sourceRoot":"","sources":["../../../src/assets/pak.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAChD;AAcD,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3C;AAyBD,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAE3C,qBAAa,UAAU;IAsEnB,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAtEzB,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,UAAU;IAgErE,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO;IAWP,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIrD,WAAW,IAAI,iBAAiB,EAAE;IAIlC;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;IAIhB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU;IAQlC,QAAQ,IAAI,mBAAmB;CAMhC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEhE;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { PakArchive, type PakValidationResult } from './pak.js';
2
+ export interface StoredPakIndex extends PakValidationResult {
3
+ readonly key: string;
4
+ readonly name: string;
5
+ readonly size: number;
6
+ readonly persistedAt: number;
7
+ }
8
+ export declare class PakIndexStore {
9
+ private readonly dbName;
10
+ private readonly storeName;
11
+ constructor(dbName?: string, storeName?: string);
12
+ get isSupported(): boolean;
13
+ persist(archive: PakArchive): Promise<StoredPakIndex | undefined>;
14
+ find(name: string, checksum?: number): Promise<StoredPakIndex | undefined>;
15
+ remove(name: string, checksum?: number): Promise<boolean>;
16
+ clear(): Promise<void>;
17
+ list(): Promise<StoredPakIndex[]>;
18
+ }
19
+ //# sourceMappingURL=pakIndexStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pakIndexStore.d.ts","sourceRoot":"","sources":["../../../src/assets/pakIndexStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAA0B,KAAK,mBAAmB,EAAiB,MAAM,UAAU,CAAC;AAKvG,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AA4DD,qBAAa,aAAa;IAEtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,MAAM,SAAkB,EACxB,SAAS,SAAqB;IAGjD,IAAI,WAAW,IAAI,OAAO,CAEzB;IAEK,OAAO,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAqBjE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAgC1E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiBzD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAStB,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;CASxC"}
@@ -0,0 +1,28 @@
1
+ import { PakArchive, type PakValidationResult } from './pak.js';
2
+ export interface KnownPakChecksum {
3
+ readonly name: string;
4
+ readonly checksum: number;
5
+ readonly size?: number;
6
+ readonly description?: string;
7
+ }
8
+ export interface PakValidationOutcome {
9
+ readonly name: string;
10
+ readonly checksum: number;
11
+ readonly expectedChecksum?: number;
12
+ readonly size?: number;
13
+ readonly status: 'valid' | 'mismatch' | 'unknown';
14
+ readonly description?: string;
15
+ }
16
+ export declare const RERELEASE_KNOWN_PAKS: readonly KnownPakChecksum[];
17
+ export declare class PakValidationError extends Error {
18
+ readonly result: PakValidationOutcome;
19
+ constructor(result: PakValidationOutcome);
20
+ }
21
+ export declare class PakValidator {
22
+ private readonly known;
23
+ constructor(knownPaks?: readonly KnownPakChecksum[]);
24
+ validateArchive(archive: PakArchive | PakValidationResult, nameOverride?: string): PakValidationOutcome;
25
+ assertValid(archive: PakArchive | PakValidationResult, nameOverride?: string): PakValidationOutcome;
26
+ private normalizePakName;
27
+ }
28
+ //# sourceMappingURL=pakValidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pakValidation.d.ts","sourceRoot":"","sources":["../../../src/assets/pakValidation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAiB,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,oBAAoB,EAAE,SAAS,gBAAgB,EAO1D,CAAC;AAEH,qBAAa,kBAAmB,SAAQ,KAAK;IAC/B,QAAQ,CAAC,MAAM,EAAE,oBAAoB;gBAA5B,MAAM,EAAE,oBAAoB;CAQlD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAuC;gBAEjD,SAAS,GAAE,SAAS,gBAAgB,EAAyB;IAIzE,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,mBAAmB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,oBAAoB;IA+BvG,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,mBAAmB,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,oBAAoB;IAQnG,OAAO,CAAC,gBAAgB;CAOzB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility class for creating Quake 2 PAK archives.
3
+ */
4
+ export declare class PakWriter {
5
+ private entries;
6
+ /**
7
+ * Adds a file to the archive.
8
+ * @param path The file path (will be normalized to lowercase, forward slashes).
9
+ * @param data The file content.
10
+ */
11
+ addFile(path: string, data: Uint8Array): void;
12
+ /**
13
+ * Removes a file from the archive.
14
+ * @param path The file path.
15
+ * @returns True if the file existed and was removed.
16
+ */
17
+ removeFile(path: string): boolean;
18
+ /**
19
+ * Serializes the current entries into a PAK archive buffer.
20
+ */
21
+ build(): Uint8Array;
22
+ /**
23
+ * Static helper to build a PAK from a map of entries.
24
+ */
25
+ static buildFromEntries(entries: Map<string, Uint8Array>): Uint8Array;
26
+ }
27
+ //# sourceMappingURL=pakWriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pakWriter.d.ts","sourceRoot":"","sources":["../../../src/assets/pakWriter.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAiC;IAEhD;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAQ7C;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC;;OAEG;IACH,KAAK,IAAI,UAAU;IAwEnB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,UAAU;CAOtE"}
@@ -0,0 +1,13 @@
1
+ export interface PcxImage {
2
+ readonly width: number;
3
+ readonly height: number;
4
+ readonly bitsPerPixel: number;
5
+ readonly pixels: Uint8Array;
6
+ readonly palette: Uint8Array;
7
+ }
8
+ export declare class PcxParseError extends Error {
9
+ constructor(message: string);
10
+ }
11
+ export declare function parsePcx(buffer: ArrayBuffer): PcxImage;
12
+ export declare function pcxToRgba(image: PcxImage): Uint8Array;
13
+ //# sourceMappingURL=pcx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pcx.d.ts","sourceRoot":"","sources":["../../../src/assets/pcx.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CA6DtD;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,GAAG,UAAU,CAYrD"}
@@ -0,0 +1,15 @@
1
+ import { Vec3 } from '@quake2ts/shared';
2
+ import { AssetManager } from './manager.js';
3
+ export interface BoundingBox {
4
+ readonly mins: Vec3;
5
+ readonly maxs: Vec3;
6
+ }
7
+ export declare class AssetPreviewGenerator {
8
+ private readonly assetManager;
9
+ constructor(assetManager: AssetManager);
10
+ generateTextureThumbnail(path: string, size: number): Promise<ImageData | null>;
11
+ generateModelThumbnail(path: string, size: number): Promise<ImageData | null>;
12
+ getMapBounds(mapName: string, mapData: ArrayBuffer): Promise<BoundingBox | null>;
13
+ extractMapScreenshot(mapName: string): Promise<ImageData | null>;
14
+ }
15
+ //# sourceMappingURL=preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../../src/assets/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;CACrB;AAoID,qBAAa,qBAAqB;IACpB,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,YAAY;IAEjD,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAsC/E,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAsG7E,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAkBhF,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;CAOvE"}
@@ -0,0 +1,33 @@
1
+ export declare enum ResourceType {
2
+ Texture = "texture",
3
+ Sound = "sound",
4
+ Model = "model",
5
+ Map = "map",
6
+ Sprite = "sprite",
7
+ ConfigString = "configString"
8
+ }
9
+ export interface ResourceLoadEntry {
10
+ type: ResourceType;
11
+ path: string;
12
+ timestamp: number;
13
+ frame: number;
14
+ size?: number;
15
+ pakSource?: string;
16
+ }
17
+ export interface ResourceLoadLog {
18
+ byFrame: Map<number, ResourceLoadEntry[]>;
19
+ byTime: Map<number, ResourceLoadEntry[]>;
20
+ uniqueResources: Map<string, ResourceLoadEntry>;
21
+ }
22
+ export declare class ResourceLoadTracker {
23
+ private tracking;
24
+ private entries;
25
+ private currentFrame;
26
+ private currentTime;
27
+ startTracking(): void;
28
+ stopTracking(): ResourceLoadLog;
29
+ recordLoad(type: ResourceType, path: string, size?: number, pakSource?: string): void;
30
+ setCurrentFrame(frame: number): void;
31
+ setCurrentTime(time: number): void;
32
+ }
33
+ //# sourceMappingURL=resourceTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceTracker.d.ts","sourceRoot":"","sources":["../../../src/assets/resourceTracker.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,GAAG,QAAQ;IACX,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACzC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CACjD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAK;IAExB,aAAa,IAAI,IAAI;IAKrB,YAAY,IAAI,eAAe;IAgC/B,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAarF,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIpC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGnC"}
@@ -0,0 +1,23 @@
1
+ import { VirtualFileSystem } from './vfs.js';
2
+ export interface SpriteFrame {
3
+ readonly width: number;
4
+ readonly height: number;
5
+ readonly originX: number;
6
+ readonly originY: number;
7
+ readonly name: string;
8
+ }
9
+ export interface SpriteModel {
10
+ readonly ident: number;
11
+ readonly version: number;
12
+ readonly numFrames: number;
13
+ readonly frames: readonly SpriteFrame[];
14
+ }
15
+ export declare class SpriteParseError extends Error {
16
+ }
17
+ export declare function parseSprite(buffer: ArrayBuffer): SpriteModel;
18
+ export declare class SpriteLoader {
19
+ private readonly vfs;
20
+ constructor(vfs: VirtualFileSystem);
21
+ load(path: string): Promise<SpriteModel>;
22
+ }
23
+ //# sourceMappingURL=sprite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/assets/sprite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAO7C,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED,qBAAa,gBAAiB,SAAQ,KAAK;CAAG;AAY9C,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAiD5D;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,iBAAiB;IAE7C,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAO/C"}
@@ -0,0 +1,17 @@
1
+ export interface AssetLoader<T> {
2
+ load(path: string): Promise<T>;
3
+ }
4
+ export interface StreamOptions {
5
+ priority?: number;
6
+ }
7
+ export declare class AssetStreamer {
8
+ private readonly concurrency;
9
+ private queue;
10
+ private activeDownloads;
11
+ private maxConcurrent;
12
+ constructor(concurrency?: number);
13
+ preloadAssets(paths: string[]): Promise<void>;
14
+ private schedule;
15
+ private processQueue;
16
+ }
17
+ //# sourceMappingURL=streamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamer.d.ts","sourceRoot":"","sources":["../../../src/assets/streamer.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AASD,qBAAa,aAAa;IAMpB,OAAO,CAAC,QAAQ,CAAC,WAAW;IALhC,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,aAAa,CAAK;gBAGL,WAAW,GAAE,MAAU;IAKtC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,OAAO,CAAC,QAAQ;YAQF,YAAY;CAqB3B"}
@@ -0,0 +1,28 @@
1
+ import { PakDirectoryEntry } from './pak.js';
2
+ /**
3
+ * Read PAK file in chunks, streaming file contents on demand.
4
+ * Uses the Blob interface which is supported by File in browsers.
5
+ */
6
+ export declare class StreamingPakArchive {
7
+ private readonly source;
8
+ private entries;
9
+ constructor(source: Blob);
10
+ /**
11
+ * Read directory asynchronously.
12
+ * Caches the result so subsequent calls are fast.
13
+ */
14
+ readDirectory(): Promise<PakDirectoryEntry[]>;
15
+ /**
16
+ * Stream file contents on demand.
17
+ * Returns a ReadableStream of Uint8Array.
18
+ */
19
+ readFile(path: string): Promise<ReadableStream<Uint8Array>>;
20
+ /**
21
+ * Get file as a Blob without loading entire file into memory.
22
+ */
23
+ getFileBlob(path: string): Promise<Blob>;
24
+ private getEntry;
25
+ private readChunk;
26
+ private readCString;
27
+ }
28
+ //# sourceMappingURL=streamingPak.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamingPak.d.ts","sourceRoot":"","sources":["../../../src/assets/streamingPak.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAiB,MAAM,UAAU,CAAC;AAU5D;;;GAGG;AACH,qBAAa,mBAAmB;IAGlB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,OAAO,CAA+C;gBAEjC,MAAM,EAAE,IAAI;IAEzC;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAgEnD;;;OAGG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAajE;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAQhC,QAAQ;YAOR,SAAS;IAUvB,OAAO,CAAC,WAAW;CAWpB"}
@@ -0,0 +1,37 @@
1
+ import { type PcxImage } from './pcx.js';
2
+ import { type WalTexture } from './wal.js';
3
+ import { TgaImage } from './tga.js';
4
+ export interface PreparedTexture {
5
+ readonly width: number;
6
+ readonly height: number;
7
+ readonly levels: readonly TextureLevel[];
8
+ readonly source: 'pcx' | 'wal' | 'tga';
9
+ }
10
+ export interface TextureLevel {
11
+ readonly level: number;
12
+ readonly width: number;
13
+ readonly height: number;
14
+ readonly rgba: Uint8Array;
15
+ }
16
+ export interface TextureCacheOptions {
17
+ readonly capacity?: number;
18
+ readonly maxMemory?: number;
19
+ }
20
+ export declare class TextureCache {
21
+ private readonly cache;
22
+ constructor(options?: TextureCacheOptions);
23
+ get size(): number;
24
+ get memoryUsage(): number;
25
+ get(key: string): PreparedTexture | undefined;
26
+ set(key: string, texture: PreparedTexture): void;
27
+ clear(): void;
28
+ get capacity(): number;
29
+ set capacity(value: number);
30
+ get maxMemory(): number;
31
+ set maxMemory(value: number);
32
+ }
33
+ export declare function walToRgba(wal: WalTexture, palette: Uint8Array): PreparedTexture;
34
+ export declare function preparePcxTexture(pcx: PcxImage): PreparedTexture;
35
+ export declare function prepareTgaTexture(tga: TgaImage): PreparedTexture;
36
+ export declare function parseWalTexture(buffer: ArrayBuffer, palette: Uint8Array): PreparedTexture;
37
+ //# sourceMappingURL=texture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texture.d.ts","sourceRoot":"","sources":["../../../src/assets/texture.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;CACxC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAUD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;gBAEtC,OAAO,GAAE,mBAAwB;IAQ7C,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI7C,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,IAAI;IAIhD,KAAK,IAAI,IAAI;IAIb,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAEzB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAE1B;CACF;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,GAAG,eAAe,CAiB/E;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,CAIhE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,CAGhE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,GAAG,eAAe,CAEzF"}
@@ -0,0 +1,15 @@
1
+ export interface TgaImage {
2
+ readonly width: number;
3
+ readonly height: number;
4
+ readonly bitsPerPixel: number;
5
+ readonly pixels: Uint8Array;
6
+ }
7
+ export declare class TgaParseError extends Error {
8
+ constructor(message: string);
9
+ }
10
+ /**
11
+ * Parses a TGA image buffer into raw RGBA pixels.
12
+ * Based on original Quake 2 TGA loading in ref_gl/gl_image.c (LoadTGA)
13
+ */
14
+ export declare function parseTga(buffer: ArrayBuffer): TgaImage;
15
+ //# sourceMappingURL=tga.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tga.d.ts","sourceRoot":"","sources":["../../../src/assets/tga.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,CAwJtD"}
@@ -0,0 +1,57 @@
1
+ import { PakArchive } from './pak.js';
2
+ export interface VirtualFileHandle {
3
+ readonly path: string;
4
+ readonly size: number;
5
+ readonly sourcePak: string;
6
+ }
7
+ export interface FileMetadata extends VirtualFileHandle {
8
+ readonly offset: number;
9
+ }
10
+ export interface FileInfo extends VirtualFileHandle {
11
+ }
12
+ export interface DirectoryNode {
13
+ readonly name: string;
14
+ readonly path: string;
15
+ readonly files: FileInfo[];
16
+ readonly directories: DirectoryNode[];
17
+ }
18
+ export interface PakInfo {
19
+ readonly filename: string;
20
+ readonly entryCount: number;
21
+ readonly totalSize: number;
22
+ readonly priority?: number;
23
+ }
24
+ export interface DirectoryListing {
25
+ readonly files: VirtualFileHandle[];
26
+ readonly directories: string[];
27
+ }
28
+ interface MountedPak {
29
+ pak: PakArchive;
30
+ priority: number;
31
+ }
32
+ export declare class VirtualFileSystem {
33
+ private readonly mounts;
34
+ private readonly files;
35
+ constructor(archives?: PakArchive[]);
36
+ mountPak(archive: PakArchive, priority?: number): PakArchive;
37
+ setPriority(archive: PakArchive, priority: number): void;
38
+ getPaks(): MountedPak[];
39
+ get mountedPaks(): readonly PakArchive[];
40
+ hasFile(path: string): boolean;
41
+ private getSource;
42
+ stat(path: string): VirtualFileHandle | undefined;
43
+ getFileMetadata(path: string): FileMetadata | undefined;
44
+ readFile(path: string): Promise<Uint8Array>;
45
+ readBinaryFile(path: string): Promise<Uint8Array>;
46
+ streamFile(path: string, chunkSize?: number): ReadableStream<Uint8Array>;
47
+ readTextFile(path: string): Promise<string>;
48
+ list(directory?: string): DirectoryListing;
49
+ listDirectory(path: string): Promise<FileInfo[]>;
50
+ findByExtension(extension: string | string[] | RegExp): VirtualFileHandle[];
51
+ listByExtension(extensions: string[]): FileInfo[];
52
+ searchFiles(pattern: RegExp): FileInfo[];
53
+ getPakInfo(): PakInfo[];
54
+ getDirectoryTree(): DirectoryNode;
55
+ }
56
+ export {};
57
+ //# sourceMappingURL=vfs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vfs.d.ts","sourceRoot":"","sources":["../../../src/assets/vfs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAoC,MAAM,UAAU,CAAC;AAIxE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,YAAa,SAAQ,iBAAiB;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAS,SAAQ,iBAAiB;CAAG;AAEtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,aAAa,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,UAAU,UAAU;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkC;gBAE5C,QAAQ,GAAE,UAAU,EAAO;IAIvC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,GAAE,MAAU,GAAG,UAAU;IAkC/D,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIxD,OAAO,IAAI,UAAU,EAAE;IAMvB,IAAI,WAAW,IAAI,SAAS,UAAU,EAAE,CAEvC;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B,OAAO,CAAC,SAAS;IAOjB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAQjD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAajD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ3C,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAc,GAAG,cAAc,CAAC,UAAU,CAAC;IAkCvE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjD,IAAI,CAAC,SAAS,SAAK,GAAG,gBAAgB;IAkChC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKtD,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,iBAAiB,EAAE;IAmB3E,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE;IAsBjD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE;IAexC,UAAU,IAAI,OAAO,EAAE;IASvB,gBAAgB,IAAI,aAAa;CAoDlC"}
@@ -0,0 +1,28 @@
1
+ import { AssetManager } from './manager.js';
2
+ import { BspMap } from './bsp.js';
3
+ export interface FrameResources {
4
+ models: Set<string>;
5
+ sounds: Set<string>;
6
+ textures: Set<string>;
7
+ loaded: Set<string>;
8
+ /** @deprecated Use models instead */
9
+ visible: Set<string>;
10
+ /** @deprecated Use sounds instead */
11
+ audible: Set<string>;
12
+ }
13
+ export interface VisibilityTimeline {
14
+ frames: Map<number, FrameResources>;
15
+ time: Map<number, FrameResources>;
16
+ }
17
+ export declare class ResourceVisibilityAnalyzer {
18
+ private tracker;
19
+ constructor();
20
+ analyzeDemo(demo: Uint8Array, assetManager?: AssetManager, bspMap?: BspMap): Promise<VisibilityTimeline>;
21
+ analyzeRange(demo: Uint8Array, startFrame: number, endFrame: number, assetManager?: AssetManager, bspMap?: BspMap): Promise<VisibilityTimeline>;
22
+ private extractFrustumPlanes;
23
+ private isBoxInFrustum;
24
+ private findLeaf;
25
+ private isClusterVisible;
26
+ private analyzeInternal;
27
+ }
28
+ //# sourceMappingURL=visibilityAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibilityAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/assets/visibilityAnalyzer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAa,MAAM,EAAW,MAAM,UAAU,CAAC;AAGtD,MAAM,WAAW,cAAc;IAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACrB,qCAAqC;IACrC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAE/B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEpC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACrC;AASD,qBAAa,0BAA0B;IACnC,OAAO,CAAC,OAAO,CAAsB;;IAMxB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIxG,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI5J,OAAO,CAAC,oBAAoB;IA2D5B,OAAO,CAAC,cAAc;IAyBtB,OAAO,CAAC,QAAQ;IAwBhB,OAAO,CAAC,gBAAgB;YAsBV,eAAe;CAgMhC"}