@quake2ts/test-utils 0.0.818 → 0.0.823
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/index.cjs +139 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +53 -22
- package/dist/index.d.ts +53 -22
- package/dist/index.js +137 -0
- package/dist/index.js.map +1 -1
- package/package.json +11 -11
- package/src/engine/mocks/renderer.ts +1 -0
- package/src/shared/bsp.ts +181 -4
package/dist/index.d.cts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as vitest from 'vitest';
|
|
2
2
|
import { Mock, vi } from 'vitest';
|
|
3
|
-
import
|
|
3
|
+
import * as SharedMath from '@quake2ts/shared';
|
|
4
|
+
import { CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, Vec3 as Vec3$1, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand, ProtocolPlayerState } from '@quake2ts/shared';
|
|
4
5
|
export { ZERO_VEC3, intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
|
|
5
|
-
import {
|
|
6
|
-
import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
|
|
7
|
-
import { ConfigStringEntry, Cvar, BspModel, WebGLContextState, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BspMap, BufferUsage, VertexBuffer, IndexBuffer, ShaderProgram, DLight, DynamicLightManager, ParticleSystem, NullRenderer, CoordinateSystem, LoggingRenderer, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
|
|
6
|
+
import { BspTexInfo, BspLightmapInfo, BspEntity, BspMap, ConfigStringEntry, Cvar, BspModel, WebGLContextState, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BufferUsage, VertexBuffer, IndexBuffer, ShaderProgram, DLight, DynamicLightManager, ParticleSystem, NullRenderer, CoordinateSystem, LoggingRenderer, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
|
|
8
7
|
export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, ParticleSystem, ShaderProgram, VertexBuffer } from '@quake2ts/engine';
|
|
8
|
+
import { Vec3, Bounds3 } from '@quake2ts/shared/math/vec3';
|
|
9
|
+
import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
|
|
9
10
|
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, GameSaveFile, LevelState, MonsterMove, DamageMod, ArmorType, RegularArmorState, PowerArmorState, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
|
|
10
11
|
import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
|
|
11
12
|
import { ImageData, Canvas } from '@napi-rs/canvas';
|
|
@@ -174,7 +175,7 @@ declare const createPacketMock: (overrides?: Partial<PacketMock>) => PacketMock;
|
|
|
174
175
|
* @param dist - The distance from the origin.
|
|
175
176
|
* @returns A CollisionPlane object.
|
|
176
177
|
*/
|
|
177
|
-
declare function makePlane(normal: Vec3, dist: number): CollisionPlane;
|
|
178
|
+
declare function makePlane(normal: SharedMath.Vec3, dist: number): CollisionPlane;
|
|
178
179
|
/**
|
|
179
180
|
* Creates a simple axis-aligned cubic brush for testing.
|
|
180
181
|
*
|
|
@@ -227,7 +228,37 @@ declare function makeLeafModel(brushes: CollisionBrush[]): CollisionModel;
|
|
|
227
228
|
* @param contents - Content flags (default: CONTENTS_SOLID).
|
|
228
229
|
* @returns A CollisionBrush object.
|
|
229
230
|
*/
|
|
230
|
-
declare function makeBrushFromMinsMaxs(mins: Vec3, maxs: Vec3, contents?: number): CollisionBrush;
|
|
231
|
+
declare function makeBrushFromMinsMaxs(mins: SharedMath.Vec3, maxs: SharedMath.Vec3, contents?: number): CollisionBrush;
|
|
232
|
+
type BspVec3 = [number, number, number];
|
|
233
|
+
interface TestBspSurface {
|
|
234
|
+
vertices: BspVec3[];
|
|
235
|
+
texInfo?: Partial<BspTexInfo>;
|
|
236
|
+
lightmap?: Uint8Array;
|
|
237
|
+
lightmapInfo?: BspLightmapInfo;
|
|
238
|
+
styles?: [number, number, number, number];
|
|
239
|
+
}
|
|
240
|
+
interface TestBspMapOptions {
|
|
241
|
+
surfaces?: TestBspSurface[];
|
|
242
|
+
entities?: BspEntity[];
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Creates a minimal valid BspMap for testing rendering.
|
|
246
|
+
*
|
|
247
|
+
* @param options - Configuration for the test BSP map.
|
|
248
|
+
* @returns A BspMap object populated with the requested surfaces.
|
|
249
|
+
*/
|
|
250
|
+
declare function createTestBspMap(options?: TestBspMapOptions): BspMap;
|
|
251
|
+
/**
|
|
252
|
+
* Creates a simple solid color lightmap of specified dimensions.
|
|
253
|
+
*
|
|
254
|
+
* @param width - Width of the lightmap (usually small, e.g. 16x16)
|
|
255
|
+
* @param height - Height of the lightmap
|
|
256
|
+
* @param r - Red component (0-255)
|
|
257
|
+
* @param g - Green component (0-255)
|
|
258
|
+
* @param b - Blue component (0-255)
|
|
259
|
+
* @returns Uint8Array containing RGB data
|
|
260
|
+
*/
|
|
261
|
+
declare function createTestLightmap(width: number, height: number, r: number, g: number, b: number): Uint8Array;
|
|
231
262
|
|
|
232
263
|
declare function findPakFile(): string | null;
|
|
233
264
|
declare function loadMapFromPak(mapName: string): ArrayBuffer | null;
|
|
@@ -240,7 +271,7 @@ declare function loadMapFromPak(mapName: string): ArrayBuffer | null;
|
|
|
240
271
|
* @param z - The Z coordinate (default: 0).
|
|
241
272
|
* @returns A Vec3 object.
|
|
242
273
|
*/
|
|
243
|
-
declare const createVector3: (x?: number, y?: number, z?: number) => Vec3
|
|
274
|
+
declare const createVector3: (x?: number, y?: number, z?: number) => Vec3;
|
|
244
275
|
/**
|
|
245
276
|
* Creates a bounds object (min/max vectors).
|
|
246
277
|
*
|
|
@@ -248,14 +279,14 @@ declare const createVector3: (x?: number, y?: number, z?: number) => Vec3$1;
|
|
|
248
279
|
* @param maxs - The maximum bounds vector (default: 1,1,1).
|
|
249
280
|
* @returns A Bounds3 object.
|
|
250
281
|
*/
|
|
251
|
-
declare const createBounds: (mins?: Vec3
|
|
282
|
+
declare const createBounds: (mins?: Vec3, maxs?: Vec3) => Bounds3;
|
|
252
283
|
/**
|
|
253
284
|
* Interface representing a transformation (position, rotation, scale).
|
|
254
285
|
*/
|
|
255
286
|
interface Transform {
|
|
256
|
-
position: Vec3
|
|
257
|
-
rotation: Vec3
|
|
258
|
-
scale: Vec3
|
|
287
|
+
position: Vec3;
|
|
288
|
+
rotation: Vec3;
|
|
289
|
+
scale: Vec3;
|
|
259
290
|
}
|
|
260
291
|
/**
|
|
261
292
|
* Creates a Transform object.
|
|
@@ -271,14 +302,14 @@ declare const createTransform: (overrides?: Partial<Transform>) => Transform;
|
|
|
271
302
|
* @param max - Maximum value for each component (default: 100).
|
|
272
303
|
* @returns A random Vec3 object.
|
|
273
304
|
*/
|
|
274
|
-
declare const randomVector3: (min?: number, max?: number) => Vec3
|
|
305
|
+
declare const randomVector3: (min?: number, max?: number) => Vec3;
|
|
275
306
|
|
|
276
307
|
/**
|
|
277
308
|
* Interface for a TraceResult mock, including all standard properties.
|
|
278
309
|
*/
|
|
279
310
|
interface TraceMock extends Partial<TraceResult> {
|
|
280
311
|
fraction: number;
|
|
281
|
-
endpos: Vec3
|
|
312
|
+
endpos: Vec3;
|
|
282
313
|
plane: CollisionPlane$1;
|
|
283
314
|
surface: {
|
|
284
315
|
flags: number;
|
|
@@ -474,7 +505,7 @@ declare function createPhysicsTestScenario(scenarioType: 'stairs' | 'ladder' | '
|
|
|
474
505
|
* Uses the game's runPmove logic or manually invokes similar steps.
|
|
475
506
|
* This is useful for testing specific movement mechanics in isolation.
|
|
476
507
|
*/
|
|
477
|
-
declare function simulateMovement(entity: Entity, destination: Vec3, context: TestContext): TraceResult$1;
|
|
508
|
+
declare function simulateMovement(entity: Entity, destination: Vec3$1, context: TestContext): TraceResult$1;
|
|
478
509
|
/**
|
|
479
510
|
* Simulates gravity application on an entity.
|
|
480
511
|
*/
|
|
@@ -1586,7 +1617,7 @@ interface Lightmap {
|
|
|
1586
1617
|
/**
|
|
1587
1618
|
* Creates a mock DLight with default values.
|
|
1588
1619
|
*/
|
|
1589
|
-
declare function createMockDLight(position?: Vec3, color?: Vec3, intensity?: number): DLight;
|
|
1620
|
+
declare function createMockDLight(position?: Vec3$1, color?: Vec3$1, intensity?: number): DLight;
|
|
1590
1621
|
/**
|
|
1591
1622
|
* Creates a mock DynamicLightManager with spy methods.
|
|
1592
1623
|
*/
|
|
@@ -1597,8 +1628,8 @@ declare function createMockDLightManager(overrides?: Partial<DynamicLightManager
|
|
|
1597
1628
|
declare function createMockLightmap(width?: number, height?: number): Lightmap;
|
|
1598
1629
|
|
|
1599
1630
|
interface MockParticle {
|
|
1600
|
-
position: Vec3;
|
|
1601
|
-
velocity: Vec3;
|
|
1631
|
+
position: Vec3$1;
|
|
1632
|
+
velocity: Vec3$1;
|
|
1602
1633
|
color: [number, number, number, number];
|
|
1603
1634
|
size: number;
|
|
1604
1635
|
lifetime: number;
|
|
@@ -2047,8 +2078,8 @@ interface CameraInput {
|
|
|
2047
2078
|
rollDelta?: number;
|
|
2048
2079
|
}
|
|
2049
2080
|
interface DemoCameraResult {
|
|
2050
|
-
origin: Vec3;
|
|
2051
|
-
angles: Vec3;
|
|
2081
|
+
origin: Vec3$1;
|
|
2082
|
+
angles: Vec3$1;
|
|
2052
2083
|
fov: number;
|
|
2053
2084
|
}
|
|
2054
2085
|
/**
|
|
@@ -2140,8 +2171,8 @@ declare function simulatePacketLoss<T>(messages: T[], lossPercent: number): T[];
|
|
|
2140
2171
|
/**
|
|
2141
2172
|
* Factory for creating a mock EntityState.
|
|
2142
2173
|
*/
|
|
2143
|
-
declare function createMockEntityState(number: number, modelIndex?: number, origin?: Partial<Vec3>, overrides?: Partial<EntityState$1>): EntityState$1;
|
|
2144
|
-
declare function createMockDamageIndicator(damage: number, dir?: Vec3, health?: boolean, armor?: boolean, power?: boolean): DamageIndicator;
|
|
2174
|
+
declare function createMockEntityState(number: number, modelIndex?: number, origin?: Partial<Vec3$1>, overrides?: Partial<EntityState$1>): EntityState$1;
|
|
2175
|
+
declare function createMockDamageIndicator(damage: number, dir?: Vec3$1, health?: boolean, armor?: boolean, power?: boolean): DamageIndicator;
|
|
2145
2176
|
declare function createMockFogData(overrides?: Partial<FogData>): FogData;
|
|
2146
2177
|
|
|
2147
2178
|
interface DownloadManager {
|
|
@@ -2326,4 +2357,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
|
|
|
2326
2357
|
*/
|
|
2327
2358
|
declare function createVisualTestScenario(sceneName: string): VisualScenario;
|
|
2328
2359
|
|
|
2329
|
-
export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, type WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
|
2360
|
+
export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspVec3, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestBspMapOptions, type TestBspSurface, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, type WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import * as vitest from 'vitest';
|
|
2
2
|
import { Mock, vi } from 'vitest';
|
|
3
|
-
import
|
|
3
|
+
import * as SharedMath from '@quake2ts/shared';
|
|
4
|
+
import { CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, Vec3 as Vec3$1, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand, ProtocolPlayerState } from '@quake2ts/shared';
|
|
4
5
|
export { ZERO_VEC3, intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
|
|
5
|
-
import {
|
|
6
|
-
import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
|
|
7
|
-
import { ConfigStringEntry, Cvar, BspModel, WebGLContextState, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BspMap, BufferUsage, VertexBuffer, IndexBuffer, ShaderProgram, DLight, DynamicLightManager, ParticleSystem, NullRenderer, CoordinateSystem, LoggingRenderer, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
|
|
6
|
+
import { BspTexInfo, BspLightmapInfo, BspEntity, BspMap, ConfigStringEntry, Cvar, BspModel, WebGLContextState, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BufferUsage, VertexBuffer, IndexBuffer, ShaderProgram, DLight, DynamicLightManager, ParticleSystem, NullRenderer, CoordinateSystem, LoggingRenderer, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
|
|
8
7
|
export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, ParticleSystem, ShaderProgram, VertexBuffer } from '@quake2ts/engine';
|
|
8
|
+
import { Vec3, Bounds3 } from '@quake2ts/shared/math/vec3';
|
|
9
|
+
import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
|
|
9
10
|
import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, GameSaveFile, LevelState, MonsterMove, DamageMod, ArmorType, RegularArmorState, PowerArmorState, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
|
|
10
11
|
import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
|
|
11
12
|
import { ImageData, Canvas } from '@napi-rs/canvas';
|
|
@@ -174,7 +175,7 @@ declare const createPacketMock: (overrides?: Partial<PacketMock>) => PacketMock;
|
|
|
174
175
|
* @param dist - The distance from the origin.
|
|
175
176
|
* @returns A CollisionPlane object.
|
|
176
177
|
*/
|
|
177
|
-
declare function makePlane(normal: Vec3, dist: number): CollisionPlane;
|
|
178
|
+
declare function makePlane(normal: SharedMath.Vec3, dist: number): CollisionPlane;
|
|
178
179
|
/**
|
|
179
180
|
* Creates a simple axis-aligned cubic brush for testing.
|
|
180
181
|
*
|
|
@@ -227,7 +228,37 @@ declare function makeLeafModel(brushes: CollisionBrush[]): CollisionModel;
|
|
|
227
228
|
* @param contents - Content flags (default: CONTENTS_SOLID).
|
|
228
229
|
* @returns A CollisionBrush object.
|
|
229
230
|
*/
|
|
230
|
-
declare function makeBrushFromMinsMaxs(mins: Vec3, maxs: Vec3, contents?: number): CollisionBrush;
|
|
231
|
+
declare function makeBrushFromMinsMaxs(mins: SharedMath.Vec3, maxs: SharedMath.Vec3, contents?: number): CollisionBrush;
|
|
232
|
+
type BspVec3 = [number, number, number];
|
|
233
|
+
interface TestBspSurface {
|
|
234
|
+
vertices: BspVec3[];
|
|
235
|
+
texInfo?: Partial<BspTexInfo>;
|
|
236
|
+
lightmap?: Uint8Array;
|
|
237
|
+
lightmapInfo?: BspLightmapInfo;
|
|
238
|
+
styles?: [number, number, number, number];
|
|
239
|
+
}
|
|
240
|
+
interface TestBspMapOptions {
|
|
241
|
+
surfaces?: TestBspSurface[];
|
|
242
|
+
entities?: BspEntity[];
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Creates a minimal valid BspMap for testing rendering.
|
|
246
|
+
*
|
|
247
|
+
* @param options - Configuration for the test BSP map.
|
|
248
|
+
* @returns A BspMap object populated with the requested surfaces.
|
|
249
|
+
*/
|
|
250
|
+
declare function createTestBspMap(options?: TestBspMapOptions): BspMap;
|
|
251
|
+
/**
|
|
252
|
+
* Creates a simple solid color lightmap of specified dimensions.
|
|
253
|
+
*
|
|
254
|
+
* @param width - Width of the lightmap (usually small, e.g. 16x16)
|
|
255
|
+
* @param height - Height of the lightmap
|
|
256
|
+
* @param r - Red component (0-255)
|
|
257
|
+
* @param g - Green component (0-255)
|
|
258
|
+
* @param b - Blue component (0-255)
|
|
259
|
+
* @returns Uint8Array containing RGB data
|
|
260
|
+
*/
|
|
261
|
+
declare function createTestLightmap(width: number, height: number, r: number, g: number, b: number): Uint8Array;
|
|
231
262
|
|
|
232
263
|
declare function findPakFile(): string | null;
|
|
233
264
|
declare function loadMapFromPak(mapName: string): ArrayBuffer | null;
|
|
@@ -240,7 +271,7 @@ declare function loadMapFromPak(mapName: string): ArrayBuffer | null;
|
|
|
240
271
|
* @param z - The Z coordinate (default: 0).
|
|
241
272
|
* @returns A Vec3 object.
|
|
242
273
|
*/
|
|
243
|
-
declare const createVector3: (x?: number, y?: number, z?: number) => Vec3
|
|
274
|
+
declare const createVector3: (x?: number, y?: number, z?: number) => Vec3;
|
|
244
275
|
/**
|
|
245
276
|
* Creates a bounds object (min/max vectors).
|
|
246
277
|
*
|
|
@@ -248,14 +279,14 @@ declare const createVector3: (x?: number, y?: number, z?: number) => Vec3$1;
|
|
|
248
279
|
* @param maxs - The maximum bounds vector (default: 1,1,1).
|
|
249
280
|
* @returns A Bounds3 object.
|
|
250
281
|
*/
|
|
251
|
-
declare const createBounds: (mins?: Vec3
|
|
282
|
+
declare const createBounds: (mins?: Vec3, maxs?: Vec3) => Bounds3;
|
|
252
283
|
/**
|
|
253
284
|
* Interface representing a transformation (position, rotation, scale).
|
|
254
285
|
*/
|
|
255
286
|
interface Transform {
|
|
256
|
-
position: Vec3
|
|
257
|
-
rotation: Vec3
|
|
258
|
-
scale: Vec3
|
|
287
|
+
position: Vec3;
|
|
288
|
+
rotation: Vec3;
|
|
289
|
+
scale: Vec3;
|
|
259
290
|
}
|
|
260
291
|
/**
|
|
261
292
|
* Creates a Transform object.
|
|
@@ -271,14 +302,14 @@ declare const createTransform: (overrides?: Partial<Transform>) => Transform;
|
|
|
271
302
|
* @param max - Maximum value for each component (default: 100).
|
|
272
303
|
* @returns A random Vec3 object.
|
|
273
304
|
*/
|
|
274
|
-
declare const randomVector3: (min?: number, max?: number) => Vec3
|
|
305
|
+
declare const randomVector3: (min?: number, max?: number) => Vec3;
|
|
275
306
|
|
|
276
307
|
/**
|
|
277
308
|
* Interface for a TraceResult mock, including all standard properties.
|
|
278
309
|
*/
|
|
279
310
|
interface TraceMock extends Partial<TraceResult> {
|
|
280
311
|
fraction: number;
|
|
281
|
-
endpos: Vec3
|
|
312
|
+
endpos: Vec3;
|
|
282
313
|
plane: CollisionPlane$1;
|
|
283
314
|
surface: {
|
|
284
315
|
flags: number;
|
|
@@ -474,7 +505,7 @@ declare function createPhysicsTestScenario(scenarioType: 'stairs' | 'ladder' | '
|
|
|
474
505
|
* Uses the game's runPmove logic or manually invokes similar steps.
|
|
475
506
|
* This is useful for testing specific movement mechanics in isolation.
|
|
476
507
|
*/
|
|
477
|
-
declare function simulateMovement(entity: Entity, destination: Vec3, context: TestContext): TraceResult$1;
|
|
508
|
+
declare function simulateMovement(entity: Entity, destination: Vec3$1, context: TestContext): TraceResult$1;
|
|
478
509
|
/**
|
|
479
510
|
* Simulates gravity application on an entity.
|
|
480
511
|
*/
|
|
@@ -1586,7 +1617,7 @@ interface Lightmap {
|
|
|
1586
1617
|
/**
|
|
1587
1618
|
* Creates a mock DLight with default values.
|
|
1588
1619
|
*/
|
|
1589
|
-
declare function createMockDLight(position?: Vec3, color?: Vec3, intensity?: number): DLight;
|
|
1620
|
+
declare function createMockDLight(position?: Vec3$1, color?: Vec3$1, intensity?: number): DLight;
|
|
1590
1621
|
/**
|
|
1591
1622
|
* Creates a mock DynamicLightManager with spy methods.
|
|
1592
1623
|
*/
|
|
@@ -1597,8 +1628,8 @@ declare function createMockDLightManager(overrides?: Partial<DynamicLightManager
|
|
|
1597
1628
|
declare function createMockLightmap(width?: number, height?: number): Lightmap;
|
|
1598
1629
|
|
|
1599
1630
|
interface MockParticle {
|
|
1600
|
-
position: Vec3;
|
|
1601
|
-
velocity: Vec3;
|
|
1631
|
+
position: Vec3$1;
|
|
1632
|
+
velocity: Vec3$1;
|
|
1602
1633
|
color: [number, number, number, number];
|
|
1603
1634
|
size: number;
|
|
1604
1635
|
lifetime: number;
|
|
@@ -2047,8 +2078,8 @@ interface CameraInput {
|
|
|
2047
2078
|
rollDelta?: number;
|
|
2048
2079
|
}
|
|
2049
2080
|
interface DemoCameraResult {
|
|
2050
|
-
origin: Vec3;
|
|
2051
|
-
angles: Vec3;
|
|
2081
|
+
origin: Vec3$1;
|
|
2082
|
+
angles: Vec3$1;
|
|
2052
2083
|
fov: number;
|
|
2053
2084
|
}
|
|
2054
2085
|
/**
|
|
@@ -2140,8 +2171,8 @@ declare function simulatePacketLoss<T>(messages: T[], lossPercent: number): T[];
|
|
|
2140
2171
|
/**
|
|
2141
2172
|
* Factory for creating a mock EntityState.
|
|
2142
2173
|
*/
|
|
2143
|
-
declare function createMockEntityState(number: number, modelIndex?: number, origin?: Partial<Vec3>, overrides?: Partial<EntityState$1>): EntityState$1;
|
|
2144
|
-
declare function createMockDamageIndicator(damage: number, dir?: Vec3, health?: boolean, armor?: boolean, power?: boolean): DamageIndicator;
|
|
2174
|
+
declare function createMockEntityState(number: number, modelIndex?: number, origin?: Partial<Vec3$1>, overrides?: Partial<EntityState$1>): EntityState$1;
|
|
2175
|
+
declare function createMockDamageIndicator(damage: number, dir?: Vec3$1, health?: boolean, armor?: boolean, power?: boolean): DamageIndicator;
|
|
2145
2176
|
declare function createMockFogData(overrides?: Partial<FogData>): FogData;
|
|
2146
2177
|
|
|
2147
2178
|
interface DownloadManager {
|
|
@@ -2326,4 +2357,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
|
|
|
2326
2357
|
*/
|
|
2327
2358
|
declare function createVisualTestScenario(sceneName: string): VisualScenario;
|
|
2328
2359
|
|
|
2329
|
-
export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, type WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
|
2360
|
+
export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspVec3, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestBspMapOptions, type TestBspSurface, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, type WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
|
package/dist/index.js
CHANGED
|
@@ -203,6 +203,140 @@ function makeBrushFromMinsMaxs(mins, maxs, contents = CONTENTS_SOLID) {
|
|
|
203
203
|
sides: planes.map((plane) => ({ plane, surfaceFlags: 0 }))
|
|
204
204
|
};
|
|
205
205
|
}
|
|
206
|
+
function createTestBspMap(options = {}) {
|
|
207
|
+
const vertices = [];
|
|
208
|
+
const edges = [];
|
|
209
|
+
const surfEdges = [];
|
|
210
|
+
const faces = [];
|
|
211
|
+
const texInfos = [];
|
|
212
|
+
const lightMapInfo = [];
|
|
213
|
+
let lightMapDataSize = 0;
|
|
214
|
+
if (options.surfaces) {
|
|
215
|
+
for (const surface of options.surfaces) {
|
|
216
|
+
if (surface.lightmap) {
|
|
217
|
+
lightMapDataSize += surface.lightmap.length;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
const lightMaps = new Uint8Array(lightMapDataSize);
|
|
222
|
+
let currentLightMapOffset = 0;
|
|
223
|
+
if (options.surfaces) {
|
|
224
|
+
for (const surface of options.surfaces) {
|
|
225
|
+
const firstEdge = surfEdges.length;
|
|
226
|
+
const startVertexIndex = vertices.length;
|
|
227
|
+
for (const v of surface.vertices) {
|
|
228
|
+
vertices.push(v);
|
|
229
|
+
}
|
|
230
|
+
for (let i = 0; i < surface.vertices.length; i++) {
|
|
231
|
+
const v1 = startVertexIndex + i;
|
|
232
|
+
const v2 = startVertexIndex + (i + 1) % surface.vertices.length;
|
|
233
|
+
edges.push({ vertices: [v1, v2] });
|
|
234
|
+
surfEdges.push(edges.length - 1);
|
|
235
|
+
}
|
|
236
|
+
const defaultTexInfo = {
|
|
237
|
+
s: [1, 0, 0],
|
|
238
|
+
sOffset: 0,
|
|
239
|
+
t: [0, 1, 0],
|
|
240
|
+
tOffset: 0,
|
|
241
|
+
flags: 0,
|
|
242
|
+
value: 0,
|
|
243
|
+
texture: "test_texture",
|
|
244
|
+
nextTexInfo: -1
|
|
245
|
+
};
|
|
246
|
+
const texInfo = { ...defaultTexInfo, ...surface.texInfo };
|
|
247
|
+
texInfos.push(texInfo);
|
|
248
|
+
let lightOffset = -1;
|
|
249
|
+
let info = void 0;
|
|
250
|
+
if (surface.lightmap) {
|
|
251
|
+
lightOffset = currentLightMapOffset;
|
|
252
|
+
lightMaps.set(surface.lightmap, lightOffset);
|
|
253
|
+
info = { offset: lightOffset, length: surface.lightmap.length };
|
|
254
|
+
currentLightMapOffset += surface.lightmap.length;
|
|
255
|
+
}
|
|
256
|
+
lightMapInfo.push(info);
|
|
257
|
+
faces.push({
|
|
258
|
+
planeIndex: 0,
|
|
259
|
+
// Dummy plane
|
|
260
|
+
side: 0,
|
|
261
|
+
firstEdge,
|
|
262
|
+
numEdges: surface.vertices.length,
|
|
263
|
+
texInfo: texInfos.length - 1,
|
|
264
|
+
styles: surface.styles ?? [255, 255, 255, 255],
|
|
265
|
+
// Default styles
|
|
266
|
+
lightOffset
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
const header = { version: 38, lumps: /* @__PURE__ */ new Map() };
|
|
271
|
+
const entities = {
|
|
272
|
+
raw: "",
|
|
273
|
+
entities: options.entities || [],
|
|
274
|
+
worldspawn: void 0,
|
|
275
|
+
getUniqueClassnames: () => []
|
|
276
|
+
};
|
|
277
|
+
const planes = [{ normal: [0, 0, 1], dist: 0, type: 0 }];
|
|
278
|
+
const nodes = [];
|
|
279
|
+
const leafs = [{
|
|
280
|
+
contents: 0,
|
|
281
|
+
cluster: 0,
|
|
282
|
+
area: 0,
|
|
283
|
+
mins: [-1e3, -1e3, -1e3],
|
|
284
|
+
maxs: [1e3, 1e3, 1e3],
|
|
285
|
+
firstLeafFace: 0,
|
|
286
|
+
numLeafFaces: faces.length,
|
|
287
|
+
firstLeafBrush: 0,
|
|
288
|
+
numLeafBrushes: 0
|
|
289
|
+
}];
|
|
290
|
+
const leafLists = {
|
|
291
|
+
leafFaces: [faces.map((_, i) => i)],
|
|
292
|
+
leafBrushes: [[]]
|
|
293
|
+
};
|
|
294
|
+
const models = [{
|
|
295
|
+
mins: [-1e3, -1e3, -1e3],
|
|
296
|
+
maxs: [1e3, 1e3, 1e3],
|
|
297
|
+
origin: [0, 0, 0],
|
|
298
|
+
headNode: 0,
|
|
299
|
+
firstFace: 0,
|
|
300
|
+
numFaces: faces.length
|
|
301
|
+
}];
|
|
302
|
+
const data = {
|
|
303
|
+
header,
|
|
304
|
+
entities,
|
|
305
|
+
planes,
|
|
306
|
+
vertices,
|
|
307
|
+
nodes,
|
|
308
|
+
texInfo: texInfos,
|
|
309
|
+
faces,
|
|
310
|
+
lightMaps,
|
|
311
|
+
lightMapInfo,
|
|
312
|
+
leafs,
|
|
313
|
+
leafLists,
|
|
314
|
+
edges,
|
|
315
|
+
surfEdges: Int32Array.from(surfEdges),
|
|
316
|
+
models,
|
|
317
|
+
brushes: [],
|
|
318
|
+
brushSides: [],
|
|
319
|
+
visibility: void 0,
|
|
320
|
+
areas: [],
|
|
321
|
+
areaPortals: []
|
|
322
|
+
};
|
|
323
|
+
return {
|
|
324
|
+
...data,
|
|
325
|
+
pickEntity: () => null,
|
|
326
|
+
findLeaf: () => leafs[0],
|
|
327
|
+
calculatePVS: () => void 0
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
function createTestLightmap(width, height, r, g, b) {
|
|
331
|
+
const size = width * height * 3;
|
|
332
|
+
const data = new Uint8Array(size);
|
|
333
|
+
for (let i = 0; i < size; i += 3) {
|
|
334
|
+
data[i] = r;
|
|
335
|
+
data[i + 1] = g;
|
|
336
|
+
data[i + 2] = b;
|
|
337
|
+
}
|
|
338
|
+
return data;
|
|
339
|
+
}
|
|
206
340
|
|
|
207
341
|
// src/shared/pak-loader.ts
|
|
208
342
|
import * as fs from "fs";
|
|
@@ -3326,6 +3460,7 @@ function createMockRenderer(overrides) {
|
|
|
3326
3460
|
setLodBias: vi12.fn(),
|
|
3327
3461
|
setAreaPortalState: vi12.fn(),
|
|
3328
3462
|
renderInstanced: vi12.fn(),
|
|
3463
|
+
uploadBspGeometry: vi12.fn().mockReturnValue({ surfaces: [], lightmaps: [] }),
|
|
3329
3464
|
dispose: vi12.fn(),
|
|
3330
3465
|
...overrides
|
|
3331
3466
|
};
|
|
@@ -5575,7 +5710,9 @@ export {
|
|
|
5575
5710
|
createSpawnTestContext,
|
|
5576
5711
|
createStorageTestScenario,
|
|
5577
5712
|
createSurfaceMock,
|
|
5713
|
+
createTestBspMap,
|
|
5578
5714
|
createTestContext,
|
|
5715
|
+
createTestLightmap,
|
|
5579
5716
|
createTraceMock,
|
|
5580
5717
|
createTransform,
|
|
5581
5718
|
createTriggerEntityFactory,
|