@quake2ts/test-utils 0.0.873 → 0.0.875

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.d.cts CHANGED
@@ -3,7 +3,7 @@ import { Mock, vi } from 'vitest';
3
3
  import * as SharedMath from '@quake2ts/shared';
4
4
  import { CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, Vec3 as Vec3$1, Bounds3, PlayerState, EntityState, createRandomGenerator, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand, ProtocolPlayerState } from '@quake2ts/shared';
5
5
  export { ZERO_VEC3, intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
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, BspPlane, BspNode, BspFace, BspLeaf, BspBrush, BspBrushSide, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
6
+ import { BspTexInfo, BspLightmapInfo, BspEntity, BspMap, ConfigStringEntry, Cvar, Md2Model, BspModel, WebGLContextState, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md3Model, BufferUsage, VertexBuffer, IndexBuffer, ShaderProgram, DLight, DynamicLightManager, ParticleSystem, NullRenderer, CoordinateSystem, LoggingRenderer, BspPlane, BspNode, BspFace, BspLeaf, BspBrush, BspBrushSide, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
7
7
  export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, ParticleSystem, ShaderProgram, VertexBuffer } from '@quake2ts/engine';
8
8
  import { Vec3 as Vec3$2 } from '@quake2ts/shared/math/vec3';
9
9
  import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
@@ -377,6 +377,9 @@ declare function createCvarMock(name: string, value: string, flags?: number): Cv
377
377
  */
378
378
  declare function createMockPlayerState(overrides?: Partial<PlayerState>): PlayerState;
379
379
 
380
+ declare function createSimpleMd2Model(): Md2Model;
381
+ declare function loadMd2Model(filename: string): Promise<Md2Model>;
382
+
380
383
  declare const createPlayerStateFactory: (overrides?: Partial<PlayerState>) => PlayerState;
381
384
  declare const createEntityStateFactory: (overrides?: Partial<EntityState>) => EntityState;
382
385
  declare const createGameStateSnapshotFactory: (overrides?: Partial<GameStateSnapshot>) => GameStateSnapshot;
@@ -2573,4 +2576,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
2573
2576
  */
2574
2577
  declare function createVisualTestScenario(sceneName: string): VisualScenario;
2575
2578
 
2576
- export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspFixtureOptions, 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 Md2BuilderOptions, type Md2FrameInput, type Md2FrameVertexInput, type Md2GlCommandInput, type Md2GlCommandVertexInput, 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 PakEntrySpec, 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 SpawnTestEntityOptions, 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 WebGPULifecycle, type WebGPUMocks, buildMd2, buildMd3, buildPak, buildPcx, buildTestBsp, buildWal, buildWav, 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, createSpawnRegistry, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, createWebGPULifecycle, encodedVisForClusters, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, registerTestSpawn, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, runLengthVisRow, savePNG, serializeUserInfo, setupBrowserEnvironment, setupHeadlessWebGPUEnv, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, spawnTestEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, test, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, textData, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
2579
+ export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspFixtureOptions, 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 Md2BuilderOptions, type Md2FrameInput, type Md2FrameVertexInput, type Md2GlCommandInput, type Md2GlCommandVertexInput, 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 PakEntrySpec, 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 SpawnTestEntityOptions, 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 WebGPULifecycle, type WebGPUMocks, buildMd2, buildMd3, buildPak, buildPcx, buildTestBsp, buildWal, buildWav, 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, createSimpleMd2Model, createSolidTexture, createSpawnRegistry, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, createWebGPULifecycle, encodedVisForClusters, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadMd2Model, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, registerTestSpawn, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, runLengthVisRow, savePNG, serializeUserInfo, setupBrowserEnvironment, setupHeadlessWebGPUEnv, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, spawnTestEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, test, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, textData, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Mock, vi } from 'vitest';
3
3
  import * as SharedMath from '@quake2ts/shared';
4
4
  import { CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, Vec3 as Vec3$1, Bounds3, PlayerState, EntityState, createRandomGenerator, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand, ProtocolPlayerState } from '@quake2ts/shared';
5
5
  export { ZERO_VEC3, intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
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, BspPlane, BspNode, BspFace, BspLeaf, BspBrush, BspBrushSide, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
6
+ import { BspTexInfo, BspLightmapInfo, BspEntity, BspMap, ConfigStringEntry, Cvar, Md2Model, BspModel, WebGLContextState, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md3Model, BufferUsage, VertexBuffer, IndexBuffer, ShaderProgram, DLight, DynamicLightManager, ParticleSystem, NullRenderer, CoordinateSystem, LoggingRenderer, BspPlane, BspNode, BspFace, BspLeaf, BspBrush, BspBrushSide, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
7
7
  export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, ParticleSystem, ShaderProgram, VertexBuffer } from '@quake2ts/engine';
8
8
  import { Vec3 as Vec3$2 } from '@quake2ts/shared/math/vec3';
9
9
  import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
@@ -377,6 +377,9 @@ declare function createCvarMock(name: string, value: string, flags?: number): Cv
377
377
  */
378
378
  declare function createMockPlayerState(overrides?: Partial<PlayerState>): PlayerState;
379
379
 
380
+ declare function createSimpleMd2Model(): Md2Model;
381
+ declare function loadMd2Model(filename: string): Promise<Md2Model>;
382
+
380
383
  declare const createPlayerStateFactory: (overrides?: Partial<PlayerState>) => PlayerState;
381
384
  declare const createEntityStateFactory: (overrides?: Partial<EntityState>) => EntityState;
382
385
  declare const createGameStateSnapshotFactory: (overrides?: Partial<GameStateSnapshot>) => GameStateSnapshot;
@@ -2573,4 +2576,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
2573
2576
  */
2574
2577
  declare function createVisualTestScenario(sceneName: string): VisualScenario;
2575
2578
 
2576
- export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspFixtureOptions, 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 Md2BuilderOptions, type Md2FrameInput, type Md2FrameVertexInput, type Md2GlCommandInput, type Md2GlCommandVertexInput, 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 PakEntrySpec, 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 SpawnTestEntityOptions, 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 WebGPULifecycle, type WebGPUMocks, buildMd2, buildMd3, buildPak, buildPcx, buildTestBsp, buildWal, buildWav, 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, createSpawnRegistry, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, createWebGPULifecycle, encodedVisForClusters, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, registerTestSpawn, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, runLengthVisRow, savePNG, serializeUserInfo, setupBrowserEnvironment, setupHeadlessWebGPUEnv, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, spawnTestEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, test, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, textData, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
2579
+ export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspFixtureOptions, 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 Md2BuilderOptions, type Md2FrameInput, type Md2FrameVertexInput, type Md2GlCommandInput, type Md2GlCommandVertexInput, 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 PakEntrySpec, 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 SpawnTestEntityOptions, 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 WebGPULifecycle, type WebGPUMocks, buildMd2, buildMd3, buildPak, buildPcx, buildTestBsp, buildWal, buildWav, 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, createSimpleMd2Model, createSolidTexture, createSpawnRegistry, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, createWebGPULifecycle, encodedVisForClusters, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadMd2Model, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, registerTestSpawn, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, runLengthVisRow, savePNG, serializeUserInfo, setupBrowserEnvironment, setupHeadlessWebGPUEnv, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, spawnTestEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, test, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, textData, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
package/dist/index.js CHANGED
@@ -1,10 +1,3 @@
1
- var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
2
- get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
3
- }) : x)(function(x) {
4
- if (typeof require !== "undefined") return require.apply(this, arguments);
5
- throw Error('Dynamic require of "' + x + '" is not supported');
6
- });
7
-
8
1
  // ../../node_modules/.pnpm/tsup@8.5.1_postcss@8.5.6_tsx@4.21.0_typescript@5.9.3/node_modules/tsup/assets/esm_shims.js
9
2
  import path from "path";
10
3
  import { fileURLToPath } from "url";
@@ -475,6 +468,127 @@ function createMockPlayerState(overrides) {
475
468
  };
476
469
  }
477
470
 
471
+ // src/shared/md2.ts
472
+ function createSimpleMd2Model() {
473
+ const scale = { x: 1, y: 1, z: 1 };
474
+ const translate = { x: 0, y: 0, z: 0 };
475
+ const basePositions = [
476
+ { x: -10, y: -10, z: -10 },
477
+ // 0
478
+ { x: 10, y: -10, z: -10 },
479
+ // 1
480
+ { x: 10, y: 10, z: -10 },
481
+ // 2
482
+ { x: -10, y: 10, z: -10 },
483
+ // 3
484
+ { x: -10, y: -10, z: 10 },
485
+ // 4
486
+ { x: 10, y: -10, z: 10 },
487
+ // 5
488
+ { x: 10, y: 10, z: 10 },
489
+ // 6
490
+ { x: -10, y: 10, z: 10 }
491
+ // 7
492
+ ];
493
+ const createFrame = (name, offset) => {
494
+ const vertices = basePositions.map((pos, index) => {
495
+ const modPos = {
496
+ x: pos.x + (index % 2 === 0 ? offset : -offset),
497
+ y: pos.y,
498
+ z: pos.z
499
+ };
500
+ return {
501
+ position: modPos,
502
+ normalIndex: 0,
503
+ // Dummy normal index
504
+ normal: { x: 0, y: 0, z: 1 }
505
+ // Dummy normal
506
+ };
507
+ });
508
+ return {
509
+ name,
510
+ vertices,
511
+ minBounds: { x: -20, y: -20, z: -20 },
512
+ maxBounds: { x: 20, y: 20, z: 20 }
513
+ };
514
+ };
515
+ const frames = [];
516
+ for (let i = 0; i < 20; i++) {
517
+ frames.push(createFrame(`frame${i}`, i * 0.5));
518
+ }
519
+ const triangles = [
520
+ // Front
521
+ { vertexIndices: [0, 1, 2], texCoordIndices: [0, 1, 2] },
522
+ { vertexIndices: [0, 2, 3], texCoordIndices: [0, 2, 3] },
523
+ // Back
524
+ { vertexIndices: [5, 4, 7], texCoordIndices: [1, 0, 3] },
525
+ { vertexIndices: [5, 7, 6], texCoordIndices: [1, 3, 2] },
526
+ // Top
527
+ { vertexIndices: [3, 2, 6], texCoordIndices: [0, 1, 2] },
528
+ { vertexIndices: [3, 6, 7], texCoordIndices: [0, 2, 3] },
529
+ // Bottom
530
+ { vertexIndices: [4, 5, 1], texCoordIndices: [0, 1, 2] },
531
+ { vertexIndices: [4, 1, 0], texCoordIndices: [0, 2, 3] },
532
+ // Right
533
+ { vertexIndices: [1, 5, 6], texCoordIndices: [0, 1, 2] },
534
+ { vertexIndices: [1, 6, 2], texCoordIndices: [0, 2, 3] },
535
+ // Left
536
+ { vertexIndices: [4, 0, 3], texCoordIndices: [0, 1, 2] },
537
+ { vertexIndices: [4, 3, 7], texCoordIndices: [0, 2, 3] }
538
+ ];
539
+ const glCommands = triangles.map((t) => ({
540
+ mode: "strip",
541
+ // or 'fan', doesn't matter for 3 verts
542
+ vertices: [
543
+ { s: 0, t: 0, vertexIndex: t.vertexIndices[0] },
544
+ { s: 1, t: 0, vertexIndex: t.vertexIndices[1] },
545
+ { s: 1, t: 1, vertexIndex: t.vertexIndices[2] }
546
+ ]
547
+ }));
548
+ const header = {
549
+ ident: 844121161,
550
+ version: 8,
551
+ skinWidth: 32,
552
+ skinHeight: 32,
553
+ frameSize: 40 + 8 * 4,
554
+ // header + verts * 4
555
+ numSkins: 1,
556
+ numVertices: 8,
557
+ numTexCoords: 4,
558
+ // Simplified
559
+ numTriangles: 12,
560
+ numGlCommands: 12,
561
+ // One per triangle for simplicity
562
+ numFrames: 20,
563
+ offsetSkins: 0,
564
+ offsetTexCoords: 0,
565
+ offsetTriangles: 0,
566
+ offsetFrames: 0,
567
+ offsetGlCommands: 0,
568
+ offsetEnd: 0,
569
+ magic: 844121161
570
+ };
571
+ return {
572
+ header,
573
+ skins: [{ name: "skin.pcx" }],
574
+ texCoords: [
575
+ { s: 0, t: 0 },
576
+ { s: 32, t: 0 },
577
+ { s: 32, t: 32 },
578
+ { s: 0, t: 32 }
579
+ ],
580
+ triangles,
581
+ frames,
582
+ glCommands
583
+ };
584
+ }
585
+ async function loadMd2Model(filename) {
586
+ if (filename === "simple-cube.md2") {
587
+ return createSimpleMd2Model();
588
+ }
589
+ throw new Error(`Model ${filename} not found in test fixtures`);
590
+ }
591
+
478
592
  // src/game/factories.ts
479
593
  import {
480
594
  Entity,
@@ -3015,14 +3129,16 @@ function createWebGPULifecycle() {
3015
3129
  }
3016
3130
 
3017
3131
  // src/setup/headless-webgl.ts
3132
+ import { createRequire } from "module";
3018
3133
  function createHeadlessWebGL(options = {}) {
3019
3134
  const width = options.width ?? 256;
3020
3135
  const height = options.height ?? 256;
3021
3136
  let createGL;
3022
3137
  try {
3023
- createGL = __require("gl");
3138
+ const require2 = createRequire(import.meta.url);
3139
+ createGL = require2("gl");
3024
3140
  } catch (e) {
3025
- throw new Error("gl package not found or failed to load. Install it to run WebGL tests.");
3141
+ throw new Error("gl package not found or failed to load. Install it to run WebGL tests. Error: " + e);
3026
3142
  }
3027
3143
  const glContext = createGL(width, height, {
3028
3144
  antialias: options.antialias ?? false,
@@ -4674,6 +4790,7 @@ async function expectAnimationSnapshot(renderAndCaptureFrame, options) {
4674
4790
  import { createServer } from "http";
4675
4791
  import path5 from "path";
4676
4792
  import fs4 from "fs";
4793
+ var sharedSetup;
4677
4794
  function findWorkspaceRoot(startDir) {
4678
4795
  let currentDir = startDir;
4679
4796
  while (currentDir !== path5.parse(currentDir).root) {
@@ -4688,6 +4805,25 @@ async function createWebGLPlaywrightSetup(options = {}) {
4688
4805
  const width = options.width ?? 256;
4689
4806
  const height = options.height ?? 256;
4690
4807
  const headless = options.headless ?? true;
4808
+ if (sharedSetup) {
4809
+ const { page: page2, browser: browser2, context: context2, server } = sharedSetup;
4810
+ if (!page2.isClosed()) {
4811
+ await page2.setViewportSize({ width, height });
4812
+ return {
4813
+ browser: browser2,
4814
+ context: context2,
4815
+ page: page2,
4816
+ width,
4817
+ height,
4818
+ server,
4819
+ // No-op cleanup for shared instance to keep it alive for next test
4820
+ cleanup: async () => {
4821
+ }
4822
+ };
4823
+ } else {
4824
+ sharedSetup = void 0;
4825
+ }
4826
+ }
4691
4827
  let chromium;
4692
4828
  let handler;
4693
4829
  try {
@@ -4744,7 +4880,6 @@ async function createWebGLPlaywrightSetup(options = {}) {
4744
4880
  const page = await context.newPage();
4745
4881
  page.on("console", (msg) => {
4746
4882
  if (msg.type() === "error") console.error(`[Browser Error] ${msg.text()}`);
4747
- else console.log(`[Browser] ${msg.text()}`);
4748
4883
  });
4749
4884
  page.on("pageerror", (err) => {
4750
4885
  console.error(`[Browser Page Error] ${err.message}`);
@@ -4752,9 +4887,14 @@ async function createWebGLPlaywrightSetup(options = {}) {
4752
4887
  await page.goto(serverUrl, { waitUntil: "domcontentloaded" });
4753
4888
  await page.evaluate(`window.createRendererTest()`);
4754
4889
  await page.waitForFunction(() => window.testRenderer !== void 0, { timeout: 5e3 });
4890
+ sharedSetup = {
4891
+ browser,
4892
+ context,
4893
+ page,
4894
+ server: staticServer,
4895
+ serverUrl
4896
+ };
4755
4897
  const cleanup = async () => {
4756
- await browser.close();
4757
- staticServer.close();
4758
4898
  };
4759
4899
  return {
4760
4900
  browser,
@@ -4776,9 +4916,11 @@ async function renderAndCaptureWebGLPlaywright(page, renderFn, width, height, fr
4776
4916
  throw new Error("Renderer not initialized");
4777
4917
  }
4778
4918
  if (width2 !== void 0 && height2 !== void 0) {
4779
- canvas.width = width2;
4780
- canvas.height = height2;
4781
- gl.viewport(0, 0, width2, height2);
4919
+ if (canvas.width !== width2 || canvas.height !== height2) {
4920
+ canvas.width = width2;
4921
+ canvas.height = height2;
4922
+ gl.viewport(0, 0, width2, height2);
4923
+ }
4782
4924
  }
4783
4925
  try {
4784
4926
  const fn = new Function("renderer", "gl", "frameIndex", code);
@@ -6506,6 +6648,7 @@ export {
6506
6648
  createRenderTestSetup,
6507
6649
  createSaveGameSnapshot,
6508
6650
  createServerSnapshot,
6651
+ createSimpleMd2Model,
6509
6652
  createSolidTexture,
6510
6653
  createSpawnRegistry,
6511
6654
  createSpawnTestContext,
@@ -6535,6 +6678,7 @@ export {
6535
6678
  intersects,
6536
6679
  ladderTrace,
6537
6680
  loadMapFromPak,
6681
+ loadMd2Model,
6538
6682
  loadPNG,
6539
6683
  makeAxisBrush,
6540
6684
  makeBrushFromMinsMaxs,