Add proxy visual sneak scaffolding
Introduce default-off scaffolding for proxy visual sneak experiments: add kEnableProxyVisualSneakSync and kEnableProxyVisualSneakExperimentalGraph flags (false), include ACTOR_STANCE, and add a non-mutating ApplyProxyVisualSneakIfEnabled helper that reads proxy sneak/stance/forceSneak and emits one-time diagnostics when visual sneak is disabled. Add per-slot tracking fields (hasAppliedVisualSneakingState, hasLoggedVisualSneakDisabled, lastAppliedVisualSneakingState), ResetSlotVisualSneakTracking and calls to reset tracking when holding/reusing/disconnecting slots, and switch UpdateProxyAnimationStateDebug to accept a non-const RE::Actor&. Update docs/dev-log.md with an entry describing the change. Comments/TODOs note a future, separately approved experiment to call RE::Actor::SetSneaking(...) behind a disabled gate; current scaffolding intentionally avoids mutating actors, animation graph writes/events, or AI/package crouch logic. Build tested locally (plugin rebuild).
This commit is contained in:
@@ -2314,6 +2314,67 @@ each remote `playerId` without visually applying animation.
|
||||
|
||||
---
|
||||
|
||||
## 2026-06-03 - Proxy Visual Sneak Scaffolding
|
||||
|
||||
### Summary
|
||||
|
||||
Added default-off runtime proxy visual sneak scaffolding so future sneak/crouch
|
||||
visual experiments have isolated slot-local gates and reset tracking without
|
||||
mutating actors by default.
|
||||
|
||||
### Files Changed
|
||||
|
||||
- `plugin/src/F4TProxyActorController.cpp`
|
||||
- `docs/dev-log.md`
|
||||
|
||||
### Details
|
||||
|
||||
- Added default-off `kEnableProxyVisualSneakSync` and
|
||||
`kEnableProxyVisualSneakExperimentalGraph` flags near the existing proxy
|
||||
controller constants.
|
||||
- Added runtime-proxy-slot visual sneak tracking separate from existing
|
||||
animation debug observation state.
|
||||
- Added a runtime-proxy-only game-thread helper that reads proxy-side
|
||||
`IsSneaking()`, stance, and `forceSneak` diagnostics and logs once per slot
|
||||
when no visual sneak method is enabled.
|
||||
- Kept the helper non-mutating with the default flags. It does not call
|
||||
animation graph events, write animation graph variables, call `PerformAction`,
|
||||
write `ActorState`, or use package/procedure/AI crouch behavior.
|
||||
- Left a TODO for a separately approved future experiment using
|
||||
`RE::Actor::SetSneaking(remoteState.isSneaking)` behind the existing disabled
|
||||
gate.
|
||||
- Reset visual sneak tracking through the existing slot observation reset path,
|
||||
when runtime proxies are moved to holding, and when disconnected slots become
|
||||
reusable.
|
||||
- Left networking, protocol, Python server code, fake-client tooling, placed
|
||||
fallback behavior, runtime spawning, movement smoothing, snap behavior,
|
||||
same-cell gating, held/reusable lifecycle, and combat/AI neutralization
|
||||
unchanged.
|
||||
|
||||
### Testing
|
||||
|
||||
- Ran `xmake build` from `plugin`; it succeeded and rebuilt
|
||||
`Fallout4Together.dll`.
|
||||
- Pending manual validation: use the Dev Server GUI to add fake clients, toggle
|
||||
sneak on/off, and confirm existing animation debug logs plus one-time disabled
|
||||
visual sneak diagnostics without any visual crouch by default.
|
||||
|
||||
### Known Issues
|
||||
|
||||
- Visual sneak/crouch application remains intentionally unimplemented.
|
||||
- The safe visual writer candidate still needs a manually approved
|
||||
`RE::Actor::SetSneaking(...)` experiment before any proxy crouch behavior is
|
||||
enabled.
|
||||
|
||||
### Next Steps
|
||||
|
||||
- Manually validate fake-client sneak toggles in `F4TTestCell01`.
|
||||
- If approved later, test `RE::Actor::SetSneaking(...)` behind the disabled
|
||||
visual sneak gate with explicit clear handling for false, disconnect, hold,
|
||||
reassignment, and reuse.
|
||||
|
||||
---
|
||||
|
||||
## Entry Template
|
||||
|
||||
Use this format for future updates:
|
||||
|
||||
Reference in New Issue
Block a user