UCharacterMovementComponent::ServerMoveDual_Implementation
Deprecated: ServerMoveDual_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 the legacy ServerMoveDual RPC — processes the first (pending) move and then the second move by calling ServerMove_PerformMovement() twice.
Caveats & Gotchas
- • Part of the deprecated legacy RPC block; only reached when SUPPORT_DEPRECATED_CHARACTER_MOVEMENT_RPCS=1 and packed movement RPCs are disabled.
- • Runs the first move's simulation before the second, so any error correction queued mid-way affects how the second move is evaluated — order matters for reproducing client-side prediction.
- • Executes only after ServerMoveDual_Validate() returns true.
Signature
virtual void ServerMoveDual_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 (pending) 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 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 dual-move processing (engine-internal) C++
// Invoked by the engine's RPC dispatch after ServerMoveDual_Validate() passes.
// Internally performs two calls into ServerMove_PerformMovement().
void UCharacterMovementComponent::ServerMoveDual_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?