t2-demo-parser 2.2.0 → 3.0.0

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.
Files changed (95) hide show
  1. package/README.md +170 -7
  2. package/dist/BitStream.d.ts +14 -3
  3. package/dist/BitStream.d.ts.map +1 -1
  4. package/dist/BitStream.js +28 -6
  5. package/dist/BitStream.js.map +1 -1
  6. package/dist/BitWriter.d.ts +29 -0
  7. package/dist/BitWriter.d.ts.map +1 -0
  8. package/dist/BitWriter.js +76 -0
  9. package/dist/BitWriter.js.map +1 -0
  10. package/dist/ClassRegistry.d.ts +23 -28
  11. package/dist/ClassRegistry.d.ts.map +1 -1
  12. package/dist/ClassRegistry.js +75 -84
  13. package/dist/ClassRegistry.js.map +1 -1
  14. package/dist/DataBlockParsers.d.ts.map +1 -1
  15. package/dist/DataBlockParsers.js +51 -76
  16. package/dist/DataBlockParsers.js.map +1 -1
  17. package/dist/DemoParser.d.ts +23 -22
  18. package/dist/DemoParser.d.ts.map +1 -1
  19. package/dist/DemoParser.js +218 -266
  20. package/dist/DemoParser.js.map +1 -1
  21. package/dist/EventParsers.d.ts.map +1 -1
  22. package/dist/EventParsers.js +87 -58
  23. package/dist/EventParsers.js.map +1 -1
  24. package/dist/GhostManager.d.ts +7 -1
  25. package/dist/GhostManager.d.ts.map +1 -1
  26. package/dist/GhostManager.js +231 -146
  27. package/dist/GhostManager.js.map +1 -1
  28. package/dist/HuffmanProcessor.d.ts +15 -0
  29. package/dist/HuffmanProcessor.d.ts.map +1 -1
  30. package/dist/HuffmanProcessor.js +45 -0
  31. package/dist/HuffmanProcessor.js.map +1 -1
  32. package/dist/LiveParser.d.ts +20 -1
  33. package/dist/LiveParser.d.ts.map +1 -1
  34. package/dist/LiveParser.js +31 -12
  35. package/dist/LiveParser.js.map +1 -1
  36. package/dist/PacketParser.d.ts +22 -2
  37. package/dist/PacketParser.d.ts.map +1 -1
  38. package/dist/PacketParser.js +111 -48
  39. package/dist/PacketParser.js.map +1 -1
  40. package/dist/Timeline.d.ts +5 -2
  41. package/dist/Timeline.d.ts.map +1 -1
  42. package/dist/Timeline.js +25 -12
  43. package/dist/Timeline.js.map +1 -1
  44. package/dist/cli.js +3 -0
  45. package/dist/cli.js.map +1 -1
  46. package/dist/dataBlockDataTypes.d.ts +111 -112
  47. package/dist/dataBlockDataTypes.d.ts.map +1 -1
  48. package/dist/dataBlockDataTypes.js.map +1 -1
  49. package/dist/defaultRegistry.d.ts +9 -0
  50. package/dist/defaultRegistry.d.ts.map +1 -0
  51. package/dist/defaultRegistry.js +43 -0
  52. package/dist/defaultRegistry.js.map +1 -0
  53. package/dist/eventDataTypes.d.ts +74 -72
  54. package/dist/eventDataTypes.d.ts.map +1 -1
  55. package/dist/eventDataTypes.js.map +1 -1
  56. package/dist/ghostDataTypes.d.ts +125 -131
  57. package/dist/ghostDataTypes.d.ts.map +1 -1
  58. package/dist/ghostDataTypes.js.map +1 -1
  59. package/dist/index.d.ts +6 -4
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +4 -2
  62. package/dist/index.js.map +1 -1
  63. package/dist/types.d.ts +51 -2
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js +6 -0
  66. package/dist/types.js.map +1 -1
  67. package/package.json +4 -1
  68. package/dist/BitStream.test.d.ts +0 -2
  69. package/dist/BitStream.test.d.ts.map +0 -1
  70. package/dist/BitStream.test.js +0 -419
  71. package/dist/BitStream.test.js.map +0 -1
  72. package/dist/ClassRegistry.test.d.ts +0 -2
  73. package/dist/ClassRegistry.test.d.ts.map +0 -1
  74. package/dist/ClassRegistry.test.js +0 -83
  75. package/dist/ClassRegistry.test.js.map +0 -1
  76. package/dist/DataBlockParsers.test.d.ts +0 -2
  77. package/dist/DataBlockParsers.test.d.ts.map +0 -1
  78. package/dist/DataBlockParsers.test.js +0 -294
  79. package/dist/DataBlockParsers.test.js.map +0 -1
  80. package/dist/DemoParser.test.d.ts +0 -2
  81. package/dist/DemoParser.test.d.ts.map +0 -1
  82. package/dist/DemoParser.test.js +0 -472
  83. package/dist/DemoParser.test.js.map +0 -1
  84. package/dist/GhostStateAccumulator.test.d.ts +0 -2
  85. package/dist/GhostStateAccumulator.test.d.ts.map +0 -1
  86. package/dist/GhostStateAccumulator.test.js +0 -201
  87. package/dist/GhostStateAccumulator.test.js.map +0 -1
  88. package/dist/GhostTracker.test.d.ts +0 -2
  89. package/dist/GhostTracker.test.d.ts.map +0 -1
  90. package/dist/GhostTracker.test.js +0 -64
  91. package/dist/GhostTracker.test.js.map +0 -1
  92. package/dist/IncrementalParser.test.d.ts +0 -2
  93. package/dist/IncrementalParser.test.d.ts.map +0 -1
  94. package/dist/IncrementalParser.test.js +0 -226
  95. package/dist/IncrementalParser.test.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ghostDataTypes.d.ts","sourceRoot":"","sources":["../src/ghostDataTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ghostDataTypes.d.ts","sourceRoot":"","sources":["../src/ghostDataTypes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ghostDataTypes.js","sourceRoot":"","sources":["../src/ghostDataTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n Vec3,\n Quat,\n Color3,\n Color4,\n AffineTransform,\n MatrixF,\n} from \"./dataTypes.js\";\n\n// ---------------------------------------------------------------------------\n// Sub-structures\n// ---------------------------------------------------------------------------\n\nexport interface MoveData {\n pyaw: number;\n ppitch: number;\n proll: number;\n px: number;\n py: number;\n pz: number;\n freeLook: boolean;\n trigger: boolean[];\n}\n\nexport interface SoundSlot {\n index: number;\n playing: boolean;\n profileId?: number;\n}\n\nexport interface ThreadState {\n index: number;\n sequence: number;\n state: number;\n forward: boolean;\n atEnd: boolean;\n}\n\nexport interface ImageSlot {\n index: number;\n dataBlockId?: number;\n skinTagIndex?: number;\n skinName?: string;\n triggerDown?: boolean;\n loaded?: boolean;\n ammo?: boolean;\n wet?: boolean;\n target?: boolean;\n fireCount?: number;\n imageExtraFlag?: boolean;\n}\n\nexport interface WheelState {\n avel: number;\n dy: number;\n dx: number;\n}\n\n// ---------------------------------------------------------------------------\n// GameBase hierarchy\n// ---------------------------------------------------------------------------\n\nexport interface GameBaseGhostData {\n dataBlockId?: number;\n targetId?: number;\n [key: string]: unknown;\n}\n\nexport interface ShapeBaseGhostData extends GameBaseGhostData {\n damageLevel?: number;\n damageState?: number;\n blowApart?: boolean;\n damageDir?: Vec3;\n sounds?: SoundSlot[];\n threads?: ThreadState[];\n images?: ImageSlot[];\n imageSkinDirty?: boolean;\n cloaked?: boolean;\n isControlled?: boolean;\n fading?: boolean;\n fadeOut?: boolean;\n fadeTime?: number;\n fadeVal?: boolean;\n stateBMode?: boolean;\n energyPackOn?: boolean;\n shieldNormal?: Vec3;\n energyPercent?: number;\n stateValue1?: number;\n stateValue2?: number;\n mountObject?: number;\n mountNode?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Player\n// ---------------------------------------------------------------------------\n\nexport interface PlayerGhostData extends ShapeBaseGhostData {\n impactSound?: number;\n action?: number;\n actionHoldAtEnd?: boolean;\n actionAtEnd?: boolean;\n actionFirstPerson?: boolean;\n actionAnimPos?: number;\n armAction?: number;\n actionState?: number;\n recoverTicks?: number;\n moveFlag0?: boolean;\n moveFlag1?: boolean;\n position?: Vec3;\n velocity?: Vec3;\n headX?: number;\n headZ?: number;\n rotationZ?: number;\n move?: MoveData;\n allowWarp?: boolean;\n energy?: number;\n}\n\nexport interface PlayerPacketData {\n energyLevel?: number;\n rechargeRate?: number;\n actionState?: number;\n recoverTicks?: number;\n jumpDelay?: number;\n position?: Vec3;\n velocity?: Vec3;\n jumpSurfaceLastContact?: number;\n headX?: number;\n headZ?: number;\n rotationZ?: number;\n controlObjectGhost?: number;\n controlObjectData?: Record<string, unknown>;\n disableMove?: boolean;\n pilot?: boolean;\n [key: string]: unknown;\n}\n\n// ---------------------------------------------------------------------------\n// Vehicles\n// ---------------------------------------------------------------------------\n\nexport interface VehicleGhostData extends ShapeBaseGhostData {\n jetting?: boolean;\n _controlledEarlyReturn?: boolean;\n steeringYaw?: number;\n steeringPitch?: number;\n move?: MoveData;\n frozen?: boolean;\n position?: Vec3;\n angPosition?: Quat;\n linMomentum?: Vec3;\n angMomentum?: Vec3;\n energy?: number;\n}\n\nexport interface VehiclePacketData {\n energyLevel?: number;\n rechargeRate?: number;\n steering?: { x: number; y: number };\n linPosition?: Vec3;\n angPosition?: Quat;\n linMomentum?: Vec3;\n angMomentum?: Vec3;\n disableMove?: boolean;\n frozen?: boolean;\n [key: string]: unknown;\n}\n\nexport interface WheeledVehicleGhostData extends VehicleGhostData {\n braking?: boolean;\n wheels?: WheelState[];\n}\n\nexport interface WheeledVehiclePacketData extends VehiclePacketData {\n braking?: boolean;\n wheels?: WheelState[];\n}\n\nexport interface FlyingVehicleGhostData extends VehicleGhostData {\n createHeightOn?: boolean;\n thrustDirection?: number;\n}\n\nexport interface HoverVehicleGhostData extends VehicleGhostData {\n thrustDirection?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Items & static shapes\n// ---------------------------------------------------------------------------\n\nexport interface ItemGhostData extends ShapeBaseGhostData {\n rotate?: boolean;\n isStatic?: boolean;\n collideable?: boolean;\n scale?: Vec3;\n collisionObject?: number;\n rotation?: { zSign: number; angle: number };\n position?: Vec3;\n atRest?: boolean;\n velocity?: Vec3;\n warp?: boolean;\n}\n\nexport interface StaticShapeGhostData extends ShapeBaseGhostData {\n transform?: AffineTransform | MatrixF;\n position?: Vec3;\n scale?: Vec3;\n powered?: boolean;\n}\n\nexport type ScopeAlwaysShapeGhostData = StaticShapeGhostData;\n\nexport interface BeaconObjectGhostData extends StaticShapeGhostData {\n beaconType?: number;\n}\n\nexport interface TurretGhostData extends StaticShapeGhostData {\n capacitorEnergy?: number;\n phi?: number;\n theta?: number;\n activationLevel?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Mission markers\n// ---------------------------------------------------------------------------\n\nexport interface MissionMarkerGhostData extends ShapeBaseGhostData {\n transform?: AffineTransform;\n position?: Vec3;\n scale?: Vec3;\n}\n\nexport interface WayPointGhostData extends MissionMarkerGhostData {\n name?: string;\n teamId?: number;\n hidden?: boolean;\n}\n\nexport interface SpawnSphereGhostData extends MissionMarkerGhostData {\n radius?: number;\n sphereWeight?: number;\n indoorWeight?: number;\n outdoorWeight?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Camera\n// ---------------------------------------------------------------------------\n\nexport interface CameraGhostData extends ShapeBaseGhostData {\n posX?: number;\n posY?: number;\n posZ?: number;\n fovOrDist?: number;\n orbitParam?: number;\n}\n\nexport interface CameraPacketData {\n energyLevel?: number;\n rechargeRate?: number;\n position?: Vec3;\n rotX?: number;\n rotZ?: number;\n cameraMode?: number;\n minOrbitDist?: number;\n maxOrbitDist?: number;\n curOrbitDist?: number;\n observingClientObject?: boolean;\n orbitObjectGhostIndex?: number;\n orbitPoint?: Vec3;\n [key: string]: unknown;\n}\n\n// ---------------------------------------------------------------------------\n// Standalone ghost types (not GameBase subclasses)\n// ---------------------------------------------------------------------------\n\nexport interface MarkerGhostData {\n position?: Vec3;\n [key: string]: unknown;\n}\n\nexport interface SimpleNetObjectGhostData {\n message?: string;\n [key: string]: unknown;\n}\n\nexport interface InteriorInstanceGhostData {\n crc?: number;\n interiorFile?: string;\n showTerrainInside?: boolean;\n transform?: MatrixF;\n scale?: Vec3;\n alarmState?: boolean;\n skinBase?: string;\n audioProfileId?: number;\n audioEnvironmentId?: number;\n [key: string]: unknown;\n}\n\nexport interface TSStaticGhostData {\n transform?: MatrixF;\n scale?: Vec3;\n shapeName?: string;\n [key: string]: unknown;\n}\n\nexport interface TerrainBlockGhostData {\n crc?: number;\n terrFileName?: string;\n detailTextureName?: string;\n squareSize?: number;\n emptySquareRuns?: number[];\n emptySquareRunCount?: number;\n [key: string]: unknown;\n}\n\nexport interface TriggerGhostData {\n tickPeriodMS?: number;\n [key: string]: unknown;\n}\n\nexport interface VehicleBlockerGhostData {\n transform?: MatrixF;\n boundsMin?: Vec3;\n boundsMax?: Vec3;\n [key: string]: unknown;\n}\n\nexport interface MissionAreaGhostData {\n area?: { x: number; y: number; w: number; h: number };\n flightCeiling?: number;\n flightCeilingRange?: number;\n [key: string]: unknown;\n}\n\nexport interface AudioEmitterGhostData {\n initialUpdate?: boolean;\n transform?: AffineTransform;\n audioProfileId?: number;\n audioDescriptionId?: number;\n filename?: string;\n useProfileDescription?: boolean;\n volume?: number;\n isLooping?: boolean;\n is3D?: boolean;\n minDistance?: number;\n maxDistance?: number;\n coneInsideAngle?: number;\n coneOutsideAngle?: number;\n coneOutsideVolume?: number;\n coneVector?: Vec3;\n loopCount?: number;\n minLoopGap?: number;\n maxLoopGap?: number;\n audioType?: number;\n outsideAmbient?: boolean;\n [key: string]: unknown;\n}\n\nexport interface PhysicalZoneGhostData {\n transform?: MatrixF;\n scale?: Vec3;\n points?: Vec3[];\n planes?: Array<{ x: number; y: number; z: number; d: number }>;\n edges?: Array<{\n face0: number;\n face1: number;\n vertex0: number;\n vertex1: number;\n }>;\n velocityMod?: number;\n gravityMod?: number;\n appliedForce?: Vec3;\n active?: boolean;\n [key: string]: unknown;\n}\n\n// ---------------------------------------------------------------------------\n// Debris\n// ---------------------------------------------------------------------------\n\nexport interface DebrisGhostData extends GameBaseGhostData {\n value0?: number;\n value1?: number;\n value2?: number;\n value3?: number;\n value4?: number;\n value5?: number;\n value6?: number;\n value7?: number;\n value8?: number;\n value9?: number;\n value10?: number;\n value11?: number;\n value12?: number;\n value13?: number;\n value14?: number;\n bool0?: boolean;\n bool1?: boolean;\n bool2?: boolean;\n bool3?: boolean;\n bool4?: boolean;\n bool5?: boolean;\n bool6?: boolean;\n string0?: string;\n string1?: string;\n objectRefs?: number[];\n objectRef2?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Projectiles\n// ---------------------------------------------------------------------------\n\nexport interface ProjectileGhostData extends GameBaseGhostData {}\n\nexport interface LinearProjectileGhostData extends GameBaseGhostData {\n hidden?: boolean;\n explodePosition?: Vec3;\n explodeNormal?: Vec3;\n endedWithDecal?: boolean;\n position?: Vec3;\n direction?: Vec3;\n currTick?: number;\n sourceObject?: number;\n sourceSlot?: number;\n excessVel?: number;\n excessDir?: Vec3;\n vehicleObject?: number;\n}\n\nexport interface BombProjectileGhostData extends GameBaseGhostData {\n position?: Vec3;\n velocity?: Vec3;\n endPoint?: Vec3;\n endNormal?: Vec3;\n currTick?: number;\n resetFlag?: boolean;\n explodePoint?: Vec3;\n explodeNormal?: Vec3;\n sourceObject?: number;\n sourceSlot?: number;\n vehicleObject?: number;\n}\n\nexport interface GrenadeProjectileGhostData extends GameBaseGhostData {\n position?: Vec3;\n velocity?: Vec3;\n currTick?: number;\n quickSplash?: boolean;\n explodePoint?: Vec3;\n explodeNormal?: Vec3;\n sourceObject?: number;\n sourceSlot?: number;\n vehicleObject?: number;\n}\n\nexport interface SeekerProjectileGhostData extends GameBaseGhostData {\n explodePosition?: Vec3;\n explodeNormal?: Vec3;\n position?: Vec3;\n velocity?: Vec3;\n targetDirection?: Vec3;\n targetMode?: number;\n targetGhost?: number;\n orientation?: Vec3;\n sourceObject?: number;\n sourceSlot?: number;\n timeoutReset?: boolean;\n}\n\nexport interface SniperProjectileGhostData extends GameBaseGhostData {\n energyPercentage?: number;\n initialPosition?: Vec3;\n endPos?: Vec3;\n truncated?: boolean;\n hitWater?: boolean;\n sourceObject?: number;\n sourceSlot?: number;\n clientOwned?: boolean;\n}\n\nexport interface ShockLanceProjectileGhostData extends GameBaseGhostData {\n targetObject?: number;\n start?: Vec3;\n end?: Vec3;\n hitObject?: boolean;\n sourceObject?: number;\n sourceSlot?: number;\n}\n\nexport interface ELFProjectileGhostData extends GameBaseGhostData {\n sourceObject?: number;\n sourceSlot?: number;\n targetObject?: number;\n}\n\nexport interface RepairProjectileGhostData extends GameBaseGhostData {\n sourceObject?: number;\n sourceSlot?: number;\n repairingObject?: number;\n}\n\nexport interface TargetProjectileGhostData extends GameBaseGhostData {\n initialPosition?: Vec3;\n endPos?: Vec3;\n truncated?: boolean;\n sourceObject?: number;\n sourceSlot?: number;\n clientOwned?: boolean;\n}\n\n// ---------------------------------------------------------------------------\n// Force fields\n// ---------------------------------------------------------------------------\n\nexport interface ForceFieldBareGhostData extends GameBaseGhostData {\n transform?: AffineTransform;\n scale?: Vec3;\n state?: number;\n position?: number;\n}\n\n// ---------------------------------------------------------------------------\n// Environment & effects\n// ---------------------------------------------------------------------------\n\nexport interface SunGhostData {\n textures?: string[];\n direction?: Vec3;\n color?: Color4;\n ambient?: Color4;\n extraLightProps?: number[];\n [key: string]: unknown;\n}\n\nexport interface SkyGhostData {\n materialList?: string;\n fogColor?: Color3;\n fogVolumeCount?: number;\n useSkyTextures?: boolean;\n renderBottomTexture?: boolean;\n skySolidColor?: Color3;\n windEffectPrecipitation?: boolean;\n fogVolumes?: Array<{\n visibleDistance: number;\n minHeight: number;\n maxHeight: number;\n color: Color3;\n }>;\n cloudLayers?: Array<{\n texture: string;\n heightPercent: number;\n speed: number;\n }>;\n windVelocity?: Vec3;\n stormCurrent?: number;\n stormInit?: {\n startPct: number;\n duration: number;\n indexOrMode: number;\n startTime: number;\n targetPct: number;\n };\n stormCloudsOn?: boolean;\n stormFogOn?: boolean;\n visibleDistance?: number;\n fogDistance?: number;\n stormType?: number;\n stormMagnitude?: number;\n stormTimeline?: {\n startPct: number;\n duration: number;\n indexOrMode: number;\n };\n stormCloudProfile?: {\n enabled: number;\n value0: number;\n value1: number;\n value2: number;\n };\n [key: string]: unknown;\n}\n\nexport interface LightningGhostData extends GameBaseGhostData {\n position?: Vec3;\n scale?: Vec3;\n strikeWidth?: number;\n chanceToHitTarget?: number;\n strikeRadius?: number;\n boltStartRadius?: number;\n color?: Color3;\n fadeColor?: Color3;\n useFog?: boolean;\n strikesPerMinute?: number;\n}\n\nexport interface WaterBlockGhostData {\n transform?: AffineTransform;\n scale?: Vec3;\n surfaceName?: string;\n envMapName?: string;\n submergeNames?: string[];\n liquidType?: number;\n density?: number;\n viscosity?: number;\n waveMagnitude?: number;\n surfaceOpacity?: number;\n envMapIntensity?: number;\n removeWetEdges?: boolean;\n audioEnvironmentId?: number;\n [key: string]: unknown;\n}\n\nexport interface SplashGhostData extends GameBaseGhostData {\n position?: Vec3;\n}\n\nexport interface ShockwaveGhostData extends GameBaseGhostData {\n position?: Vec3;\n normal?: Vec3;\n}\n\nexport interface FireballAtmosphereGhostData extends GameBaseGhostData {\n dropRadius?: number;\n dropsPerMinute?: number;\n maxDropAngle?: number;\n minDropAngle?: number;\n startVelocity?: number;\n dropHeight?: number;\n dropDir?: Vec3;\n}\n\nexport interface PrecipitationGhostData extends GameBaseGhostData {\n percentage?: number;\n colorCount?: number;\n colors?: Color4[];\n offsetSpeed?: number;\n minVelocity?: number;\n maxVelocity?: number;\n maxDrops?: number;\n maxRadius?: number;\n stormLastTime?: number;\n stormTime?: number;\n stormEndPercentage?: number;\n stormPrecipitationOn?: boolean;\n percentageUpdate?: number;\n}\n\nexport interface ParticleEmissionDummyGhostData extends GameBaseGhostData {\n transform?: MatrixF;\n scale?: Vec3;\n emitterDatablockId?: number;\n}\n\n// ---------------------------------------------------------------------------\n// AI\n// ---------------------------------------------------------------------------\n\nexport interface StationFXPersonalGhostData extends GameBaseGhostData {\n stationObject?: number;\n}\n\nexport interface AIObjectiveGhostData extends ShapeBaseGhostData {\n transform?: AffineTransform;\n scale?: Vec3;\n unknownFlag?: boolean;\n}\n"]}
1
+ {"version":3,"file":"ghostDataTypes.js","sourceRoot":"","sources":["../src/ghostDataTypes.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n Vec3,\n Quat,\n Color3,\n Color4,\n AffineTransform,\n MatrixF,\n} from \"./dataTypes.js\";\n\n// ---------------------------------------------------------------------------\n// Sub-structures\n// ---------------------------------------------------------------------------\n\nexport type MoveData = {\n pyaw: number;\n ppitch: number;\n proll: number;\n px: number;\n py: number;\n pz: number;\n freeLook: boolean;\n trigger: boolean[];\n};\n\nexport type SoundSlot = {\n index: number;\n playing: boolean;\n profileId?: number;\n};\n\nexport type ThreadState = {\n index: number;\n sequence: number;\n state: number;\n forward: boolean;\n atEnd: boolean;\n};\n\nexport type ImageSlot = {\n index: number;\n dataBlockId?: number;\n skinTagIndex?: number;\n skinName?: string;\n triggerDown?: boolean;\n loaded?: boolean;\n ammo?: boolean;\n wet?: boolean;\n target?: boolean;\n fireCount?: number;\n imageExtraFlag?: boolean;\n};\n\nexport type WheelState = {\n avel: number;\n dy: number;\n dx: number;\n};\n\n// ---------------------------------------------------------------------------\n// GameBase hierarchy\n// ---------------------------------------------------------------------------\n\nexport type GameBaseGhostData = {\n dataBlockId?: number;\n targetId?: number;\n};\n\nexport type ShapeBaseGhostData = GameBaseGhostData & {\n damageLevel?: number;\n damageState?: number;\n blowApart?: boolean;\n damageDir?: Vec3;\n sounds?: SoundSlot[];\n threads?: ThreadState[];\n images?: ImageSlot[];\n imageSkinDirty?: boolean;\n cloaked?: boolean;\n isControlled?: boolean;\n fading?: boolean;\n fadeOut?: boolean;\n fadeTime?: number;\n fadeVal?: boolean;\n stateBMode?: boolean;\n energyPackOn?: boolean;\n shieldNormal?: Vec3;\n energyPercent?: number;\n stateValue1?: number;\n stateValue2?: number;\n mountObject?: number;\n mountNode?: number;\n};\n\n// ---------------------------------------------------------------------------\n// Player\n// ---------------------------------------------------------------------------\n\nexport type PlayerGhostData = ShapeBaseGhostData & {\n impactSound?: number;\n action?: number;\n actionHoldAtEnd?: boolean;\n actionAtEnd?: boolean;\n actionFirstPerson?: boolean;\n actionAnimPos?: number;\n armAction?: number;\n actionState?: number;\n recoverTicks?: number;\n moveFlag0?: boolean;\n moveFlag1?: boolean;\n position?: Vec3;\n velocity?: Vec3;\n headX?: number;\n headZ?: number;\n rotationZ?: number;\n move?: MoveData;\n allowWarp?: boolean;\n energy?: number;\n};\n\n/** ShapeBase::readPacketData: energy level + recharge rate. */\nexport type ShapeBasePacketData = {\n energyLevel?: number;\n rechargeRate?: number;\n};\n\n/** Turret::readPacketData (FUN_00655d70). */\nexport type TurretPacketData = ShapeBasePacketData & {\n /** Ranged 0..4 (3 bits); stored at Turret+0x88c. Meaning unverified. */\n turretState: number;\n /** Three F32s copied into the turret's current rotation state\n * (+0x890..+0x898 → +0x8dc/+0x8d4/+0x8d8). Meaning unverified. */\n rotationValues: [number, number, number];\n};\n\nexport type PlayerPacketData = {\n energyLevel?: number;\n rechargeRate?: number;\n actionState?: number;\n recoverTicks?: number;\n jumpDelay?: number;\n position?: Vec3;\n velocity?: Vec3;\n jumpSurfaceLastContact?: number;\n headX?: number;\n headZ?: number;\n rotationZ?: number;\n controlObjectGhost?: number;\n controlObjectData?: Record<string, unknown>;\n disableMove?: boolean;\n pilot?: boolean;\n};\n\n// ---------------------------------------------------------------------------\n// Vehicles\n// ---------------------------------------------------------------------------\n\nexport type VehicleGhostData = ShapeBaseGhostData & {\n jetting?: boolean;\n steeringYaw?: number;\n steeringPitch?: number;\n move?: MoveData;\n frozen?: boolean;\n position?: Vec3;\n angPosition?: Quat;\n linMomentum?: Vec3;\n angMomentum?: Vec3;\n energy?: number;\n};\n\nexport type VehiclePacketData = {\n energyLevel?: number;\n rechargeRate?: number;\n steering?: { x: number; y: number };\n linPosition?: Vec3;\n angPosition?: Quat;\n linMomentum?: Vec3;\n angMomentum?: Vec3;\n disableMove?: boolean;\n frozen?: boolean;\n};\n\nexport type WheeledVehicleGhostData = VehicleGhostData & {\n braking?: boolean;\n wheels?: WheelState[];\n};\n\nexport type WheeledVehiclePacketData = VehiclePacketData & {\n braking?: boolean;\n wheels?: WheelState[];\n};\n\nexport type FlyingVehicleGhostData = VehicleGhostData & {\n createHeightOn?: boolean;\n thrustDirection?: number;\n};\n\nexport type HoverVehicleGhostData = VehicleGhostData & {\n thrustDirection?: number;\n};\n\n// ---------------------------------------------------------------------------\n// Items & static shapes\n// ---------------------------------------------------------------------------\n\nexport type ItemGhostData = ShapeBaseGhostData & {\n rotate?: boolean;\n isStatic?: boolean;\n collideable?: boolean;\n scale?: Vec3;\n collisionObject?: number;\n rotation?: { zSign: number; angle: number };\n position?: Vec3;\n atRest?: boolean;\n velocity?: Vec3;\n warp?: boolean;\n};\n\nexport type StaticShapeGhostData = ShapeBaseGhostData & {\n transform?: AffineTransform | MatrixF;\n position?: Vec3;\n scale?: Vec3;\n powered?: boolean;\n};\n\nexport type ScopeAlwaysShapeGhostData = StaticShapeGhostData;\n\nexport type BeaconObjectGhostData = StaticShapeGhostData & {\n beaconType?: number;\n};\n\nexport type TurretGhostData = StaticShapeGhostData & {\n capacitorEnergy?: number;\n phi?: number;\n theta?: number;\n activationLevel?: number;\n};\n\n// ---------------------------------------------------------------------------\n// Mission markers\n// ---------------------------------------------------------------------------\n\nexport type MissionMarkerGhostData = ShapeBaseGhostData & {\n transform?: AffineTransform;\n position?: Vec3;\n scale?: Vec3;\n};\n\nexport type WayPointGhostData = MissionMarkerGhostData & {\n name?: string;\n teamId?: number;\n hidden?: boolean;\n};\n\nexport type SpawnSphereGhostData = MissionMarkerGhostData & {\n radius?: number;\n sphereWeight?: number;\n indoorWeight?: number;\n outdoorWeight?: number;\n};\n\n// ---------------------------------------------------------------------------\n// Camera\n// ---------------------------------------------------------------------------\n\nexport type CameraGhostData = ShapeBaseGhostData & {\n posX?: number;\n posY?: number;\n posZ?: number;\n fovOrDist?: number;\n orbitParam?: number;\n};\n\nexport type CameraPacketData = {\n energyLevel?: number;\n rechargeRate?: number;\n position?: Vec3;\n rotX?: number;\n rotZ?: number;\n cameraMode?: number;\n minOrbitDist?: number;\n maxOrbitDist?: number;\n curOrbitDist?: number;\n observingClientObject?: boolean;\n orbitObjectGhostIndex?: number;\n orbitPoint?: Vec3;\n};\n\n// ---------------------------------------------------------------------------\n// Standalone ghost types (not GameBase subclasses)\n// ---------------------------------------------------------------------------\n\nexport type MarkerGhostData = {\n position?: Vec3;\n};\n\nexport type SimpleNetObjectGhostData = {\n message?: string;\n};\n\nexport type InteriorInstanceGhostData = {\n crc?: number;\n interiorFile?: string;\n showTerrainInside?: boolean;\n transform?: MatrixF;\n scale?: Vec3;\n alarmState?: boolean;\n skinBase?: string;\n audioProfileId?: number;\n audioEnvironmentId?: number;\n};\n\nexport type TSStaticGhostData = {\n transform?: MatrixF;\n scale?: Vec3;\n shapeName?: string;\n};\n\nexport type TerrainBlockGhostData = {\n crc?: number;\n terrFileName?: string;\n detailTextureName?: string;\n squareSize?: number;\n emptySquareRuns?: number[];\n emptySquareRunCount?: number;\n};\n\nexport type TriggerGhostData = {\n tickPeriodMS?: number;\n};\n\nexport type VehicleBlockerGhostData = {\n transform?: MatrixF;\n boundsMin?: Vec3;\n boundsMax?: Vec3;\n};\n\nexport type MissionAreaGhostData = {\n area?: { x: number; y: number; w: number; h: number };\n flightCeiling?: number;\n flightCeilingRange?: number;\n};\n\nexport type AudioEmitterGhostData = {\n initialUpdate?: boolean;\n transform?: AffineTransform;\n audioProfileId?: number;\n audioDescriptionId?: number;\n filename?: string;\n useProfileDescription?: boolean;\n volume?: number;\n isLooping?: boolean;\n is3D?: boolean;\n minDistance?: number;\n maxDistance?: number;\n coneInsideAngle?: number;\n coneOutsideAngle?: number;\n coneOutsideVolume?: number;\n coneVector?: Vec3;\n loopCount?: number;\n minLoopGap?: number;\n maxLoopGap?: number;\n audioType?: number;\n outsideAmbient?: boolean;\n};\n\nexport type PhysicalZoneGhostData = {\n transform?: MatrixF;\n scale?: Vec3;\n points?: Vec3[];\n planes?: Array<{ x: number; y: number; z: number; d: number }>;\n edges?: Array<{\n face0: number;\n face1: number;\n vertex0: number;\n vertex1: number;\n }>;\n velocityMod?: number;\n gravityMod?: number;\n appliedForce?: Vec3;\n active?: boolean;\n};\n\n// ---------------------------------------------------------------------------\n// Debris\n// ---------------------------------------------------------------------------\n\nexport type DebrisGhostData = GameBaseGhostData & {\n value0?: number;\n value1?: number;\n value2?: number;\n value3?: number;\n value4?: number;\n value5?: number;\n value6?: number;\n value7?: number;\n value8?: number;\n value9?: number;\n value10?: number;\n value11?: number;\n value12?: number;\n value13?: number;\n value14?: number;\n bool0?: boolean;\n bool1?: boolean;\n bool2?: boolean;\n bool3?: boolean;\n bool4?: boolean;\n bool5?: boolean;\n bool6?: boolean;\n string0?: string;\n string1?: string;\n objectRefs?: number[];\n};\n\n// ---------------------------------------------------------------------------\n// Projectiles\n// ---------------------------------------------------------------------------\n\nexport interface ProjectileGhostData extends GameBaseGhostData {}\n\nexport type LinearProjectileGhostData = GameBaseGhostData & {\n hidden?: boolean;\n explodePosition?: Vec3;\n explodeNormal?: Vec3;\n endedWithDecal?: boolean;\n position?: Vec3;\n direction?: Vec3;\n currTick?: number;\n sourceObject?: number;\n sourceSlot?: number;\n excessVel?: number;\n excessDir?: Vec3;\n vehicleObject?: number;\n};\n\nexport type BombProjectileGhostData = GameBaseGhostData & {\n position?: Vec3;\n velocity?: Vec3;\n endPoint?: Vec3;\n endNormal?: Vec3;\n currTick?: number;\n resetFlag?: boolean;\n explodePoint?: Vec3;\n explodeNormal?: Vec3;\n sourceObject?: number;\n sourceSlot?: number;\n vehicleObject?: number;\n};\n\nexport type GrenadeProjectileGhostData = GameBaseGhostData & {\n position?: Vec3;\n velocity?: Vec3;\n currTick?: number;\n quickSplash?: boolean;\n explodePoint?: Vec3;\n explodeNormal?: Vec3;\n sourceObject?: number;\n sourceSlot?: number;\n vehicleObject?: number;\n};\n\nexport type SeekerProjectileGhostData = GameBaseGhostData & {\n explodePosition?: Vec3;\n explodeNormal?: Vec3;\n position?: Vec3;\n velocity?: Vec3;\n targetDirection?: Vec3;\n targetMode?: number;\n targetGhost?: number;\n orientation?: Vec3;\n sourceObject?: number;\n sourceSlot?: number;\n timeoutReset?: boolean;\n};\n\nexport type SniperProjectileGhostData = GameBaseGhostData & {\n energyPercentage?: number;\n initialPosition?: Vec3;\n endPos?: Vec3;\n truncated?: boolean;\n hitWater?: boolean;\n sourceObject?: number;\n sourceSlot?: number;\n clientOwned?: boolean;\n};\n\nexport type ShockLanceProjectileGhostData = GameBaseGhostData & {\n targetObject?: number;\n start?: Vec3;\n end?: Vec3;\n hitObject?: boolean;\n sourceObject?: number;\n sourceSlot?: number;\n};\n\nexport type ELFProjectileGhostData = GameBaseGhostData & {\n sourceObject?: number;\n sourceSlot?: number;\n targetObject?: number;\n};\n\nexport type RepairProjectileGhostData = GameBaseGhostData & {\n sourceObject?: number;\n sourceSlot?: number;\n repairingObject?: number;\n};\n\nexport type TargetProjectileGhostData = GameBaseGhostData & {\n initialPosition?: Vec3;\n endPos?: Vec3;\n truncated?: boolean;\n sourceObject?: number;\n sourceSlot?: number;\n clientOwned?: boolean;\n};\n\n// ---------------------------------------------------------------------------\n// Force fields\n// ---------------------------------------------------------------------------\n\nexport type ForceFieldBareGhostData = GameBaseGhostData & {\n transform?: AffineTransform;\n scale?: Vec3;\n state?: number;\n position?: number;\n};\n\n// ---------------------------------------------------------------------------\n// Environment & effects\n// ---------------------------------------------------------------------------\n\nexport type SunGhostData = {\n textures?: string[];\n direction?: Vec3;\n color?: Color4;\n ambient?: Color4;\n extraLightProps?: number[];\n};\n\nexport type SkyGhostData = {\n materialList?: string;\n fogColor?: Color3;\n fogVolumeCount?: number;\n useSkyTextures?: boolean;\n renderBottomTexture?: boolean;\n skySolidColor?: Color3;\n windEffectPrecipitation?: boolean;\n fogVolumes?: Array<{\n visibleDistance: number;\n minHeight: number;\n maxHeight: number;\n color: Color3;\n }>;\n cloudLayers?: Array<{\n texture: string;\n heightPercent: number;\n speed: number;\n }>;\n windVelocity?: Vec3;\n stormCurrent?: number;\n stormInit?: {\n startPct: number;\n duration: number;\n indexOrMode: number;\n startTime: number;\n targetPct: number;\n };\n stormCloudsOn?: boolean;\n stormFogOn?: boolean;\n visibleDistance?: number;\n fogDistance?: number;\n stormType?: number;\n stormMagnitude?: number;\n stormTimeline?: {\n startPct: number;\n duration: number;\n indexOrMode: number;\n };\n stormCloudProfile?: {\n enabled: number;\n value0: number;\n value1: number;\n value2: number;\n };\n};\n\nexport type LightningGhostData = GameBaseGhostData & {\n position?: Vec3;\n scale?: Vec3;\n strikeWidth?: number;\n chanceToHitTarget?: number;\n strikeRadius?: number;\n boltStartRadius?: number;\n color?: Color3;\n fadeColor?: Color3;\n useFog?: boolean;\n strikesPerMinute?: number;\n};\n\nexport type WaterBlockGhostData = {\n transform?: AffineTransform;\n scale?: Vec3;\n surfaceName?: string;\n envMapName?: string;\n submergeNames?: string[];\n liquidType?: number;\n density?: number;\n viscosity?: number;\n waveMagnitude?: number;\n surfaceOpacity?: number;\n envMapIntensity?: number;\n removeWetEdges?: boolean;\n audioEnvironmentId?: number;\n};\n\nexport type SplashGhostData = GameBaseGhostData & {\n position?: Vec3;\n};\n\nexport type ShockwaveGhostData = GameBaseGhostData & {\n position?: Vec3;\n normal?: Vec3;\n};\n\nexport type FireballAtmosphereGhostData = GameBaseGhostData & {\n dropRadius?: number;\n dropsPerMinute?: number;\n maxDropAngle?: number;\n minDropAngle?: number;\n startVelocity?: number;\n dropHeight?: number;\n dropDir?: Vec3;\n};\n\nexport type PrecipitationGhostData = GameBaseGhostData & {\n percentage?: number;\n colorCount?: number;\n colors?: Color4[];\n offsetSpeed?: number;\n minVelocity?: number;\n maxVelocity?: number;\n maxDrops?: number;\n maxRadius?: number;\n stormLastTime?: number;\n stormTime?: number;\n stormEndPercentage?: number;\n stormPrecipitationOn?: boolean;\n percentageUpdate?: number;\n};\n\nexport type ParticleEmissionDummyGhostData = GameBaseGhostData & {\n transform?: MatrixF;\n scale?: Vec3;\n emitterDatablockId?: number;\n};\n\n// ---------------------------------------------------------------------------\n// AI\n// ---------------------------------------------------------------------------\n\nexport type StationFXPersonalGhostData = GameBaseGhostData & {\n stationObject?: number;\n};\n\nexport type AIObjectiveGhostData = ShapeBaseGhostData & {\n transform?: AffineTransform;\n scale?: Vec3;\n unknownFlag?: boolean;\n};\n"]}
package/dist/index.d.ts CHANGED
@@ -1,18 +1,20 @@
1
1
  export { DemoParser } from "./DemoParser.js";
2
2
  export { BitStream } from "./BitStream.js";
3
+ export { BitWriter } from "./BitWriter.js";
4
+ export { createDefaultRegistry } from "./defaultRegistry.js";
3
5
  export { PacketParser } from "./PacketParser.js";
4
6
  export { ClassRegistry } from "./ClassRegistry.js";
5
7
  export { GhostTracker } from "./GhostManager.js";
6
- export { createLiveParser, passiveObserverProtocolState, } from "./LiveParser.js";
8
+ export { createLiveParser, passiveObserverProtocolState, freshConnectionProtocolState, } from "./LiveParser.js";
7
9
  export type { LiveParserKit, LiveParserSeed } from "./LiveParser.js";
8
10
  export { GhostStateAccumulator, mergeGhostParsedData, } from "./GhostStateAccumulator.js";
9
11
  export { buildTimeline, getTimelineStats, exportTimeline } from "./Timeline.js";
10
- export type { DemoHeader, DemoFile, DemoBlock, InitialBlockData, ConnectionProtocolState, DataBlockHeader, PathManagerEntry, ParsedDataBlock, ScoreEntry, SensorGroupColor, TargetEntry, Move, InfoBlock, DnetHeader, RateInfo, GameState, PacketData, NetEventInfo, GhostUpdate, LoadResult, } from "./types.js";
11
- export { BlockTypePacket, BlockTypeSendPacket, BlockTypeMove, BlockTypeInfo, MaxGhostCount, GhostIdBitSize, NetStringTableMaxStrings, StringIdBitSize, NetEventClassBitSize, NetEventClassFirst, NetObjectClassBitSize, NetObjectClassFirst, MaxPacketDataSize, MaxTriggerKeys, MoveCountBits, MaxMoveCount, DataBlockObjectIdFirst, DataBlockObjectIdBitSize, DataBlockClassFirst, DataBlockClassBitSize, DataBlockClassNames, NetObjectClassNames, NetEventClassNames, } from "./types.js";
12
+ export type { DemoHeader, DemoFile, DemoBlock, InitialBlockData, ConnectionProtocolState, DataBlockHeader, PathManagerEntry, ParsedDataBlock, ScoreEntry, SensorGroupColor, TargetEntry, Move, InfoBlock, DnetHeader, RateInfo, GameState, PacketData, ParseFault, NetEventInfo, GhostUpdate, LoadResult, } from "./types.js";
13
+ export { BlockTypePacket, BlockTypeSendPacket, BlockTypeMove, BlockTypeInfo, DemoIdentString, DemoProtocolVersion, MoveTickMs, MaxGhostCount, GhostIdBitSize, NetStringTableMaxStrings, StringIdBitSize, NetEventClassBitSize, NetEventClassFirst, NetObjectClassBitSize, NetObjectClassFirst, MaxPacketDataSize, MaxTriggerKeys, MoveCountBits, MaxMoveCount, DataBlockObjectIdFirst, DataBlockObjectIdBitSize, DataBlockClassFirst, DataBlockClassBitSize, DataBlockClassNames, NetObjectClassNames, NetEventClassNames, } from "./types.js";
12
14
  export type { GhostKeyframe, GhostInstance, ControlObjectKeyframe, GameEvent, DemoTimeline, TimelineStats, ExportTimeline, } from "./Timeline.js";
13
15
  export type { EventParser, ConnectionContext, GhostParserEntry, GhostEntry, GhostTrackerInterface, ParsedData, } from "./ClassRegistry.js";
14
16
  export type { Vec3, Quat, Color3, Color4, AffineTransform, MatrixF, } from "./dataTypes.js";
15
- export type { MoveData, SoundSlot, ThreadState, ImageSlot, WheelState, GameBaseGhostData, ShapeBaseGhostData, PlayerGhostData, PlayerPacketData, VehicleGhostData, VehiclePacketData, WheeledVehicleGhostData, WheeledVehiclePacketData, FlyingVehicleGhostData, HoverVehicleGhostData, ItemGhostData, StaticShapeGhostData, ScopeAlwaysShapeGhostData, BeaconObjectGhostData, TurretGhostData, MissionMarkerGhostData, WayPointGhostData, SpawnSphereGhostData, CameraGhostData, CameraPacketData, MarkerGhostData, SimpleNetObjectGhostData, InteriorInstanceGhostData, DebrisGhostData, ProjectileGhostData, LinearProjectileGhostData, BombProjectileGhostData, GrenadeProjectileGhostData, SeekerProjectileGhostData, SniperProjectileGhostData, ShockLanceProjectileGhostData, ELFProjectileGhostData, RepairProjectileGhostData, TargetProjectileGhostData, ForceFieldBareGhostData, TSStaticGhostData, TerrainBlockGhostData, SunGhostData, SkyGhostData, LightningGhostData, WaterBlockGhostData, MissionAreaGhostData, SplashGhostData, ShockwaveGhostData, FireballAtmosphereGhostData, VehicleBlockerGhostData, ParticleEmissionDummyGhostData, PrecipitationGhostData, TriggerGhostData, PhysicalZoneGhostData, AudioEmitterGhostData, StationFXPersonalGhostData, AIObjectiveGhostData, } from "./ghostDataTypes.js";
17
+ export type { MoveData, SoundSlot, ThreadState, ImageSlot, WheelState, GameBaseGhostData, ShapeBaseGhostData, PlayerGhostData, PlayerPacketData, ShapeBasePacketData, VehicleGhostData, VehiclePacketData, TurretPacketData, WheeledVehicleGhostData, WheeledVehiclePacketData, FlyingVehicleGhostData, HoverVehicleGhostData, ItemGhostData, StaticShapeGhostData, ScopeAlwaysShapeGhostData, BeaconObjectGhostData, TurretGhostData, MissionMarkerGhostData, WayPointGhostData, SpawnSphereGhostData, CameraGhostData, CameraPacketData, MarkerGhostData, SimpleNetObjectGhostData, InteriorInstanceGhostData, DebrisGhostData, ProjectileGhostData, LinearProjectileGhostData, BombProjectileGhostData, GrenadeProjectileGhostData, SeekerProjectileGhostData, SniperProjectileGhostData, ShockLanceProjectileGhostData, ELFProjectileGhostData, RepairProjectileGhostData, TargetProjectileGhostData, ForceFieldBareGhostData, TSStaticGhostData, TerrainBlockGhostData, SunGhostData, SkyGhostData, LightningGhostData, WaterBlockGhostData, MissionAreaGhostData, SplashGhostData, ShockwaveGhostData, FireballAtmosphereGhostData, VehicleBlockerGhostData, ParticleEmissionDummyGhostData, PrecipitationGhostData, TriggerGhostData, PhysicalZoneGhostData, AudioEmitterGhostData, StationFXPersonalGhostData, AIObjectiveGhostData, } from "./ghostDataTypes.js";
16
18
  export type { HudImageEntry, ImageState, ParticleKey, SimDataBlock, GameBaseDataBlock, ShapeBaseDataBlock, ShapeBaseImageDataBlock, PlayerDataBlock, VehicleDataBlock, FlyingVehicleDataBlock, HoverVehicleDataBlock, WheeledVehicleDataBlock, StaticShapeDataBlock, TurretDataBlock, TurretImageDataBlock, ItemDataBlock, ProjectileDataBlock, LinearProjectileDataBlock, GrenadeProjectileDataBlock, SeekerProjectileDataBlock, SniperProjectileDataBlock, ShockLanceProjectileDataBlock, ELFProjectileDataBlock, RepairProjectileDataBlock, TargetProjectileDataBlock, TracerProjectileDataBlock, EnergyProjectileDataBlock, LinearFlareProjectileDataBlock, BombProjectileDataBlock, FlareProjectileDataBlock, ExplosionDataBlock, DebrisDataBlock, SplashDataBlock, ShockwaveDataBlock, ParticleEmitterDataBlock, ParticleDataBlock, AudioDescriptionDataBlock, AudioProfileDataBlock, AudioEnvironmentDataBlock, AudioSampleEnvironmentDataBlock, DecalDataBlock, CameraDataBlock, SensorDataBlock, TriggerDataBlock, ForceFieldBareDataBlock, ParticleEmissionDummyDataBlock, CommanderIconDataBlock, PrecipitationDataBlock, FireballAtmosphereDataBlock, LightningDataBlock, StationFXVehicleDataBlock, StationFXPersonalDataBlock, CannedChatItemDataBlock, MissionMarkerDataBlock, TSShapeConstructorDataBlock, EffectProfileDataBlock, JetEffectDataBlock, RunningLightDataBlock, } from "./dataBlockDataTypes.js";
17
19
  export type { EventData, SimDataBlockEventData, NetStringEventData, Sim2DAudioEventData, Sim3DAudioEventData, SetSensorGroupEventData, SetServerTargetEventData, TargetToEventData, SetObjectActiveImageEventData, SetMissionCRCEventData, RemoteCommandEventData, TargetInfoEventData, TargetFreeEventData, SimTargetAudioEventData, SensorGroupColorEntry, SensorGroupColorEventData, ResetClientTargetsEventData, RemoveClientTargetTypeEventData, SimVoiceStreamEventData, GhostingMessageEventData, GhostAlwaysObjectEventData, PathPoint, PathData, PathManagerEventData, LightningStrikeEventData, FileChunkEventData, DownloadMessageEventData, FileDownloadRequestEventData, SimpleMessageEventData, CRCChallengeEventData, CRCChallengeResponseEventData, GravityEventData, FogChallengeEventData, AnyEventData, } from "./eventDataTypes.js";
18
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,10 +1,12 @@
1
1
  export { DemoParser } from "./DemoParser.js";
2
2
  export { BitStream } from "./BitStream.js";
3
+ export { BitWriter } from "./BitWriter.js";
4
+ export { createDefaultRegistry } from "./defaultRegistry.js";
3
5
  export { PacketParser } from "./PacketParser.js";
4
6
  export { ClassRegistry } from "./ClassRegistry.js";
5
7
  export { GhostTracker } from "./GhostManager.js";
6
- export { createLiveParser, passiveObserverProtocolState, } from "./LiveParser.js";
8
+ export { createLiveParser, passiveObserverProtocolState, freshConnectionProtocolState, } from "./LiveParser.js";
7
9
  export { GhostStateAccumulator, mergeGhostParsedData, } from "./GhostStateAccumulator.js";
8
10
  export { buildTimeline, getTimelineStats, exportTimeline } from "./Timeline.js";
9
- export { BlockTypePacket, BlockTypeSendPacket, BlockTypeMove, BlockTypeInfo, MaxGhostCount, GhostIdBitSize, NetStringTableMaxStrings, StringIdBitSize, NetEventClassBitSize, NetEventClassFirst, NetObjectClassBitSize, NetObjectClassFirst, MaxPacketDataSize, MaxTriggerKeys, MoveCountBits, MaxMoveCount, DataBlockObjectIdFirst, DataBlockObjectIdBitSize, DataBlockClassFirst, DataBlockClassBitSize, DataBlockClassNames, NetObjectClassNames, NetEventClassNames, } from "./types.js";
11
+ export { BlockTypePacket, BlockTypeSendPacket, BlockTypeMove, BlockTypeInfo, DemoIdentString, DemoProtocolVersion, MoveTickMs, MaxGhostCount, GhostIdBitSize, NetStringTableMaxStrings, StringIdBitSize, NetEventClassBitSize, NetEventClassFirst, NetObjectClassBitSize, NetObjectClassFirst, MaxPacketDataSize, MaxTriggerKeys, MoveCountBits, MaxMoveCount, DataBlockObjectIdFirst, DataBlockObjectIdBitSize, DataBlockClassFirst, DataBlockClassBitSize, DataBlockClassNames, NetObjectClassNames, NetEventClassNames, } from "./types.js";
10
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAyBhF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC","sourcesContent":["export { DemoParser } from \"./DemoParser.js\";\nexport { BitStream } from \"./BitStream.js\";\nexport { PacketParser } from \"./PacketParser.js\";\nexport { ClassRegistry } from \"./ClassRegistry.js\";\nexport { GhostTracker } from \"./GhostManager.js\";\nexport {\n createLiveParser,\n passiveObserverProtocolState,\n} from \"./LiveParser.js\";\nexport type { LiveParserKit, LiveParserSeed } from \"./LiveParser.js\";\nexport {\n GhostStateAccumulator,\n mergeGhostParsedData,\n} from \"./GhostStateAccumulator.js\";\nexport { buildTimeline, getTimelineStats, exportTimeline } from \"./Timeline.js\";\n\nexport type {\n DemoHeader,\n DemoFile,\n DemoBlock,\n InitialBlockData,\n ConnectionProtocolState,\n DataBlockHeader,\n PathManagerEntry,\n ParsedDataBlock,\n ScoreEntry,\n SensorGroupColor,\n TargetEntry,\n Move,\n InfoBlock,\n DnetHeader,\n RateInfo,\n GameState,\n PacketData,\n NetEventInfo,\n GhostUpdate,\n LoadResult,\n} from \"./types.js\";\n\nexport {\n BlockTypePacket,\n BlockTypeSendPacket,\n BlockTypeMove,\n BlockTypeInfo,\n MaxGhostCount,\n GhostIdBitSize,\n NetStringTableMaxStrings,\n StringIdBitSize,\n NetEventClassBitSize,\n NetEventClassFirst,\n NetObjectClassBitSize,\n NetObjectClassFirst,\n MaxPacketDataSize,\n MaxTriggerKeys,\n MoveCountBits,\n MaxMoveCount,\n DataBlockObjectIdFirst,\n DataBlockObjectIdBitSize,\n DataBlockClassFirst,\n DataBlockClassBitSize,\n DataBlockClassNames,\n NetObjectClassNames,\n NetEventClassNames,\n} from \"./types.js\";\n\nexport type {\n GhostKeyframe,\n GhostInstance,\n ControlObjectKeyframe,\n GameEvent,\n DemoTimeline,\n TimelineStats,\n ExportTimeline,\n} from \"./Timeline.js\";\n\nexport type {\n EventParser,\n ConnectionContext,\n GhostParserEntry,\n GhostEntry,\n GhostTrackerInterface,\n ParsedData,\n} from \"./ClassRegistry.js\";\n\n// Shared primitive types\nexport type {\n Vec3,\n Quat,\n Color3,\n Color4,\n AffineTransform,\n MatrixF,\n} from \"./dataTypes.js\";\n\n// Ghost data types (parsed ghost update/packet data)\nexport type {\n MoveData,\n SoundSlot,\n ThreadState,\n ImageSlot,\n WheelState,\n GameBaseGhostData,\n ShapeBaseGhostData,\n PlayerGhostData,\n PlayerPacketData,\n VehicleGhostData,\n VehiclePacketData,\n WheeledVehicleGhostData,\n WheeledVehiclePacketData,\n FlyingVehicleGhostData,\n HoverVehicleGhostData,\n ItemGhostData,\n StaticShapeGhostData,\n ScopeAlwaysShapeGhostData,\n BeaconObjectGhostData,\n TurretGhostData,\n MissionMarkerGhostData,\n WayPointGhostData,\n SpawnSphereGhostData,\n CameraGhostData,\n CameraPacketData,\n MarkerGhostData,\n SimpleNetObjectGhostData,\n InteriorInstanceGhostData,\n DebrisGhostData,\n ProjectileGhostData,\n LinearProjectileGhostData,\n BombProjectileGhostData,\n GrenadeProjectileGhostData,\n SeekerProjectileGhostData,\n SniperProjectileGhostData,\n ShockLanceProjectileGhostData,\n ELFProjectileGhostData,\n RepairProjectileGhostData,\n TargetProjectileGhostData,\n ForceFieldBareGhostData,\n TSStaticGhostData,\n TerrainBlockGhostData,\n SunGhostData,\n SkyGhostData,\n LightningGhostData,\n WaterBlockGhostData,\n MissionAreaGhostData,\n SplashGhostData,\n ShockwaveGhostData,\n FireballAtmosphereGhostData,\n VehicleBlockerGhostData,\n ParticleEmissionDummyGhostData,\n PrecipitationGhostData,\n TriggerGhostData,\n PhysicalZoneGhostData,\n AudioEmitterGhostData,\n StationFXPersonalGhostData,\n AIObjectiveGhostData,\n} from \"./ghostDataTypes.js\";\n\n// DataBlock data types (parsed datablock definitions)\nexport type {\n HudImageEntry,\n ImageState,\n ParticleKey,\n SimDataBlock,\n GameBaseDataBlock,\n ShapeBaseDataBlock,\n ShapeBaseImageDataBlock,\n PlayerDataBlock,\n VehicleDataBlock,\n FlyingVehicleDataBlock,\n HoverVehicleDataBlock,\n WheeledVehicleDataBlock,\n StaticShapeDataBlock,\n TurretDataBlock,\n TurretImageDataBlock,\n ItemDataBlock,\n ProjectileDataBlock,\n LinearProjectileDataBlock,\n GrenadeProjectileDataBlock,\n SeekerProjectileDataBlock,\n SniperProjectileDataBlock,\n ShockLanceProjectileDataBlock,\n ELFProjectileDataBlock,\n RepairProjectileDataBlock,\n TargetProjectileDataBlock,\n TracerProjectileDataBlock,\n EnergyProjectileDataBlock,\n LinearFlareProjectileDataBlock,\n BombProjectileDataBlock,\n FlareProjectileDataBlock,\n ExplosionDataBlock,\n DebrisDataBlock,\n SplashDataBlock,\n ShockwaveDataBlock,\n ParticleEmitterDataBlock,\n ParticleDataBlock,\n AudioDescriptionDataBlock,\n AudioProfileDataBlock,\n AudioEnvironmentDataBlock,\n AudioSampleEnvironmentDataBlock,\n DecalDataBlock,\n CameraDataBlock,\n SensorDataBlock,\n TriggerDataBlock,\n ForceFieldBareDataBlock,\n ParticleEmissionDummyDataBlock,\n CommanderIconDataBlock,\n PrecipitationDataBlock,\n FireballAtmosphereDataBlock,\n LightningDataBlock,\n StationFXVehicleDataBlock,\n StationFXPersonalDataBlock,\n CannedChatItemDataBlock,\n MissionMarkerDataBlock,\n TSShapeConstructorDataBlock,\n EffectProfileDataBlock,\n JetEffectDataBlock,\n RunningLightDataBlock,\n} from \"./dataBlockDataTypes.js\";\n\n// Event data types (parsed network event data)\nexport type {\n EventData,\n SimDataBlockEventData,\n NetStringEventData,\n Sim2DAudioEventData,\n Sim3DAudioEventData,\n SetSensorGroupEventData,\n SetServerTargetEventData,\n TargetToEventData,\n SetObjectActiveImageEventData,\n SetMissionCRCEventData,\n RemoteCommandEventData,\n TargetInfoEventData,\n TargetFreeEventData,\n SimTargetAudioEventData,\n SensorGroupColorEntry,\n SensorGroupColorEventData,\n ResetClientTargetsEventData,\n RemoveClientTargetTypeEventData,\n SimVoiceStreamEventData,\n GhostingMessageEventData,\n GhostAlwaysObjectEventData,\n PathPoint,\n PathData,\n PathManagerEventData,\n LightningStrikeEventData,\n FileChunkEventData,\n DownloadMessageEventData,\n FileDownloadRequestEventData,\n SimpleMessageEventData,\n CRCChallengeEventData,\n CRCChallengeResponseEventData,\n GravityEventData,\n FogChallengeEventData,\n AnyEventData,\n} from \"./eventDataTypes.js\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA0BhF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,cAAc,EACd,wBAAwB,EACxB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,YAAY,EACZ,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,YAAY,CAAC","sourcesContent":["export { DemoParser } from \"./DemoParser.js\";\nexport { BitStream } from \"./BitStream.js\";\nexport { BitWriter } from \"./BitWriter.js\";\nexport { createDefaultRegistry } from \"./defaultRegistry.js\";\nexport { PacketParser } from \"./PacketParser.js\";\nexport { ClassRegistry } from \"./ClassRegistry.js\";\nexport { GhostTracker } from \"./GhostManager.js\";\nexport {\n createLiveParser,\n passiveObserverProtocolState,\n freshConnectionProtocolState,\n} from \"./LiveParser.js\";\nexport type { LiveParserKit, LiveParserSeed } from \"./LiveParser.js\";\nexport {\n GhostStateAccumulator,\n mergeGhostParsedData,\n} from \"./GhostStateAccumulator.js\";\nexport { buildTimeline, getTimelineStats, exportTimeline } from \"./Timeline.js\";\n\nexport type {\n DemoHeader,\n DemoFile,\n DemoBlock,\n InitialBlockData,\n ConnectionProtocolState,\n DataBlockHeader,\n PathManagerEntry,\n ParsedDataBlock,\n ScoreEntry,\n SensorGroupColor,\n TargetEntry,\n Move,\n InfoBlock,\n DnetHeader,\n RateInfo,\n GameState,\n PacketData,\n ParseFault,\n NetEventInfo,\n GhostUpdate,\n LoadResult,\n} from \"./types.js\";\n\nexport {\n BlockTypePacket,\n BlockTypeSendPacket,\n BlockTypeMove,\n BlockTypeInfo,\n DemoIdentString,\n DemoProtocolVersion,\n MoveTickMs,\n MaxGhostCount,\n GhostIdBitSize,\n NetStringTableMaxStrings,\n StringIdBitSize,\n NetEventClassBitSize,\n NetEventClassFirst,\n NetObjectClassBitSize,\n NetObjectClassFirst,\n MaxPacketDataSize,\n MaxTriggerKeys,\n MoveCountBits,\n MaxMoveCount,\n DataBlockObjectIdFirst,\n DataBlockObjectIdBitSize,\n DataBlockClassFirst,\n DataBlockClassBitSize,\n DataBlockClassNames,\n NetObjectClassNames,\n NetEventClassNames,\n} from \"./types.js\";\n\nexport type {\n GhostKeyframe,\n GhostInstance,\n ControlObjectKeyframe,\n GameEvent,\n DemoTimeline,\n TimelineStats,\n ExportTimeline,\n} from \"./Timeline.js\";\n\nexport type {\n EventParser,\n ConnectionContext,\n GhostParserEntry,\n GhostEntry,\n GhostTrackerInterface,\n ParsedData,\n} from \"./ClassRegistry.js\";\n\n// Shared primitive types\nexport type {\n Vec3,\n Quat,\n Color3,\n Color4,\n AffineTransform,\n MatrixF,\n} from \"./dataTypes.js\";\n\n// Ghost data types (parsed ghost update/packet data)\nexport type {\n MoveData,\n SoundSlot,\n ThreadState,\n ImageSlot,\n WheelState,\n GameBaseGhostData,\n ShapeBaseGhostData,\n PlayerGhostData,\n PlayerPacketData,\n ShapeBasePacketData,\n VehicleGhostData,\n VehiclePacketData,\n TurretPacketData,\n WheeledVehicleGhostData,\n WheeledVehiclePacketData,\n FlyingVehicleGhostData,\n HoverVehicleGhostData,\n ItemGhostData,\n StaticShapeGhostData,\n ScopeAlwaysShapeGhostData,\n BeaconObjectGhostData,\n TurretGhostData,\n MissionMarkerGhostData,\n WayPointGhostData,\n SpawnSphereGhostData,\n CameraGhostData,\n CameraPacketData,\n MarkerGhostData,\n SimpleNetObjectGhostData,\n InteriorInstanceGhostData,\n DebrisGhostData,\n ProjectileGhostData,\n LinearProjectileGhostData,\n BombProjectileGhostData,\n GrenadeProjectileGhostData,\n SeekerProjectileGhostData,\n SniperProjectileGhostData,\n ShockLanceProjectileGhostData,\n ELFProjectileGhostData,\n RepairProjectileGhostData,\n TargetProjectileGhostData,\n ForceFieldBareGhostData,\n TSStaticGhostData,\n TerrainBlockGhostData,\n SunGhostData,\n SkyGhostData,\n LightningGhostData,\n WaterBlockGhostData,\n MissionAreaGhostData,\n SplashGhostData,\n ShockwaveGhostData,\n FireballAtmosphereGhostData,\n VehicleBlockerGhostData,\n ParticleEmissionDummyGhostData,\n PrecipitationGhostData,\n TriggerGhostData,\n PhysicalZoneGhostData,\n AudioEmitterGhostData,\n StationFXPersonalGhostData,\n AIObjectiveGhostData,\n} from \"./ghostDataTypes.js\";\n\n// DataBlock data types (parsed datablock definitions)\nexport type {\n HudImageEntry,\n ImageState,\n ParticleKey,\n SimDataBlock,\n GameBaseDataBlock,\n ShapeBaseDataBlock,\n ShapeBaseImageDataBlock,\n PlayerDataBlock,\n VehicleDataBlock,\n FlyingVehicleDataBlock,\n HoverVehicleDataBlock,\n WheeledVehicleDataBlock,\n StaticShapeDataBlock,\n TurretDataBlock,\n TurretImageDataBlock,\n ItemDataBlock,\n ProjectileDataBlock,\n LinearProjectileDataBlock,\n GrenadeProjectileDataBlock,\n SeekerProjectileDataBlock,\n SniperProjectileDataBlock,\n ShockLanceProjectileDataBlock,\n ELFProjectileDataBlock,\n RepairProjectileDataBlock,\n TargetProjectileDataBlock,\n TracerProjectileDataBlock,\n EnergyProjectileDataBlock,\n LinearFlareProjectileDataBlock,\n BombProjectileDataBlock,\n FlareProjectileDataBlock,\n ExplosionDataBlock,\n DebrisDataBlock,\n SplashDataBlock,\n ShockwaveDataBlock,\n ParticleEmitterDataBlock,\n ParticleDataBlock,\n AudioDescriptionDataBlock,\n AudioProfileDataBlock,\n AudioEnvironmentDataBlock,\n AudioSampleEnvironmentDataBlock,\n DecalDataBlock,\n CameraDataBlock,\n SensorDataBlock,\n TriggerDataBlock,\n ForceFieldBareDataBlock,\n ParticleEmissionDummyDataBlock,\n CommanderIconDataBlock,\n PrecipitationDataBlock,\n FireballAtmosphereDataBlock,\n LightningDataBlock,\n StationFXVehicleDataBlock,\n StationFXPersonalDataBlock,\n CannedChatItemDataBlock,\n MissionMarkerDataBlock,\n TSShapeConstructorDataBlock,\n EffectProfileDataBlock,\n JetEffectDataBlock,\n RunningLightDataBlock,\n} from \"./dataBlockDataTypes.js\";\n\n// Event data types (parsed network event data)\nexport type {\n EventData,\n SimDataBlockEventData,\n NetStringEventData,\n Sim2DAudioEventData,\n Sim3DAudioEventData,\n SetSensorGroupEventData,\n SetServerTargetEventData,\n TargetToEventData,\n SetObjectActiveImageEventData,\n SetMissionCRCEventData,\n RemoteCommandEventData,\n TargetInfoEventData,\n TargetFreeEventData,\n SimTargetAudioEventData,\n SensorGroupColorEntry,\n SensorGroupColorEventData,\n ResetClientTargetsEventData,\n RemoveClientTargetTypeEventData,\n SimVoiceStreamEventData,\n GhostingMessageEventData,\n GhostAlwaysObjectEventData,\n PathPoint,\n PathData,\n PathManagerEventData,\n LightningStrikeEventData,\n FileChunkEventData,\n DownloadMessageEventData,\n FileDownloadRequestEventData,\n SimpleMessageEventData,\n CRCChallengeEventData,\n CRCChallengeResponseEventData,\n GravityEventData,\n FogChallengeEventData,\n AnyEventData,\n} from \"./eventDataTypes.js\";\n"]}
package/dist/types.d.ts CHANGED
@@ -1,4 +1,10 @@
1
1
  import type { ParsedData } from "./ClassRegistry.js";
2
+ /** Ident string at the start of every .rec file (checked on playback). */
3
+ export declare const DemoIdentString = "Tribes2 Recording";
4
+ /** Protocol version written by build 25034; playback rejects any other. */
5
+ export declare const DemoProtocolVersion = 3342340;
6
+ /** One Move block per simulation tick, 32ms each (DemoParser.bufferedMoveTicks). */
7
+ export declare const MoveTickMs = 32;
2
8
  export declare const MaxGhostCount = 1024;
3
9
  export declare const GhostIdBitSize = 10;
4
10
  export declare const NetStringTableMaxStrings = 4096;
@@ -52,9 +58,17 @@ export interface Move {
52
58
  freeLook: boolean;
53
59
  trigger: boolean[];
54
60
  }
61
+ /**
62
+ * Type 3 block, written by GameConnection::readPacket right after each
63
+ * received packet (FUN_005fb9b0): the `$firstPerson` flag and the control
64
+ * camera FOV, replayed through setControlCameraFov on playback.
65
+ */
55
66
  export interface InfoBlock {
56
- value1: number;
57
- value2: number;
67
+ /** Byte 0 of the block. The engine writes a bool through a 4-byte slot;
68
+ * the other three bytes are uninitialized stack in real recordings. */
69
+ firstPerson: boolean;
70
+ /** Control camera field of view in degrees (F32). */
71
+ cameraFov: number;
58
72
  }
59
73
  export interface DataBlockHeader {
60
74
  objectId: number;
@@ -85,6 +99,23 @@ export interface GhostUpdate {
85
99
  updateBitsStart: number;
86
100
  updateBitsEnd: number;
87
101
  parsedData?: ParsedData;
102
+ /** Set when the ghost's data could not be parsed (unknown class,
103
+ * parser threw, or tracker divergence). The ghost section stops
104
+ * here and the tracker no longer mirrors the server. */
105
+ failed?: boolean;
106
+ /** Why parsing failed (parser name and error text). */
107
+ error?: string;
108
+ }
109
+ /**
110
+ * A packet the parser could not fully consume. The engine drops the
111
+ * connection on any of these ("Invalid packet"), and by default the
112
+ * PacketParser halts too (see `haltOnFault`): later packets come back
113
+ * empty with the same fault attached. Continuing would mean parsing
114
+ * against ghost/event state that no longer mirrors the server.
115
+ */
116
+ export interface ParseFault {
117
+ stage: "gameState" | "event" | "ghost";
118
+ message: string;
88
119
  }
89
120
  export interface NetEventInfo {
90
121
  classId: number;
@@ -97,6 +128,8 @@ export interface NetEventInfo {
97
128
  /** Set when the event could not be parsed (unknown class or parser
98
129
  * threw), leaving the stream position unreliable. */
99
130
  failed?: boolean;
131
+ /** Why parsing failed (parser name and error text). */
132
+ error?: string;
100
133
  }
101
134
  export interface PacketData {
102
135
  dnetHeader: DnetHeader;
@@ -106,6 +139,8 @@ export interface PacketData {
106
139
  ghosts: GhostUpdate[];
107
140
  /** Bit position where ghost section starts (readGhosts call). */
108
141
  ghostSectionStart?: number;
142
+ /** Present when any section of the packet failed to parse. */
143
+ parseFault?: ParseFault;
109
144
  }
110
145
  export interface GameState {
111
146
  lastMoveAck: number;
@@ -132,6 +167,8 @@ export interface GameState {
132
167
  controlObjectDataStart?: number;
133
168
  controlObjectDataEnd?: number;
134
169
  controlObjectData?: ParsedData;
170
+ /** Why the control object's readPacketData could not be applied. */
171
+ controlObjectError?: string;
135
172
  compressionPoint?: {
136
173
  x: number;
137
174
  y: number;
@@ -149,6 +186,9 @@ export interface DemoBlock {
149
186
  size: number;
150
187
  data: Uint8Array;
151
188
  parsed?: PacketData | Move | InfoBlock;
189
+ /** Set if decoding the block threw (a parser bug — packets report
190
+ * wire problems through `PacketData.parseFault` instead). */
191
+ parseError?: string;
152
192
  }
153
193
  export interface ConnectionProtocolState {
154
194
  lastSeqRecvdAtSend: number[];
@@ -253,6 +293,15 @@ export interface InitialBlockData {
253
293
  phase2TrailingBits?: number;
254
294
  phase2Valid?: boolean;
255
295
  phase2Error?: string;
296
+ /**
297
+ * Seeded state the engine would choke on during playback even though
298
+ * the block decodes. Empty for every recording made by Tribes2.exe;
299
+ * populated for hand-built (from-connect) initial blocks that break an
300
+ * engine invariant — e.g. a notify count that does not equal
301
+ * `lastSendSeq - highestAckedSeq` (NetConnection::handleNotify
302
+ * dereferences an empty notify queue).
303
+ */
304
+ warnings: string[];
256
305
  }
257
306
  export interface DemoHeader {
258
307
  identString: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,3 +1,9 @@
1
+ /** Ident string at the start of every .rec file (checked on playback). */
2
+ export const DemoIdentString = "Tribes2 Recording";
3
+ /** Protocol version written by build 25034; playback rejects any other. */
4
+ export const DemoProtocolVersion = 0x330004;
5
+ /** One Move block per simulation tick, 32ms each (DemoParser.bufferedMoveTicks). */
6
+ export const MoveTickMs = 32;
1
7
  // Key constants from the V12 engine source
2
8
  export const MaxGhostCount = 1024;
3
9
  export const GhostIdBitSize = 10;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ParsedData } from \"./ClassRegistry.js\";\n\n// Key constants from the V12 engine source\nexport const MaxGhostCount = 1024;\nexport const GhostIdBitSize = 10;\nexport const NetStringTableMaxStrings = 4096;\nexport const StringIdBitSize = 12;\nexport const NetEventClassBitSize = 6;\nexport const NetEventClassFirst = 255;\nexport const NetObjectClassBitSize = 7;\nexport const NetObjectClassFirst = 0;\nexport const MaxPacketDataSize = 1500;\nexport const MaxTriggerKeys = 6;\nexport const MoveCountBits = 5;\nexport const MaxMoveCount = 30;\n\n// GhostingMessageEvent message types (NetConnection::GhostMSG enum).\nexport const GhostMsgGhostAlwaysDone = 0;\nexport const GhostMsgGhostAlwaysAck = 1;\nexport const GhostMsgEndGhosting = 2;\nexport const GhostMsgGhostingActive = 3;\n\n// DataBlock constants.\n// For SimDataBlockEvent header (initial block + events), the binary uses:\n// readInt(11) objectId, readInt(7) classId, readInt(11) index, readInt(12) total.\n// For DataBlock references in payloads (readDataBlockRef), V12 source uses:\n// readRangedU32(DataBlockObjectIdFirst, DataBlockObjectIdLast).\nexport const DataBlockObjectIdFirst = 3;\nexport const DataBlockObjectIdBitSize = 10;\nexport const DataBlockObjectIdLast =\n DataBlockObjectIdFirst + (1 << DataBlockObjectIdBitSize) - 1; // 1026\nexport const DataBlockClassFirst = 128;\nexport const DataBlockClassBitSize = 7;\n\n// SimDataBlockEvent header bit sizes (from decompiled binary).\n// These are the HEADER field sizes, which differ from the payload reference sizes.\n// readClassInfo uses getNextPow2(0x800=2048) → getBitCount(2048)=11 for objectId.\n// The classId, index, and total are read with literal values 7, 11, 12 (from 0x80, 0xb, 0xc).\nexport const SimDBEventObjectIdBits = 11;\nexport const SimDBEventClassIdBits = 7; // same as DataBlockClassBitSize\nexport const SimDBEventIndexBits = 11;\nexport const SimDBEventTotalBits = 12;\n\n// Deterministic DataBlock class name mapping, derived from machine code\n// analysis of the Tribes 2 binary (build 25034). All 54 DataBlock classes\n// with mClassIdBase=0x80 are sorted by C strcmp (ASCII byte order), which\n// is how AbstractClassRep::initialize assigns sequential classIds.\n// Index N in this array corresponds to classId N (group-local) or\n// classId N+128 (V12 global format).\nexport const DataBlockClassNames: readonly string[] = [\n \"AudioDescription\", // 0 / 128\n \"AudioEnvironment\", // 1 / 129\n \"AudioProfile\", // 2 / 130\n \"AudioSampleEnvironment\", // 3 / 131\n \"BombProjectileData\", // 4 / 132\n \"CameraData\", // 5 / 133\n \"CannedChatItem\", // 6 / 134\n \"CommanderIconData\", // 7 / 135\n \"DebrisData\", // 8 / 136\n \"DecalData\", // 9 / 137\n \"ELFProjectileData\", // 10 / 138\n \"EffectProfile\", // 11 / 139\n \"EnergyProjectileData\", // 12 / 140\n \"ExplosionData\", // 13 / 141\n \"FireballAtmosphereData\", // 14 / 142\n \"FlareProjectileData\", // 15 / 143\n \"FlyingVehicleData\", // 16 / 144\n \"ForceFieldBareData\", // 17 / 145\n \"GameBaseData\", // 18 / 146\n \"GrenadeProjectileData\", // 19 / 147\n \"HoverVehicleData\", // 20 / 148\n \"ItemData\", // 21 / 149\n \"JetEffectData\", // 22 / 150\n \"LightningData\", // 23 / 151\n \"LinearFlareProjectileData\", // 24 / 152\n \"LinearProjectileData\", // 25 / 153\n \"MissionMarkerData\", // 26 / 154\n \"ParticleData\", // 27 / 155\n \"ParticleEmissionDummyData\", // 28 / 156\n \"ParticleEmitterData\", // 29 / 157\n \"PlayerData\", // 30 / 158\n \"PrecipitationData\", // 31 / 159\n \"ProjectileData\", // 32 / 160\n \"RepairProjectileData\", // 33 / 161\n \"RunningLightData\", // 34 / 162\n \"SeekerProjectileData\", // 35 / 163\n \"SensorData\", // 36 / 164\n \"ShapeBaseData\", // 37 / 165\n \"ShapeBaseImageData\", // 38 / 166\n \"ShockLanceProjectileData\", // 39 / 167\n \"ShockwaveData\", // 40 / 168\n \"SimDataBlock\", // 41 / 169\n \"SniperProjectileData\", // 42 / 170\n \"SplashData\", // 43 / 171\n \"StaticShapeData\", // 44 / 172\n \"StationFXPersonalData\", // 45 / 173\n \"StationFXVehicleData\", // 46 / 174\n \"TSShapeConstructor\", // 47 / 175\n \"TargetProjectileData\", // 48 / 176\n \"TracerProjectileData\", // 49 / 177\n \"TriggerData\", // 50 / 178\n \"TurretData\", // 51 / 179\n \"TurretImageData\", // 52 / 180\n \"WheeledVehicleData\", // 53 / 181\n] as const;\n\n// Deterministic NetObject (ghost) class name mapping, derived from machine code\n// analysis of the Tribes 2 binary (build 25034). All 53 NetObject classes\n// with mClassIdBase=0 are sorted by C strcmp (ASCII byte order), which\n// is how AbstractClassRep::initialize assigns sequential classIds.\n// Index N in this array corresponds to classId N (NetObjectClassFirst + N).\n// Verified against decompiled FUN_00423cb0 class table initialization.\n// Vehicle is NOT a ghost class (classGroup=0xFFFFFFFF in binary).\nexport const NetObjectClassNames: readonly string[] = [\n \"AIObjective\", // 0\n \"AudioEmitter\", // 1\n \"BeaconObject\", // 2\n \"BombProjectile\", // 3\n \"Camera\", // 4\n \"Debris\", // 5\n \"ELFProjectile\", // 6\n \"EnergyProjectile\", // 7\n \"FireballAtmosphere\", // 8\n \"FlareProjectile\", // 9\n \"FlyingVehicle\", // 10\n \"ForceFieldBare\", // 11\n \"GameBase\", // 12\n \"GrenadeProjectile\", // 13\n \"HoverVehicle\", // 14\n \"InteriorInstance\", // 15\n \"Item\", // 16\n \"Lightning\", // 17\n \"LinearFlareProjectile\", // 18\n \"LinearProjectile\", // 19\n \"Marker\", // 20\n \"MissionArea\", // 21\n \"MissionMarker\", // 22\n \"ParticleEmissionDummy\", // 23\n \"PhysicalZone\", // 24\n \"Player\", // 25\n \"Precipitation\", // 26\n \"Projectile\", // 27\n \"RepairProjectile\", // 28\n \"ScopeAlwaysShape\", // 29\n \"SeekerProjectile\", // 30\n \"ShapeBase\", // 31\n \"ShockLanceProjectile\", // 32\n \"Shockwave\", // 33\n \"SimpleNetObject\", // 34\n \"Sky\", // 35\n \"SniperProjectile\", // 36\n \"SpawnSphere\", // 37\n \"Splash\", // 38\n \"StaticShape\", // 39\n \"StationFXPersonal\", // 40\n \"StationFXVehicle\", // 41\n \"Sun\", // 42\n \"TSStatic\", // 43\n \"TargetProjectile\", // 44\n \"TerrainBlock\", // 45\n \"TracerProjectile\", // 46\n \"Trigger\", // 47\n \"Turret\", // 48\n \"VehicleBlocker\", // 49\n \"WaterBlock\", // 50\n \"WayPoint\", // 51\n \"WheeledVehicle\", // 52\n] as const;\n\n// Deterministic NetEvent class name mapping, derived from machine code\n// analysis of the Tribes 2 binary (build 25034). All 26 NetEvent classes\n// with mClassIdBase=0xFF are sorted by C strcmp (ASCII byte order), which\n// is how AbstractClassRep::initialize assigns sequential classIds.\n// Index N in this array corresponds to classId NetEventClassFirst + N (255 + N).\nexport const NetEventClassNames: readonly string[] = [\n \"CRCChallengeEvent\", // 0 / 255\n \"CRCChallengeResponseEvent\", // 1 / 256\n \"FogChallengeEvent\", // 2 / 257\n \"GhostAlwaysObjectEvent\", // 3 / 258\n \"GhostingMessageEvent\", // 4 / 259\n \"GravityEvent\", // 5 / 260\n \"LightningStrikeEvent\", // 6 / 261\n \"NetStringEvent\", // 7 / 262\n \"PathManagerEvent\", // 8 / 263\n \"RemoteCommandEvent\", // 9 / 264\n \"RemoveClientTargetTypeEvent\", // 10 / 265\n \"ResetClientTargetsEvent\", // 11 / 266\n \"SensorGroupColorEvent\", // 12 / 267\n \"SetMissionCRCEvent\", // 13 / 268\n \"SetObjectActiveImageEvent\", // 14 / 269\n \"SetSensorGroupEvent\", // 15 / 270\n \"SetServerTargetEvent\", // 16 / 271\n \"Sim2DAudioEvent\", // 17 / 272\n \"Sim3DAudioEvent\", // 18 / 273\n \"SimDataBlockEvent\", // 19 / 274\n \"SimTargetAudioEvent\", // 20 / 275\n \"SimVoiceStreamEvent\", // 21 / 276\n \"SimpleMessageEvent\", // 22 / 277\n \"TargetFreeEvent\", // 23 / 278\n \"TargetInfoEvent\", // 24 / 279\n \"TargetToEvent\", // 25 / 280\n] as const;\n\n// Block types in the U16 packed format (type = typeSize >> 12)\n// These are from TorqueSDK-style recordBlock/handleRecordedBlock\nexport const BlockTypePacket = 0; // Received network packet (dnet data)\nexport const BlockTypeSendPacket = 1; // SendPacket trigger (size=0, no data)\nexport const BlockTypeMove = 2; // Raw Move struct (64 bytes)\nexport const BlockTypeInfo = 3; // Info block (8 bytes: U32 + F32)\n\n// Packet types from dnet\nexport const DataPacket = 0;\nexport const PingPacket = 1;\nexport const AckPacket = 2;\n\nexport interface Move {\n px: number;\n py: number;\n pz: number;\n pyaw: number;\n ppitch: number;\n proll: number;\n x: number;\n y: number;\n z: number;\n yaw: number;\n pitch: number;\n roll: number;\n id: number;\n sendCount: number;\n freeLook: boolean;\n trigger: boolean[];\n}\n\nexport interface InfoBlock {\n value1: number; // U32\n value2: number; // F32\n}\n\nexport interface DataBlockHeader {\n objectId: number;\n classId: number;\n index: number;\n total: number;\n dataBitsStart: number;\n}\n\nexport interface DnetHeader {\n gameFlag: boolean;\n connectSeqBit: number;\n seqNumber: number;\n highestAck: number;\n packetType: number;\n ackByteCount: number;\n ackMask: number;\n}\n\nexport interface RateInfo {\n updateDelay?: number;\n packetSize?: number;\n maxUpdateDelay?: number;\n maxPacketSize?: number;\n}\n\nexport interface GhostUpdate {\n index: number;\n type: \"create\" | \"update\" | \"delete\";\n classId?: number;\n updateBitsStart: number;\n updateBitsEnd: number;\n parsedData?: ParsedData;\n}\n\nexport interface NetEventInfo {\n classId: number;\n guaranteed: boolean;\n sequenceNumber?: number;\n absoluteSequenceNumber?: number;\n dataBitsStart: number;\n dataBitsEnd: number;\n parsedData?: ParsedData;\n /** Set when the event could not be parsed (unknown class or parser\n * threw), leaving the stream position unreliable. */\n failed?: boolean;\n}\n\nexport interface PacketData {\n dnetHeader: DnetHeader;\n rateInfo: RateInfo;\n gameState: GameState;\n events: NetEventInfo[];\n ghosts: GhostUpdate[];\n /** Bit position where ghost section starts (readGhosts call). */\n ghostSectionStart?: number;\n}\n\nexport interface GameState {\n lastMoveAck: number;\n damageFlash?: number;\n whiteOut?: number;\n selfLocked?: boolean;\n selfHomed?: boolean;\n seekerTracking?: boolean;\n seekerTrackingPos?: { x: number; y: number; z: number };\n seekerMode?: number;\n seekerObjectGhostIndex?: number;\n targetPos?: { x: number; y: number; z: number };\n pinged: boolean;\n jammed: boolean;\n controlObjectGhostIndex?: number;\n controlObjectDataStart?: number;\n controlObjectDataEnd?: number;\n controlObjectData?: ParsedData;\n compressionPoint?: { x: number; y: number; z: number };\n targetVisibility?: { index: number; mask: number }[];\n cameraFov?: number;\n}\n\nexport interface DemoBlock {\n index: number;\n type: number;\n size: number;\n data: Uint8Array;\n parsed?: PacketData | Move | InfoBlock;\n}\n\nexport interface ConnectionProtocolState {\n lastSeqRecvdAtSend: number[];\n lastSeqRecvd: number;\n highestAckedSeq: number;\n lastSendSeq: number;\n ackMask: number;\n connectSequence: number;\n lastRecvAckAck: number;\n connectionEstablished: boolean;\n}\n\nexport interface StringTableEntry {\n id: number;\n value: string;\n}\n\nexport interface ParsedDataBlock {\n classId: number;\n className: string;\n objectId: number;\n data: ParsedData;\n}\n\nexport interface ScoreEntry {\n clientId: number;\n teamId: number;\n score: number;\n field0: number;\n field1: number;\n field2: number;\n isBot: boolean;\n triggerFlags: boolean[];\n}\n\n/**\n * IFF (Identification Friend or Foe) color for one sensor group pairing.\n * sensorGroupColors[myGroup][theirGroup] determines how `theirGroup` appears\n * to `myGroup` (e.g., red for enemy, green for friendly).\n */\nexport interface SensorGroupColor {\n group: number;\n targetGroup: number;\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\nexport interface TargetEntry {\n targetId: number;\n sensorData?: number;\n voiceMapData?: number;\n name?: string;\n skin?: string;\n skinPref?: string;\n voice?: string;\n typeDescription?: string;\n sensorGroup: number;\n targetData: number;\n dataBlockRef?: number;\n damageLevel: number;\n}\n\nexport interface PathManagerEntry {\n entryId: number;\n records: {\n field0: number;\n field1: number;\n field2: number;\n auxField: number;\n }[];\n}\n\nexport interface InitialBlockData {\n taggedStrings: Map<number, string>;\n dataBlockHeaders: DataBlockHeader[];\n dataBlockCount: number;\n dataBlocks: Map<number, ParsedDataBlock>;\n /** Initial $firstPerson state from GameConnection::writeDemoStartBlock. */\n firstPerson: boolean;\n connectionFields: number[];\n stateArray: number[];\n scoreEntries: ScoreEntry[];\n demoValues: string[];\n sensorGroupColors: SensorGroupColor[];\n targetEntries: TargetEntry[];\n connectionState: ConnectionProtocolState;\n roundTripTime: number;\n packetLoss: number;\n pathManager: PathManagerEntry[];\n notifyCount: number;\n nextRecvEventSeq: number;\n ghostingSequence: number;\n initialGhosts: GhostUpdate[];\n initialEvents: NetEventInfo[];\n controlObjectGhostIndex: number;\n controlObjectData?: ParsedData;\n /** Compression point established by the control object's readPacketData\n * (its position), used to decode compressed points in packets that\n * precede the first in-stream compression-point update. */\n initialCompressionPoint?: { x: number; y: number; z: number };\n missionName: string;\n missionCRC: number;\n phase2TrailingBits?: number;\n phase2Valid?: boolean;\n phase2Error?: string;\n}\n\nexport interface DemoHeader {\n identString: string;\n protocolVersion: number;\n demoLengthMs: number;\n initialBlockSize: number;\n}\n\nexport interface DemoFile {\n header: DemoHeader;\n initialBlock: InitialBlockData;\n blocks: DemoBlock[];\n}\n\nexport interface LoadResult {\n header: DemoHeader;\n initialBlock: InitialBlockData;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ParsedData } from \"./ClassRegistry.js\";\n\n/** Ident string at the start of every .rec file (checked on playback). */\nexport const DemoIdentString = \"Tribes2 Recording\";\n/** Protocol version written by build 25034; playback rejects any other. */\nexport const DemoProtocolVersion = 0x330004;\n/** One Move block per simulation tick, 32ms each (DemoParser.bufferedMoveTicks). */\nexport const MoveTickMs = 32;\n\n// Key constants from the V12 engine source\nexport const MaxGhostCount = 1024;\nexport const GhostIdBitSize = 10;\nexport const NetStringTableMaxStrings = 4096;\nexport const StringIdBitSize = 12;\nexport const NetEventClassBitSize = 6;\nexport const NetEventClassFirst = 255;\nexport const NetObjectClassBitSize = 7;\nexport const NetObjectClassFirst = 0;\nexport const MaxPacketDataSize = 1500;\nexport const MaxTriggerKeys = 6;\nexport const MoveCountBits = 5;\nexport const MaxMoveCount = 30;\n\n// GhostingMessageEvent message types (NetConnection::GhostMSG enum).\nexport const GhostMsgGhostAlwaysDone = 0;\nexport const GhostMsgGhostAlwaysAck = 1;\nexport const GhostMsgEndGhosting = 2;\nexport const GhostMsgGhostingActive = 3;\n\n// DataBlock constants.\n// For SimDataBlockEvent header (initial block + events), the binary uses:\n// readInt(11) objectId, readInt(7) classId, readInt(11) index, readInt(12) total.\n// For DataBlock references in payloads (readDataBlockRef), V12 source uses:\n// readRangedU32(DataBlockObjectIdFirst, DataBlockObjectIdLast).\nexport const DataBlockObjectIdFirst = 3;\nexport const DataBlockObjectIdBitSize = 10;\nexport const DataBlockObjectIdLast =\n DataBlockObjectIdFirst + (1 << DataBlockObjectIdBitSize) - 1; // 1026\nexport const DataBlockClassFirst = 128;\nexport const DataBlockClassBitSize = 7;\n\n// SimDataBlockEvent header bit sizes (from decompiled binary).\n// These are the HEADER field sizes, which differ from the payload reference sizes.\n// readClassInfo uses getNextPow2(0x800=2048) → getBitCount(2048)=11 for objectId.\n// The classId, index, and total are read with literal values 7, 11, 12 (from 0x80, 0xb, 0xc).\nexport const SimDBEventObjectIdBits = 11;\nexport const SimDBEventClassIdBits = 7; // same as DataBlockClassBitSize\nexport const SimDBEventIndexBits = 11;\nexport const SimDBEventTotalBits = 12;\n\n// Deterministic DataBlock class name mapping, derived from machine code\n// analysis of the Tribes 2 binary (build 25034). All 54 DataBlock classes\n// with mClassIdBase=0x80 are sorted by C strcmp (ASCII byte order), which\n// is how AbstractClassRep::initialize assigns sequential classIds.\n// Index N in this array corresponds to classId N (group-local) or\n// classId N+128 (V12 global format).\nexport const DataBlockClassNames: readonly string[] = [\n \"AudioDescription\", // 0 / 128\n \"AudioEnvironment\", // 1 / 129\n \"AudioProfile\", // 2 / 130\n \"AudioSampleEnvironment\", // 3 / 131\n \"BombProjectileData\", // 4 / 132\n \"CameraData\", // 5 / 133\n \"CannedChatItem\", // 6 / 134\n \"CommanderIconData\", // 7 / 135\n \"DebrisData\", // 8 / 136\n \"DecalData\", // 9 / 137\n \"ELFProjectileData\", // 10 / 138\n \"EffectProfile\", // 11 / 139\n \"EnergyProjectileData\", // 12 / 140\n \"ExplosionData\", // 13 / 141\n \"FireballAtmosphereData\", // 14 / 142\n \"FlareProjectileData\", // 15 / 143\n \"FlyingVehicleData\", // 16 / 144\n \"ForceFieldBareData\", // 17 / 145\n \"GameBaseData\", // 18 / 146\n \"GrenadeProjectileData\", // 19 / 147\n \"HoverVehicleData\", // 20 / 148\n \"ItemData\", // 21 / 149\n \"JetEffectData\", // 22 / 150\n \"LightningData\", // 23 / 151\n \"LinearFlareProjectileData\", // 24 / 152\n \"LinearProjectileData\", // 25 / 153\n \"MissionMarkerData\", // 26 / 154\n \"ParticleData\", // 27 / 155\n \"ParticleEmissionDummyData\", // 28 / 156\n \"ParticleEmitterData\", // 29 / 157\n \"PlayerData\", // 30 / 158\n \"PrecipitationData\", // 31 / 159\n \"ProjectileData\", // 32 / 160\n \"RepairProjectileData\", // 33 / 161\n \"RunningLightData\", // 34 / 162\n \"SeekerProjectileData\", // 35 / 163\n \"SensorData\", // 36 / 164\n \"ShapeBaseData\", // 37 / 165\n \"ShapeBaseImageData\", // 38 / 166\n \"ShockLanceProjectileData\", // 39 / 167\n \"ShockwaveData\", // 40 / 168\n \"SimDataBlock\", // 41 / 169\n \"SniperProjectileData\", // 42 / 170\n \"SplashData\", // 43 / 171\n \"StaticShapeData\", // 44 / 172\n \"StationFXPersonalData\", // 45 / 173\n \"StationFXVehicleData\", // 46 / 174\n \"TSShapeConstructor\", // 47 / 175\n \"TargetProjectileData\", // 48 / 176\n \"TracerProjectileData\", // 49 / 177\n \"TriggerData\", // 50 / 178\n \"TurretData\", // 51 / 179\n \"TurretImageData\", // 52 / 180\n \"WheeledVehicleData\", // 53 / 181\n] as const;\n\n// Deterministic NetObject (ghost) class name mapping, derived from machine code\n// analysis of the Tribes 2 binary (build 25034). All 53 NetObject classes\n// with mClassIdBase=0 are sorted by C strcmp (ASCII byte order), which\n// is how AbstractClassRep::initialize assigns sequential classIds.\n// Index N in this array corresponds to classId N (NetObjectClassFirst + N).\n// Verified against decompiled FUN_00423cb0 class table initialization.\n// Vehicle is NOT a ghost class (classGroup=0xFFFFFFFF in binary).\nexport const NetObjectClassNames: readonly string[] = [\n \"AIObjective\", // 0\n \"AudioEmitter\", // 1\n \"BeaconObject\", // 2\n \"BombProjectile\", // 3\n \"Camera\", // 4\n \"Debris\", // 5\n \"ELFProjectile\", // 6\n \"EnergyProjectile\", // 7\n \"FireballAtmosphere\", // 8\n \"FlareProjectile\", // 9\n \"FlyingVehicle\", // 10\n \"ForceFieldBare\", // 11\n \"GameBase\", // 12\n \"GrenadeProjectile\", // 13\n \"HoverVehicle\", // 14\n \"InteriorInstance\", // 15\n \"Item\", // 16\n \"Lightning\", // 17\n \"LinearFlareProjectile\", // 18\n \"LinearProjectile\", // 19\n \"Marker\", // 20\n \"MissionArea\", // 21\n \"MissionMarker\", // 22\n \"ParticleEmissionDummy\", // 23\n \"PhysicalZone\", // 24\n \"Player\", // 25\n \"Precipitation\", // 26\n \"Projectile\", // 27\n \"RepairProjectile\", // 28\n \"ScopeAlwaysShape\", // 29\n \"SeekerProjectile\", // 30\n \"ShapeBase\", // 31\n \"ShockLanceProjectile\", // 32\n \"Shockwave\", // 33\n \"SimpleNetObject\", // 34\n \"Sky\", // 35\n \"SniperProjectile\", // 36\n \"SpawnSphere\", // 37\n \"Splash\", // 38\n \"StaticShape\", // 39\n \"StationFXPersonal\", // 40\n \"StationFXVehicle\", // 41\n \"Sun\", // 42\n \"TSStatic\", // 43\n \"TargetProjectile\", // 44\n \"TerrainBlock\", // 45\n \"TracerProjectile\", // 46\n \"Trigger\", // 47\n \"Turret\", // 48\n \"VehicleBlocker\", // 49\n \"WaterBlock\", // 50\n \"WayPoint\", // 51\n \"WheeledVehicle\", // 52\n] as const;\n\n// Deterministic NetEvent class name mapping, derived from machine code\n// analysis of the Tribes 2 binary (build 25034). All 26 NetEvent classes\n// with mClassIdBase=0xFF are sorted by C strcmp (ASCII byte order), which\n// is how AbstractClassRep::initialize assigns sequential classIds.\n// Index N in this array corresponds to classId NetEventClassFirst + N (255 + N).\nexport const NetEventClassNames: readonly string[] = [\n \"CRCChallengeEvent\", // 0 / 255\n \"CRCChallengeResponseEvent\", // 1 / 256\n \"FogChallengeEvent\", // 2 / 257\n \"GhostAlwaysObjectEvent\", // 3 / 258\n \"GhostingMessageEvent\", // 4 / 259\n \"GravityEvent\", // 5 / 260\n \"LightningStrikeEvent\", // 6 / 261\n \"NetStringEvent\", // 7 / 262\n \"PathManagerEvent\", // 8 / 263\n \"RemoteCommandEvent\", // 9 / 264\n \"RemoveClientTargetTypeEvent\", // 10 / 265\n \"ResetClientTargetsEvent\", // 11 / 266\n \"SensorGroupColorEvent\", // 12 / 267\n \"SetMissionCRCEvent\", // 13 / 268\n \"SetObjectActiveImageEvent\", // 14 / 269\n \"SetSensorGroupEvent\", // 15 / 270\n \"SetServerTargetEvent\", // 16 / 271\n \"Sim2DAudioEvent\", // 17 / 272\n \"Sim3DAudioEvent\", // 18 / 273\n \"SimDataBlockEvent\", // 19 / 274\n \"SimTargetAudioEvent\", // 20 / 275\n \"SimVoiceStreamEvent\", // 21 / 276\n \"SimpleMessageEvent\", // 22 / 277\n \"TargetFreeEvent\", // 23 / 278\n \"TargetInfoEvent\", // 24 / 279\n \"TargetToEvent\", // 25 / 280\n] as const;\n\n// Block types in the U16 packed format (type = typeSize >> 12)\n// These are from TorqueSDK-style recordBlock/handleRecordedBlock\nexport const BlockTypePacket = 0; // Received network packet (dnet data)\nexport const BlockTypeSendPacket = 1; // SendPacket trigger (size=0, no data)\nexport const BlockTypeMove = 2; // Raw Move struct (64 bytes)\nexport const BlockTypeInfo = 3; // Info block (8 bytes: U32 + F32)\n\n// Packet types from dnet\nexport const DataPacket = 0;\nexport const PingPacket = 1;\nexport const AckPacket = 2;\n\nexport interface Move {\n px: number;\n py: number;\n pz: number;\n pyaw: number;\n ppitch: number;\n proll: number;\n x: number;\n y: number;\n z: number;\n yaw: number;\n pitch: number;\n roll: number;\n id: number;\n sendCount: number;\n freeLook: boolean;\n trigger: boolean[];\n}\n\n/**\n * Type 3 block, written by GameConnection::readPacket right after each\n * received packet (FUN_005fb9b0): the `$firstPerson` flag and the control\n * camera FOV, replayed through setControlCameraFov on playback.\n */\nexport interface InfoBlock {\n /** Byte 0 of the block. The engine writes a bool through a 4-byte slot;\n * the other three bytes are uninitialized stack in real recordings. */\n firstPerson: boolean;\n /** Control camera field of view in degrees (F32). */\n cameraFov: number;\n}\n\nexport interface DataBlockHeader {\n objectId: number;\n classId: number;\n index: number;\n total: number;\n dataBitsStart: number;\n}\n\nexport interface DnetHeader {\n gameFlag: boolean;\n connectSeqBit: number;\n seqNumber: number;\n highestAck: number;\n packetType: number;\n ackByteCount: number;\n ackMask: number;\n}\n\nexport interface RateInfo {\n updateDelay?: number;\n packetSize?: number;\n maxUpdateDelay?: number;\n maxPacketSize?: number;\n}\n\nexport interface GhostUpdate {\n index: number;\n type: \"create\" | \"update\" | \"delete\";\n classId?: number;\n updateBitsStart: number;\n updateBitsEnd: number;\n parsedData?: ParsedData;\n /** Set when the ghost's data could not be parsed (unknown class,\n * parser threw, or tracker divergence). The ghost section stops\n * here and the tracker no longer mirrors the server. */\n failed?: boolean;\n /** Why parsing failed (parser name and error text). */\n error?: string;\n}\n\n/**\n * A packet the parser could not fully consume. The engine drops the\n * connection on any of these (\"Invalid packet\"), and by default the\n * PacketParser halts too (see `haltOnFault`): later packets come back\n * empty with the same fault attached. Continuing would mean parsing\n * against ghost/event state that no longer mirrors the server.\n */\nexport interface ParseFault {\n stage: \"gameState\" | \"event\" | \"ghost\";\n message: string;\n}\n\nexport interface NetEventInfo {\n classId: number;\n guaranteed: boolean;\n sequenceNumber?: number;\n absoluteSequenceNumber?: number;\n dataBitsStart: number;\n dataBitsEnd: number;\n parsedData?: ParsedData;\n /** Set when the event could not be parsed (unknown class or parser\n * threw), leaving the stream position unreliable. */\n failed?: boolean;\n /** Why parsing failed (parser name and error text). */\n error?: string;\n}\n\nexport interface PacketData {\n dnetHeader: DnetHeader;\n rateInfo: RateInfo;\n gameState: GameState;\n events: NetEventInfo[];\n ghosts: GhostUpdate[];\n /** Bit position where ghost section starts (readGhosts call). */\n ghostSectionStart?: number;\n /** Present when any section of the packet failed to parse. */\n parseFault?: ParseFault;\n}\n\nexport interface GameState {\n lastMoveAck: number;\n damageFlash?: number;\n whiteOut?: number;\n selfLocked?: boolean;\n selfHomed?: boolean;\n seekerTracking?: boolean;\n seekerTrackingPos?: { x: number; y: number; z: number };\n seekerMode?: number;\n seekerObjectGhostIndex?: number;\n targetPos?: { x: number; y: number; z: number };\n pinged: boolean;\n jammed: boolean;\n controlObjectGhostIndex?: number;\n controlObjectDataStart?: number;\n controlObjectDataEnd?: number;\n controlObjectData?: ParsedData;\n /** Why the control object's readPacketData could not be applied. */\n controlObjectError?: string;\n compressionPoint?: { x: number; y: number; z: number };\n targetVisibility?: { index: number; mask: number }[];\n cameraFov?: number;\n}\n\nexport interface DemoBlock {\n index: number;\n type: number;\n size: number;\n data: Uint8Array;\n parsed?: PacketData | Move | InfoBlock;\n /** Set if decoding the block threw (a parser bug — packets report\n * wire problems through `PacketData.parseFault` instead). */\n parseError?: string;\n}\n\nexport interface ConnectionProtocolState {\n lastSeqRecvdAtSend: number[];\n lastSeqRecvd: number;\n highestAckedSeq: number;\n lastSendSeq: number;\n ackMask: number;\n connectSequence: number;\n lastRecvAckAck: number;\n connectionEstablished: boolean;\n}\n\nexport interface StringTableEntry {\n id: number;\n value: string;\n}\n\nexport interface ParsedDataBlock {\n classId: number;\n className: string;\n objectId: number;\n data: ParsedData;\n}\n\nexport interface ScoreEntry {\n clientId: number;\n teamId: number;\n score: number;\n field0: number;\n field1: number;\n field2: number;\n isBot: boolean;\n triggerFlags: boolean[];\n}\n\n/**\n * IFF (Identification Friend or Foe) color for one sensor group pairing.\n * sensorGroupColors[myGroup][theirGroup] determines how `theirGroup` appears\n * to `myGroup` (e.g., red for enemy, green for friendly).\n */\nexport interface SensorGroupColor {\n group: number;\n targetGroup: number;\n r: number;\n g: number;\n b: number;\n a: number;\n}\n\nexport interface TargetEntry {\n targetId: number;\n sensorData?: number;\n voiceMapData?: number;\n name?: string;\n skin?: string;\n skinPref?: string;\n voice?: string;\n typeDescription?: string;\n sensorGroup: number;\n targetData: number;\n dataBlockRef?: number;\n damageLevel: number;\n}\n\nexport interface PathManagerEntry {\n entryId: number;\n records: {\n field0: number;\n field1: number;\n field2: number;\n auxField: number;\n }[];\n}\n\nexport interface InitialBlockData {\n taggedStrings: Map<number, string>;\n dataBlockHeaders: DataBlockHeader[];\n dataBlockCount: number;\n dataBlocks: Map<number, ParsedDataBlock>;\n /** Initial $firstPerson state from GameConnection::writeDemoStartBlock. */\n firstPerson: boolean;\n connectionFields: number[];\n stateArray: number[];\n scoreEntries: ScoreEntry[];\n demoValues: string[];\n sensorGroupColors: SensorGroupColor[];\n targetEntries: TargetEntry[];\n connectionState: ConnectionProtocolState;\n roundTripTime: number;\n packetLoss: number;\n pathManager: PathManagerEntry[];\n notifyCount: number;\n nextRecvEventSeq: number;\n ghostingSequence: number;\n initialGhosts: GhostUpdate[];\n initialEvents: NetEventInfo[];\n controlObjectGhostIndex: number;\n controlObjectData?: ParsedData;\n /** Compression point established by the control object's readPacketData\n * (its position), used to decode compressed points in packets that\n * precede the first in-stream compression-point update. */\n initialCompressionPoint?: { x: number; y: number; z: number };\n missionName: string;\n missionCRC: number;\n phase2TrailingBits?: number;\n phase2Valid?: boolean;\n phase2Error?: string;\n /**\n * Seeded state the engine would choke on during playback even though\n * the block decodes. Empty for every recording made by Tribes2.exe;\n * populated for hand-built (from-connect) initial blocks that break an\n * engine invariant — e.g. a notify count that does not equal\n * `lastSendSeq - highestAckedSeq` (NetConnection::handleNotify\n * dereferences an empty notify queue).\n */\n warnings: string[];\n}\n\nexport interface DemoHeader {\n identString: string;\n protocolVersion: number;\n demoLengthMs: number;\n initialBlockSize: number;\n}\n\nexport interface DemoFile {\n header: DemoHeader;\n initialBlock: InitialBlockData;\n blocks: DemoBlock[];\n}\n\nexport interface LoadResult {\n header: DemoHeader;\n initialBlock: InitialBlockData;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "t2-demo-parser",
3
- "version": "2.2.0",
3
+ "version": "3.0.0",
4
4
  "author": "Brian Beck <exogen@gmail.com>",
5
5
  "description": "Parser for Tribes 2 demo recordings (.rec files)",
6
6
  "keywords": [
@@ -12,6 +12,9 @@
12
12
  "parser"
13
13
  ],
14
14
  "license": "MIT",
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
15
18
  "type": "module",
16
19
  "files": [
17
20
  "dist"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=BitStream.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"BitStream.test.d.ts","sourceRoot":"","sources":["../src/BitStream.test.ts"],"names":[],"mappings":""}