t2-demo-parser 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BitStream.js.map +1 -1
- package/dist/BitStream.test.js.map +1 -1
- package/dist/ClassRegistry.js.map +1 -1
- package/dist/ClassRegistry.test.js.map +1 -1
- package/dist/DataBlockParsers.d.ts.map +1 -1
- package/dist/DataBlockParsers.js +43 -38
- package/dist/DataBlockParsers.js.map +1 -1
- package/dist/DataBlockParsers.test.js +30 -0
- package/dist/DataBlockParsers.test.js.map +1 -1
- package/dist/DemoParser.js.map +1 -1
- package/dist/DemoParser.test.js.map +1 -1
- package/dist/EventParsers.js.map +1 -1
- package/dist/GhostManager.js.map +1 -1
- package/dist/GhostTracker.test.js.map +1 -1
- package/dist/HuffmanProcessor.js.map +1 -1
- package/dist/LiveParser.js.map +1 -1
- package/dist/PacketParser.js.map +1 -1
- package/dist/Timeline.js.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/dataBlockDataTypes.d.ts +28 -21
- package/dist/dataBlockDataTypes.d.ts.map +1 -1
- package/dist/dataBlockDataTypes.js.map +1 -1
- package/dist/dataTypes.js.map +1 -1
- package/dist/dump.js.map +1 -1
- package/dist/eventDataTypes.js.map +1 -1
- package/dist/ghostDataTypes.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/GhostManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GhostManager.js","sourceRoot":"","sources":["../src/GhostManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GhostManager.js","sourceRoot":"","sources":["../src/GhostManager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BitStream } from \"./BitStream.js\";\nimport type {\n ClassRegistry,\n ConnectionContext,\n GhostEntry,\n GhostTrackerInterface,\n} from \"./ClassRegistry.js\";\nimport type {\n MoveData,\n SoundSlot,\n ThreadState,\n ImageSlot,\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 BeaconObjectGhostData,\n TurretGhostData,\n MissionMarkerGhostData,\n WayPointGhostData,\n SpawnSphereGhostData,\n CameraGhostData,\n CameraPacketData,\n MarkerGhostData,\n SimpleNetObjectGhostData,\n InteriorInstanceGhostData,\n TSStaticGhostData,\n TerrainBlockGhostData,\n TriggerGhostData,\n VehicleBlockerGhostData,\n MissionAreaGhostData,\n AudioEmitterGhostData,\n PhysicalZoneGhostData,\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 SunGhostData,\n SkyGhostData,\n LightningGhostData,\n WaterBlockGhostData,\n SplashGhostData,\n ShockwaveGhostData,\n FireballAtmosphereGhostData,\n PrecipitationGhostData,\n ParticleEmissionDummyGhostData,\n StationFXPersonalGhostData,\n AIObjectiveGhostData,\n} from \"./ghostDataTypes.js\";\nimport { MaxTriggerKeys } from \"./types.js\";\n\n// ============================================================\n// Ghost Tracker — tracks ghost lifecycle (create/update/delete)\n// ============================================================\n\nexport class GhostTracker implements GhostTrackerInterface {\n private ghosts = new Map<number, GhostEntry>();\n\n getGhost(index: number): GhostEntry | undefined {\n return this.ghosts.get(index);\n }\n\n hasGhost(index: number): boolean {\n return this.ghosts.has(index);\n }\n\n createGhost(index: number, classId: number, className: string): GhostEntry {\n const entry: GhostEntry = { classId, className, state: {} };\n this.ghosts.set(index, entry);\n return entry;\n }\n\n deleteGhost(index: number): void {\n this.ghosts.delete(index);\n }\n\n getAllGhosts(): Map<number, GhostEntry> {\n return this.ghosts;\n }\n\n size(): number {\n return this.ghosts.size;\n }\n\n clear(): void {\n this.ghosts.clear();\n }\n}\n\n// ============================================================\n// Shared parsing helpers\n// ============================================================\n\nfunction readMove(bs: BitStream): MoveData {\n const pyaw = bs.readFlag() ? bs.readInt(16) : 0;\n const ppitch = bs.readFlag() ? bs.readInt(16) : 0;\n const proll = bs.readFlag() ? bs.readInt(16) : 0;\n const px = bs.readInt(6);\n const py = bs.readInt(6);\n const pz = bs.readInt(6);\n const freeLook = bs.readFlag();\n const trigger: boolean[] = [];\n for (let i = 0; i < MaxTriggerKeys; i++) {\n trigger.push(bs.readFlag());\n }\n return { pyaw, ppitch, proll, px, py, pz, freeLook, trigger };\n}\n\n/**\n * Read a packed ColorF: 4 × U8 (32 bits total), each converted to [0..1] float.\n * From decompiled binary: FUN_0043f040 reads 4 bytes, each × (1/255).\n */\nfunction readPackedColorF(\n bs: BitStream\n): { r: number; g: number; b: number; a: number } {\n return {\n r: bs.readInt(8) / 255,\n g: bs.readInt(8) / 255,\n b: bs.readInt(8) / 255,\n a: bs.readInt(8) / 255,\n };\n}\n\n/**\n * Tribes 2 object/datablock references are serialized via FUN_00436ce0/FUN_00436d10\n * as raw 11-bit object ids (nextPow2(0x800) -> bitCount 11).\n */\nfunction readObjectRef11(bs: BitStream): number {\n return bs.readInt(11);\n}\n\n// ============================================================\n// GameBase::unpackUpdate (base layer for all game objects)\n// ============================================================\n\nfunction readGameBaseUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): GameBaseGhostData {\n const result: GameBaseGhostData = {};\n\n // GameBase::unpackUpdate (FUN_005e3360)\n // DataBlockMask\n if (bs.readFlag()) {\n result.dataBlockId = readObjectRef11(bs);\n }\n\n // TargetMask\n if (bs.readFlag()) {\n // Optional explicit target id; otherwise remains -1.\n const hasTargetId = bs.readFlag();\n result.targetId = hasTargetId ? bs.readInt(9) : -1;\n }\n\n return result;\n}\n\n// ============================================================\n// ShapeBase::unpackUpdate (layer 2 — damage, threads, images, etc.)\n// ============================================================\n\nfunction readShapeBaseUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ShapeBaseGhostData {\n const result: ShapeBaseGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n // ShapeBase::unpackUpdate (FUN_005ef0e0)\n // Combined gate for all remaining ShapeBase masks.\n if (!bs.readFlag()) {\n return result;\n }\n\n // DamageMask\n if (bs.readFlag()) {\n result.damageLevel = bs.readFloat(6); // DamageLevelBits=6\n result.damageState = bs.readInt(2); // NumDamageStateBits=2\n result.blowApart = bs.readFlag();\n result.damageDir = bs.readNormalVector(8);\n }\n\n // SoundMask (4 sound slots)\n if (bs.readFlag()) {\n const sounds: SoundSlot[] = [];\n for (let i = 0; i < 4; i++) {\n if (bs.readFlag()) {\n const playing = bs.readFlag();\n const sound: SoundSlot = {\n index: i,\n playing,\n };\n if (playing) {\n sound.profileId = readObjectRef11(bs);\n }\n sounds.push(sound);\n }\n }\n if (sounds.length > 0) {\n result.sounds = sounds;\n }\n }\n\n // ThreadMask (script animation threads, 4 slots)\n if (bs.readFlag()) {\n const threads: ThreadState[] = [];\n for (let i = 0; i < 4; i++) {\n if (bs.readFlag()) {\n threads.push({\n index: i,\n sequence: bs.readInt(5),\n state: bs.readInt(2),\n forward: bs.readFlag(),\n atEnd: bs.readFlag(),\n });\n }\n }\n if (threads.length > 0) {\n result.threads = threads;\n }\n }\n\n // ImageMask (8 mounted image slots)\n let imageSkinDirty = false;\n if (bs.readFlag()) {\n const images: ImageSlot[] = [];\n for (let i = 0; i < 8; i++) {\n if (bs.readFlag()) {\n const img: ImageSlot = { index: i };\n\n // Optional image datablock reference.\n if (bs.readFlag()) {\n img.dataBlockId = readObjectRef11(bs);\n } else {\n img.dataBlockId = 0;\n }\n\n // FUN_00588870 payload: hasSkin -> (tagIndex|string).\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n img.skinTagIndex = bs.readInt(10);\n imageSkinDirty = true;\n } else {\n img.skinName = bs.readString();\n imageSkinDirty = true;\n }\n }\n\n // Per-slot state flags + 3-bit fire count.\n // The retail Tribes 2 binary (FUN_005ef0e0) packs these in a different\n // order than the V12 SDK source code. Verified via Ghidra decompilation:\n // the binary stores to offsets 0x3ac (triggerDown), 0x398 (loaded),\n // 0x3ad (ammo), 0x3af (wet), 0x3ae (target), confirmed by matching the\n // setImage(slot, db, skin, loaded, ammo, triggerDown) call signature.\n img.triggerDown = bs.readFlag();\n img.loaded = bs.readFlag();\n img.ammo = bs.readFlag();\n img.wet = bs.readFlag();\n img.target = bs.readFlag();\n img.fireCount = bs.readInt(3);\n\n // Mounted-image firing bit (FUN_005ef0e0):\n // Read when (this+0x18 & 8)==0, i.e., when the object is NOT\n // \"properly added\" to the scene. Initial block creates and packet\n // stream ghost creates are NOT properly added (isInitial=true),\n // but packet stream ghost updates ARE properly added (isInitial=false).\n if (isInitial) {\n img.imageExtraFlag = bs.readFlag();\n }\n\n images.push(img);\n }\n }\n if (images.length > 0) {\n result.images = images;\n }\n }\n\n // CloakMask section (ShapeBase, binary-verified FUN_005ef0e0).\n // Combined mask: ShieldMask | CloakMask | InvincibleMask (0x1c0).\n if (bs.readFlag()) {\n // CloakMask sub-section.\n const hasCloakData = bs.readFlag();\n if (hasCloakData) {\n result.cloaked = bs.readFlag(); // mCloaked (stealth pack active)\n result.isControlled = bs.readFlag(); // bool(getControllingClient())\n const fading = bs.readFlag(); // mFading && mFadeElapsedTime >= mFadeDelay\n result.fading = fading;\n\n if (fading) {\n result.fadeOut = bs.readFlag(); // mFadeOut (true=fading out, false=fading in)\n result.fadeTime = bs.readF32(); // mFadeTime (duration in seconds)\n } else {\n result.fadeVal = bs.readFlag(); // mFadeVal == 1.0 (true=visible, false=hidden)\n }\n }\n\n const hasStateB = bs.readFlag();\n if (hasStateB) {\n const useStateBFlag = bs.readFlag();\n if (useStateBFlag) {\n const stateBMode = bs.readFlag();\n result.stateBMode = stateBMode;\n if (stateBMode) {\n result.energyPackOn = true;\n } else {\n result.energyPackOn = false;\n }\n } else {\n result.shieldNormal = bs.readNormalVector(8);\n result.energyPercent = bs.readFloat(5);\n }\n }\n\n if (bs.readFlag()) {\n result.stateValue1 = bs.readU32();\n result.stateValue2 = bs.readU32();\n }\n }\n\n if (imageSkinDirty) {\n result.imageSkinDirty = true;\n }\n\n // MountedMask\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n // Mounting\n result.mountObject = bs.readInt(10);\n result.mountNode = bs.readInt(5); // NumMountPointBits=5\n } else {\n result.mountObject = -1; // Unmounting\n }\n }\n\n return result;\n}\n\n// ============================================================\n// Player ghost parser\n// ============================================================\n\nfunction playerUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): PlayerGhostData {\n const result: PlayerGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n // ImpactMask (only on non-initial updates)\n if (bs.readFlag()) {\n result.impactSound = bs.readInt(3); // ImpactBits=3\n }\n\n // ActionMask — action animation\n if (bs.readFlag()) {\n result.action = bs.readInt(8); // ActionAnimBits=8\n result.actionHoldAtEnd = bs.readFlag();\n result.actionAtEnd = bs.readFlag();\n result.actionFirstPerson = bs.readFlag();\n if (!result.actionAtEnd) {\n if (bs.readFlag()) {\n result.actionAnimPos = bs.readSignedFloat(6);\n }\n }\n }\n\n // ActionMask — arm animation\n if (bs.readFlag()) {\n result.armAction = bs.readInt(8); // ActionAnimBits=8\n }\n\n // Control object shortcut — if controlled by this client, skip rest\n if (bs.readFlag()) {\n return result;\n }\n\n // MoveMask\n if (bs.readFlag()) {\n result.actionState = bs.readInt(3); // NumStateBits=3\n if (bs.readFlag()) {\n // RecoverState\n result.recoverTicks = bs.readInt(7); // RecoverDelayBits=7\n }\n\n // FUN_005db2d0: two state flags immediately before compressed position.\n result.moveFlag0 = bs.readFlag();\n result.moveFlag1 = bs.readFlag();\n\n result.position = bs.readCompressedPoint(conn.compressionPoint);\n\n // Velocity\n if (bs.readFlag()) {\n // Binary (0x5db850): readInt(13) FIRST, then readNormalVector(10)\n const velMag = bs.readInt(13) / 32.0;\n const velDir = bs.readNormalVector(10);\n result.velocity = {\n x: velDir.x * velMag,\n y: velDir.y * velMag,\n z: velDir.z * velMag,\n };\n } else {\n result.velocity = { x: 0, y: 0, z: 0 };\n }\n\n result.headX = bs.readSignedFloat(6); // * maxLookAngle\n result.headZ = bs.readSignedFloat(6); // * maxLookAngle\n result.rotationZ = bs.readFloat(7) * 2 * Math.PI;\n\n result.move = readMove(bs);\n result.allowWarp = bs.readFlag();\n }\n\n // Energy (always present after MoveMask section)\n result.energy = bs.readFloat(5); // EnergyLevelBits=5\n\n return result;\n}\n\nfunction playerReadPacketData(\n bs: BitStream,\n conn: ConnectionContext\n): PlayerPacketData {\n const result: PlayerPacketData = {};\n\n // ShapeBase::readPacketData\n result.energyLevel = bs.readF32();\n result.rechargeRate = bs.readF32();\n\n // Player::readPacketData\n result.actionState = bs.readInt(3); // NumStateBits=3\n if (bs.readFlag()) {\n // RecoverState\n result.recoverTicks = bs.readInt(7);\n }\n if (bs.readFlag()) {\n result.jumpDelay = bs.readInt(7); // JumpDelayBits=7\n }\n\n if (bs.readFlag()) {\n // Not mounted — read full position/velocity\n const pos = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n result.position = pos;\n // Update compression point (this IS the compression point)\n conn.compressionPoint = pos;\n result.velocity = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n result.jumpSurfaceLastContact = bs.readInt(4);\n }\n\n result.headX = bs.readF32();\n result.headZ = bs.readF32();\n result.rotationZ = bs.readF32();\n\n if (bs.readFlag()) {\n // Has control object (e.g., vehicle being piloted)\n // Binary FUN_005dab20: readInt(10) + resolveGhost + obj->readPacketData(conn, stream)\n const controlGhostIndex = bs.readInt(10);\n result.controlObjectGhost = controlGhostIndex;\n\n // Recursively call the control object's readPacketData.\n // Look up the ghost class and find its readPacketData parser.\n const controlGhost = conn.ghostTracker.getGhost(controlGhostIndex);\n const controlParser = controlGhost\n ? conn.getGhostParser?.(controlGhost.classId)\n : undefined;\n if (controlParser?.readPacketData) {\n const prevGhostIndex = conn.currentGhostIndex;\n conn.currentGhostIndex = controlGhostIndex;\n result.controlObjectData = controlParser.readPacketData(bs, conn);\n conn.currentGhostIndex = prevGhostIndex;\n }\n }\n\n result.disableMove = bs.readFlag();\n result.pilot = bs.readFlag();\n\n return result;\n}\n\n// ============================================================\n// Vehicle ghost parser\n// ============================================================\n\nfunction vehicleUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): VehicleGhostData {\n const result: VehicleGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n result.jetting = bs.readFlag();\n\n // Control object shortcut — server writes true and returns early,\n // meaning no further Vehicle data follows in the stream.\n if (bs.readFlag()) {\n result._controlledEarlyReturn = true;\n return result;\n }\n\n // Steering\n result.steeringYaw = bs.readFloat(9);\n result.steeringPitch = bs.readFloat(9);\n result.move = readMove(bs);\n result.frozen = bs.readFlag();\n\n // PositionMask\n if (bs.readFlag()) {\n result.position = bs.readCompressedPoint(conn.compressionPoint);\n // Angular position as quaternion (4x F32)\n result.angPosition = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n w: bs.readF32(),\n };\n // Linear momentum (3x F32)\n result.linMomentum = bs.readPoint3F();\n // Angular momentum (3x F32)\n result.angMomentum = bs.readPoint3F();\n }\n\n // EnergyMask\n if (bs.readFlag()) {\n result.energy = bs.readFloat(8);\n }\n\n return result;\n}\n\nfunction vehicleReadPacketData(\n bs: BitStream,\n conn: ConnectionContext\n): VehiclePacketData {\n // Vehicle::readPacketData (binary FUN_0060d740)\n // ShapeBase::readPacketData → GameBase::readPacketData (empty) + energy + recharge\n const result: VehiclePacketData = {};\n result.energyLevel = bs.readF32();\n result.rechargeRate = bs.readF32();\n\n // Vehicle-specific rigid body state\n result.steering = { x: bs.readF32(), y: bs.readF32() };\n const linPos = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.linPosition = linPos;\n result.angPosition = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n w: bs.readF32(),\n };\n result.linMomentum = bs.readPoint3F();\n result.angMomentum = bs.readPoint3F();\n result.disableMove = bs.readFlag();\n result.frozen = bs.readFlag();\n conn.compressionPoint = linPos;\n return result;\n}\n\nfunction wheeledVehicleReadPacketData(\n bs: BitStream,\n conn: ConnectionContext\n): WheeledVehiclePacketData {\n // WheeledVehicle::readPacketData (binary FUN_00615840)\n // Calls Parent::readPacketData (Vehicle) + braking flag + per-wheel data\n const result: WheeledVehiclePacketData = vehicleReadPacketData(bs, conn);\n result.braking = bs.readFlag();\n // wheelCount × 3 F32 (avel, Dy, Dx per wheel)\n // Use ghost wheel count cache (populated during ghost creates)\n let wheelCount = 4;\n const ghostIdx = conn.currentGhostIndex;\n if (ghostIdx !== undefined) {\n const cached = ghostWheelCountCache.get(ghostIdx);\n if (cached !== undefined) {\n wheelCount = cached;\n }\n }\n const wheels: Array<{ avel: number; dy: number; dx: number }> = [];\n for (let i = 0; i < wheelCount; i++) {\n wheels.push({\n avel: bs.readF32(),\n dy: bs.readF32(),\n dx: bs.readF32(),\n });\n }\n result.wheels = wheels;\n return result;\n}\n\n// ============================================================\n// FlyingVehicle ghost parser\n// ============================================================\n\nfunction flyingVehicleUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): FlyingVehicleGhostData {\n const result: FlyingVehicleGhostData = vehicleUnpackUpdate(bs, isInitial, conn);\n\n // FlyingVehicle has its own control gate flag (separate from Vehicle's).\n // Retail binary removed the V12 ThrustMask wrapper but kept the per-subclass\n // control check: if true, no FlyingVehicle-specific data follows.\n if (bs.readFlag()) {\n return result;\n }\n result.createHeightOn = bs.readFlag();\n result.thrustDirection = bs.readInt(3); // NumThrustBits=3\n\n return result;\n}\n\n// ============================================================\n// HoverVehicle ghost parser\n// ============================================================\n\nfunction hoverVehicleUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): HoverVehicleGhostData {\n const result: HoverVehicleGhostData = vehicleUnpackUpdate(bs, isInitial, conn);\n result.thrustDirection = bs.readInt(3); // NumThrustBits=3\n return result;\n}\n\n// ============================================================\n// Item ghost parser\n// ============================================================\n\nfunction itemUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ItemGhostData {\n const result: ItemGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n // InitialUpdateMask\n if (bs.readFlag()) {\n result.rotate = bs.readFlag();\n result.isStatic = bs.readFlag();\n result.collideable = bs.readFlag();\n if (bs.readFlag()) {\n result.scale = bs.readPoint3F();\n }\n }\n\n // ThrowSrcMask\n if (bs.readFlag()) {\n result.collisionObject = bs.readInt(10);\n }\n\n // RotationMask (only if !rotate)\n if (bs.readFlag()) {\n const zSign = bs.readFlag() ? -1 : 1;\n const angle = bs.readF32();\n result.rotation = { zSign, angle };\n }\n\n // PositionMask\n if (bs.readFlag()) {\n result.position = bs.readPoint3F();\n const atRest = bs.readFlag();\n result.atRest = atRest;\n if (!atRest) {\n result.velocity = bs.readPoint3F();\n }\n result.warp = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// StaticShape ghost parser\n// ============================================================\n\nfunction staticShapeUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): StaticShapeGhostData {\n const result: StaticShapeGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n // PositionMask\n if (bs.readFlag()) {\n // FUN_00602da0 -> FUN_0043c4c0 reads compressed affine transform\n // (position + quaternion xyz + sign bit), not a full MatrixF.\n const transform = bs.readAffineTransform();\n result.transform = transform;\n result.position = transform.position;\n result.scale = bs.readPoint3F();\n }\n\n // Power state (always present)\n result.powered = bs.readFlag();\n\n return result;\n}\n\nfunction scopeAlwaysShapeUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): StaticShapeGhostData {\n // ScopeAlwaysShape vtable +0x4c -> FUN_00602da0 (same as StaticShape).\n return staticShapeUnpackUpdate(bs, isInitial, conn);\n}\n\nfunction markerUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): MarkerGhostData {\n // Marker::unpackUpdate (simPath.cc): Parent::unpackUpdate (SceneObject,\n // no data) then reads just a Point3F position.\n const position = bs.readPoint3F();\n return { position };\n}\n\nfunction simpleNetObjectUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): SimpleNetObjectGhostData {\n // SimpleNetObject vtable +0x4c -> FUN_005c5220 (single string).\n return { message: bs.readString() };\n}\n\nfunction beaconObjectUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): BeaconObjectGhostData {\n // BeaconObject vtable +0x4c -> FUN_006a3ae0:\n // StaticShape payload + optional 2-bit beacon type.\n const result: BeaconObjectGhostData = staticShapeUnpackUpdate(bs, isInitial, conn);\n if (bs.readFlag()) {\n result.beaconType = bs.readInt(2);\n }\n return result;\n}\n\nfunction missionMarkerUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): MissionMarkerGhostData {\n // MissionMarker extends ShapeBase (confirmed by V12 source and empirical\n // testing). The Ghidra decompilation misidentified the parent call — the\n // real parent is ShapeBase::unpackUpdate, not an empty stub.\n const result: MissionMarkerGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n // MissionMarker's own field: PositionMask\n if (bs.readFlag()) {\n const transform = bs.readAffineTransform();\n result.transform = transform;\n result.position = transform.position;\n result.scale = bs.readPoint3F();\n }\n\n return result;\n}\n\nfunction debrisUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): DebrisGhostData {\n // Debris vtable +0x4c -> FUN_006844d0.\n // Confirmed in decompiled binary: calls parent GameBase::unpackUpdate first.\n const result: DebrisGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n // 6 × F32\n result.value0 = bs.readF32();\n result.value1 = bs.readF32();\n result.value2 = bs.readF32();\n result.value3 = bs.readF32();\n result.value4 = bs.readF32();\n result.value5 = bs.readF32();\n\n // 4 × bool (readBool = 8-bit)\n result.bool0 = bs.readBool();\n result.bool1 = bs.readBool();\n result.bool2 = bs.readBool();\n result.bool3 = bs.readBool();\n\n // 6 × F32\n result.value6 = bs.readF32();\n result.value7 = bs.readF32();\n result.value8 = bs.readF32();\n result.value9 = bs.readF32();\n result.value10 = bs.readF32();\n result.value11 = bs.readF32();\n\n // 2 × bool\n result.bool4 = bs.readBool();\n result.bool5 = bs.readBool();\n\n // 3 × F32\n result.value12 = bs.readF32();\n result.value13 = bs.readF32();\n result.value14 = bs.readF32();\n\n // 1 × bool\n result.bool6 = bs.readBool();\n\n // 2 × string\n result.string0 = bs.readString();\n result.string1 = bs.readString();\n\n // 3 conditional object references\n const refs: number[] = [];\n for (let i = 0; i < 2; i++) {\n refs.push(bs.readFlag() ? readObjectRef11(bs) : -1);\n }\n result.objectRefs = refs;\n result.objectRef2 = bs.readFlag() ? readObjectRef11(bs) : -1;\n\n return result;\n}\n\nfunction projectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ProjectileGhostData {\n // Projectile vtable +0x4c -> FUN_005e3360 (GameBase only).\n return readGameBaseUpdate(bs, isInitial, conn);\n}\n\n// ============================================================\n// Projectile ghost parsers\n// ============================================================\n\nfunction bombProjectileUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): BombProjectileGhostData {\n // BombProjectile vtable +0x4c -> FUN_00636050.\n const result: BombProjectileGhostData = {};\n\n // Parent GameBase::unpackUpdate\n if (bs.readFlag()) {\n result.dataBlockId = readObjectRef11(bs);\n }\n if (bs.readFlag()) {\n const hasTargetId = bs.readFlag();\n result.targetId = hasTargetId ? bs.readInt(9) : -1;\n }\n\n if (!bs.readFlag()) {\n if (bs.readFlag()) {\n result.position = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.velocity = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n }\n if (!bs.readFlag()) {\n return result;\n }\n result.endPoint = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.endNormal = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n return result;\n }\n\n result.position = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.velocity = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.currTick = bs.readInt(12); // nextPow2(0x1000) -> 12 bits\n\n if (bs.readFlag()) {\n result.resetFlag = true; // FUN_00636ae0 side-effect-only\n }\n\n if (bs.readFlag()) {\n result.explodePoint = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.explodeNormal = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n }\n\n if (bs.readFlag()) {\n result.sourceObject = bs.readInt(11); // nextPow2(0x401) -> 11 bits\n result.sourceSlot = bs.readInt(3); // nextPow2(8) -> 3 bits\n } else {\n result.sourceObject = -1;\n result.sourceSlot = -1;\n }\n\n if (bs.readFlag()) {\n result.vehicleObject = bs.readInt(11); // nextPow2(0x401) -> 11 bits\n } else {\n result.vehicleObject = 0;\n }\n\n return result;\n}\n\nfunction grenadeUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): GrenadeProjectileGhostData {\n // Parent: Projectile → GameBase (Projectile has no override)\n const result: GrenadeProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n // InitialUpdateMask\n result.position = bs.readPoint3F();\n result.velocity = bs.readPoint3F();\n result.currTick = bs.readRangedU32(0, 4095);\n result.quickSplash = bs.readFlag();\n if (bs.readFlag()) {\n result.explodePoint = bs.readPoint3F();\n result.explodeNormal = bs.readPoint3F();\n }\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n }\n if (bs.readFlag()) {\n result.vehicleObject = bs.readRangedU32(0, 1024);\n }\n } else {\n // Non-initial\n if (bs.readFlag()) {\n // BounceMask\n result.position = bs.readPoint3F();\n result.velocity = bs.readPoint3F();\n }\n if (bs.readFlag()) {\n // ExplosionMask\n result.explodePoint = bs.readPoint3F();\n result.explodeNormal = bs.readPoint3F();\n }\n }\n\n return result;\n}\n\nfunction seekerUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): SeekerProjectileGhostData {\n // SeekerProjectile::unpackUpdate in build 25034 is FUN_0063c010\n // (vtable PTR_FUN_007ae54c + 0x4c), with parent GameBase::unpackUpdate.\n const result: SeekerProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n const fullStateMask = bs.readFlag();\n if (!fullStateMask) {\n // 0x0063c010 non-full path\n const isExplosion = bs.readFlag();\n if (isExplosion) {\n // FUN_00639370: explode(position, normal) — SeekerProjectile detonation.\n result.explodePosition = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.explodeNormal = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n return result;\n }\n\n result.position = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.velocity = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n\n const hasTargetInfo = bs.readFlag();\n if (hasTargetInfo) {\n const hasTargetGhost = bs.readFlag();\n if (!hasTargetGhost) {\n result.targetDirection = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n result.targetMode = 1;\n } else {\n // getBitCount(getNextPow2(0x401)) -> 11 bits\n result.targetGhost = bs.readInt(11);\n result.targetMode = 0;\n }\n } else {\n result.targetMode = 2;\n }\n\n return result;\n }\n\n // 0x0063c010 full-state path\n result.position = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.velocity = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n result.orientation = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n\n // Optional source object + slot\n if (bs.readFlag()) {\n result.sourceObject = bs.readInt(11); // getBitCount(getNextPow2(0x401))\n result.sourceSlot = bs.readInt(3); // getBitCount(getNextPow2(8))\n } else {\n result.sourceObject = -1;\n result.sourceSlot = -1;\n }\n\n // Optional target descriptor\n if (bs.readFlag()) {\n const hasTargetGhost = bs.readFlag();\n if (!hasTargetGhost) {\n result.targetDirection = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n result.targetMode = 1;\n } else {\n result.targetGhost = bs.readInt(11); // getBitCount(getNextPow2(0x401))\n result.targetMode = 0;\n }\n } else {\n result.targetMode = 2;\n }\n\n // Final timeout/alive flag branch in FUN_0063c010.\n result.timeoutReset = bs.readFlag();\n\n return result;\n}\n\n// ============================================================\n// Turret ghost parser\n// ============================================================\n\nfunction turretUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): TurretGhostData {\n // Turret extends StaticShape (confirmed in decompiled binary FUN_00655f60\n // calls FUN_00602da0 = StaticShape::unpackUpdate as parent)\n const result: TurretGhostData = staticShapeUnpackUpdate(bs, isInitial, conn);\n\n // Capacitor energy (Tribes 2 specific — not in V12/TorqueSDK)\n if (bs.readFlag()) {\n result.capacitorEnergy = bs.readFloat(8);\n }\n\n // Control client shortcut\n if (bs.readFlag()) {\n return result;\n }\n\n // Barrel rotation state\n if (bs.readFlag()) {\n result.phi = bs.readFloat(10);\n result.theta = bs.readFloat(10);\n result.activationLevel = bs.readFloat(8);\n }\n\n return result;\n}\n\n// ============================================================\n// InteriorInstance ghost parser (partial — can't parse light groups without resource)\n// ============================================================\n\nfunction interiorUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): InteriorInstanceGhostData {\n const result: InteriorInstanceGhostData = {};\n\n if (bs.readFlag()) {\n // InitMask — full initial state\n result.crc = bs.readU32();\n result.interiorFile = bs.readString();\n result.showTerrainInside = bs.readFlag();\n result.transform = bs.readMatrixF();\n result.scale = bs.readPoint3F();\n result.alarmState = bs.readFlag();\n result.skinBase = bs.readString();\n if (bs.readFlag()) {\n result.audioProfileId = readObjectRef11(bs);\n }\n if (bs.readFlag()) {\n result.audioEnvironmentId = readObjectRef11(bs);\n }\n } else {\n // Normal update\n if (bs.readFlag()) {\n // TransformMask\n result.transform = bs.readMatrixF();\n result.scale = bs.readPoint3F();\n }\n result.alarmState = bs.readFlag();\n\n // LightUpdateGrouper — iterates over bits 3-10 (8 slots), each slot\n // containing a dirty flag + N active flags (one per light in that group).\n // The loop exits at the first bit position with 0 keys. We don't know\n // the interior resource so we can't determine key counts. For interiors\n // with 0 animated lights (the common case), no bits are written here.\n // We assume 0 and continue to the remaining masks.\n\n // SkinBaseMask\n if (bs.readFlag()) {\n result.skinBase = bs.readString();\n }\n // AudioMask\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n result.audioProfileId = readObjectRef11(bs);\n }\n if (bs.readFlag()) {\n result.audioEnvironmentId = readObjectRef11(bs);\n }\n }\n }\n\n return result;\n}\n\n// ============================================================\n// Camera ghost parser (simple)\n// ============================================================\n\nfunction cameraUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): CameraGhostData {\n // Camera::unpackUpdate (FUN_005cc8c0):\n // 1) ShapeBase::unpackUpdate (FUN_005ef0e0)\n // 2) if (control object shortcut flag) return\n // 3) if (camera update flag) read 5 x F32\n const result: CameraGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n // Controlled by local connection: no additional payload in this update.\n if (bs.readFlag()) {\n return result;\n }\n\n // Camera-specific payload (5 floats in retail Tribes2.exe).\n if (bs.readFlag()) {\n result.posX = bs.readF32();\n result.posY = bs.readF32();\n result.posZ = bs.readF32();\n result.fovOrDist = bs.readF32();\n result.orbitParam = bs.readF32();\n }\n\n return result;\n}\n\nfunction cameraReadPacketData(\n bs: BitStream,\n conn: ConnectionContext\n): CameraPacketData {\n const result: CameraPacketData = {};\n\n // Camera::readPacketData (FUN_005cc530 / FUN_005cc650):\n // Parent::readPacketData + absolute camera transform basis + mode-specific orbit payload.\n result.energyLevel = bs.readF32();\n result.rechargeRate = bs.readF32();\n\n const pos = {\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n };\n result.position = pos;\n result.rotX = bs.readF32();\n result.rotZ = bs.readF32();\n\n // writeRangedU32(mode, 0, 4) -> 3 bits.\n const cameraMode = bs.readInt(3);\n result.cameraMode = cameraMode;\n\n // Modes 3/4 include orbit-distance payload.\n if (cameraMode === 3 || cameraMode === 4) {\n result.minOrbitDist = bs.readF32();\n result.maxOrbitDist = bs.readF32();\n result.curOrbitDist = bs.readF32();\n\n // OrbitObjectMode: observing flag + always-read 10-bit target ghost index.\n if (cameraMode === 3) {\n result.observingClientObject = bs.readFlag();\n result.orbitObjectGhostIndex = bs.readInt(10);\n }\n\n // OrbitPointMode: NetConnection::readCompressed using current compression point.\n if (cameraMode === 4) {\n result.orbitPoint = bs.readCompressedPoint(conn.compressionPoint, 0.01);\n }\n }\n\n // The camera packet updates the connection compression point to absolute camera pos.\n conn.compressionPoint = pos;\n\n return result;\n}\n\n// ============================================================\n// LinearProjectile ghost parser\n// ============================================================\n\nfunction linearProjectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): LinearProjectileGhostData {\n // Parent: LinearProjectile → Projectile → GameBase\n const result: LinearProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n // InitialUpdateMask\n if (bs.readFlag()) {\n // Hidden/already exploded (mHidden=true): initial create of finished projectile\n // Binary: sets mHidden=1, reads pos+direction, computes endpoint, reads decal flag\n result.hidden = true;\n result.explodePosition = bs.readCompressedPoint(conn.compressionPoint);\n result.explodeNormal = bs.readNormalVector(14); // binary: 0xe\n result.endedWithDecal = bs.readFlag();\n } else {\n // Live projectile initial update\n result.position = bs.readCompressedPoint(conn.compressionPoint);\n result.direction = bs.readNormalVector(14); // binary: 0xe\n result.currTick = bs.readRangedU32(0, 511); // nextPow2(0x200)=9 bits\n if (bs.readFlag()) {\n result.sourceObject = bs.readInt(10); // nextPow2(0x400)=10 bits\n result.sourceSlot = bs.readRangedU32(0, 7); // nextPow2(8)=3 bits\n if (bs.readFlag()) {\n result.excessVel = bs.readRangedU32(0, 255); // nextPow2(0x100)=8 bits\n result.excessDir = bs.readNormalVector(7);\n }\n }\n if (bs.readFlag()) {\n result.vehicleObject = bs.readInt(10); // nextPow2(0x400)=10 bits\n }\n }\n } else {\n // Non-initial: explosion notification\n result.explodePosition = bs.readCompressedPoint(conn.compressionPoint);\n result.explodeNormal = bs.readNormalVector(14); // binary: 0xe\n result.endedWithDecal = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// ELFProjectile ghost parser\n// ============================================================\n\nfunction elfProjectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ELFProjectileGhostData {\n // Parent: ELFProjectile → GameBase\n const result: ELFProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n result.targetObject = bs.readRangedU32(0, 1024);\n }\n }\n\n return result;\n}\n\n// ============================================================\n// RepairProjectile ghost parser\n// ============================================================\n\nfunction repairProjectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): RepairProjectileGhostData {\n // Parent: RepairProjectile → GameBase\n const result: RepairProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n // InitialUpdateMask\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n result.repairingObject = bs.readRangedU32(0, 1024);\n }\n }\n // Non-initial update: no data\n\n return result;\n}\n\n// ============================================================\n// TargetProjectile ghost parser\n// ============================================================\n\nfunction targetProjectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): TargetProjectileGhostData {\n // Parent: TargetProjectile → Projectile → GameBase\n const result: TargetProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n // InitialUpdateMask\n result.initialPosition = bs.readPoint3F();\n result.endPos = bs.readPoint3F();\n result.truncated = bs.readFlag();\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n result.clientOwned = bs.readFlag();\n }\n } else {\n // Swing update\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n result.clientOwned = bs.readFlag();\n } else {\n result.initialPosition = bs.readPoint3F();\n }\n result.endPos = bs.readPoint3F();\n result.truncated = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// WayPoint ghost parser\n// ============================================================\n\nfunction wayPointUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): WayPointGhostData {\n // WayPoint extends MissionMarker (V12 source: missionMarker.h)\n const result: WayPointGhostData = missionMarkerUnpackUpdate(bs, isInitial, conn);\n\n // WayPoint additions\n if (bs.readFlag()) {\n result.name = bs.readString();\n }\n if (bs.readFlag()) {\n result.teamId = bs.readS32();\n }\n if (bs.readFlag()) {\n result.hidden = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// SpawnSphere ghost parser\n// ============================================================\n\nfunction spawnSphereUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): SpawnSphereGhostData {\n // SpawnSphere extends MissionMarker (V12 source: missionMarker.h)\n const result: SpawnSphereGhostData = missionMarkerUnpackUpdate(bs, isInitial, conn);\n\n // SpawnSphere additions\n if (bs.readFlag()) {\n result.radius = bs.readF32();\n result.sphereWeight = bs.readF32();\n result.indoorWeight = bs.readF32();\n result.outdoorWeight = bs.readF32();\n }\n\n return result;\n}\n\n// ============================================================\n// ForceFieldBare ghost parser\n// ============================================================\n\nfunction forceFieldBareUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): ForceFieldBareGhostData {\n // ForceFieldBare::unpackUpdate (FUN_00676d30):\n // GameBase parent, then two-level transform flags, then StateChangeMask.\n const result: ForceFieldBareGhostData = readGameBaseUpdate(bs, _isInitial, _conn);\n\n // InitialUpdateMask flag — if true, reads transform+scale (initial path)\n if (bs.readFlag()) {\n result.transform = bs.readAffineTransform();\n result.scale = bs.readPoint3F();\n } else {\n // Non-initial: TransformMask flag\n if (bs.readFlag()) {\n result.transform = bs.readAffineTransform();\n result.scale = bs.readPoint3F();\n }\n }\n\n // StateChangeMask\n if (bs.readFlag()) {\n const state = bs.readInt(2); // 0=Open, 1=Opening, 2=Closing, 3=Closed\n result.state = state;\n if (state === 3) {\n // Closed: position = 0 (not read from stream)\n result.position = 0;\n } else if (state === 0) {\n // Open: position = datablock fadeMS (not read from stream)\n } else {\n // Opening (1) or Closing (2): read position from stream\n result.position = bs.readU32();\n }\n }\n\n return result;\n}\n\n// ============================================================\n// TSStatic ghost parser\n// ============================================================\n\nfunction tsStaticUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): TSStaticGhostData {\n const result: TSStaticGhostData = {};\n\n // TSStatic::unpackUpdate (FUN_00690580) has no update-mask flags:\n // it always serializes MatrixF transform, Point3F scale, and shapeName.\n result.transform = bs.readMatrixF();\n result.scale = bs.readPoint3F();\n result.shapeName = bs.readString();\n\n return result;\n}\n\n// ============================================================\n// TerrainBlock ghost parser\n// ============================================================\n\nfunction terrainBlockUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): TerrainBlockGhostData {\n // TerrainBlock extends SceneObject (NOT GameBase).\n // V12 source: terrain/terrData.cc lines 910-941\n // Format:\n // flag(InitMask) → U32 CRC + readString(terrFileName)\n // + readString(detailTextureName) + U32 squareSize\n // + U32 count + U32[count] emptySquareRuns\n // else → flag(EmptyMask) → U32 count + U32[count] emptySquareRuns\n const result: TerrainBlockGhostData = {};\n\n if (bs.readFlag()) {\n // InitMask\n result.crc = bs.readU32();\n result.terrFileName = bs.readString();\n result.detailTextureName = bs.readString();\n result.squareSize = bs.readU32();\n\n const size = bs.readU32();\n const emptySquareRuns: number[] = [];\n for (let i = 0; i < size; i++) {\n emptySquareRuns.push(bs.readU32());\n }\n result.emptySquareRuns = emptySquareRuns;\n result.emptySquareRunCount = size;\n } else {\n // Normal update\n if (bs.readFlag()) {\n // EmptyMask\n const size = bs.readU32();\n const emptySquareRuns: number[] = [];\n for (let i = 0; i < size; i++) {\n emptySquareRuns.push(bs.readU32());\n }\n result.emptySquareRuns = emptySquareRuns;\n result.emptySquareRunCount = size;\n }\n }\n\n return result;\n}\n\n// ============================================================\n// Sun ghost parser\n// ============================================================\n\nfunction sunUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): SunGhostData {\n // Binary FUN_005b1620: TWO separate readFlag blocks.\n // Block 1: 5 texture/environment map name strings\n // Block 2: 19 F32 values (direction + color + ambient + extra light properties)\n const result: SunGhostData = {};\n\n // Block 1: texture names (5 × readSTString)\n if (bs.readFlag()) {\n const textures: string[] = [];\n for (let i = 0; i < 5; i++) {\n textures.push(bs.readString());\n }\n result.textures = textures;\n }\n\n // Block 2: light properties (19 × F32)\n if (bs.readFlag()) {\n const values: number[] = [];\n for (let i = 0; i < 19; i++) {\n values.push(bs.readF32());\n }\n result.direction = { x: values[0], y: values[1], z: values[2] };\n result.color = { r: values[3], g: values[4], b: values[5], a: values[6] };\n result.ambient = { r: values[7], g: values[8], b: values[9], a: values[10] };\n // Remaining 8 values are additional light properties in build 25034\n result.extraLightProps = values.slice(11);\n }\n\n return result;\n}\n\n// ============================================================\n// Sky ghost parser\n// ============================================================\n\nfunction skyUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): SkyGhostData {\n const result: SkyGhostData = {};\n\n // Decompiled from FUN_005ab580 (Sky::unpackUpdate) / FUN_005abfd0 (packUpdate).\n // This layout is significantly larger than Torque-era Sky examples and must\n // stay aligned with the retail Tribes 2 binary.\n\n // InitialUpdateMask\n if (bs.readFlag()) {\n result.materialList = bs.readString();\n result.fogColor = { r: bs.readF32(), g: bs.readF32(), b: bs.readF32() };\n\n const fogVolumeCount = bs.readU32();\n if (fogVolumeCount > 64) {\n throw new Error(`Invalid Sky fogVolumeCount: ${fogVolumeCount}`);\n }\n result.fogVolumeCount = fogVolumeCount;\n\n // bool fields are read via Stream::read(1) in the binary (byte-sized bool)\n result.useSkyTextures = bs.readBool();\n result.renderBottomTexture = bs.readBool();\n result.skySolidColor = { r: bs.readF32(), g: bs.readF32(), b: bs.readF32() };\n result.windEffectPrecipitation = bs.readBool();\n\n const fogVolumes: Array<{ visibleDistance: number; minHeight: number; maxHeight: number; color: { r: number; g: number; b: number } }> = [];\n for (let i = 0; i < fogVolumeCount; i++) {\n // V12 sky.cc writes: visibleDistance, minHeight, maxHeight, color\n fogVolumes.push({\n visibleDistance: bs.readF32(),\n minHeight: bs.readF32(),\n maxHeight: bs.readF32(),\n color: { r: bs.readF32(), g: bs.readF32(), b: bs.readF32() },\n });\n }\n result.fogVolumes = fogVolumes;\n\n const cloudLayers: Array<{ texture: string; heightPercent: number; speed: number }> = [];\n for (let i = 0; i < 3; i++) {\n cloudLayers.push({\n texture: bs.readString(),\n heightPercent: bs.readF32(),\n speed: bs.readF32(),\n });\n }\n result.cloudLayers = cloudLayers;\n\n // Initial wind velocity vector\n result.windVelocity = bs.readPoint3F();\n result.stormCurrent = bs.readF32();\n\n if (bs.readFlag()) {\n result.stormInit = {\n startPct: bs.readF32(),\n duration: bs.readF32(),\n indexOrMode: bs.readF32(),\n startTime: bs.readF32(),\n targetPct: bs.readF32(),\n };\n }\n }\n\n // StormCloudsShow mask\n if (bs.readFlag()) {\n result.stormCloudsOn = bs.readBool();\n }\n\n // StormFogShow mask\n if (bs.readFlag()) {\n result.stormFogOn = bs.readBool();\n }\n\n // Distance mask (visible/fog distances)\n if (bs.readFlag()) {\n result.visibleDistance = bs.readF32();\n result.fogDistance = bs.readF32();\n }\n\n // Storm/falloff mask\n if (bs.readFlag()) {\n result.stormType = bs.readF32();\n result.stormMagnitude = bs.readF32();\n }\n\n // Storm timeline mask\n if (bs.readFlag()) {\n result.stormTimeline = {\n startPct: bs.readF32(),\n duration: bs.readF32(),\n indexOrMode: bs.readF32(),\n };\n }\n\n // Storm cloud profile mask\n if (bs.readFlag()) {\n result.stormCloudProfile = {\n enabled: bs.readF32(),\n value0: bs.readF32(),\n value1: bs.readF32(),\n value2: bs.readF32(),\n };\n }\n\n // Wind velocity update mask\n if (bs.readFlag()) {\n result.windVelocity = bs.readPoint3F();\n }\n\n return result;\n}\n\n// ============================================================\n// Lightning ghost parser (GameBase subclass)\n// ============================================================\n\nfunction lightningUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): LightningGhostData {\n const result: LightningGhostData = readGameBaseUpdate(bs, isInitial, conn);\n if (bs.readFlag()) {\n // InitialUpdateMask — only sent on create\n result.position = bs.readPoint3F();\n result.scale = bs.readPoint3F();\n result.strikeWidth = bs.readF32();\n result.chanceToHitTarget = bs.readF32();\n result.strikeRadius = bs.readF32();\n result.boltStartRadius = bs.readF32();\n result.color = { r: bs.readF32(), g: bs.readF32(), b: bs.readF32() };\n result.fadeColor = { r: bs.readF32(), g: bs.readF32(), b: bs.readF32() };\n result.useFog = bs.readInt(8) !== 0; // bool read as U8\n result.strikesPerMinute = bs.readF32();\n }\n return result;\n}\n\n// ============================================================\n// WaterBlock ghost parser (SceneObject subclass, NO GameBase)\n// ============================================================\n\nconst WC_NUM_SUBMERGE_TEX = 2;\n\nfunction waterBlockUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): WaterBlockGhostData {\n const result: WaterBlockGhostData = {};\n // No flag checks — always sends everything\n result.transform = bs.readAffineTransform();\n result.scale = bs.readPoint3F();\n result.surfaceName = bs.readString();\n result.envMapName = bs.readString();\n const submergeNames: string[] = [];\n for (let i = 0; i < WC_NUM_SUBMERGE_TEX; i++) {\n submergeNames.push(bs.readString());\n }\n result.submergeNames = submergeNames;\n result.liquidType = bs.readS32();\n result.density = bs.readF32();\n result.viscosity = bs.readF32();\n result.waveMagnitude = bs.readF32();\n result.surfaceOpacity = bs.readF32();\n result.envMapIntensity = bs.readF32();\n result.removeWetEdges = bs.readInt(8) !== 0; // bool as U8\n if (bs.readFlag()) {\n result.audioEnvironmentId = readObjectRef11(bs);\n }\n return result;\n}\n\n// ============================================================\n// MissionArea ghost parser (NetObject subclass)\n// ============================================================\n\nfunction missionAreaUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): MissionAreaGhostData {\n const result: MissionAreaGhostData = {};\n if (bs.readFlag()) {\n // RectI: point.x, point.y, extent.x, extent.y\n result.area = {\n x: bs.readS32(),\n y: bs.readS32(),\n w: bs.readS32(),\n h: bs.readS32(),\n };\n result.flightCeiling = bs.readF32();\n result.flightCeilingRange = bs.readF32();\n }\n return result;\n}\n\n// ============================================================\n// Splash ghost parser (GameBase subclass)\n// ============================================================\n\nfunction splashUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): SplashGhostData {\n const result: SplashGhostData = readGameBaseUpdate(bs, isInitial, conn);\n if (bs.readFlag()) {\n result.position = bs.readPoint3F();\n }\n return result;\n}\n\n// ============================================================\n// Shockwave ghost parser (GameBase subclass)\n// ============================================================\n\nfunction shockwaveUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ShockwaveGhostData {\n const result: ShockwaveGhostData = readGameBaseUpdate(bs, isInitial, conn);\n if (bs.readFlag()) {\n result.position = bs.readPoint3F();\n result.normal = bs.readPoint3F();\n }\n return result;\n}\n\n// ============================================================\n// FireballAtmosphere ghost parser (GameBase subclass)\n// ============================================================\n\nfunction fireballAtmosphereUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): FireballAtmosphereGhostData {\n const result: FireballAtmosphereGhostData = readGameBaseUpdate(bs, isInitial, conn);\n if (bs.readFlag()) {\n result.dropRadius = bs.readF32();\n result.dropsPerMinute = bs.readF32();\n result.maxDropAngle = bs.readF32();\n result.minDropAngle = bs.readF32();\n result.startVelocity = bs.readF32();\n result.dropHeight = bs.readF32();\n result.dropDir = bs.readPoint3F();\n }\n return result;\n}\n\n// ============================================================\n// VehicleBlocker ghost parser (SceneObject subclass, NO GameBase)\n// ============================================================\n\nfunction vehicleBlockerUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): VehicleBlockerGhostData {\n // VehicleBlocker instance vtable is 0x00796ca4. Slot +0x4c resolves to\n // FUN_005b9d40, which always reads:\n // 16 x U32 (MatrixF)\n // 6 x U32 (two Point3F corners)\n // No flags are present in this payload.\n const result: VehicleBlockerGhostData = {};\n\n result.transform = bs.readMatrixF();\n result.boundsMin = bs.readPoint3F();\n result.boundsMax = bs.readPoint3F();\n\n return result;\n}\n\n// ============================================================\n// ParticleEmissionDummy ghost parser (GameBase subclass)\n// ============================================================\n\nfunction particleEmissionDummyUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ParticleEmissionDummyGhostData {\n const result: ParticleEmissionDummyGhostData = readGameBaseUpdate(bs, isInitial, conn);\n // Always writes transform + scale + optional datablock\n result.transform = bs.readMatrixF();\n result.scale = bs.readPoint3F();\n if (bs.readFlag()) {\n result.emitterDatablockId = readObjectRef11(bs);\n }\n return result;\n}\n\n// ============================================================\n// Precipitation ghost parser (GameBase subclass)\n// ============================================================\n\nfunction precipitationUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): PrecipitationGhostData {\n const result: PrecipitationGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n // Mask order from decompiled binary FUN_00681260:\n // InitMask, StormShowMask, StormMask, PercentageMask\n // (Note: V12 source has different order; binary is authoritative)\n\n // InitMask\n if (bs.readFlag()) {\n result.percentage = bs.readF32();\n const colorCount = bs.readS32();\n result.colorCount = colorCount;\n if (colorCount < 0 || colorCount > 3) {\n throw new Error(`Invalid precipitation colorCount: ${colorCount}`);\n }\n // Colors use packed ColorF (FUN_0043f040): 4×U8 = 32 bits each, NOT 4×F32\n const colors: { r: number; g: number; b: number; a: number }[] = [];\n for (let i = 0; i < colorCount; i++) {\n colors.push(readPackedColorF(bs));\n }\n result.colors = colors;\n result.offsetSpeed = bs.readF32();\n result.minVelocity = bs.readF32();\n result.maxVelocity = bs.readF32();\n result.maxDrops = bs.readS32();\n result.maxRadius = bs.readF32();\n // Inner flag: storm initialization data (3 F32s)\n if (bs.readFlag()) {\n result.stormLastTime = bs.readF32();\n result.stormTime = bs.readF32();\n result.stormEndPercentage = bs.readF32();\n }\n }\n\n // StormShowMask\n if (bs.readFlag()) {\n result.stormPrecipitationOn = bs.readBool();\n }\n\n // StormMask\n if (bs.readFlag()) {\n result.stormTime = bs.readF32();\n result.stormEndPercentage = bs.readF32();\n }\n\n // PercentageMask\n if (bs.readFlag()) {\n result.percentageUpdate = bs.readF32();\n }\n\n return result;\n}\n\n// ============================================================\n// SniperProjectile ghost parser\n// ============================================================\n\nfunction sniperProjectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): SniperProjectileGhostData {\n // Parent: SniperProjectile → LinearProjectile → Projectile → GameBase\n const result: SniperProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n // InitialUpdateMask\n result.energyPercentage = bs.readFloat(7);\n result.initialPosition = bs.readPoint3F();\n result.endPos = bs.readPoint3F();\n result.truncated = bs.readFlag();\n result.hitWater = bs.readFlag();\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n result.clientOwned = bs.readFlag();\n }\n } else {\n // Swing update\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n result.clientOwned = bs.readFlag();\n } else {\n result.initialPosition = bs.readPoint3F();\n }\n result.endPos = bs.readPoint3F();\n result.truncated = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// ShockLanceProjectile ghost parser\n// ============================================================\n\nfunction shockLanceProjectileUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): ShockLanceProjectileGhostData {\n // Parent: ShockLanceProjectile → Projectile → GameBase\n const result: ShockLanceProjectileGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n // Target (always written)\n if (bs.readFlag()) {\n result.targetObject = bs.readRangedU32(0, 1024);\n }\n\n // Initial update\n if (bs.readFlag()) {\n result.start = bs.readPoint3F();\n result.end = bs.readPoint3F();\n result.hitObject = bs.readFlag();\n if (bs.readFlag()) {\n result.sourceObject = bs.readRangedU32(0, 1024);\n result.sourceSlot = bs.readRangedU32(0, 7);\n }\n }\n\n return result;\n}\n\n// ============================================================\n// WheeledVehicle ghost parser\n// ============================================================\n\n/**\n * Determine wheel count from a WheeledVehicleData shape name.\n * In standard Tribes 2, the only WheeledVehicle is the MPB/Jericho (6 wheels).\n * Wildcat and Beowulf are HoverVehicleData, NOT WheeledVehicleData.\n * wheelCount is computed at runtime from shape ground#/spring# node pairs.\n * Falls back to 6 (the only standard WheeledVehicle) if shape unknown.\n */\nfunction getWheelCountFromShape(shapeName: string | undefined): number {\n if (!shapeName) return 6;\n const lower = shapeName.toLowerCase();\n // MPB (vehicle_land_mpbase.dts) has 6 wheels: Ground0-5 + Spring0-5\n if (lower.includes(\"mpb\") || lower.includes(\"mpbase\")) return 6;\n // Default to 6 for unknown shapes (standard T2 only has the MPB)\n return 6;\n}\n\n/** Cache of dataBlockId → wheelCount for WheeledVehicle ghosts. */\nconst wheelCountCache = new Map<number, number>();\n/** Cache of ghostIndex → wheelCount for WheeledVehicle updates (where dbId is absent). */\nconst ghostWheelCountCache = new Map<number, number>();\n\nfunction wheeledVehicleUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): WheeledVehicleGhostData {\n const result: WheeledVehicleGhostData = vehicleUnpackUpdate(bs, isInitial, conn);\n\n // Always read braking/wheels. Binary (FUN_00615a70) checks\n // param_1[0x2097]==in_ECX (GameConnection.mControlObject == this vehicle)\n // but in demo recordings mControlObject is always the Player, never\n // a vehicle, so this condition is always false.\n {\n result.braking = bs.readFlag();\n\n if (bs.readFlag()) {\n // Determine wheel count from the DataBlock's shape name.\n // On creates, dataBlockId is available (DataBlockMask set).\n // On updates, use ghost-index cache populated during create.\n let wheelCount = 4;\n const dbId = result.dataBlockId;\n const ghostIdx = conn.currentGhostIndex;\n\n if (dbId !== undefined) {\n const cached = wheelCountCache.get(dbId);\n if (cached !== undefined) {\n wheelCount = cached;\n } else if (conn.getDataBlockData) {\n const dbData = conn.getDataBlockData(dbId);\n if (dbData) {\n const shapeName = dbData.shapeName;\n if (typeof shapeName === \"string\") {\n wheelCount = getWheelCountFromShape(shapeName);\n }\n wheelCountCache.set(dbId, wheelCount);\n }\n }\n // Cache by ghost index for future updates\n if (ghostIdx !== undefined) {\n ghostWheelCountCache.set(ghostIdx, wheelCount);\n }\n } else if (ghostIdx !== undefined) {\n // UPDATE: look up by ghost index\n const cached = ghostWheelCountCache.get(ghostIdx);\n if (cached !== undefined) {\n wheelCount = cached;\n }\n }\n\n const wheels: { avel: number; dy: number; dx: number }[] = [];\n for (let i = 0; i < wheelCount; i++) {\n wheels.push({\n avel: bs.readF32(),\n dy: bs.readF32(),\n dx: bs.readF32(),\n });\n }\n result.wheels = wheels;\n }\n }\n\n return result;\n}\n\n// ============================================================\n// Trigger ghost parser\n// ============================================================\n\nfunction triggerUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): TriggerGhostData {\n // Trigger::unpackUpdate (0x0061bab0):\n // Parent chain reads 0 bits (confirmed via r2ghidra — the parent call at\n // 0x005e2840 chains to 0x00436e00 which is empty).\n // Then reads 4 raw bytes (U32 tickPeriodMS, stored at this+0x44).\n // The V12 source has a full polyhedron (transform, points, planes, edges)\n // but the Tribes 2 build 25034 binary strips all of that.\n return { tickPeriodMS: bs.readU32() };\n}\n\n// ============================================================\n// PhysicalZone ghost parser (SceneObject subclass)\n// ============================================================\n\nfunction physicalZoneUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): PhysicalZoneGhostData {\n const result: PhysicalZoneGhostData = {};\n\n if (bs.readFlag()) {\n // Initial update — raw MatrixF (16×F32) + Point3F scale\n result.transform = bs.readMatrixF();\n result.scale = bs.readPoint3F();\n // Polyhedron points\n const numPoints = bs.readU32();\n if (numPoints > Math.floor(bs.getRemainingBits() / 96)) {\n throw new Error(`Invalid physicalZone point count: ${numPoints}`);\n }\n const points: { x: number; y: number; z: number }[] = [];\n for (let i = 0; i < numPoints; i++) {\n points.push(bs.readPoint3F());\n }\n result.points = points;\n\n // Polyhedron planes\n const numPlanes = bs.readU32();\n if (numPlanes > Math.floor(bs.getRemainingBits() / 128)) {\n throw new Error(`Invalid physicalZone plane count: ${numPlanes}`);\n }\n const planes: { x: number; y: number; z: number; d: number }[] = [];\n for (let i = 0; i < numPlanes; i++) {\n planes.push({\n x: bs.readF32(),\n y: bs.readF32(),\n z: bs.readF32(),\n d: bs.readF32(),\n });\n }\n result.planes = planes;\n\n // Polyhedron edges\n const numEdges = bs.readU32();\n if (numEdges > Math.floor(bs.getRemainingBits() / 128)) {\n throw new Error(`Invalid physicalZone edge count: ${numEdges}`);\n }\n const edges: { face0: number; face1: number; vertex0: number; vertex1: number }[] = [];\n for (let i = 0; i < numEdges; i++) {\n edges.push({\n face0: bs.readU32(),\n face1: bs.readU32(),\n vertex0: bs.readU32(),\n vertex1: bs.readU32(),\n });\n }\n result.edges = edges;\n\n result.velocityMod = bs.readF32();\n result.gravityMod = bs.readF32();\n result.appliedForce = bs.readPoint3F();\n result.active = bs.readFlag();\n } else {\n // Non-initial update: just active flag\n result.active = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// AudioEmitter ghost parser (SceneObject subclass)\n// ============================================================\n\nfunction audioEmitterUnpackUpdate(\n bs: BitStream,\n _isInitial: boolean,\n _conn: ConnectionContext\n): AudioEmitterGhostData {\n const result: AudioEmitterGhostData = {};\n\n // Initial update flag\n result.initialUpdate = bs.readFlag();\n\n // Transform\n if (bs.readFlag()) {\n result.transform = bs.readAffineTransform();\n }\n\n // Profile\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n result.audioProfileId = readObjectRef11(bs);\n }\n }\n\n // Description\n if (bs.readFlag()) {\n if (bs.readFlag()) {\n result.audioDescriptionId = readObjectRef11(bs);\n }\n }\n\n // Filename\n if (bs.readFlag()) {\n result.filename = bs.readString();\n }\n\n // UseProfileDescription\n if (bs.readFlag()) {\n result.useProfileDescription = bs.readFlag();\n }\n\n // Volume\n if (bs.readFlag()) {\n result.volume = bs.readF32();\n }\n\n // IsLooping\n if (bs.readFlag()) {\n result.isLooping = bs.readFlag();\n }\n\n // Is3D\n if (bs.readFlag()) {\n result.is3D = bs.readFlag();\n }\n\n // MinDistance\n if (bs.readFlag()) {\n result.minDistance = bs.readF32();\n }\n\n // MaxDistance\n if (bs.readFlag()) {\n result.maxDistance = bs.readF32();\n }\n\n // ConeInsideAngle (S32 in engine — field type 1)\n if (bs.readFlag()) {\n result.coneInsideAngle = bs.readS32();\n }\n\n // ConeOutsideAngle (S32 in engine — field type 1)\n if (bs.readFlag()) {\n result.coneOutsideAngle = bs.readS32();\n }\n\n // ConeOutsideVolume\n if (bs.readFlag()) {\n result.coneOutsideVolume = bs.readF32();\n }\n\n // ConeVector\n if (bs.readFlag()) {\n result.coneVector = bs.readPoint3F();\n }\n\n // LoopCount (S32 in engine — field type 1)\n if (bs.readFlag()) {\n result.loopCount = bs.readS32();\n }\n\n // MinLoopGap (S32 in engine — field type 1, milliseconds)\n if (bs.readFlag()) {\n result.minLoopGap = bs.readS32();\n }\n\n // MaxLoopGap (S32 in engine — field type 1, milliseconds)\n if (bs.readFlag()) {\n result.maxLoopGap = bs.readS32();\n }\n\n // AudioType (S32/enum in engine — field type 9, written as 4 raw bytes)\n if (bs.readFlag()) {\n result.audioType = bs.readS32();\n }\n\n // OutsideAmbient\n if (bs.readFlag()) {\n result.outsideAmbient = bs.readFlag();\n }\n\n return result;\n}\n\n// ============================================================\n// StationFXPersonal ghost parser (GameBase subclass)\n// ============================================================\n\nfunction stationFXPersonalUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): StationFXPersonalGhostData {\n const result: StationFXPersonalGhostData = readGameBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n // InitialUpdateMask\n if (bs.readFlag()) {\n result.stationObject = bs.readRangedU32(0, 1024);\n }\n }\n\n return result;\n}\n\n// ============================================================\n// AIObjective ghost parser (AIObjective::unpackUpdate @ FUN_0047dae0)\n// ============================================================\n\nfunction aiObjectiveUnpackUpdate(\n bs: BitStream,\n isInitial: boolean,\n conn: ConnectionContext\n): AIObjectiveGhostData {\n // AIObjective::unpackUpdate calls FUN_0066a8b0 (ShapeBase-derived),\n // then reads one additional flag.\n const result: AIObjectiveGhostData = readShapeBaseUpdate(bs, isInitial, conn);\n\n if (bs.readFlag()) {\n result.transform = bs.readAffineTransform();\n result.scale = bs.readPoint3F();\n }\n\n result.unknownFlag = bs.readFlag();\n return result;\n}\n\n// ============================================================\n// Register all ghost parsers into the registry\n// ============================================================\n\nexport function registerGhostParsers(registry: ClassRegistry): void {\n registry.catalogGhost({\n name: \"AIObjective\",\n unpackUpdate: aiObjectiveUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"BeaconObject\",\n unpackUpdate: beaconObjectUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"BombProjectile\",\n unpackUpdate: bombProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Player\",\n unpackUpdate: playerUnpackUpdate,\n readPacketData: playerReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"Debris\",\n unpackUpdate: debrisUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"GameBase\",\n unpackUpdate: readGameBaseUpdate,\n });\n\n registry.catalogGhost({\n name: \"ShapeBase\",\n unpackUpdate: readShapeBaseUpdate,\n readPacketData: vehicleReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"Vehicle\",\n unpackUpdate: vehicleUnpackUpdate,\n readPacketData: vehicleReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"FlyingVehicle\",\n unpackUpdate: flyingVehicleUnpackUpdate,\n readPacketData: vehicleReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"HoverVehicle\",\n unpackUpdate: hoverVehicleUnpackUpdate,\n readPacketData: vehicleReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"Item\",\n unpackUpdate: itemUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Marker\",\n unpackUpdate: markerUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"MissionMarker\",\n unpackUpdate: missionMarkerUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"StaticShape\",\n unpackUpdate: staticShapeUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Projectile\",\n unpackUpdate: projectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"ScopeAlwaysShape\",\n unpackUpdate: scopeAlwaysShapeUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"GrenadeProjectile\",\n unpackUpdate: grenadeUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"SimpleNetObject\",\n unpackUpdate: simpleNetObjectUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"SeekerProjectile\",\n unpackUpdate: seekerUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Turret\",\n unpackUpdate: turretUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"InteriorInstance\",\n unpackUpdate: interiorUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Camera\",\n unpackUpdate: cameraUnpackUpdate,\n readPacketData: cameraReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"LinearProjectile\",\n unpackUpdate: linearProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"ELFProjectile\",\n unpackUpdate: elfProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"RepairProjectile\",\n unpackUpdate: repairProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"TargetProjectile\",\n unpackUpdate: targetProjectileUnpackUpdate,\n });\n\n // TracerProjectile resolves through LinearProjectile vtables in the retail binary.\n registry.catalogGhost({\n name: \"TracerProjectile\",\n unpackUpdate: linearProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"WayPoint\",\n unpackUpdate: wayPointUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"SpawnSphere\",\n unpackUpdate: spawnSphereUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"ForceFieldBare\",\n unpackUpdate: forceFieldBareUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"TSStatic\",\n unpackUpdate: tsStaticUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"TerrainBlock\",\n unpackUpdate: terrainBlockUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Sun\",\n unpackUpdate: sunUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Sky\",\n unpackUpdate: skyUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Lightning\",\n unpackUpdate: lightningUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"WaterBlock\",\n unpackUpdate: waterBlockUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"MissionArea\",\n unpackUpdate: missionAreaUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Splash\",\n unpackUpdate: splashUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Shockwave\",\n unpackUpdate: shockwaveUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"FireballAtmosphere\",\n unpackUpdate: fireballAtmosphereUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"VehicleBlocker\",\n unpackUpdate: vehicleBlockerUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"ParticleEmissionDummy\",\n unpackUpdate: particleEmissionDummyUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"Precipitation\",\n unpackUpdate: precipitationUnpackUpdate,\n });\n\n // Projectile aliases — same wire format as GrenadeProjectile\n registry.catalogGhost({\n name: \"EnergyProjectile\",\n unpackUpdate: grenadeUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"FlareProjectile\",\n unpackUpdate: grenadeUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"LinearFlareProjectile\",\n unpackUpdate: linearProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"SniperProjectile\",\n unpackUpdate: sniperProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"ShockLanceProjectile\",\n unpackUpdate: shockLanceProjectileUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"WheeledVehicle\",\n unpackUpdate: wheeledVehicleUnpackUpdate,\n readPacketData: wheeledVehicleReadPacketData,\n });\n\n registry.catalogGhost({\n name: \"Trigger\",\n unpackUpdate: triggerUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"PhysicalZone\",\n unpackUpdate: physicalZoneUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"AudioEmitter\",\n unpackUpdate: audioEmitterUnpackUpdate,\n });\n\n registry.catalogGhost({\n name: \"StationFXPersonal\",\n unpackUpdate: stationFXPersonalUnpackUpdate,\n });\n\n // StationFXVehicle has identical wire format to StationFXPersonal\n registry.catalogGhost({\n name: \"StationFXVehicle\",\n unpackUpdate: stationFXPersonalUnpackUpdate,\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GhostTracker.test.js","sourceRoot":"","sources":["../src/GhostTracker.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GhostTracker.test.js","sourceRoot":"","sources":["../src/GhostTracker.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport { GhostTracker } from \"./GhostManager.js\";\n\ndescribe(\"GhostTracker\", () => {\n it(\"creates and retrieves ghosts\", () => {\n const tracker = new GhostTracker();\n tracker.createGhost(42, 25, \"Player\");\n\n expect(tracker.hasGhost(42)).toBe(true);\n const ghost = tracker.getGhost(42);\n expect(ghost).toBeDefined();\n expect(ghost!.classId).toBe(25);\n expect(ghost!.className).toBe(\"Player\");\n expect(ghost!.state).toEqual({});\n });\n\n it(\"returns undefined for non-existent ghosts\", () => {\n const tracker = new GhostTracker();\n expect(tracker.getGhost(0)).toBeUndefined();\n expect(tracker.hasGhost(0)).toBe(false);\n });\n\n it(\"deletes ghosts\", () => {\n const tracker = new GhostTracker();\n tracker.createGhost(10, 5, \"Debris\");\n expect(tracker.hasGhost(10)).toBe(true);\n\n tracker.deleteGhost(10);\n expect(tracker.hasGhost(10)).toBe(false);\n });\n\n it(\"overwrites ghost at same index (index reuse)\", () => {\n const tracker = new GhostTracker();\n tracker.createGhost(7, 25, \"Player\");\n tracker.createGhost(7, 4, \"Camera\");\n\n const ghost = tracker.getGhost(7);\n expect(ghost!.classId).toBe(4);\n expect(ghost!.className).toBe(\"Camera\");\n });\n\n it(\"tracks size correctly\", () => {\n const tracker = new GhostTracker();\n expect(tracker.size()).toBe(0);\n\n tracker.createGhost(0, 25, \"Player\");\n tracker.createGhost(1, 4, \"Camera\");\n expect(tracker.size()).toBe(2);\n\n tracker.deleteGhost(0);\n expect(tracker.size()).toBe(1);\n });\n\n it(\"clears all ghosts\", () => {\n const tracker = new GhostTracker();\n tracker.createGhost(0, 25, \"Player\");\n tracker.createGhost(1, 4, \"Camera\");\n tracker.createGhost(2, 5, \"Debris\");\n\n tracker.clear();\n expect(tracker.size()).toBe(0);\n expect(tracker.hasGhost(0)).toBe(false);\n expect(tracker.hasGhost(1)).toBe(false);\n expect(tracker.hasGhost(2)).toBe(false);\n });\n\n it(\"getAllGhosts returns the internal map\", () => {\n const tracker = new GhostTracker();\n tracker.createGhost(0, 25, \"Player\");\n tracker.createGhost(1, 4, \"Camera\");\n\n const all = tracker.getAllGhosts();\n expect(all.size).toBe(2);\n expect(all.get(0)?.className).toBe(\"Player\");\n expect(all.get(1)?.className).toBe(\"Camera\");\n });\n});\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HuffmanProcessor.js","sourceRoot":"","sources":["../src/HuffmanProcessor.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,mEAAmE;AACnE,MAAM,cAAc,GAAa;IAC/B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ;IACxD,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ;IACnE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ;IAC5E,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ;IAC/E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ;IACxE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS;IAC7F,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU;IAChF,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,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"}
|
|
1
|
+
{"version":3,"file":"HuffmanProcessor.js","sourceRoot":"","sources":["../src/HuffmanProcessor.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,mEAAmE;AACnE,MAAM,cAAc,GAAa;IAC/B,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ;IACxD,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,QAAQ;IACnE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ;IAC5E,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,QAAQ;IAC/E,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ;IACxE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS;IAC7F,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,UAAU;IAChF,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU;IAC1D,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,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","sourcesContent":["import type { BitStream } from \"./BitStream.js\";\n\n// Hardcoded character frequency table from the V12 engine (bitStream.cc)\n// These are used to build the Huffman tree for string compression.\nconst CSM_CHAR_FREQS: number[] = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 21, 0, 0, 0, 0, 0, // 0-15\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16-31\n 2809, 68, 0, 27, 0, 58, 3, 62, 4, 7, 0, 0, 15, 65, 554, 3, // 32-47\n 394, 404, 189, 117, 30, 51, 27, 15, 34, 32, 80, 1, 142, 3, 142, 39, // 48-63\n 0, 144, 125, 44, 122, 275, 70, 135, 61, 127, 8, 12, 113, 246, 122, 36, // 64-79\n 185, 1, 149, 309, 335, 12, 11, 14, 54, 151, 0, 0, 2, 0, 0, 211, // 80-95\n 0, 2090, 344, 736, 993, 2872, 701, 605, 646, 1552, 328, 305, 1240, 735, 1533, 1713, // 96-111\n 562, 3, 1775, 1149, 1469, 979, 407, 553, 59, 279, 31, 0, 0, 0, 68, 0, // 112-127\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 128-143\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 144-159\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 160-175\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 176-191\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 192-207\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 208-223\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 224-239\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 240-255\n];\n\nconst PROB_BOOST = 1;\n\nfunction isAlphaNumeric(c: number): boolean {\n return (\n (c >= 48 && c <= 57) || // 0-9\n (c >= 65 && c <= 90) || // A-Z\n (c >= 97 && c <= 122) // a-z\n );\n}\n\ninterface HuffNode {\n pop: number;\n index0: number;\n index1: number;\n}\n\ninterface HuffLeaf {\n pop: number;\n symbol: number;\n numBits: number;\n code: number;\n}\n\ninterface HuffWrap {\n node: HuffNode | null;\n leaf: HuffLeaf | null;\n}\n\nfunction wrapGetPop(w: HuffWrap): number {\n if (w.node) return w.node.pop;\n return w.leaf!.pop;\n}\n\nexport class HuffmanProcessor {\n private nodes: HuffNode[] = [];\n private leaves: HuffLeaf[] = [];\n private tablesBuilt = false;\n\n buildTables(): void {\n if (this.tablesBuilt) return;\n this.tablesBuilt = true;\n\n // Initialize leaves from frequency table\n this.leaves = [];\n for (let i = 0; i < 256; i++) {\n this.leaves.push({\n pop:\n CSM_CHAR_FREQS[i] +\n (isAlphaNumeric(i) ? PROB_BOOST : 0) +\n PROB_BOOST,\n symbol: i,\n numBits: 0,\n code: 0,\n });\n }\n\n // Initialize nodes array with one placeholder at index 0\n this.nodes = [{ pop: 0, index0: 0, index1: 0 }];\n\n // Build wraps array\n let currWraps = 256;\n const wraps: HuffWrap[] = [];\n for (let i = 0; i < 256; i++) {\n wraps.push({ node: null, leaf: this.leaves[i] });\n }\n\n // Build the Huffman tree by repeatedly combining the two lowest-population wraps\n while (currWraps !== 1) {\n let min1 = 0xfffffffe;\n let min2 = 0xffffffff;\n let index1 = -1;\n let index2 = -1;\n\n for (let i = 0; i < currWraps; i++) {\n const pop = wrapGetPop(wraps[i]);\n if (pop < min1) {\n min2 = min1;\n index2 = index1;\n min1 = pop;\n index1 = i;\n } else if (pop < min2) {\n min2 = pop;\n index2 = i;\n }\n }\n\n // Create a new node combining the two smallest\n const newNode: HuffNode = {\n pop: wrapGetPop(wraps[index1]) + wrapGetPop(wraps[index2]),\n index0: this.determineIndex(wraps[index1]),\n index1: this.determineIndex(wraps[index2]),\n };\n this.nodes.push(newNode);\n\n // Replace the lower-indexed wrap with the new node, remove the higher-indexed one\n const mergeIndex = index1 < index2 ? index1 : index2;\n const nukeIndex = index1 > index2 ? index1 : index2;\n wraps[mergeIndex] = { node: newNode, leaf: null };\n\n if (nukeIndex !== currWraps - 1) {\n wraps[nukeIndex] = wraps[currWraps - 1];\n }\n currWraps--;\n }\n\n // The root node should be at nodes[0]\n this.nodes[0] = wraps[0].node!;\n\n // Generate Huffman codes by walking the tree\n this.generateCodes(0, 0, 0);\n }\n\n private determineIndex(wrap: HuffWrap): number {\n if (wrap.leaf !== null) {\n // Leaf index is encoded as -(leafArrayIndex + 1)\n const leafIdx = this.leaves.indexOf(wrap.leaf);\n return -(leafIdx + 1);\n } else {\n return this.nodes.indexOf(wrap.node!);\n }\n }\n\n private generateCodes(code: number, nodeIndex: number, depth: number): void {\n if (nodeIndex < 0) {\n // Leaf node\n const leaf = this.leaves[-(nodeIndex + 1)];\n leaf.code = code;\n leaf.numBits = depth;\n } else {\n const node = this.nodes[nodeIndex];\n // Go left (0 bit)\n this.generateCodes(code, node.index0, depth + 1);\n // Go right (1 bit)\n this.generateCodes(code | (1 << depth), node.index1, depth + 1);\n }\n }\n\n readHuffBuffer(stream: BitStream): string {\n if (!this.tablesBuilt) {\n this.buildTables();\n }\n\n if (stream.readFlag()) {\n // Huffman-compressed string\n const len = stream.readInt(8);\n const chars: number[] = [];\n for (let i = 0; i < len; i++) {\n let index = 0;\n while (true) {\n if (index >= 0) {\n if (stream.readFlag()) {\n index = this.nodes[index].index1;\n } else {\n index = this.nodes[index].index0;\n }\n } else {\n chars.push(this.leaves[-(index + 1)].symbol);\n break;\n }\n }\n }\n return String.fromCharCode(...chars);\n } else {\n // Uncompressed string\n const len = stream.readInt(8);\n const bytes = stream.readBytes(len);\n return String.fromCharCode(...bytes);\n }\n }\n}\n\n// Singleton instance matching the C++ g_huffProcessor\nexport const huffProcessor = new HuffmanProcessor();\n"]}
|
package/dist/LiveParser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiveParser.js","sourceRoot":"","sources":["../src/LiveParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAQpB;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/B,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/B,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEnC,QAAQ,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC/E,QAAQ,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC3E,QAAQ,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAEzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;QAC5D,gBAAgB;KACjB,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAClD,CAAC"}
|
|
1
|
+
{"version":3,"file":"LiveParser.js","sourceRoot":"","sources":["../src/LiveParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAQpB;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/B,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/B,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAEnC,QAAQ,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC/E,QAAQ,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAAC;IAC3E,QAAQ,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAEzE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAmC,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;QAC5D,gBAAgB;KACjB,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAClD,CAAC","sourcesContent":["import { ClassRegistry } from \"./ClassRegistry.js\";\nimport { GhostTracker } from \"./GhostManager.js\";\nimport { PacketParser } from \"./PacketParser.js\";\nimport { registerEventParsers } from \"./EventParsers.js\";\nimport { registerGhostParsers } from \"./GhostManager.js\";\nimport { registerDataBlockParsers } from \"./DataBlockParsers.js\";\nimport {\n DataBlockClassFirst,\n DataBlockClassNames,\n NetObjectClassFirst,\n NetObjectClassNames,\n NetEventClassFirst,\n NetEventClassNames,\n} from \"./types.js\";\n\nexport interface LiveParserKit {\n registry: ClassRegistry;\n ghostTracker: GhostTracker;\n packetParser: PacketParser;\n}\n\n/**\n * Create a parser stack for live server connections. Sets up the same\n * registry bindings as DemoParser but without requiring a demo file,\n * and includes a dataBlockDataMap for incremental datablock accumulation\n * via SimDataBlockEvent.\n */\nexport function createLiveParser(): LiveParserKit {\n const registry = new ClassRegistry();\n const ghostTracker = new GhostTracker();\n\n registerEventParsers(registry);\n registerGhostParsers(registry);\n registerDataBlockParsers(registry);\n\n registry.bindDeterministicDataBlocks(DataBlockClassNames, DataBlockClassFirst);\n registry.bindDeterministicGhosts(NetObjectClassNames, NetObjectClassFirst);\n registry.bindDeterministicEvents(NetEventClassNames, NetEventClassFirst);\n\n const dataBlockDataMap = new Map<number, Record<string, unknown>>();\n const packetParser = new PacketParser(registry, ghostTracker, {\n dataBlockDataMap,\n });\n\n return { registry, ghostTracker, packetParser };\n}\n"]}
|