Tie proxy locomotion/cadence to actual per-frame movement and motion-feedback instead of only replaying transmitted Speed. Changes: - docs/dev-log.md: add detailed dev log describing measured-cadence fix and cadence/animationSpeed work. - plugin/include/F4TProxyPuppet.h: added NiPoint3 include and new API: SetProxyLocomotionState, SetProxyDesiredSpeed (legacy alias), and ApplyProxyLocomotionFrame. - plugin/lib/commonlibf4/include/RE/A/ActorMotionFeedbackOutput.h: new tentative struct for motion-feedback output. - plugin/lib/commonlibf4/include/RE/Fallout.h: include new ActorMotionFeedbackOutput header. - plugin/src/F4TProxyActorController.cpp: track per-frame timing/puppet state, compute frame delta, use proxy->Move() with measured frameDelta and call ApplyProxyLocomotionFrame (instead of SetPosition/Lerp-only), and pass measured graph speed/direction to proxy. - plugin/src/F4TProxyAnimationSync.cpp: use SetProxyLocomotionState to include direction when writing proxy locomotion state. - plugin/src/F4TProxyPuppet.cpp: introduce ProxyLocomotionState map, sync controller motion fields, compute/push engine motion-feedback (via Compute/Update feedback vtable calls), use UpdateNoAI + manual motion feedback to drive cadence, implement ApplyProxyLocomotionFrame which derives velocity from world delta, clamps/chooses feedback speed (uses measured horizontal speed unless provided graph speed is valid), applies an idle threshold (<8 u/s -> idle), and writes graph speed back to the animation graph. Why: This makes foot cadence reflect on-screen translation (eliminating mild foot slide/stop-overstay) by measuring applied displacement each frame, updating controller velocity/motion-feedback, and re-asserting animation graph inputs after UpdateNoAI.
CommonLibF4
Requirements
- XMake [3.0.0+]
- C++23 Compiler (MSVC or Clang-CL)
Getting Started
git clone --recurse-submodules https://github.com/libxse/commonlibf4
cd commonlibf4
Build
To build the project, run the following command:
xmake build
Note: This will generate a
build/windows/directory in the project's root directory with the build output.
Project Generation (Optional)
If you use Visual Studio, run the following command:
xmake project -k vsxmake
Note: This will generate a
vsxmakeXXXX/directory in the project's root directory using the latest version of Visual Studio installed on the system.
Alternatively, if you do not use Visual Studio, you can generate a compile_commands.json file for use with a laguage server like clangd in any code editor that supports it, like vscode:
xmake project -k compile_commands
Note: You must have a language server extension installed to make use of this file. I recommend
clangd. Do not have more than one installed at a time as they will conflict with each other. I also recommend installing thexmakeextension if available to make building the project easier.
Notes
CommonLibF4 is intended to replace F4SE as a static dependency. However, the runtime component of F4SE is still required.