@quake2ts/test-utils 0.0.825 → 0.0.829

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
@@ -7,7 +7,7 @@ import { BspTexInfo, BspLightmapInfo, BspEntity, BspMap, ConfigStringEntry, Cvar
7
7
  export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, ParticleSystem, ShaderProgram, VertexBuffer } from '@quake2ts/engine';
8
8
  import { Vec3, Bounds3 } from '@quake2ts/shared/math/vec3';
9
9
  import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
10
- import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, GameSaveFile, LevelState, MonsterMove, DamageMod, ArmorType, RegularArmorState, PowerArmorState, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
10
+ import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, SpawnFunction, GameSaveFile, LevelState, MonsterMove, DamageMod, ArmorType, RegularArmorState, PowerArmorState, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
11
11
  import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
12
12
  import { ImageData, Canvas } from '@napi-rs/canvas';
13
13
  import { Browser, BrowserContext, Page } from 'playwright';
@@ -403,6 +403,7 @@ interface MockGame {
403
403
  spawnWorld: LegacyMock<[], void>;
404
404
  clientBegin: LegacyMock<[any], void>;
405
405
  damage: LegacyMock<[number], void>;
406
+ entities: any;
406
407
  }
407
408
  interface TestContext extends SpawnContext {
408
409
  entities: EntitySystem;
@@ -489,6 +490,26 @@ declare function createGameImportsAndEngine(overrides?: {
489
490
  */
490
491
  declare function createMockGameExports(overrides?: Partial<any>): any;
491
492
 
493
+ /**
494
+ * Creates a configured SpawnRegistry for testing.
495
+ * Uses the default spawn registry but handles the game dependency if not provided.
496
+ */
497
+ declare function createSpawnRegistry(game?: any): SpawnRegistry;
498
+ /**
499
+ * Registers a custom spawn function for testing.
500
+ */
501
+ declare function registerTestSpawn(registry: SpawnRegistry, classname: string, spawnFunc: SpawnFunction): void;
502
+ interface SpawnTestEntityOptions {
503
+ classname: string;
504
+ keyValues?: Record<string, string>;
505
+ registry?: SpawnRegistry;
506
+ onWarning?: (message: string) => void;
507
+ }
508
+ /**
509
+ * Convenience function to spawn an entity using the spawn system.
510
+ */
511
+ declare function spawnTestEntity(context: TestContext, options: SpawnTestEntityOptions): Entity | null;
512
+
492
513
  /**
493
514
  * Creates a physics test scenario with pre-configured geometry.
494
515
  * NOTE: Since real BSP loading is complex, this often uses block entities
@@ -2357,4 +2378,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
2357
2378
  */
2358
2379
  declare function createVisualTestScenario(sceneName: string): VisualScenario;
2359
2380
 
2360
- export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspVec3, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestBspMapOptions, type TestBspSurface, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, type WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
2381
+ export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspVec3, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type 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 WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnRegistry, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, registerTestSpawn, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, spawnTestEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ import { BspTexInfo, BspLightmapInfo, BspEntity, BspMap, ConfigStringEntry, Cvar
7
7
  export { ConfigStringEntry, Cvar, DLight, DynamicLightManager, IndexBuffer, ParticleSystem, ShaderProgram, VertexBuffer } from '@quake2ts/engine';
8
8
  import { Vec3, Bounds3 } from '@quake2ts/shared/math/vec3';
9
9
  import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
10
- import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, GameSaveFile, LevelState, MonsterMove, DamageMod, ArmorType, RegularArmorState, PowerArmorState, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
10
+ import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, SpawnFunction, GameSaveFile, LevelState, MonsterMove, DamageMod, ArmorType, RegularArmorState, PowerArmorState, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, PlayerClient } from '@quake2ts/game';
11
11
  import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
12
12
  import { ImageData, Canvas } from '@napi-rs/canvas';
13
13
  import { Browser, BrowserContext, Page } from 'playwright';
@@ -403,6 +403,7 @@ interface MockGame {
403
403
  spawnWorld: LegacyMock<[], void>;
404
404
  clientBegin: LegacyMock<[any], void>;
405
405
  damage: LegacyMock<[number], void>;
406
+ entities: any;
406
407
  }
407
408
  interface TestContext extends SpawnContext {
408
409
  entities: EntitySystem;
@@ -489,6 +490,26 @@ declare function createGameImportsAndEngine(overrides?: {
489
490
  */
490
491
  declare function createMockGameExports(overrides?: Partial<any>): any;
491
492
 
493
+ /**
494
+ * Creates a configured SpawnRegistry for testing.
495
+ * Uses the default spawn registry but handles the game dependency if not provided.
496
+ */
497
+ declare function createSpawnRegistry(game?: any): SpawnRegistry;
498
+ /**
499
+ * Registers a custom spawn function for testing.
500
+ */
501
+ declare function registerTestSpawn(registry: SpawnRegistry, classname: string, spawnFunc: SpawnFunction): void;
502
+ interface SpawnTestEntityOptions {
503
+ classname: string;
504
+ keyValues?: Record<string, string>;
505
+ registry?: SpawnRegistry;
506
+ onWarning?: (message: string) => void;
507
+ }
508
+ /**
509
+ * Convenience function to spawn an entity using the spawn system.
510
+ */
511
+ declare function spawnTestEntity(context: TestContext, options: SpawnTestEntityOptions): Entity | null;
512
+
492
513
  /**
493
514
  * Creates a physics test scenario with pre-configured geometry.
494
515
  * NOTE: Since real BSP loading is complex, this often uses block entities
@@ -2357,4 +2378,4 @@ declare function compareScreenshots(baseline: Buffer, current: Buffer, threshold
2357
2378
  */
2358
2379
  declare function createVisualTestScenario(sceneName: string): VisualScenario;
2359
2380
 
2360
- export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspVec3, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestBspMapOptions, type TestBspSurface, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGLPlaywrightOptions, type WebGLPlaywrightSetup, type WebGLRenderTestSetup, type WebGPUContextState, type WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
2381
+ export { type AnimationSnapshotOptions, type AnimationSnapshotResult, type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, BrowserInputSource, type BrowserSetupOptions, type BspVec3, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DemoCameraResult, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGLContext, type HeadlessWebGLOptions, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, type LevelFrameState, type Lightmap, type MasterServer, type Message, type MessageReaderMock, type MessageWriterMock, type MockAI, FakeBufferSource as MockAudioBufferSourceNode, type MockChatMessage, MockClientConfigStrings, type MockCollisionEntityIndex, type MockCommand, type MockConsole, type MockDamageInfo, type MockEngine, type MockGame, type MockImportsAndEngine, type MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, type MockParticle, type MockParticleEmitter, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockSaveGame, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, type MockWeapon, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, type NetChanMock, type NetworkAddress, type NetworkCondition, type NetworkSimulator, type NodeSetupOptions, type PacketMock, type PhysicsScenario, type PlaywrightOptions, type PlaywrightTestClient, type PrecacheList, type PredictionScenario, type RateLimiter, type RecordedPacket, type RefDef, type RenderTestSetup, type SaveGameDiff, type ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type 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 WebGPUMocks, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, captureTexture, captureWebGLFramebuffer, compareSaveGames, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCheckerboardTexture, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createHeadlessWebGL, createInputInjector, createInterpolationTestData, createItemEntityFactory, createLoggingRenderer, createMessageReaderMock, createMessageWriterMock, createMockAI, createMockAmmoItem, createMockArmorItem, createMockAssetManager, createMockAudioBuffer, createMockAudioContext, createMockBspMap, createMockBspPipeline, createMockBufferSource, createMockCamera, createMockCanvas, createMockCanvasContext2D, createMockChatMessage, createMockClientInfo, createMockClientState, createMockCollisionEntityIndex, createMockCommand, createMockCommandEncoder, createMockComputePassEncoder, createMockComputePipeline, createMockConnection, createMockConnectionState, createMockConsole, createMockCvarRegistry, createMockDLight, createMockDLightManager, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDemoCameraResult, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexBuffer, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLightmap, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockParticle, createMockParticleEmitter, createMockParticleSystem, createMockPerformance, createMockPlayerState, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockSaveGame, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShader, createMockShaderModule, createMockShaderProgram, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockVertexBuffer, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGLContextState, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createNullRenderer, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPowerArmorState, createPredictionTestScenario, createProjectileEntityFactory, createRegularArmorState, createRenderTestSetup, createSaveGameSnapshot, createServerSnapshot, createSolidTexture, createSpawnRegistry, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestBspMap, createTestContext, createTestLightmap, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, createWebGLPlaywrightSetup, createWebGLRenderTestSetup, expectAnimationSnapshot, expectNoDoubleTransform, expectRendererCalls, expectSnapshot, findPakFile, flipPixelsVertically, getSnapshotPath, initHeadlessWebGPU, loadMapFromPak, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, registerTestSpawn, renderAndCapture, renderAndCaptureWebGL, renderAndCaptureWebGLPlaywright, renderAndExpectSnapshot, restoreSaveGameSnapshot, runComputeAndReadback, savePNG, serializeUserInfo, setupBrowserEnvironment, setupMockAudioContext, setupNodeEnvironment, setupWebGPUMocks, simulateBandwidthLimit, simulateCameraMovement, simulateClientPrediction, simulateDownload, simulateFrames, simulateGravity, simulateHandshake, simulateJump, simulateMovement, simulateNetworkCondition, simulateNetworkDelay, simulatePacketLoss, simulatePlayerInput, simulatePlayerJoin, simulatePlayerLeave, simulateServerCommand, simulateServerRegistration, simulateServerTick, simulateSnapshotDelivery, spawnEntity, spawnTestEntity, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, testWebGLAnimation, testWebGLRenderer, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
package/dist/index.js CHANGED
@@ -295,7 +295,8 @@ function createTestBspMap(options = {}) {
295
295
  mins: [-1e3, -1e3, -1e3],
296
296
  maxs: [1e3, 1e3, 1e3],
297
297
  origin: [0, 0, 0],
298
- headNode: 0,
298
+ headNode: -1,
299
+ // -1 points to Leaf 0 (implied, assuming simple map)
299
300
  firstFace: 0,
300
301
  numFaces: faces.length
301
302
  }];
@@ -694,7 +695,10 @@ var createMockGame = (seed = 12345) => {
694
695
  }),
695
696
  damage: vi3.fn((amount) => {
696
697
  hooks.onDamage({}, null, null, amount, 0, 0);
697
- })
698
+ }),
699
+ entities: {
700
+ spawnRegistry
701
+ }
698
702
  };
699
703
  return { game, spawnRegistry };
700
704
  };
@@ -710,7 +714,10 @@ function createTestContext(options) {
710
714
  );
711
715
  const entityList = options?.initialEntities ? [...options.initialEntities] : [];
712
716
  const hooks = game.hooks;
713
- let currentSpawnRegistry;
717
+ let currentSpawnRegistry = spawnRegistry;
718
+ const findByTargetName = (targetname) => {
719
+ return entityList.filter((e) => e.targetname === targetname && e.inUse);
720
+ };
714
721
  const entities = {
715
722
  spawn: vi3.fn(() => {
716
723
  const ent = new Entity2(entityList.length + 1);
@@ -765,9 +772,20 @@ function createTestContext(options) {
765
772
  }),
766
773
  soundIndex: vi3.fn((sound) => engine.soundIndex(sound)),
767
774
  useTargets: vi3.fn((entity, activator) => {
775
+ if (entity.target) {
776
+ const targets = findByTargetName(entity.target);
777
+ for (const t of targets) {
778
+ t.use?.(t, entity, activator);
779
+ }
780
+ }
781
+ }),
782
+ findByTargetName: vi3.fn(findByTargetName),
783
+ pickTarget: vi3.fn((targetname) => {
784
+ if (!targetname) return null;
785
+ const matches = findByTargetName(targetname);
786
+ if (matches.length === 0) return null;
787
+ return matches[0];
768
788
  }),
769
- findByTargetName: vi3.fn(() => []),
770
- pickTarget: vi3.fn(() => null),
771
789
  killBox: vi3.fn(),
772
790
  rng: createRandomGenerator({ seed }),
773
791
  imports: {
@@ -789,7 +807,7 @@ function createTestContext(options) {
789
807
  return entityList.find(predicate);
790
808
  }),
791
809
  findByClassname: vi3.fn((classname) => {
792
- return entityList.find((e) => e.classname === classname);
810
+ return entityList.filter((e) => e.classname === classname);
793
811
  }),
794
812
  beginFrame: vi3.fn((timeSeconds) => {
795
813
  entities.timeSeconds = timeSeconds;
@@ -810,6 +828,7 @@ function createTestContext(options) {
810
828
  activeCount: entityList.length,
811
829
  world: entityList.find((e) => e.classname === "worldspawn") || new Entity2(0)
812
830
  };
831
+ game.entities = entities;
813
832
  return {
814
833
  keyValues: {},
815
834
  entities,
@@ -909,6 +928,35 @@ function createMockGameExports(overrides = {}) {
909
928
  };
910
929
  }
911
930
 
931
+ // src/game/helpers/spawn.ts
932
+ import {
933
+ createDefaultSpawnRegistry,
934
+ spawnEntityFromDictionary
935
+ } from "@quake2ts/game";
936
+ function createSpawnRegistry(game) {
937
+ const gameMock = game || {};
938
+ return createDefaultSpawnRegistry(gameMock);
939
+ }
940
+ function registerTestSpawn(registry, classname, spawnFunc) {
941
+ registry.register(classname, spawnFunc);
942
+ }
943
+ function spawnTestEntity(context, options) {
944
+ const registry = options.registry || context.game?.entities?.spawnRegistry;
945
+ if (!registry) {
946
+ throw new Error("No spawn registry provided and none found on context.game.entities");
947
+ }
948
+ const keyValues = {
949
+ classname: options.classname,
950
+ ...options.keyValues || {}
951
+ };
952
+ const spawnOptions = {
953
+ registry,
954
+ entities: context.entities,
955
+ onWarning: options.onWarning
956
+ };
957
+ return spawnEntityFromDictionary(keyValues, spawnOptions);
958
+ }
959
+
912
960
  // src/game/helpers/physics.ts
913
961
  import { MoveType as MoveType2, Solid as Solid2 } from "@quake2ts/game";
914
962
  import { subtractVec3, scaleVec3, lengthVec3, normalizeVec3 } from "@quake2ts/shared";
@@ -5707,6 +5755,7 @@ export {
5707
5755
  createSaveGameSnapshot,
5708
5756
  createServerSnapshot,
5709
5757
  createSolidTexture,
5758
+ createSpawnRegistry,
5710
5759
  createSpawnTestContext,
5711
5760
  createStorageTestScenario,
5712
5761
  createSurfaceMock,
@@ -5744,6 +5793,7 @@ export {
5744
5793
  mockMonsterAttacks,
5745
5794
  parseProtocolPlayerState,
5746
5795
  randomVector3,
5796
+ registerTestSpawn,
5747
5797
  renderAndCapture,
5748
5798
  renderAndCaptureWebGL,
5749
5799
  renderAndCaptureWebGLPlaywright,
@@ -5776,6 +5826,7 @@ export {
5776
5826
  simulateServerTick,
5777
5827
  simulateSnapshotDelivery,
5778
5828
  spawnEntity,
5829
+ spawnTestEntity,
5779
5830
  stairTrace,
5780
5831
  takeScreenshot,
5781
5832
  teardownBrowserEnvironment,