Implement proxy weapon animation sync for ranged guns

Milestone 1: Proxy actors now equip remote players' right-hand weapons and play armed idle/locomotion poses when weaponDrawn=true. Adds rightHand weapon slot to equippedItems protocol, weapon graph variable support (iSyncGunDown: 0=drawn, 1=holstered), and weapon FSM events (weaponDraw, readyStateEnter, gunDownStateEnter). Fixes two critical animation state churn bugs: frustum-visibility flicker no longer resets animation state on every update tick, and idle proxies no longer register as changed on every frame. Includes WeaponBehavior graph loading via AIProcess::RequestLoadAnimationsForWeaponChange() and manual weapon attachment fallback. New docs/weapon-animation-sync.md reference guide maps animation events and variables from F4-Animation-Research. Experimental alert-state reassertion for armed proxies to test NPC combat state gating of weapon-ready poses.
This commit is contained in:
2026-07-02 17:23:09 +12:00
parent a6d4cc2ba6
commit 89c3e82554
11 changed files with 837 additions and 41 deletions
+6 -3
View File
@@ -127,8 +127,10 @@ player exists.
- Transform packets include movement state data (`isMoving`, `movementSpeed`,
`isSprinting`, `isSneaking`, `isJumping`, `weaponDrawn`).
- 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.
clothing, armor, hats, eyewear, and right-hand weapon slots. The game-thread
proxy controller applies those snapshots after proxy 3D is loaded. Weapons are
synced as optional `WEAP` form IDs; missing weapons or unresolved form IDs do
not block other equipment sync.
- Transform packets can include optional `appearance` snapshots for best-effort
body and face proxy visuals. The game-thread proxy controller applies supported
fields after proxy 3D is loaded and defers race/gender switching.
@@ -136,7 +138,8 @@ player exists.
`COVault109` solo cell.
- The game-thread proxy controller applies confirmed Havok animation graph
variables to runtime proxy actors from that remote state (locomotion, sneak,
jump, weapon drawn). Transform position/heading sync is unchanged.
jump). Weapon-drawn state is parsed but animation application is implemented
separately (Phase 2 milestone). Transform position/heading sync is unchanged.
## Transform Cadence