quake2ts 0.0.7
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/apps/viewer/dist/browser/index.global.js +2 -0
- package/apps/viewer/dist/browser/index.global.js.map +1 -0
- package/apps/viewer/dist/cjs/index.cjs +1087 -0
- package/apps/viewer/dist/cjs/index.cjs.map +1 -0
- package/apps/viewer/dist/esm/index.js +1060 -0
- package/apps/viewer/dist/esm/index.js.map +1 -0
- package/apps/viewer/dist/tsconfig.tsbuildinfo +1 -0
- package/apps/viewer/dist/types/index.d.ts +7 -0
- package/apps/viewer/dist/types/index.d.ts.map +1 -0
- package/package.json +107 -0
- package/packages/client/dist/browser/index.global.js +2 -0
- package/packages/client/dist/browser/index.global.js.map +1 -0
- package/packages/client/dist/cjs/index.cjs +57 -0
- package/packages/client/dist/cjs/index.cjs.map +1 -0
- package/packages/client/dist/esm/index.js +32 -0
- package/packages/client/dist/esm/index.js.map +1 -0
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -0
- package/packages/client/dist/types/index.d.ts +14 -0
- package/packages/client/dist/types/index.d.ts.map +1 -0
- package/packages/engine/dist/browser/index.global.js +2 -0
- package/packages/engine/dist/browser/index.global.js.map +1 -0
- package/packages/engine/dist/cjs/index.cjs +1823 -0
- package/packages/engine/dist/cjs/index.cjs.map +1 -0
- package/packages/engine/dist/esm/index.js +1764 -0
- package/packages/engine/dist/esm/index.js.map +1 -0
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -0
- package/packages/engine/dist/types/assets/browserIngestion.d.ts +7 -0
- package/packages/engine/dist/types/assets/browserIngestion.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/bsp.d.ts +157 -0
- package/packages/engine/dist/types/assets/bsp.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/cache.d.ts +17 -0
- package/packages/engine/dist/types/assets/cache.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/ingestion.d.ts +31 -0
- package/packages/engine/dist/types/assets/ingestion.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/md2.d.ts +73 -0
- package/packages/engine/dist/types/assets/md2.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/pak.d.ts +28 -0
- package/packages/engine/dist/types/assets/pak.d.ts.map +1 -0
- package/packages/engine/dist/types/assets/vfs.d.ts +23 -0
- package/packages/engine/dist/types/assets/vfs.d.ts.map +1 -0
- package/packages/engine/dist/types/configstrings.d.ts +34 -0
- package/packages/engine/dist/types/configstrings.d.ts.map +1 -0
- package/packages/engine/dist/types/cvars.d.ts +43 -0
- package/packages/engine/dist/types/cvars.d.ts.map +1 -0
- package/packages/engine/dist/types/host.d.ts +42 -0
- package/packages/engine/dist/types/host.d.ts.map +1 -0
- package/packages/engine/dist/types/index.d.ts +37 -0
- package/packages/engine/dist/types/index.d.ts.map +1 -0
- package/packages/engine/dist/types/loop.d.ts +40 -0
- package/packages/engine/dist/types/loop.d.ts.map +1 -0
- package/packages/engine/dist/types/render/bsp.d.ts +49 -0
- package/packages/engine/dist/types/render/bsp.d.ts.map +1 -0
- package/packages/engine/dist/types/render/context.d.ts +36 -0
- package/packages/engine/dist/types/render/context.d.ts.map +1 -0
- package/packages/engine/dist/types/render/resources.d.ts +56 -0
- package/packages/engine/dist/types/render/resources.d.ts.map +1 -0
- package/packages/engine/dist/types/render/shaderProgram.d.ts +18 -0
- package/packages/engine/dist/types/render/shaderProgram.d.ts.map +1 -0
- package/packages/engine/dist/types/runtime.d.ts +15 -0
- package/packages/engine/dist/types/runtime.d.ts.map +1 -0
- package/packages/game/dist/browser/index.global.js +2 -0
- package/packages/game/dist/browser/index.global.js.map +1 -0
- package/packages/game/dist/cjs/index.cjs +758 -0
- package/packages/game/dist/cjs/index.cjs.map +1 -0
- package/packages/game/dist/esm/index.js +725 -0
- package/packages/game/dist/esm/index.js.map +1 -0
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -0
- package/packages/game/dist/types/entities/entity.d.ts +92 -0
- package/packages/game/dist/types/entities/entity.d.ts.map +1 -0
- package/packages/game/dist/types/entities/index.d.ts +3 -0
- package/packages/game/dist/types/entities/index.d.ts.map +1 -0
- package/packages/game/dist/types/entities/pool.d.ts +18 -0
- package/packages/game/dist/types/entities/pool.d.ts.map +1 -0
- package/packages/game/dist/types/entities/system.d.ts +18 -0
- package/packages/game/dist/types/entities/system.d.ts.map +1 -0
- package/packages/game/dist/types/entities/thinkScheduler.d.ts +8 -0
- package/packages/game/dist/types/entities/thinkScheduler.d.ts.map +1 -0
- package/packages/game/dist/types/index.d.ts +26 -0
- package/packages/game/dist/types/index.d.ts.map +1 -0
- package/packages/game/dist/types/level.d.ts +14 -0
- package/packages/game/dist/types/level.d.ts.map +1 -0
- package/packages/game/dist/types/loop.d.ts +29 -0
- package/packages/game/dist/types/loop.d.ts.map +1 -0
- package/packages/shared/dist/browser/index.global.js +2 -0
- package/packages/shared/dist/browser/index.global.js.map +1 -0
- package/packages/shared/dist/cjs/index.cjs +2793 -0
- package/packages/shared/dist/cjs/index.cjs.map +1 -0
- package/packages/shared/dist/esm/index.js +2594 -0
- package/packages/shared/dist/esm/index.js.map +1 -0
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -0
- package/packages/shared/dist/types/bsp/collision.d.ts +112 -0
- package/packages/shared/dist/types/bsp/collision.d.ts.map +1 -0
- package/packages/shared/dist/types/bsp/contents.d.ts +71 -0
- package/packages/shared/dist/types/bsp/contents.d.ts.map +1 -0
- package/packages/shared/dist/types/index.d.ts +25 -0
- package/packages/shared/dist/types/index.d.ts.map +1 -0
- package/packages/shared/dist/types/math/angles.d.ts +17 -0
- package/packages/shared/dist/types/math/angles.d.ts.map +1 -0
- package/packages/shared/dist/types/math/color.d.ts +12 -0
- package/packages/shared/dist/types/math/color.d.ts.map +1 -0
- package/packages/shared/dist/types/math/random.d.ts +48 -0
- package/packages/shared/dist/types/math/random.d.ts.map +1 -0
- package/packages/shared/dist/types/math/vec3.d.ts +76 -0
- package/packages/shared/dist/types/math/vec3.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/categorize.d.ts +36 -0
- package/packages/shared/dist/types/pmove/categorize.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/constants.d.ts +75 -0
- package/packages/shared/dist/types/pmove/constants.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/currents.d.ts +58 -0
- package/packages/shared/dist/types/pmove/currents.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/dimensions.d.ts +14 -0
- package/packages/shared/dist/types/pmove/dimensions.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/duck.d.ts +39 -0
- package/packages/shared/dist/types/pmove/duck.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/fly.d.ts +34 -0
- package/packages/shared/dist/types/pmove/fly.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/jump.d.ts +26 -0
- package/packages/shared/dist/types/pmove/jump.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/move.d.ts +58 -0
- package/packages/shared/dist/types/pmove/move.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/pmove.d.ts +36 -0
- package/packages/shared/dist/types/pmove/pmove.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/slide.d.ts +63 -0
- package/packages/shared/dist/types/pmove/slide.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/snap.d.ts +40 -0
- package/packages/shared/dist/types/pmove/snap.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/special.d.ts +39 -0
- package/packages/shared/dist/types/pmove/special.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/stuck.d.ts +21 -0
- package/packages/shared/dist/types/pmove/stuck.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/types.d.ts +48 -0
- package/packages/shared/dist/types/pmove/types.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/view.d.ts +19 -0
- package/packages/shared/dist/types/pmove/view.d.ts.map +1 -0
- package/packages/shared/dist/types/pmove/water.d.ts +21 -0
- package/packages/shared/dist/types/pmove/water.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/configstrings.d.ts +51 -0
- package/packages/shared/dist/types/protocol/configstrings.d.ts.map +1 -0
- package/packages/shared/dist/types/protocol/cvar.d.ts +15 -0
- package/packages/shared/dist/types/protocol/cvar.d.ts.map +1 -0
- package/packages/tools/dist/browser/index.global.js +2 -0
- package/packages/tools/dist/browser/index.global.js.map +1 -0
- package/packages/tools/dist/cjs/index.cjs +33 -0
- package/packages/tools/dist/cjs/index.cjs.map +1 -0
- package/packages/tools/dist/esm/index.js +8 -0
- package/packages/tools/dist/esm/index.js.map +1 -0
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -0
- package/packages/tools/dist/types/index.d.ts +7 -0
- package/packages/tools/dist/types/index.d.ts.map +1 -0
|
@@ -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,49 @@
|
|
|
1
|
+
import { type SurfaceFlag } from '@quake2ts/shared';
|
|
2
|
+
import { IndexBuffer, Texture2D, VertexArray, VertexBuffer, type VertexAttributeLayout } from './resources.js';
|
|
3
|
+
export interface BspLightmapData {
|
|
4
|
+
readonly width: number;
|
|
5
|
+
readonly height: number;
|
|
6
|
+
readonly samples: Uint8Array;
|
|
7
|
+
}
|
|
8
|
+
export interface BspSurfaceInput {
|
|
9
|
+
readonly vertices: ReadonlyArray<number> | Float32Array;
|
|
10
|
+
readonly textureCoords: ReadonlyArray<number> | Float32Array;
|
|
11
|
+
readonly lightmapCoords?: ReadonlyArray<number> | Float32Array;
|
|
12
|
+
readonly indices?: ReadonlyArray<number> | Uint16Array | Uint32Array;
|
|
13
|
+
readonly texture: string;
|
|
14
|
+
readonly surfaceFlags?: SurfaceFlag;
|
|
15
|
+
readonly lightmap?: BspLightmapData;
|
|
16
|
+
}
|
|
17
|
+
export interface LightmapPlacement {
|
|
18
|
+
readonly atlasIndex: number;
|
|
19
|
+
readonly offset: [number, number];
|
|
20
|
+
readonly scale: [number, number];
|
|
21
|
+
}
|
|
22
|
+
export interface BspSurfaceGeometry {
|
|
23
|
+
readonly vao: VertexArray;
|
|
24
|
+
readonly vertexBuffer: VertexBuffer;
|
|
25
|
+
readonly indexBuffer: IndexBuffer;
|
|
26
|
+
readonly indexCount: number;
|
|
27
|
+
readonly texture: string;
|
|
28
|
+
readonly surfaceFlags: SurfaceFlag;
|
|
29
|
+
readonly lightmap?: LightmapPlacement;
|
|
30
|
+
readonly vertexData: Float32Array;
|
|
31
|
+
readonly indexData: Uint16Array;
|
|
32
|
+
}
|
|
33
|
+
export interface LightmapAtlas {
|
|
34
|
+
readonly texture: Texture2D;
|
|
35
|
+
readonly width: number;
|
|
36
|
+
readonly height: number;
|
|
37
|
+
readonly pixels: Uint8Array;
|
|
38
|
+
}
|
|
39
|
+
export interface BspBuildOptions {
|
|
40
|
+
readonly atlasSize?: number;
|
|
41
|
+
readonly lightmapPadding?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface BspGeometryBuildResult {
|
|
44
|
+
readonly surfaces: readonly BspSurfaceGeometry[];
|
|
45
|
+
readonly lightmaps: readonly LightmapAtlas[];
|
|
46
|
+
}
|
|
47
|
+
export declare const BSP_VERTEX_LAYOUT: readonly VertexAttributeLayout[];
|
|
48
|
+
export declare function buildBspGeometry(gl: WebGL2RenderingContext, surfaces: readonly BspSurfaceInput[], options?: BspBuildOptions): BspGeometryBuildResult;
|
|
49
|
+
//# sourceMappingURL=bsp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bsp.d.ts","sourceRoot":"","sources":["../../../src/render/bsp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IACxD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IAC7D,QAAQ,CAAC,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,YAAY,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,WAAW,GAAG,WAAW,CAAC;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC;CACrC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAEtC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,SAAS,aAAa,EAAE,CAAC;CAC9C;AAKD,eAAO,MAAM,iBAAiB,EAAE,SAAS,qBAAqB,EAO7D,CAAC;AA+KF,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,sBAAsB,EAC1B,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,OAAO,GAAE,eAAoB,GAC5B,sBAAsB,CAiExB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface WebGLContextInitOptions {
|
|
2
|
+
/**
|
|
3
|
+
* Options passed to `canvas.getContext`. Defaults to antialias enabled to match the rerelease renderer's smoothing.
|
|
4
|
+
*/
|
|
5
|
+
readonly contextAttributes?: WebGLContextAttributes;
|
|
6
|
+
/**
|
|
7
|
+
* Extensions that must be present. Missing entries throw during construction so callers can fall back early.
|
|
8
|
+
*/
|
|
9
|
+
readonly requiredExtensions?: readonly string[];
|
|
10
|
+
/**
|
|
11
|
+
* Extensions that will be queried if available. Missing optional extensions are ignored.
|
|
12
|
+
*/
|
|
13
|
+
readonly optionalExtensions?: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
export interface WebGLContextState {
|
|
16
|
+
readonly gl: WebGL2RenderingContext;
|
|
17
|
+
readonly extensions: Map<string, unknown>;
|
|
18
|
+
/**
|
|
19
|
+
* Returns true once a `webglcontextlost` event has been observed.
|
|
20
|
+
*/
|
|
21
|
+
isLost(): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Registers a callback that fires on context loss. Returns an unsubscribe function.
|
|
24
|
+
*/
|
|
25
|
+
onLost(callback: () => void): () => void;
|
|
26
|
+
/**
|
|
27
|
+
* Registers a callback that fires on context restoration. Returns an unsubscribe function.
|
|
28
|
+
*/
|
|
29
|
+
onRestored(callback: () => void): () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Remove event listeners and release references.
|
|
32
|
+
*/
|
|
33
|
+
dispose(): void;
|
|
34
|
+
}
|
|
35
|
+
export declare function createWebGLContext(canvas: HTMLCanvasElement, options?: WebGLContextInitOptions): WebGLContextState;
|
|
36
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/render/context.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,sBAAsB,CAAC;IACpD;;OAEG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD;;OAEG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C;;OAEG;IACH,MAAM,IAAI,OAAO,CAAC;IAClB;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACzC;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC7C;;OAEG;IACH,OAAO,IAAI,IAAI,CAAC;CACjB;AAiCD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE,uBAA4B,GACpC,iBAAiB,CAqDnB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type BufferUsage = GLenum;
|
|
2
|
+
export interface VertexAttributeLayout {
|
|
3
|
+
readonly index: number;
|
|
4
|
+
readonly size: number;
|
|
5
|
+
readonly type: GLenum;
|
|
6
|
+
readonly normalized?: boolean;
|
|
7
|
+
readonly stride?: number;
|
|
8
|
+
readonly offset?: number;
|
|
9
|
+
readonly divisor?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare class VertexBuffer {
|
|
12
|
+
readonly gl: WebGL2RenderingContext;
|
|
13
|
+
readonly buffer: WebGLBuffer;
|
|
14
|
+
readonly target: GLenum;
|
|
15
|
+
constructor(gl: WebGL2RenderingContext, usage?: BufferUsage, target?: GLenum);
|
|
16
|
+
bind(): void;
|
|
17
|
+
upload(data: BufferSource, usage?: BufferUsage): void;
|
|
18
|
+
update(data: BufferSource, offset?: number): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
}
|
|
21
|
+
export declare class IndexBuffer extends VertexBuffer {
|
|
22
|
+
constructor(gl: WebGL2RenderingContext, usage?: BufferUsage);
|
|
23
|
+
}
|
|
24
|
+
export declare class VertexArray {
|
|
25
|
+
readonly gl: WebGL2RenderingContext;
|
|
26
|
+
readonly vao: WebGLVertexArrayObject;
|
|
27
|
+
constructor(gl: WebGL2RenderingContext);
|
|
28
|
+
bind(): void;
|
|
29
|
+
configureAttributes(layouts: readonly VertexAttributeLayout[], buffer?: VertexBuffer): void;
|
|
30
|
+
dispose(): void;
|
|
31
|
+
}
|
|
32
|
+
export interface TextureParameters {
|
|
33
|
+
readonly wrapS?: GLenum;
|
|
34
|
+
readonly wrapT?: GLenum;
|
|
35
|
+
readonly minFilter?: GLenum;
|
|
36
|
+
readonly magFilter?: GLenum;
|
|
37
|
+
}
|
|
38
|
+
export declare class Texture2D {
|
|
39
|
+
readonly gl: WebGL2RenderingContext;
|
|
40
|
+
readonly texture: WebGLTexture;
|
|
41
|
+
readonly target: GLenum;
|
|
42
|
+
constructor(gl: WebGL2RenderingContext, target?: GLenum);
|
|
43
|
+
bind(unit?: number): void;
|
|
44
|
+
setParameters(params: TextureParameters): void;
|
|
45
|
+
uploadImage(level: number, internalFormat: GLenum, width: number, height: number, border: number, format: GLenum, type: GLenum, data: ArrayBufferView | null): void;
|
|
46
|
+
dispose(): void;
|
|
47
|
+
}
|
|
48
|
+
export declare class Framebuffer {
|
|
49
|
+
readonly gl: WebGL2RenderingContext;
|
|
50
|
+
readonly framebuffer: WebGLFramebuffer;
|
|
51
|
+
constructor(gl: WebGL2RenderingContext);
|
|
52
|
+
bind(target?: GLenum): void;
|
|
53
|
+
attachTexture2D(attachment: GLenum, texture: Texture2D, level?: number): void;
|
|
54
|
+
dispose(): void;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../../src/render/resources.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,YAAY;IACvB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,EAAE,EAAE,sBAAsB,EAAE,KAAK,GAAE,WAA4B,EAAE,MAAM,CAAC,EAAE,MAAM;IAY5F,IAAI,IAAI,IAAI;IAIZ,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,GAAE,WAAiC,GAAG,IAAI;IAK1E,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,SAAI,GAAG,IAAI;IAK5C,OAAO,IAAI,IAAI;CAGhB;AAED,qBAAa,WAAY,SAAQ,YAAY;gBAC/B,EAAE,EAAE,sBAAsB,EAAE,KAAK,GAAE,WAA4B;CAG5E;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,sBAAsB,CAAC;gBAEzB,EAAE,EAAE,sBAAsB;IAStC,IAAI,IAAI,IAAI;IAIZ,mBAAmB,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI;IAsB3F,OAAO,IAAI,IAAI;CAGhB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,EAAE,EAAE,sBAAsB,EAAE,MAAM,GAAE,MAAsB;IAUtE,IAAI,CAAC,IAAI,SAAI,GAAG,IAAI;IAKpB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAgB9C,WAAW,CACT,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,GAAG,IAAI,GAC3B,IAAI;IAKP,OAAO,IAAI,IAAI;CAGhB;AAED,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;gBAE3B,EAAE,EAAE,sBAAsB;IAStC,IAAI,CAAC,MAAM,GAAE,MAA4B,GAAG,IAAI;IAIhD,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,SAAI,GAAG,IAAI;IAKxE,OAAO,IAAI,IAAI;CAGhB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ShaderSources {
|
|
2
|
+
readonly vertex: string;
|
|
3
|
+
readonly fragment: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class ShaderProgram {
|
|
6
|
+
readonly gl: WebGL2RenderingContext;
|
|
7
|
+
readonly program: WebGLProgram;
|
|
8
|
+
private readonly uniformLocations;
|
|
9
|
+
private readonly attributeLocations;
|
|
10
|
+
private constructor();
|
|
11
|
+
static create(gl: WebGL2RenderingContext, sources: ShaderSources, attributeLocations?: Record<string, number>): ShaderProgram;
|
|
12
|
+
use(): void;
|
|
13
|
+
getUniformLocation(name: string): WebGLUniformLocation | null;
|
|
14
|
+
getAttributeLocation(name: string): number;
|
|
15
|
+
dispose(): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function createProgramFromSources(gl: WebGL2RenderingContext, sources: ShaderSources, attributeLocations?: Record<string, number>): ShaderProgram;
|
|
18
|
+
//# sourceMappingURL=shaderProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaderProgram.d.ts","sourceRoot":"","sources":["../../../src/render/shaderProgram.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAmDD,qBAAa,aAAa;IACxB,QAAQ,CAAC,EAAE,EAAE,sBAAsB,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkD;IACnF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6B;IAEhE,OAAO;IAKP,MAAM,CAAC,MAAM,CACX,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,aAAa,EACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,aAAa;IAYhB,GAAG,IAAI,IAAI;IAIX,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI;IAS7D,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAS1C,OAAO,IAAI,IAAI;CAKhB;AAED,wBAAgB,wBAAwB,CACtC,EAAE,EAAE,sBAAsB,EAC1B,OAAO,EAAE,aAAa,EACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1C,aAAa,CAEf"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EngineExports } from './index.js';
|
|
2
|
+
import { EngineHost, type ClientRenderer, type EngineHostOptions, type GameFrameResult, type GameSimulation } from './host.js';
|
|
3
|
+
export declare class EngineRuntime<FrameState = unknown> {
|
|
4
|
+
private readonly engine;
|
|
5
|
+
private readonly host;
|
|
6
|
+
private started;
|
|
7
|
+
constructor(engine: EngineExports, host: EngineHost<FrameState>);
|
|
8
|
+
start(): void;
|
|
9
|
+
stop(): void;
|
|
10
|
+
pump(elapsedMs: number): void;
|
|
11
|
+
getLatestFrame(): GameFrameResult<FrameState> | undefined;
|
|
12
|
+
isRunning(): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function createEngineRuntime<FrameState = unknown>(engine: EngineExports, game: GameSimulation<FrameState>, client?: ClientRenderer<FrameState>, options?: EngineHostOptions): EngineRuntime<FrameState>;
|
|
15
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAC;AAE/H,qBAAa,aAAa,CAAC,UAAU,GAAG,OAAO;IAGjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAiB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFzE,OAAO,CAAC,OAAO,CAAS;gBAEK,MAAM,EAAE,aAAa,EAAmB,IAAI,EAAE,UAAU,CAAC,UAAU,CAAC;IAEjG,KAAK,IAAI,IAAI;IAOb,IAAI,IAAI,IAAI;IAOZ,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI7B,cAAc,IAAI,eAAe,CAAC,UAAU,CAAC,GAAG,SAAS;IAIzD,SAAS,IAAI,OAAO;CAGrB;AAED,wBAAgB,mBAAmB,CAAC,UAAU,GAAG,OAAO,EACtD,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,EACnC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,aAAa,CAAC,UAAU,CAAC,CAE3B"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var Quake2Game=(()=>{var N=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var W=Object.prototype.hasOwnProperty;var I=(t,e)=>{for(var n in e)N(t,n,{get:e[n],enumerable:!0})},H=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of U(e))!W.call(t,i)&&i!==n&&N(t,i,{get:()=>e[i],enumerable:!(r=V(e,i))||r.enumerable});return t};var B=t=>H(N({},"__esModule",{value:!0}),t);var ye={};I(ye,{DeadFlag:()=>O,ENTITY_FIELD_METADATA:()=>D,Entity:()=>d,EntitySystem:()=>f,MoveType:()=>R,Solid:()=>k,createGame:()=>fe});var L={x:0,y:0,z:0};var he=Math.PI/180;var ve=Math.PI/180,xe=180/Math.PI;var u=1,m=2;var g=8,w=16,J=32;var K=16384;var p=65536,C=1<<17,X=1<<18,q=1<<19,Y=1<<20,j=1<<21,Z=1<<22,Q=1<<23,ze=1<<24,h=1<<25,$=1<<26,Se=1<<27,Ee=1<<28,Te=1<<29,v=1<<30,_e=1<<31;var Ne=1<<25,Ae=1<<28,ge=1<<29,we=1<<30,Re=1<<31;var ke=u|m,Oe=u|p|m|h|v,Le=u|p|m,Ce=u|C|m|h|v,Me=J|g|w,Fe=u|w|g,ee=u|h|v|m|$,De=X|q|Y|j|Z|Q,be=u|g|w|h|v,Ge=u|p|m,Pe=u|m,Ve=u|p|m|C,Ue=ee|K;var M=256;var te=256,ne=8192,re=2048,ie=512,oe=256,se=M*2,ae=256,A=32;var F=(t=>(t[t.Name=0]="Name",t[t.CdTrack=1]="CdTrack",t[t.Sky=2]="Sky",t[t.SkyAxis=3]="SkyAxis",t[t.SkyRotate=4]="SkyRotate",t[t.StatusBar=5]="StatusBar",t[t.AirAccel=59]="AirAccel",t[t.MaxClients=60]="MaxClients",t[t.MapChecksum=61]="MapChecksum",t[t.Models=62]="Models",t[t.Sounds=62+ne]="Sounds",t[t.Images=t.Sounds+re]="Images",t[t.Lights=t.Images+ie]="Lights",t[t.ShadowLights=t.Lights+te]="ShadowLights",t[t.Items=t.ShadowLights+ae]="Items",t[t.PlayerSkins=t.Items+oe]="PlayerSkins",t[t.General=t.PlayerSkins+M]="General",t[t.WheelWeapons=t.General+se]="WheelWeapons",t[t.WheelAmmo=t.WheelWeapons+A]="WheelAmmo",t[t.WheelPowerups=t.WheelAmmo+A]="WheelPowerups",t[t.CdLoopCount=t.WheelPowerups+A]="CdLoopCount",t[t.GameStyle=t.CdLoopCount+1]="GameStyle",t[t.MaxConfigStrings=t.GameStyle+1]="MaxConfigStrings",t))(F||{}),We=F.MaxConfigStrings;var R=(o=>(o[o.None=0]="None",o[o.Noclip=1]="Noclip",o[o.Push=2]="Push",o[o.Stop=3]="Stop",o[o.Walk=4]="Walk",o[o.Step=5]="Step",o[o.Fly=6]="Fly",o[o.Toss=7]="Toss",o[o.FlyMissile=8]="FlyMissile",o[o.Bounce=9]="Bounce",o))(R||{}),k=(i=>(i[i.Not=0]="Not",i[i.Trigger=1]="Trigger",i[i.BoundingBox=2]="BoundingBox",i[i.Bsp=3]="Bsp",i))(k||{}),O=(i=>(i[i.Alive=0]="Alive",i[i.Dying=1]="Dying",i[i.Dead=2]="Dead",i[i.Respawnable=3]="Respawnable",i))(O||{}),le={...L};function l(){return{...le}}var d=class{constructor(e){this.inUse=!1;this.freePending=!1;this.linkPrevious=null;this.linkNext=null;this.classname="";this.spawnflags=0;this.origin=l();this.old_origin=l();this.velocity=l();this.avelocity=l();this.angles=l();this.mins=l();this.maxs=l();this.size=l();this.mass=0;this.gravity=1;this.movetype=0;this.modelindex=0;this.frame=0;this.skin=0;this.effects=0;this.renderfx=0;this.health=0;this.max_health=0;this.takedamage=!1;this.dmg=0;this.deadflag=0;this.enemy=null;this.movetarget=null;this.goalentity=null;this.ideal_yaw=0;this.yaw_speed=0;this.groundentity=null;this.groundentity_linkcount=0;this.waterlevel=0;this.watertype=0;this.nextthink=0;this.solid=0;this.flags=0;this.svflags=0;this.index=e}reset(){this.inUse=!1,this.freePending=!1,this.linkPrevious=null,this.linkNext=null,this.classname="",this.spawnflags=0,this.target=void 0,this.targetname=void 0,this.team=void 0,this.message=void 0,this.origin=l(),this.old_origin=l(),this.velocity=l(),this.avelocity=l(),this.angles=l(),this.mins=l(),this.maxs=l(),this.size=l(),this.mass=0,this.gravity=1,this.movetype=0,this.modelindex=0,this.frame=0,this.skin=0,this.effects=0,this.renderfx=0,this.health=0,this.max_health=0,this.takedamage=!1,this.dmg=0,this.deadflag=0,this.enemy=null,this.movetarget=null,this.goalentity=null,this.ideal_yaw=0,this.yaw_speed=0,this.groundentity=null,this.groundentity_linkcount=0,this.waterlevel=0,this.watertype=0,this.nextthink=0,this.think=void 0,this.touch=void 0,this.use=void 0,this.pain=void 0,this.die=void 0,this.solid=0,this.flags=0,this.svflags=0}},D=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"deadflag",type:"int",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1}];var ce=2048,x=0,z=class{constructor(e=ce){this.freeList=[];this.pendingFree=[];this.activeHead=null;if(e<1||!Number.isInteger(e))throw new Error("EntityPool requires a positive integer size");this.entities=new Array(e);for(let r=0;r<e;r+=1)this.entities[r]=new d(r),r!==x&&this.freeList.push(r);let n=this.entities[x];n.inUse=!0,n.classname="worldspawn",this.activeHead=n}get world(){return this.entities[x]}get capacity(){return this.entities.length}get activeCount(){let e=0;for(let n of this)e+=1;return e}[Symbol.iterator](){let e=this.activeHead;return{next:()=>{if(!e)return{done:!0,value:void 0};let n=e;return e=e.linkNext,{done:!1,value:n}}}}spawn(){let e=this.freeList.pop();if(e===void 0)throw new Error("No free entities available");let n=this.entities[e];return n.reset(),n.inUse=!0,this.link(n),n}deferFree(e){if(e.index===x)throw new Error("Cannot free world entity");!e.inUse||e.freePending||(this.unlink(e),e.inUse=!1,e.freePending=!0,this.pendingFree.push(e.index))}flushFreeList(){if(this.pendingFree.length!==0){for(let e of this.pendingFree)this.entities[e].reset(),this.freeList.push(e);this.pendingFree.length=0}}link(e){e.linkNext=this.activeHead,this.activeHead&&(this.activeHead.linkPrevious=e),this.activeHead=e,e.linkPrevious=null}unlink(e){e.linkPrevious&&(e.linkPrevious.linkNext=e.linkNext),e.linkNext&&(e.linkNext.linkPrevious=e.linkPrevious),this.activeHead===e&&(this.activeHead=e.linkNext),e.linkPrevious=null,e.linkNext=null}};var S=class{constructor(){this.queue=[]}schedule(e,n){e.nextthink=n,this.queue.push({entity:e,time:n}),this.queue.sort((r,i)=>r.time===i.time?r.entity.index-i.entity.index:r.time-i.time)}cancel(e){if(this.queue.length!==0)for(let n=this.queue.length-1;n>=0;n-=1)this.queue[n].entity===e&&this.queue.splice(n,1)}runDueThinks(e){for(;this.queue.length>0;){let n=this.queue[0];if(n.time>e)break;this.queue.shift();let{entity:r,time:i}=n;!r.inUse||r.freePending||r.think&&r.nextthink===i&&r.think(r)}}};function b(t){return{min:{x:t.origin.x+t.mins.x,y:t.origin.y+t.mins.y,z:t.origin.z+t.mins.z},max:{x:t.origin.x+t.maxs.x,y:t.origin.y+t.maxs.y,z:t.origin.z+t.maxs.z}}}function ue(t,e){return!(t.min.x>e.max.x||t.max.x<e.min.x||t.min.y>e.max.y||t.max.y<e.min.y||t.min.z>e.max.z||t.max.z<e.min.z)}var f=class{constructor(e){this.currentTimeSeconds=0;this.pool=new z(e),this.thinkScheduler=new S}get world(){return this.pool.world}get activeCount(){return this.pool.activeCount}get timeSeconds(){return this.currentTimeSeconds}forEachEntity(e){for(let n of this.pool)e(n)}spawn(){return this.pool.spawn()}free(e){this.thinkScheduler.cancel(e),this.pool.deferFree(e)}scheduleThink(e,n){this.thinkScheduler.schedule(e,n)}beginFrame(e){this.currentTimeSeconds=e}runFrame(){this.thinkScheduler.runDueThinks(this.currentTimeSeconds),this.runTouches(),this.pool.flushFreeList()}runTouches(){let e=this.pool.world,n=[];for(let r of this.pool)r!==e&&(!r.inUse||r.freePending||n.push(r));for(let r=0;r<n.length;r+=1){let i=n[r],s=null;for(let c=r+1;c<n.length;c+=1){let a=n[c];if(!i.touch&&!a.touch)continue;s||(s=b(i));let y=b(a);ue(s,y)&&(i.touch&&i.touch(i,a),a.touch&&a.touch(a,i))}}}};var me=["prep","simulate","finish"],E=class{constructor(e){this.timeMs=0;this.frame=0;this.stageHandlers={prep:[],simulate:[],finish:[]};this.stageCounts={prep:0,simulate:0,finish:0};this.stageCompactionNeeded={prep:!1,simulate:!1,finish:!1};if(e)for(let n of me){let r=e[n];r&&this.addStage(n,r)}}addStage(e,n){let r=this.stageHandlers[e];return r.push(n),this.stageCounts[e]+=1,()=>{let i=r.indexOf(n);i>=0&&r[i]&&(r[i]=void 0,this.stageCounts[e]-=1,this.stageCompactionNeeded[e]=!0)}}reset(e){this.timeMs=e,this.frame=0}advance(e){let n=this.timeMs;this.timeMs=n+e.deltaMs,this.frame=e.frame;let r={...e,timeMs:this.timeMs,previousTimeMs:n,deltaSeconds:e.deltaMs/1e3};if(this.runStage("prep",r),this.stageCounts.simulate===0)throw new Error("GameFrameLoop requires at least one simulate stage");return this.runStage("simulate",r),this.runStage("finish",r),r}runStage(e,n){let r=this.stageHandlers[e];for(let i=0;i<r.length;i+=1){let s=r[i];s&&s(n)}this.stageCompactionNeeded[e]&&this.compactStageHandlers(e)}compactStageHandlers(e){let n=this.stageHandlers[e],r=0;for(let i=0;i<n.length;i+=1){let s=n[i];s&&(n[r]=s,r+=1)}n.length=r,this.stageCompactionNeeded[e]=!1}get time(){return this.timeMs}get frameNumber(){return this.frame}};var de={frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0},T=class{constructor(){this.state=de}start(e){let n=e/1e3;this.state={frameNumber:0,timeSeconds:n,previousTimeSeconds:n,deltaSeconds:0}}tick(e){return this.state={frameNumber:e.frame,timeSeconds:e.timeMs/1e3,previousTimeSeconds:e.previousTimeMs/1e3,deltaSeconds:e.deltaSeconds},this.state}get current(){return this.state}};var _={x:0,y:0,z:0};function fe(t,e){let n=e.gravity,r=new T,i=new E,s=new f;i.addStage("prep",o=>{r.tick(o),s.beginFrame(r.current.timeSeconds)}),i.addStage("simulate",({deltaSeconds:o})=>{a={x:a.x+n.x*o,y:a.y+n.y*o,z:a.z+n.z*o},c={x:c.x+a.x*o,y:c.y+a.y*o,z:c.z+a.z*o},s.runFrame()});let c={..._},a={..._},y=o=>({frame:o,timeMs:i.time,state:{gravity:{...n},origin:{...c},velocity:{...a},level:{...r.current},entities:{activeCount:s.activeCount,worldClassname:s.world.classname}}}),G=o=>{i.reset(o),r.start(o),c={..._},a={..._},s.beginFrame(o/1e3),s.runFrame()};return{init(o){return G(o),t.trace({x:0,y:0,z:0},n),y(0)},shutdown(){},spawnWorld(){},frame(o){let P=i.advance(o);return y(P.frame)},entities:s}}return B(ye);})();
|
|
2
|
+
//# sourceMappingURL=index.global.js.map
|