@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.
- package/dist/browser/index.global.js +617 -0
- package/dist/browser/index.global.js.map +1 -0
- package/dist/cjs/index.cjs +17604 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/index.js +17373 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/assets/animation.d.ts +33 -0
- package/dist/types/assets/animation.d.ts.map +1 -0
- package/dist/types/assets/audio.d.ts +27 -0
- package/dist/types/assets/audio.d.ts.map +1 -0
- package/dist/types/assets/audio.worker.d.ts +2 -0
- package/dist/types/assets/audio.worker.d.ts.map +1 -0
- package/dist/types/assets/browserIngestion.d.ts +7 -0
- package/dist/types/assets/browserIngestion.d.ts.map +1 -0
- package/dist/types/assets/bsp.d.ts +197 -0
- package/dist/types/assets/bsp.d.ts.map +1 -0
- package/dist/types/assets/bsp.worker.d.ts +2 -0
- package/dist/types/assets/bsp.worker.d.ts.map +1 -0
- package/dist/types/assets/cache.d.ts +26 -0
- package/dist/types/assets/cache.d.ts.map +1 -0
- package/dist/types/assets/crossReference.d.ts +35 -0
- package/dist/types/assets/crossReference.d.ts.map +1 -0
- package/dist/types/assets/ent.d.ts +31 -0
- package/dist/types/assets/ent.d.ts.map +1 -0
- package/dist/types/assets/fileType.d.ts +18 -0
- package/dist/types/assets/fileType.d.ts.map +1 -0
- package/dist/types/assets/headlessLoader.d.ts +11 -0
- package/dist/types/assets/headlessLoader.d.ts.map +1 -0
- package/dist/types/assets/index.d.ts +30 -0
- package/dist/types/assets/index.d.ts.map +1 -0
- package/dist/types/assets/ingestion.d.ts +62 -0
- package/dist/types/assets/ingestion.d.ts.map +1 -0
- package/dist/types/assets/interactionGraph.d.ts +21 -0
- package/dist/types/assets/interactionGraph.d.ts.map +1 -0
- package/dist/types/assets/manager.d.ts +97 -0
- package/dist/types/assets/manager.d.ts.map +1 -0
- package/dist/types/assets/mapStatistics.d.ts +20 -0
- package/dist/types/assets/mapStatistics.d.ts.map +1 -0
- package/dist/types/assets/md2.d.ts +82 -0
- package/dist/types/assets/md2.d.ts.map +1 -0
- package/dist/types/assets/md3.d.ts +72 -0
- package/dist/types/assets/md3.d.ts.map +1 -0
- package/dist/types/assets/ogg.d.ts +12 -0
- package/dist/types/assets/ogg.d.ts.map +1 -0
- package/dist/types/assets/pak.d.ts +32 -0
- package/dist/types/assets/pak.d.ts.map +1 -0
- package/dist/types/assets/pakIndexStore.d.ts +19 -0
- package/dist/types/assets/pakIndexStore.d.ts.map +1 -0
- package/dist/types/assets/pakValidation.d.ts +28 -0
- package/dist/types/assets/pakValidation.d.ts.map +1 -0
- package/dist/types/assets/pakWriter.d.ts +27 -0
- package/dist/types/assets/pakWriter.d.ts.map +1 -0
- package/dist/types/assets/pcx.d.ts +13 -0
- package/dist/types/assets/pcx.d.ts.map +1 -0
- package/dist/types/assets/preview.d.ts +15 -0
- package/dist/types/assets/preview.d.ts.map +1 -0
- package/dist/types/assets/resourceTracker.d.ts +33 -0
- package/dist/types/assets/resourceTracker.d.ts.map +1 -0
- package/dist/types/assets/sprite.d.ts +23 -0
- package/dist/types/assets/sprite.d.ts.map +1 -0
- package/dist/types/assets/streamer.d.ts +17 -0
- package/dist/types/assets/streamer.d.ts.map +1 -0
- package/dist/types/assets/streamingPak.d.ts +28 -0
- package/dist/types/assets/streamingPak.d.ts.map +1 -0
- package/dist/types/assets/texture.d.ts +37 -0
- package/dist/types/assets/texture.d.ts.map +1 -0
- package/dist/types/assets/tga.d.ts +15 -0
- package/dist/types/assets/tga.d.ts.map +1 -0
- package/dist/types/assets/vfs.d.ts +57 -0
- package/dist/types/assets/vfs.d.ts.map +1 -0
- package/dist/types/assets/visibilityAnalyzer.d.ts +28 -0
- package/dist/types/assets/visibilityAnalyzer.d.ts.map +1 -0
- package/dist/types/assets/wal.d.ts +21 -0
- package/dist/types/assets/wal.d.ts.map +1 -0
- package/dist/types/assets/wav.d.ts +11 -0
- package/dist/types/assets/wav.d.ts.map +1 -0
- package/dist/types/audio/ambient.d.ts +22 -0
- package/dist/types/audio/ambient.d.ts.map +1 -0
- package/dist/types/audio/api.d.ts +37 -0
- package/dist/types/audio/api.d.ts.map +1 -0
- package/dist/types/audio/channels.d.ts +15 -0
- package/dist/types/audio/channels.d.ts.map +1 -0
- package/dist/types/audio/constants.d.ts +2 -0
- package/dist/types/audio/constants.d.ts.map +1 -0
- package/dist/types/audio/context.d.ts +79 -0
- package/dist/types/audio/context.d.ts.map +1 -0
- package/dist/types/audio/music.d.ts +49 -0
- package/dist/types/audio/music.d.ts.map +1 -0
- package/dist/types/audio/occlusion.d.ts +15 -0
- package/dist/types/audio/occlusion.d.ts.map +1 -0
- package/dist/types/audio/precache.d.ts +28 -0
- package/dist/types/audio/precache.d.ts.map +1 -0
- package/dist/types/audio/registry.d.ts +14 -0
- package/dist/types/audio/registry.d.ts.map +1 -0
- package/dist/types/audio/reverb.d.ts +17 -0
- package/dist/types/audio/reverb.d.ts.map +1 -0
- package/dist/types/audio/room.d.ts +5 -0
- package/dist/types/audio/room.d.ts.map +1 -0
- package/dist/types/audio/system.d.ts +112 -0
- package/dist/types/audio/system.d.ts.map +1 -0
- package/dist/types/cli/demoOptimizer.d.ts +10 -0
- package/dist/types/cli/demoOptimizer.d.ts.map +1 -0
- package/dist/types/commands.d.ts +27 -0
- package/dist/types/commands.d.ts.map +1 -0
- package/dist/types/configstrings.d.ts +36 -0
- package/dist/types/configstrings.d.ts.map +1 -0
- package/dist/types/cvars.d.ts +58 -0
- package/dist/types/cvars.d.ts.map +1 -0
- package/dist/types/demo/analysis.d.ts +83 -0
- package/dist/types/demo/analysis.d.ts.map +1 -0
- package/dist/types/demo/analyzer.d.ts +33 -0
- package/dist/types/demo/analyzer.d.ts.map +1 -0
- package/dist/types/demo/api.d.ts +40 -0
- package/dist/types/demo/api.d.ts.map +1 -0
- package/dist/types/demo/asyncParser.d.ts +15 -0
- package/dist/types/demo/asyncParser.d.ts.map +1 -0
- package/dist/types/demo/camera.d.ts +17 -0
- package/dist/types/demo/camera.d.ts.map +1 -0
- package/dist/types/demo/clipper.d.ts +34 -0
- package/dist/types/demo/clipper.d.ts.map +1 -0
- package/dist/types/demo/delta.d.ts +3 -0
- package/dist/types/demo/delta.d.ts.map +1 -0
- package/dist/types/demo/demo.worker.d.ts +126 -0
- package/dist/types/demo/demo.worker.d.ts.map +1 -0
- package/dist/types/demo/demoReader.d.ts +62 -0
- package/dist/types/demo/demoReader.d.ts.map +1 -0
- package/dist/types/demo/demoRecorder.d.ts +15 -0
- package/dist/types/demo/demoRecorder.d.ts.map +1 -0
- package/dist/types/demo/demoStream.d.ts +39 -0
- package/dist/types/demo/demoStream.d.ts.map +1 -0
- package/dist/types/demo/demoWriter.d.ts +8 -0
- package/dist/types/demo/demoWriter.d.ts.map +1 -0
- package/dist/types/demo/index.d.ts +6 -0
- package/dist/types/demo/index.d.ts.map +1 -0
- package/dist/types/demo/message.d.ts +178 -0
- package/dist/types/demo/message.d.ts.map +1 -0
- package/dist/types/demo/optimalClipFinder.d.ts +35 -0
- package/dist/types/demo/optimalClipFinder.d.ts.map +1 -0
- package/dist/types/demo/packager.d.ts +46 -0
- package/dist/types/demo/packager.d.ts.map +1 -0
- package/dist/types/demo/parser.d.ts +222 -0
- package/dist/types/demo/parser.d.ts.map +1 -0
- package/dist/types/demo/playback.d.ts +135 -0
- package/dist/types/demo/playback.d.ts.map +1 -0
- package/dist/types/demo/reader.d.ts +15 -0
- package/dist/types/demo/reader.d.ts.map +1 -0
- package/dist/types/demo/recorder.d.ts +14 -0
- package/dist/types/demo/recorder.d.ts.map +1 -0
- package/dist/types/demo/types.d.ts +37 -0
- package/dist/types/demo/types.d.ts.map +1 -0
- package/dist/types/demo/validator.d.ts +13 -0
- package/dist/types/demo/validator.d.ts.map +1 -0
- package/dist/types/demo/worldStateOptimizer.d.ts +13 -0
- package/dist/types/demo/worldStateOptimizer.d.ts.map +1 -0
- package/dist/types/demo/writer.d.ts +28 -0
- package/dist/types/demo/writer.d.ts.map +1 -0
- package/dist/types/editor/bsp-inspector.d.ts +39 -0
- package/dist/types/editor/bsp-inspector.d.ts.map +1 -0
- package/dist/types/editor/ent.d.ts +21 -0
- package/dist/types/editor/ent.d.ts.map +1 -0
- package/dist/types/host.d.ts +52 -0
- package/dist/types/host.d.ts.map +1 -0
- package/dist/types/index.d.ts +104 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/loop.d.ts +40 -0
- package/dist/types/loop.d.ts.map +1 -0
- package/dist/types/network/clientConnection.d.ts +139 -0
- package/dist/types/network/clientConnection.d.ts.map +1 -0
- package/dist/types/render/__mocks__/frame.d.ts +31 -0
- package/dist/types/render/__mocks__/frame.d.ts.map +1 -0
- package/dist/types/render/bloom.d.ts +19 -0
- package/dist/types/render/bloom.d.ts.map +1 -0
- package/dist/types/render/bsp/generator.d.ts +25 -0
- package/dist/types/render/bsp/generator.d.ts.map +1 -0
- package/dist/types/render/bsp/geometry.d.ts +37 -0
- package/dist/types/render/bsp/geometry.d.ts.map +1 -0
- package/dist/types/render/bsp/renderer.d.ts +12 -0
- package/dist/types/render/bsp/renderer.d.ts.map +1 -0
- package/dist/types/render/bsp/surface.d.ts +4 -0
- package/dist/types/render/bsp/surface.d.ts.map +1 -0
- package/dist/types/render/bsp.d.ts +66 -0
- package/dist/types/render/bsp.d.ts.map +1 -0
- package/dist/types/render/bspPipeline.d.ts +78 -0
- package/dist/types/render/bspPipeline.d.ts.map +1 -0
- package/dist/types/render/bspTraversal.d.ts +13 -0
- package/dist/types/render/bspTraversal.d.ts.map +1 -0
- package/dist/types/render/camera.d.ts +54 -0
- package/dist/types/render/camera.d.ts.map +1 -0
- package/dist/types/render/cameraController.d.ts +28 -0
- package/dist/types/render/cameraController.d.ts.map +1 -0
- package/dist/types/render/collisionVis.d.ts +54 -0
- package/dist/types/render/collisionVis.d.ts.map +1 -0
- package/dist/types/render/colors.d.ts +6 -0
- package/dist/types/render/colors.d.ts.map +1 -0
- package/dist/types/render/context.d.ts +36 -0
- package/dist/types/render/context.d.ts.map +1 -0
- package/dist/types/render/culling.d.ts +12 -0
- package/dist/types/render/culling.d.ts.map +1 -0
- package/dist/types/render/debug.d.ts +36 -0
- package/dist/types/render/debug.d.ts.map +1 -0
- package/dist/types/render/debugMode.d.ts +10 -0
- package/dist/types/render/debugMode.d.ts.map +1 -0
- package/dist/types/render/dlight.d.ts +43 -0
- package/dist/types/render/dlight.d.ts.map +1 -0
- package/dist/types/render/frame.d.ts +78 -0
- package/dist/types/render/frame.d.ts.map +1 -0
- package/dist/types/render/geometry.d.ts +2 -0
- package/dist/types/render/geometry.d.ts.map +1 -0
- package/dist/types/render/gizmo.d.ts +32 -0
- package/dist/types/render/gizmo.d.ts.map +1 -0
- package/dist/types/render/gpuProfiler.d.ts +59 -0
- package/dist/types/render/gpuProfiler.d.ts.map +1 -0
- package/dist/types/render/instancing.d.ts +12 -0
- package/dist/types/render/instancing.d.ts.map +1 -0
- package/dist/types/render/interface.d.ts +50 -0
- package/dist/types/render/interface.d.ts.map +1 -0
- package/dist/types/render/light.d.ts +10 -0
- package/dist/types/render/light.d.ts.map +1 -0
- package/dist/types/render/lightCulling.d.ts +17 -0
- package/dist/types/render/lightCulling.d.ts.map +1 -0
- package/dist/types/render/lightStyles.d.ts +10 -0
- package/dist/types/render/lightStyles.d.ts.map +1 -0
- package/dist/types/render/materialLoader.d.ts +5 -0
- package/dist/types/render/materialLoader.d.ts.map +1 -0
- package/dist/types/render/materials.d.ts +39 -0
- package/dist/types/render/materials.d.ts.map +1 -0
- package/dist/types/render/md2Pipeline.d.ts +74 -0
- package/dist/types/render/md2Pipeline.d.ts.map +1 -0
- package/dist/types/render/md3Pipeline.d.ts +94 -0
- package/dist/types/render/md3Pipeline.d.ts.map +1 -0
- package/dist/types/render/options.d.ts +9 -0
- package/dist/types/render/options.d.ts.map +1 -0
- package/dist/types/render/particleSystem.d.ts +125 -0
- package/dist/types/render/particleSystem.d.ts.map +1 -0
- package/dist/types/render/postprocessing/pipeline.d.ts +13 -0
- package/dist/types/render/postprocessing/pipeline.d.ts.map +1 -0
- package/dist/types/render/renderer.d.ts +8 -0
- package/dist/types/render/renderer.d.ts.map +1 -0
- package/dist/types/render/resources.d.ts +69 -0
- package/dist/types/render/resources.d.ts.map +1 -0
- package/dist/types/render/scene.d.ts +31 -0
- package/dist/types/render/scene.d.ts.map +1 -0
- package/dist/types/render/shaderProgram.d.ts +19 -0
- package/dist/types/render/shaderProgram.d.ts.map +1 -0
- package/dist/types/render/skybox.d.ts +28 -0
- package/dist/types/render/skybox.d.ts.map +1 -0
- package/dist/types/render/sprite.d.ts +21 -0
- package/dist/types/render/sprite.d.ts.map +1 -0
- package/dist/types/render/types.d.ts +29 -0
- package/dist/types/render/types.d.ts.map +1 -0
- package/dist/types/render/webgpu/constants.d.ts +29 -0
- package/dist/types/render/webgpu/constants.d.ts.map +1 -0
- package/dist/types/render/webgpu/context.d.ts +41 -0
- package/dist/types/render/webgpu/context.d.ts.map +1 -0
- package/dist/types/render/webgpu/frame.d.ts +58 -0
- package/dist/types/render/webgpu/frame.d.ts.map +1 -0
- package/dist/types/render/webgpu/headless.d.ts +9 -0
- package/dist/types/render/webgpu/headless.d.ts.map +1 -0
- package/dist/types/render/webgpu/pipelines/sprite.d.ts +31 -0
- package/dist/types/render/webgpu/pipelines/sprite.d.ts.map +1 -0
- package/dist/types/render/webgpu/renderer.d.ts +30 -0
- package/dist/types/render/webgpu/renderer.d.ts.map +1 -0
- package/dist/types/render/webgpu/resources.d.ts +240 -0
- package/dist/types/render/webgpu/resources.d.ts.map +1 -0
- package/dist/types/render/webgpu/shaders/mipmapShader.d.ts +2 -0
- package/dist/types/render/webgpu/shaders/mipmapShader.d.ts.map +1 -0
- package/dist/types/render/webgpu/shaders/spriteShader.d.ts +2 -0
- package/dist/types/render/webgpu/shaders/spriteShader.d.ts.map +1 -0
- package/dist/types/runtime.d.ts +19 -0
- package/dist/types/runtime.d.ts.map +1 -0
- package/dist/types/stream/streamingBuffer.d.ts +102 -0
- package/dist/types/stream/streamingBuffer.d.ts.map +1 -0
- package/dist/types/tools/lightmapExport.d.ts +17 -0
- package/dist/types/tools/lightmapExport.d.ts.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare class DemoReader {
|
|
2
|
+
private stream;
|
|
3
|
+
constructor(buffer: ArrayBuffer);
|
|
4
|
+
/**
|
|
5
|
+
* Reads the next message block from the demo stream.
|
|
6
|
+
* Returns null if end of stream is reached.
|
|
7
|
+
* Throws if the stream is malformed (e.g., length exceeds remaining data).
|
|
8
|
+
*/
|
|
9
|
+
readNextBlock(): {
|
|
10
|
+
length: number;
|
|
11
|
+
data: Uint8Array;
|
|
12
|
+
} | null;
|
|
13
|
+
isFinished(): boolean;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=reader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../../src/demo/reader.ts"],"names":[],"mappings":"AAEA,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,WAAW;IAI/B;;;;OAIG;IACI,aAAa,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,IAAI;IAqC5D,UAAU,IAAI,OAAO;CAG7B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class DemoRecorder {
|
|
2
|
+
private isRecording;
|
|
3
|
+
private messageBuffer;
|
|
4
|
+
private startTime;
|
|
5
|
+
private frameCount;
|
|
6
|
+
private filename;
|
|
7
|
+
private lastMessageSize;
|
|
8
|
+
constructor();
|
|
9
|
+
startRecording(filename: string, startTime?: number): void;
|
|
10
|
+
recordMessage(data: Uint8Array): void;
|
|
11
|
+
stopRecording(): Uint8Array | null;
|
|
12
|
+
getIsRecording(): boolean;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=recorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","sourceRoot":"","sources":["../../../src/demo/recorder.ts"],"names":[],"mappings":"AAEA,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,eAAe,CAAc;;IAM9B,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,MAAU,GAAG,IAAI;IAoB7D,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IA+BrC,aAAa,IAAI,UAAU,GAAG,IAAI;IAelC,cAAc,IAAI,OAAO;CAGjC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { EntityState, Vec3 } from '@quake2ts/shared';
|
|
2
|
+
/**
|
|
3
|
+
* Interface representing a snapshot of the game state that can be recorded.
|
|
4
|
+
* This mirrors GameStateSnapshot from @quake2ts/game but is defined here
|
|
5
|
+
* to avoid circular dependencies.
|
|
6
|
+
*/
|
|
7
|
+
export interface RecorderSnapshot {
|
|
8
|
+
readonly gravity: Vec3;
|
|
9
|
+
readonly origin: Vec3;
|
|
10
|
+
readonly velocity: Vec3;
|
|
11
|
+
readonly viewangles: Vec3;
|
|
12
|
+
readonly packetEntities: EntityState[];
|
|
13
|
+
readonly pmFlags: number;
|
|
14
|
+
readonly pmType: number;
|
|
15
|
+
readonly pm_time: number;
|
|
16
|
+
readonly deltaAngles: Vec3;
|
|
17
|
+
readonly stats: number[];
|
|
18
|
+
readonly kick_angles: Vec3;
|
|
19
|
+
readonly gunoffset: Vec3;
|
|
20
|
+
readonly gunangles: Vec3;
|
|
21
|
+
readonly gunindex: number;
|
|
22
|
+
readonly gun_frame: number;
|
|
23
|
+
readonly rdflags: number;
|
|
24
|
+
readonly fov: number;
|
|
25
|
+
readonly blend: [number, number, number, number];
|
|
26
|
+
readonly watertype?: number;
|
|
27
|
+
}
|
|
28
|
+
export type FrameOffset = {
|
|
29
|
+
type: 'frame';
|
|
30
|
+
frame: number;
|
|
31
|
+
};
|
|
32
|
+
export type TimeOffset = {
|
|
33
|
+
type: 'time';
|
|
34
|
+
seconds: number;
|
|
35
|
+
};
|
|
36
|
+
export type Offset = FrameOffset | TimeOffset;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/demo/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAErD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC3D,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DemoValidationResult {
|
|
2
|
+
valid: boolean;
|
|
3
|
+
error?: string;
|
|
4
|
+
version?: number;
|
|
5
|
+
}
|
|
6
|
+
export declare class DemoValidator {
|
|
7
|
+
/**
|
|
8
|
+
* Validates a Quake 2 demo file buffer.
|
|
9
|
+
* Checks for minimum size, first block length, and initial serverdata command.
|
|
10
|
+
*/
|
|
11
|
+
static validate(buffer: ArrayBuffer, filename?: string): DemoValidationResult;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/demo/validator.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,aAAa;IACxB;;;OAGG;WACW,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,oBAAoB;CA2CrF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WorldState } from './clipper.js';
|
|
2
|
+
import { Message } from './message.js';
|
|
3
|
+
export declare class WorldStateOptimizer {
|
|
4
|
+
/**
|
|
5
|
+
* Optimizes the WorldState for a specific clip by removing unreferenced resources and entities.
|
|
6
|
+
*
|
|
7
|
+
* @param worldState The initial state at the start of the clip.
|
|
8
|
+
* @param clipMessages The parsed messages from the clip.
|
|
9
|
+
* @returns A new optimized WorldState.
|
|
10
|
+
*/
|
|
11
|
+
optimizeForClip(worldState: WorldState, clipMessages: Message[]): WorldState;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=worldStateOptimizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worldStateOptimizer.d.ts","sourceRoot":"","sources":["../../../src/demo/worldStateOptimizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAoD,MAAM,cAAc,CAAC;AAGzF,qBAAa,mBAAmB;IAE5B;;;;;;OAMG;IACI,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,UAAU;CAyHtF"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { EntityState, ProtocolPlayerState, FrameData } from './parser.js';
|
|
2
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
3
|
+
export declare class MessageWriter {
|
|
4
|
+
private writer;
|
|
5
|
+
constructor();
|
|
6
|
+
getData(): Uint8Array;
|
|
7
|
+
private writeCommand;
|
|
8
|
+
writeServerData(protocol: number, serverCount: number, attractLoop: number, gameDir: string, playerNum: number, levelName: string): void;
|
|
9
|
+
writeServerDataRerelease(protocol: number, spawnCount: number, demoType: number, tickRate: number, gameDir: string, playerNum: number, levelName: string): void;
|
|
10
|
+
writeConfigString(index: number, str: string, protocolVersion?: number): void;
|
|
11
|
+
writeSpawnBaseline(entity: EntityState, protocolVersion: number): void;
|
|
12
|
+
writeStuffText(text: string, protocolVersion?: number): void;
|
|
13
|
+
writeCenterPrint(text: string, protocolVersion?: number): void;
|
|
14
|
+
writePrint(level: number, text: string, protocolVersion?: number): void;
|
|
15
|
+
writeLayout(layout: string, protocolVersion?: number): void;
|
|
16
|
+
writeInventory(inventory: number[], protocolVersion?: number): void;
|
|
17
|
+
writeMuzzleFlash(ent: number, weapon: number, protocolVersion?: number): void;
|
|
18
|
+
writeMuzzleFlash2(ent: number, weapon: number, protocolVersion?: number): void;
|
|
19
|
+
writeTempEntity(type: number, pos: Vec3, pos2?: Vec3, dir?: Vec3, cnt?: number, color?: number, ent?: number, srcEnt?: number, destEnt?: number, protocolVersion?: number): void;
|
|
20
|
+
writeSound(mask: number, soundNum: number, volume?: number, attenuation?: number, offset?: number, ent?: number, pos?: Vec3, protocolVersion?: number): void;
|
|
21
|
+
writeDisconnect(protocolVersion?: number): void;
|
|
22
|
+
writeReconnect(protocolVersion?: number): void;
|
|
23
|
+
writeFrame(frame: FrameData, protocolVersion: number): void;
|
|
24
|
+
writePlayerState(ps: ProtocolPlayerState): void;
|
|
25
|
+
writePacketEntities(entities: EntityState[], delta: boolean, protocolVersion: number): void;
|
|
26
|
+
writeEntityState(to: EntityState, from: EntityState | null, force: boolean, protocolVersion: number): void;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/demo/writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { BspMap } from '../assets/bsp.js';
|
|
2
|
+
import { vec3 } from 'gl-matrix';
|
|
3
|
+
import { Bounds3 } from '@quake2ts/shared';
|
|
4
|
+
import { TextureCache } from '../assets/texture.js';
|
|
5
|
+
export interface BspNodeTree {
|
|
6
|
+
headNodeIndex: number;
|
|
7
|
+
}
|
|
8
|
+
export interface SurfaceInfo {
|
|
9
|
+
faceIndex: number;
|
|
10
|
+
textureName: string;
|
|
11
|
+
lightmapId: number;
|
|
12
|
+
normal: vec3;
|
|
13
|
+
plane: {
|
|
14
|
+
normal: vec3;
|
|
15
|
+
dist: number;
|
|
16
|
+
};
|
|
17
|
+
vertices: vec3[];
|
|
18
|
+
}
|
|
19
|
+
export interface TextureInfo {
|
|
20
|
+
name: string;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class BspInspector {
|
|
25
|
+
private bsp;
|
|
26
|
+
private textureCache?;
|
|
27
|
+
constructor(bsp: BspMap, textureCache?: TextureCache | undefined);
|
|
28
|
+
getBspNodeTree(): BspNodeTree;
|
|
29
|
+
findLeafContainingPoint(point: vec3): number;
|
|
30
|
+
getLeafBounds(leafIndex: number): Bounds3;
|
|
31
|
+
getLeafCluster(leafIndex: number): number;
|
|
32
|
+
isClusterVisible(fromCluster: number, toCluster: number): boolean;
|
|
33
|
+
getSurfaceAtPoint(point: vec3): SurfaceInfo | null;
|
|
34
|
+
getSurfacesByTexture(textureName: string): number[];
|
|
35
|
+
getAllLoadedTextures(): TextureInfo[];
|
|
36
|
+
getTextureData(name: string): ImageData | null;
|
|
37
|
+
getTextureDependencies(mapName: string): string[];
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=bsp-inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsp-inspector.d.ts","sourceRoot":"","sources":["../../../src/editor/bsp-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAG1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,IAAI,CAAC;IACb,KAAK,EAAE;QACL,MAAM,EAAE,IAAI,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE,IAAI,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,GAAG;IAAU,OAAO,CAAC,YAAY,CAAC;gBAAlC,GAAG,EAAE,MAAM,EAAU,YAAY,CAAC,EAAE,YAAY,YAAA;IAEpE,cAAc,IAAI,WAAW;IAM7B,uBAAuB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM;IAoB5C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAYzC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAMzC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAwBjE,iBAAiB,CAAC,KAAK,EAAE,IAAI,GAAG,WAAW,GAAG,IAAI;IAqDlD,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAWnD,oBAAoB,IAAI,WAAW,EAAE;IA2BrC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAgC9C,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;CAUlD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BspEntity } from '../assets/bsp.js';
|
|
2
|
+
export { BspEntity };
|
|
3
|
+
export interface ValidationResult {
|
|
4
|
+
valid: boolean;
|
|
5
|
+
errors: string[];
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse ENT file (entity lump text format) to entity objects
|
|
10
|
+
*/
|
|
11
|
+
export declare function parseEntLump(text: string): BspEntity[];
|
|
12
|
+
/**
|
|
13
|
+
* Serialize entities to ENT file format
|
|
14
|
+
*/
|
|
15
|
+
export declare function serializeEntLump(entities: BspEntity[]): string;
|
|
16
|
+
/**
|
|
17
|
+
* Validate entity properties
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateEntity(entity: BspEntity): ValidationResult;
|
|
20
|
+
export declare function serializeBspEntities(entities: BspEntity[]): string;
|
|
21
|
+
//# sourceMappingURL=ent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ent.d.ts","sourceRoot":"","sources":["../../../src/editor/ent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,CAqDtD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAqB9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,gBAAgB,CA6BlE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAElE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type FixedStepContext, type LoopOptions, type RenderContext } from './loop.js';
|
|
2
|
+
export interface GameFrameResult<FrameState = unknown> {
|
|
3
|
+
readonly frame: number;
|
|
4
|
+
readonly timeMs: number;
|
|
5
|
+
readonly state?: FrameState;
|
|
6
|
+
}
|
|
7
|
+
export interface GameSimulation<FrameState = unknown> {
|
|
8
|
+
init(startTimeMs: number): GameFrameResult<FrameState> | void;
|
|
9
|
+
frame(step: FixedStepContext, command?: any): GameFrameResult<FrameState>;
|
|
10
|
+
shutdown(): void;
|
|
11
|
+
}
|
|
12
|
+
export interface GameRenderSample<FrameState = unknown> extends RenderContext {
|
|
13
|
+
readonly previous?: GameFrameResult<FrameState>;
|
|
14
|
+
readonly latest?: GameFrameResult<FrameState>;
|
|
15
|
+
}
|
|
16
|
+
import { Camera } from './render/camera.js';
|
|
17
|
+
import { CommandRegistry } from './commands.js';
|
|
18
|
+
import { CvarRegistry } from './cvars.js';
|
|
19
|
+
export interface ClientRenderer<FrameState = unknown> {
|
|
20
|
+
init(initial?: GameFrameResult<FrameState>): void;
|
|
21
|
+
render(sample: GameRenderSample<FrameState>): any;
|
|
22
|
+
shutdown(): void;
|
|
23
|
+
camera?: Camera;
|
|
24
|
+
}
|
|
25
|
+
export interface EngineHostOptions {
|
|
26
|
+
readonly loop?: Partial<LoopOptions>;
|
|
27
|
+
readonly startTimeMs?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare class EngineHost<FrameState = unknown> {
|
|
30
|
+
private readonly game;
|
|
31
|
+
private readonly client?;
|
|
32
|
+
private readonly loop;
|
|
33
|
+
private readonly startTimeMs;
|
|
34
|
+
private previousFrame?;
|
|
35
|
+
private latestFrame?;
|
|
36
|
+
private started;
|
|
37
|
+
private paused_;
|
|
38
|
+
private latestCommand?;
|
|
39
|
+
readonly commands: CommandRegistry;
|
|
40
|
+
readonly cvars: CvarRegistry;
|
|
41
|
+
constructor(game: GameSimulation<FrameState>, client?: ClientRenderer<FrameState> | undefined, options?: EngineHostOptions);
|
|
42
|
+
start(): void;
|
|
43
|
+
stop(): void;
|
|
44
|
+
setPaused(paused: boolean): void;
|
|
45
|
+
get paused(): boolean;
|
|
46
|
+
pump(elapsedMs: number): void;
|
|
47
|
+
getLatestFrame(): GameFrameResult<FrameState> | undefined;
|
|
48
|
+
isRunning(): boolean;
|
|
49
|
+
private stepSimulation;
|
|
50
|
+
private renderClient;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host.d.ts","sourceRoot":"","sources":["../../src/host.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,aAAa,EACnB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,eAAe,CAAC,UAAU,GAAG,OAAO;IACnD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,cAAc,CAAC,UAAU,GAAG,OAAO;IAClD,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAC9D,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IAC1E,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB,CAAC,UAAU,GAAG,OAAO,CAAE,SAAQ,aAAa;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;CAC/C;AAGD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,WAAW,cAAc,CAAC,UAAU,GAAG,OAAO;IAClD,IAAI,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IAClD,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;IAClD,QAAQ,IAAI,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,UAAU,CAAC,UAAU,GAAG,OAAO;IAYxC,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAZ1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,aAAa,CAAC,CAA8B;IACpD,OAAO,CAAC,WAAW,CAAC,CAA8B;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAC,CAAc;IACpC,QAAQ,CAAC,QAAQ,kBAAyB;IAC1C,QAAQ,CAAC,KAAK,eAAsB;gBAGjB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,YAAA,EACpD,OAAO,GAAE,iBAAsB;IAkBjC,KAAK,IAAI,IAAI;IAiBb,IAAI,IAAI,IAAI;IAYZ,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAShC,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7B,cAAc,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS;IAIzD,SAAS,IAAI,OAAO;IAIpB,OAAO,CAAC,cAAc,CAGpB;IAEF,OAAO,CAAC,YAAY,CAQlB;CACH"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Vec3 } from '@quake2ts/shared';
|
|
2
|
+
import { EngineHost, type ClientRenderer, type EngineHostOptions, type GameFrameResult, type GameRenderSample, type GameSimulation } from './host.js';
|
|
3
|
+
import { FixedTimestepLoop, type LoopCallbacks, type LoopOptions } from './loop.js';
|
|
4
|
+
import { EngineRuntime, createEngineRuntime } from './runtime.js';
|
|
5
|
+
import { AssetManager } from './assets/manager.js';
|
|
6
|
+
import { PmoveTraceResult } from '@quake2ts/shared';
|
|
7
|
+
export interface TraceResult extends PmoveTraceResult {
|
|
8
|
+
readonly start: Vec3;
|
|
9
|
+
readonly end: Vec3;
|
|
10
|
+
readonly hit?: Vec3;
|
|
11
|
+
}
|
|
12
|
+
import { Renderer } from './render/renderer.js';
|
|
13
|
+
import { AudioApi } from './audio/api.js';
|
|
14
|
+
export interface EngineImports {
|
|
15
|
+
trace(start: Vec3, end: Vec3, mins?: Vec3, maxs?: Vec3): TraceResult;
|
|
16
|
+
renderer?: Renderer;
|
|
17
|
+
audio?: AudioApi;
|
|
18
|
+
assets?: AssetManager;
|
|
19
|
+
}
|
|
20
|
+
export interface EngineExports {
|
|
21
|
+
init(): void;
|
|
22
|
+
shutdown(): void;
|
|
23
|
+
createMainLoop(callbacks: LoopCallbacks, options?: Partial<LoopOptions>): FixedTimestepLoop;
|
|
24
|
+
setAreaPortalState(portalNum: number, open: boolean): void;
|
|
25
|
+
}
|
|
26
|
+
export declare function createEngine(imports: EngineImports): EngineExports;
|
|
27
|
+
export { FixedTimestepLoop };
|
|
28
|
+
export { ConfigStringRegistry, type ConfigStringEntry } from './configstrings.js';
|
|
29
|
+
export { Cvar, CvarRegistry, type CvarChangeHandler } from './cvars.js';
|
|
30
|
+
export { Command, CommandRegistry, type CommandCallback } from './commands.js';
|
|
31
|
+
export type { FixedStepContext, LoopCallbacks, LoopOptions, RenderContext } from './loop.js';
|
|
32
|
+
export { PakArchive, PakParseError, calculatePakChecksum } from './assets/pak.js';
|
|
33
|
+
export { StreamingPakArchive } from './assets/streamingPak.js';
|
|
34
|
+
export { PakWriter } from './assets/pakWriter.js';
|
|
35
|
+
export { ResourceLoadTracker, ResourceType, type ResourceLoadLog, type ResourceLoadEntry } from './assets/resourceTracker.js';
|
|
36
|
+
export { VirtualFileSystem } from './assets/vfs.js';
|
|
37
|
+
export { ingestPaks, PakIngestionError, type PakIngestionOptions, type PakIngestionProgress, type PakIngestionResult, type PakSource, } from './assets/ingestion.js';
|
|
38
|
+
export { LruCache } from './assets/cache.js';
|
|
39
|
+
export { filesToPakSources, ingestPakFiles, wireDropTarget, wireFileInput } from './assets/browserIngestion.js';
|
|
40
|
+
export { BspLoader, BspParseError, parseBsp, createFaceLightmap, type BspMap, type BspHeader, type BspEntities, type BspEntity, type BspLump, type BspLumpInfo, type BspFace, type BspLeaf, type BspNode, type BspPlane, type BspTexInfo, type BspModel, type BspVisibility, type BspVisibilityCluster, } from './assets/bsp.js';
|
|
41
|
+
export { Md2Loader, Md2ParseError, groupMd2Animations, parseMd2, type Md2Animation, type Md2Frame, type Md2GlCommand, type Md2Model, } from './assets/md2.js';
|
|
42
|
+
export { Md3Loader, Md3ParseError, parseMd3, type Md3Frame, type Md3Model, type Md3Surface, } from './assets/md3.js';
|
|
43
|
+
export { SpriteLoader, SpriteParseError, parseSprite, type SpriteFrame, type SpriteModel, } from './assets/sprite.js';
|
|
44
|
+
export { advanceAnimation, computeFrameBlend, createAnimationState, interpolateVec3, type AnimationSequence, type AnimationState, type FrameBlend, } from './assets/animation.js';
|
|
45
|
+
export { parseWal, type WalTexture } from './assets/wal.js';
|
|
46
|
+
export { parsePcx, pcxToRgba, type PcxImage } from './assets/pcx.js';
|
|
47
|
+
export * from './assets/tga.js';
|
|
48
|
+
export { parseWalTexture, preparePcxTexture, TextureCache, walToRgba, type PreparedTexture, type TextureLevel, } from './assets/texture.js';
|
|
49
|
+
export { parseWav, type WavData } from './assets/wav.js';
|
|
50
|
+
export { decodeOgg, type OggAudio } from './assets/ogg.js';
|
|
51
|
+
export { AudioRegistry, AudioRegistryError, type DecodedAudio } from './assets/audio.js';
|
|
52
|
+
export { PakIndexStore, type StoredPakIndex } from './assets/pakIndexStore.js';
|
|
53
|
+
export { PakValidationError, PakValidator, RERELEASE_KNOWN_PAKS, type KnownPakChecksum, type PakValidationOutcome, } from './assets/pakValidation.js';
|
|
54
|
+
export { AssetDependencyError, AssetDependencyTracker, AssetManager, type AssetManagerOptions, } from './assets/manager.js';
|
|
55
|
+
export { ATTN_IDLE, ATTN_LOOP_NONE, ATTN_NONE, ATTN_NORM, ATTN_STATIC, MAX_SOUND_CHANNELS, SOUND_FULLVOLUME, SOUND_LOOP_ATTENUATE, SoundChannel, attenuationToDistanceMultiplier, calculateMaxAudibleDistance, } from './audio/constants.js';
|
|
56
|
+
export { AudioContextController, createAudioGraph, type AudioBufferLike, type AudioContextLike, type AudioGraph, type AudioNodeLike, type GainNodeLike, type BiquadFilterNodeLike, type PannerNodeLike, type AudioDestinationNodeLike, type AudioParamLike, type AudioBufferSourceNodeLike, type DynamicsCompressorNodeLike, } from './audio/context.js';
|
|
57
|
+
export { SoundRegistry } from './audio/registry.js';
|
|
58
|
+
export { SoundPrecache, type SoundPrecacheOptions, type SoundPrecacheReport } from './audio/precache.js';
|
|
59
|
+
export { AudioSystem, type AudioSystemOptions, type SoundRequest, type ActiveSound, type ListenerState } from './audio/system.js';
|
|
60
|
+
export { createOcclusionResolver, AudioOcclusion, type TraceFn } from './audio/occlusion.js';
|
|
61
|
+
export { createInitialChannels, pickChannel, type ChannelState } from './audio/channels.js';
|
|
62
|
+
export { MusicSystem, type MusicSystemOptions, type MusicState, type AudioElementLike } from './audio/music.js';
|
|
63
|
+
export { AudioApi, type AudioApiOptions } from './audio/api.js';
|
|
64
|
+
export { EngineHost, type ClientRenderer, type EngineHostOptions, type GameFrameResult, type GameRenderSample, type GameSimulation, };
|
|
65
|
+
export { EngineRuntime, createEngineRuntime };
|
|
66
|
+
export { createWebGLContext, type WebGLContextInitOptions, type WebGLContextState } from './render/context.js';
|
|
67
|
+
export { ShaderProgram, createProgramFromSources, type ShaderSources } from './render/shaderProgram.js';
|
|
68
|
+
export { Framebuffer, IndexBuffer, Texture2D, TextureCubeMap, VertexArray, VertexBuffer, type BufferUsage, type TextureParameters, type VertexAttributeLayout, } from './render/resources.js';
|
|
69
|
+
export { BSP_VERTEX_LAYOUT, createBspSurfaces, buildBspGeometry, type BspGeometryBuildResult, type BspLightmapData, type BspSurfaceGeometry, type BspSurfaceInput, type LightmapAtlas, type LightmapPlacement, } from './render/bsp.js';
|
|
70
|
+
export { extractFrustumPlanes, boxIntersectsFrustum, type FrustumPlane } from './render/culling.js';
|
|
71
|
+
export { findLeafForPoint, gatherVisibleFaces, type VisibleFace } from './render/bspTraversal.js';
|
|
72
|
+
export { applySurfaceState, BspSurfacePipeline, BSP_SURFACE_FRAGMENT_SOURCE, BSP_SURFACE_VERTEX_SOURCE, deriveSurfaceRenderState, resolveLightStyles, type BspSurfaceBindOptions, type SurfaceRenderState, } from './render/bspPipeline.js';
|
|
73
|
+
export { SKYBOX_FRAGMENT_SHADER, SKYBOX_VERTEX_SHADER, SkyboxPipeline, computeSkyScroll, removeViewTranslation, type SkyboxBindOptions, } from './render/skybox.js';
|
|
74
|
+
export { MD2_FRAGMENT_SHADER, MD2_VERTEX_SHADER, Md2MeshBuffers, Md2Pipeline, buildMd2Geometry, buildMd2VertexData, type Md2BindOptions, type Md2FrameBlend, type Md2Geometry, type Md2DrawVertex, } from './render/md2Pipeline.js';
|
|
75
|
+
export { Camera } from './render/camera.js';
|
|
76
|
+
export { DLight, DynamicLightManager } from './render/dlight.js';
|
|
77
|
+
export { MD3_FRAGMENT_SHADER, MD3_VERTEX_SHADER, Md3ModelMesh, Md3Pipeline, Md3SurfaceMesh, buildMd3SurfaceGeometry, buildMd3VertexData, interpolateMd3Tag, type Md3FrameBlend, type Md3LightingOptions, type Md3SurfaceMaterial, type Md3TagTransform, } from './render/md3Pipeline.js';
|
|
78
|
+
export { PARTICLE_FRAGMENT_SHADER, PARTICLE_VERTEX_SHADER, ParticleRenderer, ParticleSystem, spawnBlood, spawnBulletImpact, spawnExplosion, spawnMuzzleFlash, spawnTeleportFlash, spawnTrail, spawnSplash, spawnSteam, spawnRailTrail, spawnSparks, spawnBlasterImpact, spawnBfgExplosion, type ParticleBlendMode, type ParticleEffectContext, type ParticleMesh, type ParticleRenderOptions, type ParticleSimulationOptions, type ParticleSpawnOptions, type RailTrailContext, type SparksContext, type BlasterImpactContext, } from './render/particleSystem.js';
|
|
79
|
+
export { Pic, Renderer } from './render/renderer.js';
|
|
80
|
+
export { FrameRenderStats, FrameRenderOptions, WorldRenderState, type FrameRenderer, type RenderModeConfig } from './render/frame.js';
|
|
81
|
+
export { SpriteRenderer } from './render/sprite.js';
|
|
82
|
+
export { RenderOptions } from './render/options.js';
|
|
83
|
+
export { RenderableEntity } from './render/scene.js';
|
|
84
|
+
export { DemoPlaybackController, PlaybackState, DemoReader, DemoRecorder, NetworkMessageParser } from './demo/index.js';
|
|
85
|
+
export { MessageWriter } from './demo/writer.js';
|
|
86
|
+
export { DemoValidator, type DemoValidationResult } from './demo/validator.js';
|
|
87
|
+
export { DemoAnalyzer } from './demo/analyzer.js';
|
|
88
|
+
export { DemoEventType } from './demo/analysis.js';
|
|
89
|
+
export { DemoCameraMode } from './demo/camera.js';
|
|
90
|
+
export type { DemoCameraState } from './demo/camera.js';
|
|
91
|
+
export { DemoClipper, type WorldState, type ServerDataMessage } from './demo/clipper.js';
|
|
92
|
+
export type { DemoEvent, EventSummary, DemoHeader, ServerInfo, DemoStatistics, PlayerStatistics, WeaponStatistics, FrameDiff } from './demo/analysis.js';
|
|
93
|
+
export { PROTOCOL_VERSION_RERELEASE, createEmptyEntityState, createEmptyProtocolPlayerState, U_ORIGIN1, U_ORIGIN2, U_ORIGIN3, U_ANGLE1, U_ANGLE2, U_ANGLE3, U_MODEL, U_MODEL2, U_MODEL3, U_MODEL4, U_FRAME8, U_FRAME16, U_SKIN8, U_SKIN16, U_EFFECTS8, U_EFFECTS16, U_RENDERFX8, U_RENDERFX16, U_OLDORIGIN, U_SOUND, U_EVENT, U_SOLID, U_REMOVE, U_ALPHA, U_SCALE, U_INSTANCE_BITS, U_LOOP_VOLUME, U_LOOP_ATTENUATION_HIGH, U_OWNER_HIGH, U_OLD_FRAME_HIGH } from './demo/parser.js';
|
|
94
|
+
export type { NetworkMessageHandler, EntityState, FrameData, ProtocolPlayerState, FogData, DamageIndicator } from './demo/parser.js';
|
|
95
|
+
export { applyEntityDelta } from './demo/delta.js';
|
|
96
|
+
export { FileType, detectFileType, isTextFile, isBinaryFile } from './assets/fileType.js';
|
|
97
|
+
export { AssetPreviewGenerator } from './assets/preview.js';
|
|
98
|
+
export { MapAnalyzer, type MapStatistics } from './assets/mapStatistics.js';
|
|
99
|
+
export { parseEntLump, serializeEntLump, validateEntity, type EntEntity, type ValidationResult } from './assets/ent.js';
|
|
100
|
+
export { createWebGPUContext, queryCapabilities, type WebGPUContextOptions, type WebGPUContextState, type WebGPUCapabilities } from './render/webgpu/context.js';
|
|
101
|
+
export { createHeadlessRenderTarget, captureRenderTarget, type HeadlessRenderTarget } from './render/webgpu/headless.js';
|
|
102
|
+
export { IRenderer } from './render/interface.js';
|
|
103
|
+
export { ClientConnection, ConnectionState, type ConnectionEvents, type ClientConnectionOptions } from './network/clientConnection.js';
|
|
104
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;IACnB,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;CACrB;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,WAAW,CAAC;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,IAAI,CAAC;IACb,QAAQ,IAAI,IAAI,CAAC;IACjB,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,iBAAiB,CAAC;IAC5F,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5D;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAiBlE;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC9H,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,SAAS,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAChH,OAAO,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,kBAAkB,EAClB,KAAK,MAAM,EACX,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,SAAS,EACT,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,SAAS,EACT,aAAa,EACb,QAAQ,EACR,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACrE,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,SAAS,EACT,cAAc,EACd,SAAS,EACT,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACnB,KAAK,yBAAyB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClI,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,KAAK,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,CAAC;AACF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC/G,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACxG,OAAO,EACL,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,EACX,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,iBAAiB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACtI,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACxH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACzF,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzJ,OAAO,EACH,0BAA0B,EAC1B,sBAAsB,EACtB,8BAA8B,EAC9B,SAAS,EAAE,SAAS,EAAE,SAAS,EAC/B,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAC5B,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EACrC,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,QAAQ,EACjB,UAAU,EAAE,WAAW,EACvB,WAAW,EAAE,YAAY,EACzB,WAAW,EACX,OAAO,EACP,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,eAAe,EACf,aAAa,EACb,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACR,qBAAqB,EACrB,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,OAAO,EACP,eAAe,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGxH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACjK,OAAO,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACzH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface FixedStepContext {
|
|
2
|
+
readonly frame: number;
|
|
3
|
+
readonly deltaMs: number;
|
|
4
|
+
readonly nowMs: number;
|
|
5
|
+
}
|
|
6
|
+
export interface RenderContext {
|
|
7
|
+
readonly alpha: number;
|
|
8
|
+
readonly nowMs: number;
|
|
9
|
+
readonly accumulatorMs: number;
|
|
10
|
+
readonly frame: number;
|
|
11
|
+
}
|
|
12
|
+
export interface LoopCallbacks {
|
|
13
|
+
simulate(step: FixedStepContext): void;
|
|
14
|
+
render?(sample: RenderContext): void;
|
|
15
|
+
}
|
|
16
|
+
export interface LoopOptions {
|
|
17
|
+
readonly fixedDeltaMs: number;
|
|
18
|
+
readonly maxSubSteps: number;
|
|
19
|
+
readonly maxDeltaMs: number;
|
|
20
|
+
readonly startTimeMs?: number;
|
|
21
|
+
readonly now: () => number;
|
|
22
|
+
readonly schedule: (tick: () => void) => unknown;
|
|
23
|
+
}
|
|
24
|
+
export declare class FixedTimestepLoop {
|
|
25
|
+
private readonly callbacks;
|
|
26
|
+
private readonly options;
|
|
27
|
+
private accumulatorMs;
|
|
28
|
+
private frame;
|
|
29
|
+
private lastTimeMs;
|
|
30
|
+
private running;
|
|
31
|
+
constructor(callbacks: LoopCallbacks, options?: Partial<LoopOptions>);
|
|
32
|
+
start(): void;
|
|
33
|
+
stop(): void;
|
|
34
|
+
pump(elapsedMs: number): void;
|
|
35
|
+
isRunning(): boolean;
|
|
36
|
+
get frameNumber(): number;
|
|
37
|
+
private tick;
|
|
38
|
+
private advance;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/loop.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,MAAM,CAAC,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC;CAClD;AAeD,qBAAa,iBAAiB;IAOhB,OAAO,CAAC,QAAQ,CAAC,SAAS;IANtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEK,SAAS,EAAE,aAAa,EAAE,OAAO,GAAE,OAAO,CAAC,WAAW,CAAM;IAazF,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAIZ,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM7B,SAAS,IAAI,OAAO;IAIpB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,OAAO,CAAC,IAAI,CAYV;IAEF,OAAO,CAAC,OAAO;CAkBhB"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { NetChan, UserCommand, Vec3 } from '@quake2ts/shared';
|
|
2
|
+
import { NetworkMessageHandler, EntityState, FrameData, FogData, DamageIndicator } from '../demo/parser.js';
|
|
3
|
+
export declare enum ConnectionState {
|
|
4
|
+
Disconnected = 0,
|
|
5
|
+
Connecting = 1,
|
|
6
|
+
Challenge = 2,
|
|
7
|
+
Connected = 3,
|
|
8
|
+
Loading = 4,
|
|
9
|
+
Active = 5
|
|
10
|
+
}
|
|
11
|
+
export type ConnectionEvents = {
|
|
12
|
+
'state': (state: ConnectionState) => void;
|
|
13
|
+
'frame': (frame: FrameData) => void;
|
|
14
|
+
'disconnect': (reason?: string) => void;
|
|
15
|
+
'print': (msg: string, level: number) => void;
|
|
16
|
+
'centerprint': (msg: string) => void;
|
|
17
|
+
'send': (data: Uint8Array) => void;
|
|
18
|
+
'serverdata': (data: {
|
|
19
|
+
protocol: number;
|
|
20
|
+
serverCount: number;
|
|
21
|
+
gameDir: string;
|
|
22
|
+
levelName: string;
|
|
23
|
+
}) => void;
|
|
24
|
+
'stufftext': (text: string) => void;
|
|
25
|
+
'error': (err: Error) => void;
|
|
26
|
+
'download': (size: number, percent: number, data?: Uint8Array) => void;
|
|
27
|
+
'temp_entity': (data: {
|
|
28
|
+
type: number;
|
|
29
|
+
pos: Vec3;
|
|
30
|
+
pos2?: Vec3;
|
|
31
|
+
dir?: Vec3;
|
|
32
|
+
cnt?: number;
|
|
33
|
+
color?: number;
|
|
34
|
+
ent?: number;
|
|
35
|
+
}) => void;
|
|
36
|
+
'muzzleflash': (ent: number, weapon: number) => void;
|
|
37
|
+
'sound': (data: {
|
|
38
|
+
flags: number;
|
|
39
|
+
soundNum: number;
|
|
40
|
+
volume?: number;
|
|
41
|
+
attenuation?: number;
|
|
42
|
+
offset?: number;
|
|
43
|
+
ent?: number;
|
|
44
|
+
pos?: Vec3;
|
|
45
|
+
}) => void;
|
|
46
|
+
'inventory': (inventory: number[]) => void;
|
|
47
|
+
};
|
|
48
|
+
export interface ClientConnectionOptions {
|
|
49
|
+
username: string;
|
|
50
|
+
model: string;
|
|
51
|
+
skin: string;
|
|
52
|
+
hand?: number;
|
|
53
|
+
fov?: number;
|
|
54
|
+
netchan?: NetChan;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Manages the client-side network protocol state machine.
|
|
58
|
+
* Decoupled from the transport layer (WebSocket/UDP).
|
|
59
|
+
*/
|
|
60
|
+
export declare class ClientConnection implements NetworkMessageHandler {
|
|
61
|
+
private state;
|
|
62
|
+
private netchan;
|
|
63
|
+
private parser;
|
|
64
|
+
private options;
|
|
65
|
+
private listeners;
|
|
66
|
+
serverProtocol: number;
|
|
67
|
+
serverCount: number;
|
|
68
|
+
gameDir: string;
|
|
69
|
+
playerNum: number;
|
|
70
|
+
levelName: string;
|
|
71
|
+
configStrings: Map<number, string>;
|
|
72
|
+
baselines: Map<number, EntityState>;
|
|
73
|
+
entities: Map<number, EntityState>;
|
|
74
|
+
latestServerFrame: number;
|
|
75
|
+
private frameCRCs;
|
|
76
|
+
private currentPacketCRC;
|
|
77
|
+
private commandHistory;
|
|
78
|
+
constructor(options: ClientConnectionOptions);
|
|
79
|
+
on<K extends keyof ConnectionEvents>(event: K, callback: ConnectionEvents[K]): void;
|
|
80
|
+
off<K extends keyof ConnectionEvents>(event: K, callback: ConnectionEvents[K]): void;
|
|
81
|
+
private emit;
|
|
82
|
+
/**
|
|
83
|
+
* Resets the connection state and netchan.
|
|
84
|
+
* Call this before starting a new connection flow.
|
|
85
|
+
*/
|
|
86
|
+
connect(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Initiate the connection protocol by sending a challenge request.
|
|
89
|
+
* Should be called after transport is established.
|
|
90
|
+
*/
|
|
91
|
+
startProtocol(): void;
|
|
92
|
+
disconnect(): void;
|
|
93
|
+
private cleanup;
|
|
94
|
+
getState(): ConnectionState;
|
|
95
|
+
private setState;
|
|
96
|
+
/**
|
|
97
|
+
* Process an incoming raw packet from the server.
|
|
98
|
+
*/
|
|
99
|
+
handleMessage(data: ArrayBuffer): void;
|
|
100
|
+
/**
|
|
101
|
+
* Send a user command (movement) to the server.
|
|
102
|
+
*/
|
|
103
|
+
sendUserCommand(cmd: UserCommand): void;
|
|
104
|
+
private transmit;
|
|
105
|
+
private sendChallenge;
|
|
106
|
+
private sendConnect;
|
|
107
|
+
private sendNew;
|
|
108
|
+
private sendBegin;
|
|
109
|
+
onServerData(protocol: number, serverCount: number, attractLoop: number, gameDir: string, playerNum: number, levelName: string): void;
|
|
110
|
+
onConfigString(index: number, str: string): void;
|
|
111
|
+
onSpawnBaseline(entity: EntityState): void;
|
|
112
|
+
onStuffText(msg: string): void;
|
|
113
|
+
onFrame(frame: FrameData): void;
|
|
114
|
+
onDisconnect(): void;
|
|
115
|
+
onPrint(level: number, msg: string): void;
|
|
116
|
+
onCenterPrint(msg: string): void;
|
|
117
|
+
onSound(flags: number, soundNum: number, volume?: number, attenuation?: number, offset?: number, ent?: number, pos?: Vec3): void;
|
|
118
|
+
onTempEntity(type: number, pos: Vec3, pos2?: Vec3, dir?: Vec3, cnt?: number, color?: number, ent?: number, srcEnt?: number, destEnt?: number): void;
|
|
119
|
+
onInventory(inventory: number[]): void;
|
|
120
|
+
onMuzzleFlash(ent: number, weapon: number): void;
|
|
121
|
+
onMuzzleFlash2(ent: number, weapon: number): void;
|
|
122
|
+
onMuzzleFlash3(ent: number, weapon: number): void;
|
|
123
|
+
onDownload(size: number, percent: number, data?: Uint8Array): void;
|
|
124
|
+
onReconnect(): void;
|
|
125
|
+
onLayout(layout: string): void;
|
|
126
|
+
onSplitClient(clientNum: number): void;
|
|
127
|
+
onConfigBlast(index: number, data: Uint8Array): void;
|
|
128
|
+
onSpawnBaselineBlast(entity: EntityState): void;
|
|
129
|
+
onLevelRestart(): void;
|
|
130
|
+
onDamage(indicators: DamageIndicator[]): void;
|
|
131
|
+
onLocPrint(flags: number, base: string, args: string[]): void;
|
|
132
|
+
onFog(data: FogData): void;
|
|
133
|
+
onWaitingForPlayers(count: number): void;
|
|
134
|
+
onBotChat(msg: string): void;
|
|
135
|
+
onPoi(flags: number, pos: Vec3): void;
|
|
136
|
+
onHelpPath(pos: Vec3): void;
|
|
137
|
+
onAchievement(id: string): void;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=clientConnection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clientConnection.d.ts","sourceRoot":"","sources":["../../../src/network/clientConnection.ts"],"names":[],"mappings":"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"}
|