RealDocs

ACharacter::ClientAdjustRootMotionPosition_Implementation

function Engine Deprecated Since 4.6
Deprecated: Use ClientMoveResponsePacked_Implementation instead.
#include "GameFramework/Character.h"
Access: public

Description

The client-side implementation body for ClientAdjustRootMotionPosition, executed on the owning client after the RPC is dispatched. Override this to inject custom correction logic.

Caveats & Gotchas

  • This is the _Implementation suffix counterpart of a deprecated RPC — override it only if you are maintaining legacy movement code targeting older engine versions.
  • Must call Super to ensure the base correction logic (position snap and montage track seek) executes; omitting Super will silently break root-motion network correction.
  • Deprecated alongside its RPC counterpart — new code should override the packed response implementation instead.

Signature

ENGINE_API void ClientAdjustRootMotionPosition_Implementation(float TimeStamp, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent* ServerBase, FName ServerBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode)

Parameters

Name Type Description Default
TimeStamp float Server timestamp of the move being corrected.
ServerMontageTrackPosition float Authoritative montage playback position.
ServerLoc FVector Corrected world location.
ServerRotation FVector_NetQuantizeNormal Corrected rotation packed as a normal vector.
ServerVelZ float Vertical velocity at the correction point.
ServerBase UPrimitiveComponent* Movement base component.
ServerBoneName FName Bone on the skeletal movement base, if any.
bHasBase bool Whether the character has a valid movement base.
bBaseRelativePosition bool Whether ServerLoc is base-relative.
ServerMovementMode uint8 Packed movement mode.

Return Type

void

Example

Override to add telemetry before applying correction C++
void AMyCharacter::ClientAdjustRootMotionPosition_Implementation(
    float TimeStamp, float TrackPos, FVector Loc,
    FVector_NetQuantizeNormal Rot, float VelZ,
    UPrimitiveComponent* Base, FName BoneName,
    bool bHasBase, bool bBaseRel, uint8 Mode)
{
    RecordCorrectionEvent(TimeStamp, Loc);
    Super::ClientAdjustRootMotionPosition_Implementation(
        TimeStamp, TrackPos, Loc, Rot, VelZ, Base, BoneName, bHasBase, bBaseRel, Mode);
}

Version History

Introduced in: 4.6

Version Status Notes
5.6 deprecated Superseded by ClientMoveResponsePacked_Implementation.

Feedback

Was this helpful?

Suggest an edit

Select a field above to begin editing.