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:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user