quake2ts 0.0.650 → 0.0.652

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.
@@ -1,10 +1,10 @@
1
1
  import * as vitest from 'vitest';
2
2
  import { Mock, vi } from 'vitest';
3
- import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand } from '@quake2ts/shared';
3
+ import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand, ProtocolPlayerState } from '@quake2ts/shared';
4
4
  export { intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
5
5
  import { Vec3 as Vec3$1, Bounds3 } from '@quake2ts/shared/math/vec3';
6
6
  import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
7
- import { ConfigStringEntry, Cvar, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BspMap, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
7
+ import { ConfigStringEntry, Cvar, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BspMap, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
8
8
  export { ConfigStringEntry, Cvar } from '@quake2ts/engine';
9
9
  import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, GameExports, PlayerClient } from '@quake2ts/game';
10
10
  import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
@@ -989,6 +989,13 @@ declare function verifySnapshotConsistency(snapshots: Snapshot[]): ConsistencyRe
989
989
  * @param reliability Probability of successful delivery (0.0 to 1.0).
990
990
  */
991
991
  declare function simulateSnapshotDelivery(snapshot: Snapshot, reliability?: number): Promise<Snapshot | null>;
992
+ /**
993
+ * Parses a ProtocolPlayerState from a binary buffer.
994
+ * Useful for testing player state serialization.
995
+ * logic adapted from packages/engine/src/demo/parser.ts
996
+ * @param data The binary data to parse.
997
+ */
998
+ declare function parseProtocolPlayerState(data: Uint8Array): ProtocolPlayerState;
992
999
 
993
1000
  interface RateLimiter {
994
1001
  bytesPerSecond: number;
@@ -1726,11 +1733,11 @@ declare function createMockServerMessage(type: number, data?: Uint8Array): MockS
1726
1733
  /**
1727
1734
  * Creates a mock Snapshot (FrameData) for testing.
1728
1735
  */
1729
- declare function createMockSnapshot(serverFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState>, deltaFrame?: number): FrameData;
1736
+ declare function createMockSnapshot(serverFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState$1>, deltaFrame?: number): FrameData;
1730
1737
  /**
1731
1738
  * Creates a mock Delta Frame (FrameData with delta flag).
1732
1739
  */
1733
- declare function createMockDeltaFrame(serverFrame: number, deltaFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState>): FrameData;
1740
+ declare function createMockDeltaFrame(serverFrame: number, deltaFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState$1>): FrameData;
1734
1741
  /**
1735
1742
  * Simulates network delay for a sequence of messages.
1736
1743
  */
@@ -1975,4 +1982,4 @@ interface VisualScenario {
1975
1982
  */
1976
1983
  declare function createVisualTestScenario(sceneName: string): VisualScenario;
1977
1984
 
1978
- export { type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, 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 MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, 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 ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, compareScreenshot, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createInputInjector, createInterpolationTestData, createItemEntityFactory, 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, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockPerformance, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShaderModule, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, expectSnapshot, getSnapshotPath, initHeadlessWebGPU, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, randomVector3, renderAndCapture, renderAndExpectSnapshot, 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, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
1985
+ export { type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, 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 MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, 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 ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, compareScreenshot, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createInputInjector, createInterpolationTestData, createItemEntityFactory, 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, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockPerformance, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShaderModule, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, expectSnapshot, getSnapshotPath, initHeadlessWebGPU, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndExpectSnapshot, 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, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
@@ -1,10 +1,10 @@
1
1
  import * as vitest from 'vitest';
2
2
  import { Mock, vi } from 'vitest';
3
- import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand } from '@quake2ts/shared';
3
+ import { Vec3, CollisionPlane, CollisionBrush, CollisionNode, CollisionLeaf, CollisionModel, PlayerState, EntityState, createRandomGenerator, TraceResult as TraceResult$1, NetDriver, NetChan, UserCommand, ProtocolPlayerState } from '@quake2ts/shared';
4
4
  export { intersects, ladderTrace, stairTrace } from '@quake2ts/shared';
5
5
  import { Vec3 as Vec3$1, Bounds3 } from '@quake2ts/shared/math/vec3';
6
6
  import { TraceResult, CollisionPlane as CollisionPlane$1 } from '@quake2ts/shared/bsp/collision';
7
- import { ConfigStringEntry, Cvar, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BspMap, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
7
+ import { ConfigStringEntry, Cvar, AudioNodeLike, AudioBufferSourceNodeLike, AudioBufferLike, AudioParamLike, GainNodeLike, DynamicsCompressorNodeLike, PannerNodeLike, BiquadFilterNodeLike, AudioDestinationNodeLike, AudioContextLike, Renderer, FrameRenderer, BspSurfacePipeline, Md2Pipeline, Md3Pipeline, SpriteRenderer, SkyboxPipeline, AssetManager, PreparedTexture, Md2Model, Md3Model, BspMap, Camera, FrameRenderStats, EntityState as EntityState$1, ProtocolPlayerState as ProtocolPlayerState$1, FrameData, DamageIndicator, FogData } from '@quake2ts/engine';
8
8
  export { ConfigStringEntry, Cvar } from '@quake2ts/engine';
9
9
  import { GameStateSnapshot, Entity, ScriptHookRegistry, SpawnContext, EntitySystem, SpawnRegistry, MonsterMove, DamageMod, PlayerInventory, BaseItem, WeaponId, WeaponItem, HealthItem, ArmorItem, AmmoItemId, PowerupItem, GameExports, PlayerClient } from '@quake2ts/game';
10
10
  import { NetworkTransport, Server, ServerStatic, Client, ClientState as ClientState$1, ClientFrame } from '@quake2ts/server';
@@ -989,6 +989,13 @@ declare function verifySnapshotConsistency(snapshots: Snapshot[]): ConsistencyRe
989
989
  * @param reliability Probability of successful delivery (0.0 to 1.0).
990
990
  */
991
991
  declare function simulateSnapshotDelivery(snapshot: Snapshot, reliability?: number): Promise<Snapshot | null>;
992
+ /**
993
+ * Parses a ProtocolPlayerState from a binary buffer.
994
+ * Useful for testing player state serialization.
995
+ * logic adapted from packages/engine/src/demo/parser.ts
996
+ * @param data The binary data to parse.
997
+ */
998
+ declare function parseProtocolPlayerState(data: Uint8Array): ProtocolPlayerState;
992
999
 
993
1000
  interface RateLimiter {
994
1001
  bytesPerSecond: number;
@@ -1726,11 +1733,11 @@ declare function createMockServerMessage(type: number, data?: Uint8Array): MockS
1726
1733
  /**
1727
1734
  * Creates a mock Snapshot (FrameData) for testing.
1728
1735
  */
1729
- declare function createMockSnapshot(serverFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState>, deltaFrame?: number): FrameData;
1736
+ declare function createMockSnapshot(serverFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState$1>, deltaFrame?: number): FrameData;
1730
1737
  /**
1731
1738
  * Creates a mock Delta Frame (FrameData with delta flag).
1732
1739
  */
1733
- declare function createMockDeltaFrame(serverFrame: number, deltaFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState>): FrameData;
1740
+ declare function createMockDeltaFrame(serverFrame: number, deltaFrame: number, entities?: EntityState$1[], playerState?: Partial<ProtocolPlayerState$1>): FrameData;
1734
1741
  /**
1735
1742
  * Simulates network delay for a sequence of messages.
1736
1743
  */
@@ -1975,4 +1982,4 @@ interface VisualScenario {
1975
1982
  */
1976
1983
  declare function createVisualTestScenario(sceneName: string): VisualScenario;
1977
1984
 
1978
- export { type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, 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 MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, 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 ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, compareScreenshot, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createInputInjector, createInterpolationTestData, createItemEntityFactory, 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, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockPerformance, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShaderModule, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, expectSnapshot, getSnapshotPath, initHeadlessWebGPU, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, randomVector3, renderAndCapture, renderAndExpectSnapshot, 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, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
1985
+ export { type AudioEvent, type BandwidthScenario, type BinaryStreamMock, type BinaryWriterMock, type BrowserSetupOptions, type CameraInput, type CaptureOptions, type ClientInfo, type ClientState, type ClientStateProvider, type ComparisonOptions, type ComparisonResult, type ComputeTestSetup, type Connection, type ConnectionState, type ConsistencyReport, type ControlledTimer, type CvarRegistry, type DeltaSnapshot, type DownloadManager, type DrawCall, FakeAudioContext, FakeAudioNode, FakeAudioParam, FakeBiquadFilterNode, FakeBufferSource, FakeDestination, FakeGainNode, FakePannerNode, type Frame, type GameState, type GameStateCapture, type GeometryBuffers, type Handshake, HandshakeStage, type HeadlessWebGPUSetup, type HudState, InputInjector, type KeyModifiers, 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 MockMonsterAI, MockNetDriver, type MockNetDriverState, MockNetworkTransport, type MockNotification, MockPointerLock, type MockRAF, type MockRConClient, type MockRenderingContext, type MockServer, type MockServerConsole, type MockServerContext, type MockServerMessage, MockTransport, type MockUDPSocket, MockWebGL2RenderingContext, type MockWebGPUContext, type MultiplayerScenario, 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 ServerInfo, type ServerListFilter, type SmoothingAnalysis, type Snapshot, type SnapshotTestOptions, type StorageScenario, type SurfaceMock, type TestContext, type TraceMock, type Transform, type UserInfo, type ViewScenario, type ViewState, type VisualDiff, type VisualScenario, type WebGPUContextState, captureAudioEvents, captureCanvasDrawCalls, captureFramebufferAsPNG, captureGameScreenshot, captureGameState, compareScreenshot, compareScreenshots, compareSnapshots, createBandwidthTestScenario, createBinaryStreamMock, createBinaryWriterMock, createBounds, createCombatTestContext, createComputeTestSetup, createConfigStringArrayMock, createConfigStringMock, createControlledTimer, createCustomNetworkCondition, createCvarMock, createDeltaSnapshot, createEntity, createEntityFactory, createEntityStateFactory, createGameImportsAndEngine, createGameStateSnapshotFactory, createHeadlessTestContext, createInputInjector, createInterpolationTestData, createItemEntityFactory, 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, createMockDamageIndicator, createMockDamageInfo, createMockDeltaFrame, createMockDownloadManager, createMockEngine, createMockEntityState, createMockFogData, createMockFrame, createMockFrameRenderer, createMockGPUAdapter, createMockGPUBuffer, createMockGPUDevice, createMockGPUTexture, createMockGame, createMockGameExports, createMockGameState, createMockHandshake, createMockHealthItem, createMockHudState, createMockImage, createMockImageData, createMockIndexedDB, createMockInventory, createMockItem, createMockKeyboardEvent, createMockLocalStorage, createMockMasterServer, createMockMd2Model, createMockMd2Pipeline, createMockMd3Model, createMockMd3Pipeline, createMockMonsterAI, createMockMonsterMove, createMockMouseEvent, createMockNetDriver, createMockNetworkAddress, createMockNotification, createMockPannerNode, createMockPerformance, createMockPointerLock, createMockPowerupItem, createMockPrecacheList, createMockQueue, createMockRAF, createMockRConClient, createMockRateLimiter, createMockRefDef, createMockRenderPassEncoder, createMockRenderPipeline, createMockRenderer, createMockRenderingContext, createMockSampler, createMockScoreboard, createMockServer, createMockServerClient, createMockServerConsole, createMockServerInfo, createMockServerMessage, createMockServerState, createMockServerStatic, createMockSessionStorage, createMockShaderModule, createMockSkyboxPipeline, createMockSnapshot, createMockSpritePipeline, createMockTexture, createMockTextureView, createMockTransport, createMockUDPSocket, createMockUserInfo, createMockViewState, createMockWeapon, createMockWeaponItem, createMockWebGL2Context, createMockWebGPUContext, createMockWheelEvent, createMonsterEntityFactory, createMultiplayerTestScenario, createNetChanMock, createPacketMock, createPhysicsTestContext, createPhysicsTestScenario, createPlayerEntityFactory, createPlayerStateFactory, createPlaywrightTestClient, createPredictionTestScenario, createProjectileEntityFactory, createRenderTestSetup, createServerSnapshot, createSpawnTestContext, createStorageTestScenario, createSurfaceMock, createTestContext, createTraceMock, createTransform, createTriggerEntityFactory, createVector3, createViewTestScenario, createVisualTestScenario, expectSnapshot, getSnapshotPath, initHeadlessWebGPU, loadPNG, makeAxisBrush, makeBrushFromMinsMaxs, makeBspModel, makeLeaf, makeLeafModel, makeNode, makePlane, measureSnapshotSize, mockMonsterAttacks, parseProtocolPlayerState, randomVector3, renderAndCapture, renderAndExpectSnapshot, 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, takeScreenshot, teardownBrowserEnvironment, teardownMockAudioContext, teardownNodeEnvironment, testComputeShader, testPipelineRendering, throttleBandwidth, verifySmoothing, verifySnapshotConsistency, waitForGameReady };
@@ -1575,6 +1575,7 @@ function simulatePlayerInput(client, input) {
1575
1575
  }
1576
1576
 
1577
1577
  // src/server/helpers/snapshot.ts
1578
+ import { BinaryStream } from "@quake2ts/shared";
1578
1579
  function createServerSnapshot(serverState, clientNum) {
1579
1580
  const visibleEntities = [];
1580
1581
  if (serverState.baselines) {
@@ -1637,6 +1638,101 @@ async function simulateSnapshotDelivery(snapshot, reliability = 1) {
1637
1638
  }
1638
1639
  return snapshot;
1639
1640
  }
1641
+ function parseProtocolPlayerState(data) {
1642
+ const stream = new BinaryStream(data.buffer);
1643
+ const ps = {
1644
+ pm_type: 0,
1645
+ origin: { x: 0, y: 0, z: 0 },
1646
+ velocity: { x: 0, y: 0, z: 0 },
1647
+ pm_time: 0,
1648
+ pm_flags: 0,
1649
+ gravity: 0,
1650
+ delta_angles: { x: 0, y: 0, z: 0 },
1651
+ viewoffset: { x: 0, y: 0, z: 0 },
1652
+ viewangles: { x: 0, y: 0, z: 0 },
1653
+ kick_angles: { x: 0, y: 0, z: 0 },
1654
+ gun_index: 0,
1655
+ gun_frame: 0,
1656
+ gun_offset: { x: 0, y: 0, z: 0 },
1657
+ gun_angles: { x: 0, y: 0, z: 0 },
1658
+ blend: [0, 0, 0, 0],
1659
+ fov: 0,
1660
+ rdflags: 0,
1661
+ stats: new Array(32).fill(0),
1662
+ watertype: 0
1663
+ };
1664
+ const flags = stream.readShort();
1665
+ if (flags & 1) ps.pm_type = stream.readByte();
1666
+ if (flags & 2) {
1667
+ const x = stream.readShort() * 0.125;
1668
+ const y = stream.readShort() * 0.125;
1669
+ const z = stream.readShort() * 0.125;
1670
+ ps.origin = { x, y, z };
1671
+ }
1672
+ if (flags & 4) {
1673
+ const x = stream.readShort() * 0.125;
1674
+ const y = stream.readShort() * 0.125;
1675
+ const z = stream.readShort() * 0.125;
1676
+ ps.velocity = { x, y, z };
1677
+ }
1678
+ if (flags & 8) ps.pm_time = stream.readByte();
1679
+ if (flags & 16) ps.pm_flags = stream.readByte();
1680
+ if (flags & 32) ps.gravity = stream.readShort();
1681
+ if (flags & 64) {
1682
+ const x = stream.readShort() * (180 / 32768);
1683
+ const y = stream.readShort() * (180 / 32768);
1684
+ const z = stream.readShort() * (180 / 32768);
1685
+ ps.delta_angles = { x, y, z };
1686
+ }
1687
+ if (flags & 128) {
1688
+ const x = stream.readChar() * 0.25;
1689
+ const y = stream.readChar() * 0.25;
1690
+ const z = stream.readChar() * 0.25;
1691
+ ps.viewoffset = { x, y, z };
1692
+ }
1693
+ if (flags & 256) {
1694
+ const x = stream.readAngle16();
1695
+ const y = stream.readAngle16();
1696
+ const z = stream.readAngle16();
1697
+ ps.viewangles = { x, y, z };
1698
+ }
1699
+ if (flags & 512) {
1700
+ const x = stream.readChar() * 0.25;
1701
+ const y = stream.readChar() * 0.25;
1702
+ const z = stream.readChar() * 0.25;
1703
+ ps.kick_angles = { x, y, z };
1704
+ }
1705
+ if (flags & 4096) ps.gun_index = stream.readByte();
1706
+ if (flags & 8192) {
1707
+ ps.gun_frame = stream.readByte();
1708
+ const ox = stream.readChar() * 0.25;
1709
+ const oy = stream.readChar() * 0.25;
1710
+ const oz = stream.readChar() * 0.25;
1711
+ ps.gun_offset = { x: ox, y: oy, z: oz };
1712
+ const ax = stream.readChar() * 0.25;
1713
+ const ay = stream.readChar() * 0.25;
1714
+ const az = stream.readChar() * 0.25;
1715
+ ps.gun_angles = { x: ax, y: ay, z: az };
1716
+ }
1717
+ if (flags & 1024) {
1718
+ ps.blend = [
1719
+ stream.readByte(),
1720
+ stream.readByte(),
1721
+ stream.readByte(),
1722
+ stream.readByte()
1723
+ ];
1724
+ }
1725
+ if (flags & 2048) ps.fov = stream.readByte();
1726
+ if (flags & 16384) ps.rdflags = stream.readByte();
1727
+ if (flags & 32768) ps.watertype = stream.readByte();
1728
+ const statbits = stream.readLong();
1729
+ for (let i = 0; i < 32; i++) {
1730
+ if (statbits & 1 << i) {
1731
+ ps.stats[i] = stream.readShort();
1732
+ }
1733
+ }
1734
+ return ps;
1735
+ }
1640
1736
 
1641
1737
  // src/server/helpers/bandwidth.ts
1642
1738
  function createMockRateLimiter(bytesPerSecond) {
@@ -4991,6 +5087,7 @@ export {
4991
5087
  makePlane,
4992
5088
  measureSnapshotSize,
4993
5089
  mockMonsterAttacks,
5090
+ parseProtocolPlayerState,
4994
5091
  randomVector3,
4995
5092
  renderAndCapture,
4996
5093
  renderAndExpectSnapshot,