@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.cjs +165 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +159 -15
- package/dist/index.js.map +1 -1
- package/package.json +9 -9
- package/src/engine/helpers/webgl-playwright.ts +56 -6
- package/src/index.ts +1 -1
- package/src/setup/headless-webgl.ts +3 -2
- package/src/shared/md2.ts +143 -0
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,
|
|
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,
|
|
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
|
-
|
|
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
|
|
4780
|
-
|
|
4781
|
-
|
|
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,
|