@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,178 @@
1
+ import { ServerCommand, Vec3 } from '@quake2ts/shared';
2
+ import { EntityState, FrameData, FogData, DamageIndicator, NetworkMessageHandler } from './parser.js';
3
+ export interface BaseMessage {
4
+ type: ServerCommand;
5
+ }
6
+ export interface ServerDataMessage extends BaseMessage {
7
+ type: ServerCommand.serverdata;
8
+ protocol: number;
9
+ serverCount: number;
10
+ attractLoop: number;
11
+ gameDir: string;
12
+ playerNum: number;
13
+ levelName: string;
14
+ tickRate?: number;
15
+ demoType?: number;
16
+ }
17
+ export interface ConfigStringMessage extends BaseMessage {
18
+ type: ServerCommand.configstring;
19
+ index: number;
20
+ string: string;
21
+ }
22
+ export interface SpawnBaselineMessage extends BaseMessage {
23
+ type: ServerCommand.spawnbaseline;
24
+ entity: EntityState;
25
+ }
26
+ export interface FrameMessage extends BaseMessage {
27
+ type: ServerCommand.frame;
28
+ data: FrameData;
29
+ }
30
+ export interface CenterPrintMessage extends BaseMessage {
31
+ type: ServerCommand.centerprint;
32
+ message: string;
33
+ }
34
+ export interface StuffTextMessage extends BaseMessage {
35
+ type: ServerCommand.stufftext;
36
+ text: string;
37
+ }
38
+ export interface PrintMessage extends BaseMessage {
39
+ type: ServerCommand.print;
40
+ level: number;
41
+ message: string;
42
+ }
43
+ export interface SoundMessage extends BaseMessage {
44
+ type: ServerCommand.sound;
45
+ flags: number;
46
+ soundNum: number;
47
+ volume?: number;
48
+ attenuation?: number;
49
+ offset?: number;
50
+ ent?: number;
51
+ pos?: Vec3;
52
+ }
53
+ export interface TempEntityMessage extends BaseMessage {
54
+ type: ServerCommand.temp_entity;
55
+ tempType: number;
56
+ pos: Vec3;
57
+ pos2?: Vec3;
58
+ dir?: Vec3;
59
+ cnt?: number;
60
+ color?: number;
61
+ ent?: number;
62
+ srcEnt?: number;
63
+ destEnt?: number;
64
+ }
65
+ export interface LayoutMessage extends BaseMessage {
66
+ type: ServerCommand.layout;
67
+ layout: string;
68
+ }
69
+ export interface InventoryMessage extends BaseMessage {
70
+ type: ServerCommand.inventory;
71
+ inventory: number[];
72
+ }
73
+ export interface MuzzleFlashMessage extends BaseMessage {
74
+ type: ServerCommand.muzzleflash;
75
+ ent: number;
76
+ weapon: number;
77
+ }
78
+ export interface MuzzleFlash2Message extends BaseMessage {
79
+ type: ServerCommand.muzzleflash2;
80
+ ent: number;
81
+ weapon: number;
82
+ }
83
+ export interface MuzzleFlash3Message extends BaseMessage {
84
+ type: ServerCommand.muzzleflash3;
85
+ ent: number;
86
+ weapon: number;
87
+ }
88
+ export interface DisconnectMessage extends BaseMessage {
89
+ type: ServerCommand.disconnect;
90
+ }
91
+ export interface ReconnectMessage extends BaseMessage {
92
+ type: ServerCommand.reconnect;
93
+ }
94
+ export interface DownloadMessage extends BaseMessage {
95
+ type: ServerCommand.download;
96
+ size: number;
97
+ percent: number;
98
+ data?: Uint8Array;
99
+ }
100
+ export interface SplitClientMessage extends BaseMessage {
101
+ type: ServerCommand.splitclient;
102
+ clientNum: number;
103
+ }
104
+ export interface LevelRestartMessage extends BaseMessage {
105
+ type: ServerCommand.level_restart;
106
+ }
107
+ export interface DamageMessage extends BaseMessage {
108
+ type: ServerCommand.damage;
109
+ indicators: DamageIndicator[];
110
+ }
111
+ export interface LocPrintMessage extends BaseMessage {
112
+ type: ServerCommand.locprint;
113
+ flags: number;
114
+ base: string;
115
+ args: string[];
116
+ }
117
+ export interface FogMessage extends BaseMessage {
118
+ type: ServerCommand.fog;
119
+ data: FogData;
120
+ }
121
+ export interface WaitingForPlayersMessage extends BaseMessage {
122
+ type: ServerCommand.waitingforplayers;
123
+ count: number;
124
+ }
125
+ export interface BotChatMessage extends BaseMessage {
126
+ type: ServerCommand.bot_chat;
127
+ message: string;
128
+ }
129
+ export interface PoiMessage extends BaseMessage {
130
+ type: ServerCommand.poi;
131
+ flags: number;
132
+ pos: Vec3;
133
+ }
134
+ export interface HelpPathMessage extends BaseMessage {
135
+ type: ServerCommand.help_path;
136
+ pos: Vec3;
137
+ }
138
+ export interface AchievementMessage extends BaseMessage {
139
+ type: ServerCommand.achievement;
140
+ id: string;
141
+ }
142
+ export type Message = ServerDataMessage | ConfigStringMessage | SpawnBaselineMessage | FrameMessage | CenterPrintMessage | StuffTextMessage | PrintMessage | SoundMessage | TempEntityMessage | LayoutMessage | InventoryMessage | MuzzleFlashMessage | MuzzleFlash2Message | MuzzleFlash3Message | DisconnectMessage | ReconnectMessage | DownloadMessage | SplitClientMessage | LevelRestartMessage | DamageMessage | LocPrintMessage | FogMessage | WaitingForPlayersMessage | BotChatMessage | PoiMessage | HelpPathMessage | AchievementMessage;
143
+ export declare class MessageCollector implements NetworkMessageHandler {
144
+ messages: Message[];
145
+ onServerData(protocol: number, serverCount: number, attractLoop: number, gameDir: string, playerNum: number, levelName: string, tickRate?: number, demoType?: number): void;
146
+ onConfigString(index: number, str: string): void;
147
+ onSpawnBaseline(entity: EntityState): void;
148
+ onFrame(frame: FrameData): void;
149
+ onCenterPrint(msg: string): void;
150
+ onStuffText(msg: string): void;
151
+ onPrint(level: number, msg: string): void;
152
+ onSound(flags: number, soundNum: number, volume?: number, attenuation?: number, offset?: number, ent?: number, pos?: Vec3): void;
153
+ onTempEntity(type: number, pos: Vec3, pos2?: Vec3, dir?: Vec3, cnt?: number, color?: number, ent?: number, srcEnt?: number, destEnt?: number): void;
154
+ onLayout(layout: string): void;
155
+ onInventory(inventory: number[]): void;
156
+ onMuzzleFlash(ent: number, weapon: number): void;
157
+ onMuzzleFlash2(ent: number, weapon: number): void;
158
+ onMuzzleFlash3(ent: number, weapon: number): void;
159
+ onDisconnect(): void;
160
+ onReconnect(): void;
161
+ onDownload(size: number, percent: number, data?: Uint8Array): void;
162
+ onSplitClient(clientNum: number): void;
163
+ onLevelRestart(): void;
164
+ onDamage(indicators: DamageIndicator[]): void;
165
+ onLocPrint(flags: number, base: string, args: string[]): void;
166
+ onFog(data: FogData): void;
167
+ onWaitingForPlayers(count: number): void;
168
+ onBotChat(msg: string): void;
169
+ onPoi(flags: number, pos: Vec3): void;
170
+ onHelpPath(pos: Vec3): void;
171
+ onAchievement(id: string): void;
172
+ }
173
+ /**
174
+ * Parses raw demo data and collects all messages.
175
+ * Uses DemoReader to iterate through blocks and NetworkMessageParser to parse commands.
176
+ */
177
+ export declare function collectMessages(demoData: Uint8Array): Message[];
178
+ //# sourceMappingURL=message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/demo/message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { VisibilityTimeline } from '../assets/visibilityAnalyzer.js';
2
+ import { Offset } from './types.js';
3
+ import { DemoAnalyzer } from './analyzer.js';
4
+ export interface OptimalWindow {
5
+ start: Offset;
6
+ end: Offset;
7
+ resourceCount: number;
8
+ resources: Set<string>;
9
+ score: number;
10
+ }
11
+ export type ScoringMode = 'count' | 'size' | 'locality' | 'hybrid' | 'action';
12
+ export interface OptimizationCriteria {
13
+ durationRange?: [number, number];
14
+ maxResources?: number;
15
+ scoringMode?: ScoringMode;
16
+ resourceSizes?: Map<string, number>;
17
+ topN?: number;
18
+ }
19
+ export interface OptimizationOptions extends OptimizationCriteria {
20
+ analyzer?: DemoAnalyzer;
21
+ demoBuffer?: ArrayBuffer;
22
+ searchStart?: number;
23
+ searchEnd?: number;
24
+ }
25
+ export declare class OptimalClipFinder {
26
+ findOptimalWindows(timeline: VisibilityTimeline, criteria: OptimizationOptions): Promise<OptimalWindow[]>;
27
+ findMinimalWindow(timeline: VisibilityTimeline, duration: number, options?: OptimizationOptions): OptimalWindow;
28
+ findMinimalWindowInRange(timeline: VisibilityTimeline, duration: number, searchStart?: Offset, searchEnd?: Offset): OptimalWindow;
29
+ private estimateTime;
30
+ private scanTimeline;
31
+ private calculateActionScore;
32
+ private addResources;
33
+ private removeResources;
34
+ }
35
+ //# sourceMappingURL=optimalClipFinder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimalClipFinder.d.ts","sourceRoot":"","sources":["../../../src/demo/optimalClipFinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,MAAM,EAA2B,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAG7C,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACjC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC7D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAiB;IAEb,kBAAkB,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,mBAAmB,GAC9B,OAAO,CAAC,aAAa,EAAE,CAAC;IAyDpB,iBAAiB,CACpB,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,mBAAwB,GAClC,aAAa;IAST,wBAAwB,CAC3B,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,MAAM,GACnB,aAAa;IAUhB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,YAAY;IA6FpB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,eAAe;CAY1B"}
@@ -0,0 +1,46 @@
1
+ import { VirtualFileSystem } from '../assets/vfs.js';
2
+ import { OptimizationOptions } from './optimalClipFinder.js';
3
+ import { Offset } from './types.js';
4
+ export interface PackageOptions {
5
+ demoSource: Uint8Array;
6
+ sourcePaks: VirtualFileSystem;
7
+ range?: {
8
+ start: Offset;
9
+ end: Offset;
10
+ };
11
+ optimize?: OptimizationOptions;
12
+ level?: 'MINIMAL' | 'SAFE' | 'COMPLETE' | 'ULTRA';
13
+ }
14
+ export interface PackageManifest {
15
+ metadata: {
16
+ timestamp: number;
17
+ originalSize: number;
18
+ optimizedSize: number;
19
+ duration: number;
20
+ startFrame: number;
21
+ endFrame: number;
22
+ optimizationLevel: string;
23
+ };
24
+ resources: {
25
+ [key: string]: {
26
+ size: number;
27
+ type: string;
28
+ };
29
+ };
30
+ }
31
+ export interface DemoPackage {
32
+ demoData: Uint8Array;
33
+ pakData: Uint8Array;
34
+ manifest: PackageManifest;
35
+ }
36
+ export declare class DemoPackager {
37
+ private clipper;
38
+ private clipFinder;
39
+ private visibilityAnalyzer;
40
+ constructor();
41
+ extractDemoPackage(options: PackageOptions): Promise<DemoPackage>;
42
+ collectResources(resourcePaths: Set<string>, sourcePaks: VirtualFileSystem, level?: string): Promise<Map<string, Uint8Array>>;
43
+ private optimizeResource;
44
+ private guessResourceType;
45
+ }
46
+ //# sourceMappingURL=packager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../../../src/demo/packager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAqB,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGpC,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,iBAAiB,CAAC;IAG9B,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAG/B,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;CACrD;AAED,MAAM,WAAW,eAAe;IAC5B,QAAQ,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;SAChB,CAAC;KACL,CAAC;CACL;AAED,MAAM,WAAW,WAAW;IACxB,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;CAC7B;AAED,qBAAa,YAAY;IACrB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,kBAAkB,CAA6B;;IAQ1C,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAyGjE,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,KAAK,GAAE,MAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAmBvI,gBAAgB;IAU9B,OAAO,CAAC,iBAAiB;CAY5B"}
@@ -0,0 +1,222 @@
1
+ import { BinaryStream, Vec3 } from '@quake2ts/shared';
2
+ import { StreamingBuffer } from '../stream/streamingBuffer.js';
3
+ export declare const PROTOCOL_VERSION_RERELEASE = 2023;
4
+ export declare const U_ORIGIN1: number;
5
+ export declare const U_ORIGIN2: number;
6
+ export declare const U_ANGLE2: number;
7
+ export declare const U_ANGLE3: number;
8
+ export declare const U_FRAME8: number;
9
+ export declare const U_EVENT: number;
10
+ export declare const U_REMOVE: number;
11
+ export declare const U_MOREBITS1: number;
12
+ export declare const U_NUMBER16: number;
13
+ export declare const U_ORIGIN3: number;
14
+ export declare const U_ANGLE1: number;
15
+ export declare const U_MODEL: number;
16
+ export declare const U_RENDERFX8: number;
17
+ export declare const U_ALPHA: number;
18
+ export declare const U_EFFECTS8: number;
19
+ export declare const U_MOREBITS2: number;
20
+ export declare const U_SKIN8: number;
21
+ export declare const U_FRAME16: number;
22
+ export declare const U_RENDERFX16: number;
23
+ export declare const U_EFFECTS16: number;
24
+ export declare const U_MODEL2: number;
25
+ export declare const U_MODEL3: number;
26
+ export declare const U_MODEL4: number;
27
+ export declare const U_MOREBITS3: number;
28
+ export declare const U_OLDORIGIN: number;
29
+ export declare const U_SKIN16: number;
30
+ export declare const U_SOUND: number;
31
+ export declare const U_SOLID: number;
32
+ export declare const U_SCALE: number;
33
+ export declare const U_INSTANCE_BITS: number;
34
+ export declare const U_LOOP_VOLUME: number;
35
+ export declare const U_MOREBITS4: number;
36
+ export declare const U_LOOP_ATTENUATION_HIGH: number;
37
+ export declare const U_OWNER_HIGH: number;
38
+ export declare const U_OLD_FRAME_HIGH: number;
39
+ export interface MutableVec3 {
40
+ x: number;
41
+ y: number;
42
+ z: number;
43
+ }
44
+ export interface EntityState {
45
+ number: number;
46
+ modelindex: number;
47
+ modelindex2: number;
48
+ modelindex3: number;
49
+ modelindex4: number;
50
+ frame: number;
51
+ skinnum: number;
52
+ effects: number;
53
+ renderfx: number;
54
+ origin: MutableVec3;
55
+ old_origin: MutableVec3;
56
+ angles: MutableVec3;
57
+ sound: number;
58
+ event: number;
59
+ solid: number;
60
+ bits: number;
61
+ bitsHigh: number;
62
+ alpha: number;
63
+ scale: number;
64
+ instanceBits: number;
65
+ loopVolume: number;
66
+ loopAttenuation: number;
67
+ owner: number;
68
+ oldFrame: number;
69
+ }
70
+ export declare const createEmptyEntityState: () => EntityState;
71
+ export interface ProtocolPlayerState {
72
+ pm_type: number;
73
+ origin: MutableVec3;
74
+ velocity: MutableVec3;
75
+ pm_time: number;
76
+ pm_flags: number;
77
+ gravity: number;
78
+ delta_angles: MutableVec3;
79
+ viewoffset: MutableVec3;
80
+ viewangles: MutableVec3;
81
+ kick_angles: MutableVec3;
82
+ gun_index: number;
83
+ gun_frame: number;
84
+ gun_offset: MutableVec3;
85
+ gun_angles: MutableVec3;
86
+ blend: number[];
87
+ fov: number;
88
+ rdflags: number;
89
+ stats: number[];
90
+ gunskin: number;
91
+ gunrate: number;
92
+ damage_blend: number[];
93
+ team_id: number;
94
+ watertype: number;
95
+ }
96
+ export declare const createEmptyProtocolPlayerState: () => ProtocolPlayerState;
97
+ export interface FrameData {
98
+ serverFrame: number;
99
+ deltaFrame: number;
100
+ surpressCount: number;
101
+ areaBytes: number;
102
+ areaBits: Uint8Array;
103
+ playerState: ProtocolPlayerState;
104
+ packetEntities: {
105
+ delta: boolean;
106
+ entities: EntityState[];
107
+ };
108
+ }
109
+ export interface FogData {
110
+ density?: number;
111
+ skyfactor?: number;
112
+ red?: number;
113
+ green?: number;
114
+ blue?: number;
115
+ time?: number;
116
+ hf_falloff?: number;
117
+ hf_density?: number;
118
+ hf_start_r?: number;
119
+ hf_start_g?: number;
120
+ hf_start_b?: number;
121
+ hf_start_dist?: number;
122
+ hf_end_r?: number;
123
+ hf_end_g?: number;
124
+ hf_end_b?: number;
125
+ hf_end_dist?: number;
126
+ }
127
+ export interface DamageIndicator {
128
+ damage: number;
129
+ health: boolean;
130
+ armor: boolean;
131
+ power: boolean;
132
+ dir: Vec3;
133
+ }
134
+ export interface NetworkMessageHandler {
135
+ onServerData(protocol: number, serverCount: number, attractLoop: number, gameDir: string, playerNum: number, levelName: string, tickRate?: number, demoType?: number): void;
136
+ onConfigString(index: number, str: string): void;
137
+ onSpawnBaseline(entity: EntityState): void;
138
+ onFrame(frame: FrameData): void;
139
+ onCenterPrint(msg: string): void;
140
+ onStuffText(msg: string): void;
141
+ onPrint(level: number, msg: string): void;
142
+ onSound(flags: number, soundNum: number, volume?: number, attenuation?: number, offset?: number, ent?: number, pos?: Vec3): void;
143
+ onTempEntity(type: number, pos: Vec3, pos2?: Vec3, dir?: Vec3, cnt?: number, color?: number, ent?: number, srcEnt?: number, destEnt?: number): void;
144
+ onLayout(layout: string): void;
145
+ onInventory(inventory: number[]): void;
146
+ onMuzzleFlash(ent: number, weapon: number): void;
147
+ onMuzzleFlash2(ent: number, weapon: number): void;
148
+ onDisconnect(): void;
149
+ onReconnect(): void;
150
+ onDownload(size: number, percent: number, data?: Uint8Array): void;
151
+ getEntities?(): Map<number, EntityState>;
152
+ getPlayerState?(): ProtocolPlayerState | null;
153
+ onSplitClient?(clientNum: number): void;
154
+ onConfigBlast?(index: number, data: Uint8Array): void;
155
+ onSpawnBaselineBlast?(entity: EntityState): void;
156
+ onLevelRestart?(): void;
157
+ onDamage?(indicators: DamageIndicator[]): void;
158
+ onLocPrint?(flags: number, base: string, args: string[]): void;
159
+ onFog?(data: FogData): void;
160
+ onWaitingForPlayers?(count: number): void;
161
+ onBotChat?(msg: string): void;
162
+ onPoi?(flags: number, pos: Vec3): void;
163
+ onHelpPath?(pos: Vec3): void;
164
+ onMuzzleFlash3?(ent: number, weapon: number): void;
165
+ onAchievement?(id: string): void;
166
+ }
167
+ export interface ParseResult {
168
+ commandsParsed: number;
169
+ parseState: 'awaiting_data' | 'complete' | 'error';
170
+ bytesConsumed: number;
171
+ }
172
+ export declare class NetworkMessageParser {
173
+ private stream;
174
+ private protocolVersion;
175
+ private isDemo;
176
+ private handler?;
177
+ private strictMode;
178
+ private errorCount;
179
+ constructor(stream: StreamingBuffer | BinaryStream, handler?: NetworkMessageHandler, strictMode?: boolean);
180
+ setProtocolVersion(version: number): void;
181
+ getProtocolVersion(): number;
182
+ getErrorCount(): number;
183
+ private translateCommand;
184
+ parseMessage(): void;
185
+ private readAngle16;
186
+ private readCoord;
187
+ private readAngle;
188
+ private readPos;
189
+ private readDir;
190
+ private parsePrint;
191
+ private parseStuffText;
192
+ private parseLayout;
193
+ private parseCenterPrint;
194
+ private parseServerData;
195
+ private parseConfigString;
196
+ private parseSplitClient;
197
+ private parseConfigBlast;
198
+ private parseSpawnBaselineBlast;
199
+ private parseLocPrint;
200
+ private parseWaitingForPlayers;
201
+ private parseBotChat;
202
+ private parsePoi;
203
+ private parseHelpPath;
204
+ private parseAchievement;
205
+ private parseDownload;
206
+ private parseInventory;
207
+ private parseSound;
208
+ private parseMuzzleFlash;
209
+ private parseMuzzleFlash2;
210
+ private parseMuzzleFlash3;
211
+ private parseFog;
212
+ private parseDamage;
213
+ private parseTempEntity;
214
+ private parseSpawnBaseline;
215
+ private parseFrame;
216
+ private parsePlayerState;
217
+ private parsePacketEntities;
218
+ private collectPacketEntities;
219
+ private parseEntityBits;
220
+ private parseDelta;
221
+ }
222
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/demo/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
1
+ import { NetworkMessageHandler, FrameData, EntityState, ProtocolPlayerState } from './parser.js';
2
+ import { FrameDiff, DemoEvent, DemoEventType, EventSummary, DemoHeader, ServerInfo, DemoStatistics, PlayerStatistics, WeaponStatistics } from './analysis.js';
3
+ import { Vec3 } from '@quake2ts/shared';
4
+ import { DemoCameraMode } from './camera.js';
5
+ import { ResourceLoadTracker, ResourceLoadLog } from '../assets/resourceTracker.js';
6
+ export declare enum PlaybackState {
7
+ Stopped = 0,
8
+ Playing = 1,
9
+ Paused = 2,
10
+ Finished = 3
11
+ }
12
+ export interface DemoMetadata {
13
+ mapName: string;
14
+ playerName: string;
15
+ serverName?: string;
16
+ recordingDate?: Date;
17
+ demoVersion: number;
18
+ tickRate: number;
19
+ }
20
+ export interface DemoPlaybackCallbacks {
21
+ onPlaybackStateChange?: (state: PlaybackState) => void;
22
+ onTimeUpdate?: (time: number) => void;
23
+ onPlaybackComplete?: () => void;
24
+ onSeekComplete?: () => void;
25
+ onCaptureSnapshot?: (frame: number) => any;
26
+ onRestoreSnapshot?: (snapshot: any) => void;
27
+ onFrameUpdate?: (frame: FrameData) => void;
28
+ onPlaybackError?: (error: Error) => void;
29
+ }
30
+ export type FrameOffset = {
31
+ type: 'frame';
32
+ frame: number;
33
+ };
34
+ export type TimeOffset = {
35
+ type: 'time';
36
+ seconds: number;
37
+ };
38
+ export type PlaybackOffset = FrameOffset | TimeOffset;
39
+ export declare class DemoPlaybackController {
40
+ private reader;
41
+ private buffer;
42
+ private state;
43
+ private playbackSpeed;
44
+ private handler?;
45
+ private callbacks?;
46
+ private currentProtocolVersion;
47
+ private currentFrameIndex;
48
+ private lastFrameData;
49
+ private accumulatedTime;
50
+ private frameDuration;
51
+ private snapshotInterval;
52
+ private snapshots;
53
+ private cachedEvents;
54
+ private cachedSummary;
55
+ private cachedHeader;
56
+ private cachedConfigStrings;
57
+ private cachedServerInfo;
58
+ private cachedStatistics;
59
+ private cachedPlayerStats;
60
+ private cachedWeaponStats;
61
+ private tracker;
62
+ private cameraMode;
63
+ private thirdPersonDistance;
64
+ private thirdPersonOffset;
65
+ constructor();
66
+ setHandler(handler: NetworkMessageHandler): void;
67
+ setCallbacks(callbacks: DemoPlaybackCallbacks): void;
68
+ loadDemo(buffer: ArrayBuffer): void;
69
+ play(): void;
70
+ pause(): void;
71
+ stop(): void;
72
+ private transitionState;
73
+ setFrameDuration(ms: number): void;
74
+ setSpeed(speed: number): void;
75
+ getSpeed(): number;
76
+ getPlaybackSpeed(): number;
77
+ /**
78
+ * Returns the interpolation factor (0.0 to 1.0) for the current frame.
79
+ * Used for smooth rendering between demo frames.
80
+ */
81
+ getInterpolationFactor(): number;
82
+ update(dt: number): void;
83
+ stepForward(): void;
84
+ stepBackward(): void;
85
+ seekToTime(seconds: number): void;
86
+ seekToFrame(frameIndex: number): void;
87
+ frameToTime(frame: number): number;
88
+ timeToFrame(seconds: number): number;
89
+ playFrom(offset: PlaybackOffset): void;
90
+ playRange(start: PlaybackOffset, end: PlaybackOffset): void;
91
+ /**
92
+ * Seeks to a specific frame number.
93
+ */
94
+ seek(frameNumber: number): void;
95
+ private processNextFrame;
96
+ getState(): PlaybackState;
97
+ getCurrentTime(): number;
98
+ getFrameCount(): number;
99
+ getTotalFrames(): number;
100
+ getCurrentFrame(): number;
101
+ getDuration(): number;
102
+ getTotalBytes(): number;
103
+ getProcessedBytes(): number;
104
+ getFrameData(frameIndex: number): FrameData | null;
105
+ getFramePlayerState(frameIndex: number): ProtocolPlayerState | null;
106
+ getFrameEntities(frameIndex: number): EntityState[];
107
+ compareFrames(frameA: number, frameB: number): FrameDiff;
108
+ getEntityTrajectory(entityId: number, startFrame: number, endFrame: number): Vec3[];
109
+ /**
110
+ * Extract notable events from demo for timeline markers
111
+ */
112
+ getEvents(): DemoEvent[];
113
+ getDemoEvents(): DemoEvent[];
114
+ filterEvents(type: DemoEventType, entityId?: number): DemoEvent[];
115
+ getEventSummary(): EventSummary;
116
+ getMetadata(): DemoMetadata | null;
117
+ getDemoHeader(): DemoHeader | null;
118
+ getDemoConfigStrings(): Map<number, string>;
119
+ getDemoServerInfo(): ServerInfo;
120
+ getDemoStatistics(): DemoStatistics | null;
121
+ getPlayerStatistics(playerIndex: number): PlayerStatistics | null;
122
+ getWeaponStatistics(entityId: number): WeaponStatistics[] | null;
123
+ private ensureAnalysis;
124
+ setCameraMode(mode: DemoCameraMode): void;
125
+ getCameraMode(): DemoCameraMode;
126
+ setThirdPersonDistance(distance: number): void;
127
+ setThirdPersonOffset(offset: Vec3): void;
128
+ playWithTracking(tracker: ResourceLoadTracker, options?: {
129
+ fastForward?: boolean;
130
+ }): Promise<ResourceLoadLog>;
131
+ playRangeWithTracking(start: PlaybackOffset, end: PlaybackOffset, tracker: ResourceLoadTracker, options?: {
132
+ fastForward?: boolean;
133
+ }): Promise<ResourceLoadLog>;
134
+ }
135
+ //# sourceMappingURL=playback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../../src/demo/playback.ts"],"names":[],"mappings":"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"}