UCharacterMovementComponent::ConvertRootMotionServerIDsToLocalIDs
#include "GameFramework/CharacterMovementComponent.h"
Access: public
Specifiers: ENGINE_API
Description
Rewrites server-assigned root motion source IDs in InOutServerRootMotion to the equivalent local client IDs, using the most recent ID mappings recorded during move replay.
Caveats & Gotchas
- • Relies on RootMotionIDMappings, a fixed-size ring buffer (ERootMotionMapping::MapSize = 16 entries) — if too many root motion sources are applied between corrections, older mappings are evicted and matching can fail.
- • Client and server root motion source IDs are assigned independently, so without this conversion a client correction referencing a server ID would not match any local root motion source.
- • Called only during client-side reconciliation of server root motion corrections; irrelevant on a dedicated server.
Signature
void ConvertRootMotionServerIDsToLocalIDs(const FRootMotionSourceGroup& LocalRootMotionToMatchWith, FRootMotionSourceGroup& InOutServerRootMotion, float TimeStamp) Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| LocalRootMotionToMatchWith | const FRootMotionSourceGroup& | The client's local root motion group, used as the basis for matching server sources to local IDs. | — |
| InOutServerRootMotion | FRootMotionSourceGroup& | The server-received root motion group whose IDs are rewritten in place to match local IDs. | — |
| TimeStamp | float | The move timestamp the correction applies to, used to look up the relevant ID mapping. | — |
Return Type
void Example
Reconcile server root motion IDs before applying a correction C++
FRootMotionSourceGroup ServerRootMotion = ReceivedServerRootMotion;
CharacterMovementComponent->ConvertRootMotionServerIDsToLocalIDs(CharacterMovementComponent->CurrentRootMotion, ServerRootMotion, TimeStamp);
// ServerRootMotion now uses local IDs matching CurrentRootMotion See Also
Version History
Introduced in: 4.20
| Version | Status | Notes |
|---|---|---|
| 5.6 | stable | — |
Feedback
Was this helpful?