UCharacterMovementComponent::ServerMoveDualHybridRootMotion_Implementation
Deprecated: ServerMoveDualHybridRootMotion_Implementation() is deprecated, use ServerMove_PerformMovement() instead, or define SUPPORT_DEPRECATED_CHARACTER_MOVEMENT_RPCS=1 in the project and set CVar p.NetUsePackedMovementRPCs=0 to use the old code path.
#include "GameFramework/CharacterMovementComponent.h"
Access: public
Specifiers: virtual
Description
Server-side body of ServerMoveDualHybridRootMotion — processes the non-root-motion move followed by the root-motion move via ServerMove_PerformMovement().
Caveats & Gotchas
- • Part of the deprecated legacy RPC block; only reached with SUPPORT_DEPRECATED_CHARACTER_MOVEMENT_RPCS=1 and p.NetUsePackedMovementRPCs=0.
- • Executes only after ServerMoveDualHybridRootMotion_Validate() returns true.
- • The root-motion second move relies on the server's own root motion source state matching the client's at the time of the move, which can drift under heavy packet loss.
Signature
virtual void ServerMoveDualHybridRootMotion_Implementation(float TimeStamp0, FVector_NetQuantize10 InAccel0, uint8 PendingFlags, uint32 View0, float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 NewFlags, uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode) Parameters
| Name | Type | Description | Default |
|---|---|---|---|
| TimeStamp0 | float | Client timestamp for the first, non-root-motion move. | — |
| InAccel0 | FVector_NetQuantize10 | Compressed acceleration for the first move. | — |
| PendingFlags | uint8 | Packed move flags for the first move. | — |
| View0 | uint32 | Compressed client view for the first move. | — |
| TimeStamp | float | Client timestamp for the second, root-motion move. | — |
| InAccel | FVector_NetQuantize10 | Compressed acceleration for the second move. | — |
| ClientLoc | FVector_NetQuantize100 | Client's resultant location after the second move. | — |
| NewFlags | uint8 | Packed move flags for the second move. | — |
| ClientRoll | uint8 | Compressed client view roll for the second move. | — |
| View | uint32 | Compressed client view yaw/pitch for the second move. | — |
| ClientMovementBase | UPrimitiveComponent* | Component the client believes it's standing on after the second move. | — |
| ClientBaseBoneName | FName | Bone name on the client's movement base, if a skeletal mesh. | — |
| ClientMovementMode | uint8 | Packed client movement mode after the second move. | — |
Return Type
void Example
Server-side hybrid root-motion processing (engine-internal) C++
// Invoked by the engine's RPC dispatch after ServerMoveDualHybridRootMotion_Validate() passes.
void UCharacterMovementComponent::ServerMoveDualHybridRootMotion_Implementation(
float TimeStamp0, FVector_NetQuantize10 InAccel0, uint8 PendingFlags, uint32 View0,
float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 NewFlags,
uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode); See Also
Version History
Introduced in: 4.0
| Version | Status | Notes |
|---|---|---|
| 5.6 | deprecated | Deprecated since 4.26 in favor of packed movement RPCs. |
Feedback
Was this helpful?