Log local sneak detection and proxy sneak observer

Add diagnostics and a log-only proxy observation for sneak state changes.

- docs/dev-log.md: Add entries documenting proxy sneak observation and local sneak detection diagnostics, scope notes, and next steps.
- plugin/src/main.cpp: Introduce SneakDetectionState, GetSneakDetectionState, and ShouldLogSneakDetection to combine API and actor-state signals; throttle diagnostic logs; use the combined finalIsSneaking in player movement state decisions; add include for ACTOR_STANCE.
- plugin/src/F4TProxyActorController.cpp: Add controller-local tracking for the represented remote player sneak state, reset helpers, and ApplyRemoteMovementStateToProxy which logs sneak transitions for the represented remote player (no visual crouch applied yet).

Notes: This change is log-only — it does not force animations or ActorState writes. Networking protocol and receive-thread behavior remain unchanged. A TODO is left to safely apply visual crouch once a supported API is confirmed.
This commit is contained in:
2026-06-02 13:44:24 +12:00
parent 8c09e91534
commit d36140c76e
3 changed files with 186 additions and 1 deletions
+76
View File
@@ -761,6 +761,82 @@ Player position: X=2048.00, Y=2048.00, Z=0.00, AngleZ=0.00
---
## 2026-06-02 - Proxy Sneak State Observation
### What Changed
- Added a log-only movement-state behaviour hook in `F4TProxyActorController`.
- The single represented proxy now observes the remote player's `isSneaking`
value after the normal same-cell validation.
- Added controller-local tracking for the represented remote `playerId` and its
last observed sneak state so logs happen only on transitions.
- Reset sneak-state tracking when the represented remote player changes or
disappears.
### What Worked
- Existing smooth proxy transform movement remains unchanged.
- Special movement types still snap through the existing movement path.
- The networking receive thread remains actor-free and continues to update only
plain remote-player state.
### What Broke
- Nothing recorded.
### Notes
- This milestone intentionally does not force the proxy to crouch visually.
- Animation graph variables/events, direct `ActorState` writes, and
`PerformAction(kActionSneak)` remain out of scope until a safe actor crouch API
is confirmed.
- Dynamic spawning, multiple proxy actors, combat, inventory, quest, settlement,
weapon, and interaction sync remain out of scope.
### Next Steps
- Test with two Fallout 4 clients in `F4TTestCell01` and confirm sneak toggles
produce one log line per transition.
- Research a safe visual crouch/sneak application path for the placed proxy
actor.
---
## 2026-06-02 - Local Sneak Detection Diagnostics
### What Changed
- Improved local `isSneaking` detection to combine safe read-only signals from
`PlayerCharacter::IsSneaking()`, actor-state stance, and actor-state
`forceSneak`.
- Added throttled local sneak diagnostics showing each read-only signal and the
final `isSneaking` value sent in transform packets.
- Kept movement-state change detection unchanged, so `isSneaking` transitions
can trigger transform sends even without a meaningful position delta.
### What Worked
- The networking protocol remains unchanged and backwards compatible.
- The receive thread remains actor-free.
- Proxy sneak behaviour remains log-only; no visual crouch is applied.
### What Broke
- Nothing recorded.
### Notes
- No animation graph variables/events, direct actor-state writes, or
`PerformAction(kActionSneak)` were added.
- Server files and fake-client compatibility were left unchanged.
### Next Steps
- Test crouch/sneak in-game and compare `apiSneaking`, `actorStateSneaking`,
`actorStateForceSneak`, and `finalIsSneaking` in `Fallout4Together.log`.
---
## Entry Template
Use this format for future updates: