Add Pip-Boy state to transform sync

Adds optional `isPipboyOpen` to transform packets, remote player state, proxy animation logging, and fake client/player samples. Updates protocol and architecture docs to describe the new Pip-Boy open/raising/closing state and related movement-state handling.
This commit is contained in:
2026-06-30 16:00:07 +12:00
parent 4b8f5246c4
commit 4ed671464e
18 changed files with 196 additions and 19 deletions
+4 -3
View File
@@ -67,6 +67,7 @@ isSneaking
isJumping
isCrouching
weaponDrawn
isPipboyOpen
movementSpeed
animationGraphSpeed
equippedItems
@@ -78,8 +79,8 @@ Required transform packet fields are `type`, `playerId`, `x`, `y`, `z`,
`angleZ`, and `cellId`. `worldspaceId`, `movementType`, `clientTime`, and
`serverTime` are optional; interior test cells may omit `worldspaceId`.
Movement state fields are also optional and default to not moving, not
sprinting, not sneaking, not jumping, weapon holstered, and speed `0.0` when
missing.
sprinting, not sneaking, not jumping, weapon holstered, Pip-Boy closed, and
speed `0.0` when missing.
`equippedItems` is also optional. New clients send it as a complete snapshot of
tracked visible apparel slots with `{ slot, formId }` entries; empty `formId`
@@ -125,7 +126,7 @@ player exists.
local test cell, then snaps back to a valid same-cell remote player before
resuming smoothing.
- Transform packets include movement state data (`isMoving`, `movementSpeed`,
`isSprinting`, `isSneaking`, `isJumping`, `weaponDrawn`).
`isSprinting`, `isSneaking`, `isJumping`, `weaponDrawn`, `isPipboyOpen`).
- Transform packets can include optional `equippedItems` snapshots for visible
clothing, armor, hats, and eyewear slots. The game-thread proxy controller
applies those snapshots after proxy 3D is loaded.