UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
CharacterMovementComponent.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Math/RandomStream.h"
10#include "Engine/EngineTypes.h"
12#include "WorldCollision.h"
23#include "CharacterMovementComponent.generated.h"
24
25class ACharacter;
29class UPrimitiveComponent;
30class INavigationData;
32
40
42{
43 // Is Async Character Movement enabled?
46}
47
51USTRUCT()
53{
55
56
58
66 virtual void ExecuteTick(float DeltaTime, enum ELevelTick TickType, ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent) override;
67
69 virtual FString DiagnosticMessage() override;
71 virtual FName DiagnosticContext(bool bDetailed) override;
72};
73
82
83USTRUCT()
85{
87
88
90
98 virtual void ExecuteTick(float DeltaTime, enum ELevelTick TickType, ENamedThreads::Type CurrentThread, const FGraphEventRef& MyCompletionGraphEvent) override;
99
101 virtual FString DiagnosticMessage() override;
102
104 virtual FName DiagnosticContext(bool bDetailed) override;
105};
106
107template<>
115
118
119
120//=============================================================================
134UCLASS(MinimalAPI)
136{
138public:
139
144
145protected:
146
148 UPROPERTY(Transient, DuplicateTransient)
149 TObjectPtr<ACharacter> CharacterOwner;
150
151public:
152
154 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite)
155 float GravityScale;
156
158 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", ForceUnits="cm"))
159 float MaxStepHeight;
160
162 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta=(DisplayName="Jump Z Velocity", ClampMin="0", UIMin="0", ForceUnits="cm/s"))
163 float JumpZVelocity;
164
166 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0"))
167 float JumpOffJumpZFactor;
168
169
170private:
172
174 // This is the most recent async state from simulated. Only safe for access on physics thread.
176 bool bMovementModeDirty = false; // Gamethread changed movement mode, need to update sim.
177private:
178
182 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, meta=(ClampMin="0.0", ClampMax="90.0", UIMin = "0.0", UIMax = "90.0", ForceUnits="degrees"))
183 float WalkableFloorAngle;
184
188 UPROPERTY(Category="Character Movement: Walking", VisibleAnywhere)
189 float WalkableFloorZ;
190
199 UPROPERTY(Category="Character Movement: Gravity", VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = true))
200 FVector GravityDirection;
201
205 UPROPERTY(Category="Character Movement: Gravity", VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = true))
206 FQuat WorldToGravityTransform;
207
211 UPROPERTY(Category="Character Movement: Gravity", VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = true))
212 FQuat GravityToWorldTransform;
213
215 bool bHasCustomGravity;
216public:
217
228 UPROPERTY(Category="Character Movement: MovementMode", BlueprintReadOnly)
230
236 UPROPERTY(Category="Character Movement: MovementMode", BlueprintReadOnly)
237 uint8 CustomMovementMode;
238
240 static ENGINE_API const FVector DefaultGravityDirection;
241
243 UPROPERTY(Category="Character Movement (Networking)", EditAnywhere, BlueprintReadOnly)
244 ENetworkSmoothingMode NetworkSmoothingMode;
245
253 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
254 float GroundFriction;
255
256#if UE_WITH_REMOTE_OBJECT_HANDLE
261#endif
262
263
266 FQuat OldBaseQuat;
267
270 FVector OldBaseLocation;
271
273 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", ForceUnits="cm/s"))
274 float MaxWalkSpeed;
275
277 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", ForceUnits="cm/s"))
278 float MaxWalkSpeedCrouched;
279
281 UPROPERTY(Category="Character Movement: Swimming", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", ForceUnits="cm/s"))
282 float MaxSwimSpeed;
283
285 UPROPERTY(Category="Character Movement: Flying", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", ForceUnits="cm/s"))
286 float MaxFlySpeed;
287
289 UPROPERTY(Category="Character Movement: Custom Movement", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", ForceUnits="cm/s"))
290 float MaxCustomMovementSpeed;
291
293 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
294 float MaxAcceleration;
295
297 UPROPERTY(Category = "Character Movement: Walking", EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "0", UIMin = "0", ForceUnits="cm/s"))
298 float MinAnalogWalkSpeed;
299
306 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
307 float BrakingFrictionFactor;
308
317 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0", EditCondition="bUseSeparateBrakingFriction"))
318 float BrakingFriction;
319
323 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0.0166", ClampMax="0.05", UIMin="0.0166", UIMax="0.05"))
324 float BrakingSubStepTime;
325
330 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
331 float BrakingDecelerationWalking;
332
337 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
338 float BrakingDecelerationFalling;
339
344 UPROPERTY(Category="Character Movement: Swimming", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
345 float BrakingDecelerationSwimming;
346
351 UPROPERTY(Category="Character Movement: Flying", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
352 float BrakingDecelerationFlying;
353
358 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
359 float AirControl;
360
365 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
366 float AirControlBoostMultiplier;
367
372 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
373 float AirControlBoostVelocityThreshold;
374
380 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
381 float FallingLateralFriction;
382
384 UE_DEPRECATED_FORGAME(5.0, "Public access to this property is deprecated, and it will become private in a future release. Please use SetCrouchedHalfHeight and GetCrouchedHalfHeight instead.")
385 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, BlueprintSetter=SetCrouchedHalfHeight, BlueprintGetter=GetCrouchedHalfHeight, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
386 float CrouchedHalfHeight;
387
389 UPROPERTY(Category="Character Movement: Swimming", EditAnywhere, BlueprintReadWrite)
390 float Buoyancy;
391
396 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
397 float PerchRadiusThreshold;
398
404 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
405 float PerchAdditionalHeight;
406
408 UPROPERTY(Category="Character Movement (Rotation Settings)", EditAnywhere, BlueprintReadWrite)
409 FRotator RotationRate;
410
417 UPROPERTY(Category="Character Movement (General Settings)", EditDefaultsOnly, BlueprintReadWrite)
418 uint8 bUseSeparateBrakingFriction:1;
419
424 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
425 uint8 bDontFallBelowJumpZVelocityDuringJump:1;
426
431 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
432 uint8 bApplyGravityWhileJumping:1;
437 UPROPERTY(Category="Character Movement (Rotation Settings)", EditAnywhere, BlueprintReadWrite)
438 uint8 bUseControllerDesiredRotation:1;
439
444 UPROPERTY(Category="Character Movement (Rotation Settings)", EditAnywhere, BlueprintReadWrite)
445 uint8 bOrientRotationToMovement:1;
446
451 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite)
452 uint8 bSweepWhileNavWalking:1;
453
454private:
455
456 // Tracks whether or not we need to update the bSweepWhileNavWalking flag do to an upgrade.
457 uint8 bNeedsSweepWhileWalkingUpdate:1;
458
460
466 UPROPERTY()
467 uint8 bMovementInProgress:1;
468
469public:
470
477 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, AdvancedDisplay)
478 uint8 bEnableScopedMovementUpdates:1;
479
487 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, AdvancedDisplay)
488 uint8 bEnableServerDualMoveScopedMovementUpdates : 1;
489
491 UPROPERTY()
492 uint8 bForceMaxAccel:1;
493
500 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
501 uint8 bRunPhysicsWithNoController:1;
502
507 UPROPERTY(Category="Character Movement: Walking", VisibleInstanceOnly, BlueprintReadWrite, AdvancedDisplay)
508 uint8 bForceNextFloorCheck:1;
509
512 UPROPERTY()
513 uint8 bShrinkProxyCapsule:1;
514
516 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite)
517 uint8 bCanWalkOffLedges:1;
518
520 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite)
521 uint8 bCanWalkOffLedgesWhenCrouching:1;
522
529 uint8 bNetworkSmoothingComplete:1;
530
532 uint8 bNetworkLargeClientCorrection:1;
533
538 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly)
539 uint8 bNetworkSkipProxyPredictionOnNetUpdate:1;
540
546 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay)
547 uint8 bNetworkAlwaysReplicateTransformUpdateTimestamp:1;
548
549public:
550
552 UPROPERTY()
553 uint8 bDeferUpdateMoveComponent:1;
554
556 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite)
557 uint8 bEnablePhysicsInteraction:1;
558
560 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
561 uint8 bTouchForceScaledToMass:1;
562
564 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
565 uint8 bPushForceScaledToMass:1;
566
568 UPROPERTY(Category = "Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta = (editcondition = "bEnablePhysicsInteraction"))
569 uint8 bPushForceUsingZOffset:1;
570
573 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
574 uint8 bScalePushForceToVelocity:1;
575
577 UPROPERTY()
578 TObjectPtr<USceneComponent> DeferredUpdatedMoveComponent;
579
581 UPROPERTY(Category="Character Movement: Swimming", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
582 float MaxOutOfWaterStepHeight;
583
585 UPROPERTY(Category="Character Movement: Swimming", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ForceUnits="cm/s"))
586 float OutofWaterZ;
587
589 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, meta=(ClampMin="0", UIMin="0"))
590 float Mass;
591
593 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
594 float StandingDownwardForceScale;
595
597 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
598 float InitialPushForceFactor;
599
601 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
602 float PushForceFactor;
603
605 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(UIMin = "-1.0", UIMax = "1.0"), meta=(editcondition = "bEnablePhysicsInteraction"))
607
609 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
610 float TouchForceFactor;
611
613 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
614 float MinTouchForce;
615
617 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
618 float MaxTouchForce;
619
621 UPROPERTY(Category="Character Movement: Physics Interaction", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bEnablePhysicsInteraction"))
622 float RepulsionForce;
623
624
625public:
626#if WITH_EDITORONLY_DATA
627 // Deprecated properties
628 UPROPERTY()
630
632 UPROPERTY()
634
635 UPROPERTY()
637#endif
638
639protected:
640
645 UPROPERTY()
647
651 UPROPERTY()
652 FQuat LastUpdateRotation;
653
657 UPROPERTY()
658 FVector LastUpdateLocation;
659
663 UPROPERTY()
664 FVector LastUpdateVelocity;
665
668 float ServerLastTransformUpdateTimeStamp;
669
672 float ServerLastClientGoodMoveAckTime;
673
676 float ServerLastClientAdjustmentTime;
677
679 UPROPERTY()
680 FVector PendingImpulseToApply;
681
683 UPROPERTY()
684 FVector PendingForceToApply;
685
689 UPROPERTY()
690 float AnalogInputModifier;
691
693 ENGINE_API virtual float ComputeAnalogInputModifier() const;
694
696 float LastStuckWarningTime;
697
699 uint32 StuckWarningCountSinceNotify;
700
705 int32 NumJumpApexAttempts;
706
707public:
708
710 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
711 FVector GetLastUpdateLocation() const { return LastUpdateLocation; }
712
714 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
715 FRotator GetLastUpdateRotation() const { return LastUpdateRotation.Rotator(); }
716
718 FQuat GetLastUpdateQuat() const { return LastUpdateRotation; }
719
721 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
722 FVector GetLastUpdateVelocity() const { return LastUpdateVelocity; }
723
725 inline float GetServerLastTransformUpdateTimeStamp() const { return ServerLastTransformUpdateTimeStamp; }
726
736 ENGINE_API float GetSimulationTimeStep(float RemainingTime, int32 Iterations) const;
737
746 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0.0166", ClampMax="0.50", UIMin="0.0166", UIMax="0.50"))
747 float MaxSimulationTimeStep;
748
757 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="1", ClampMax="25", UIMin="1", UIMax="25"))
758 int32 MaxSimulationIterations;
759
764 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="1", ClampMax="4", UIMin="1", UIMax="4"))
765 int32 MaxJumpApexAttemptsPerSimulation;
766
772 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
773 float MaxDepenetrationWithGeometry;
774
780 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
781 float MaxDepenetrationWithGeometryAsProxy;
782
787 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
788 float MaxDepenetrationWithPawn;
789
795 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0", UIMin="0", ForceUnits=cm))
796 float MaxDepenetrationWithPawnAsProxy;
797
801 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay, meta=(ClampMin="0.0", ClampMax="1.0", UIMin="0.0", UIMax="1.0", ForceUnits=s))
803
807 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay, meta=(ClampMin="0.0", ClampMax="1.0", UIMin="0.0", UIMax="1.0", ForceUnits=s))
809
813 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay, meta=(ClampMin="0.0", ClampMax="1.0", UIMin="0.0", UIMax="1.0", ForceUnits=s))
815
819 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay, meta=(ClampMin="0.0", ClampMax="1.0", UIMin="0.0", UIMax="1.0", ForceUnits=s))
821
826 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=cm))
828
833 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, AdvancedDisplay, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=cm))
835
837 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=cm))
839
843 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=cm))
845
849 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=s))
851
858 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=s))
860
866 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=s))
868
873 UPROPERTY(Category="Character Movement (Networking)", EditDefaultsOnly, meta=(ClampMin="0.0", UIMin="0.0", ForceUnits=cm))
875
877 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ForceUnits=cm))
878 float LedgeCheckThreshold;
879
881 UPROPERTY(Category="Character Movement: Swimming", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
882 float JumpOutOfWaterPitch;
883
885 UPROPERTY(Category="Character Movement: Walking", VisibleInstanceOnly, BlueprintReadOnly)
886 FFindFloorResult CurrentFloor;
887
893 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite)
894 TEnumAsByte<enum EMovementMode> DefaultLandMovementMode;
895
901 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite)
902 TEnumAsByte<enum EMovementMode> DefaultWaterMovementMode;
903
905 UPrimitiveComponent* GetLastServerMovementBase() const { return LastServerMovementBase.Get(); };
906
907private:
914 TEnumAsByte<enum EMovementMode> GroundMovementMode;
915
917 TWeakObjectPtr<UPrimitiveComponent> LastServerMovementBase = nullptr;
918
919public:
924 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite)
925 uint8 bMaintainHorizontalGroundVelocity:1;
926
928 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite)
929 uint8 bImpartBaseVelocityX:1;
930
932 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite)
933 uint8 bImpartBaseVelocityY:1;
934
936 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite)
937 uint8 bImpartBaseVelocityZ:1;
938
944 UPROPERTY(Category="Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite)
945 uint8 bImpartBaseAngularVelocity:1;
946
948 UPROPERTY(Category="Character Movement (General Settings)", Transient, VisibleInstanceOnly, BlueprintReadWrite)
949 uint8 bJustTeleported:1;
950
953 uint8 bNetworkUpdateReceived:1;
954
957 uint8 bNetworkMovementModeChanged:1;
958
961 uint8 bNetworkGravityDirectionChanged:1;
962
970 UPROPERTY(Category="Character Movement", EditAnywhere, BlueprintReadWrite)
971 uint8 bIgnoreClientMovementErrorChecksAndCorrection:1;
972
980 UPROPERTY(Category="Character Movement", EditAnywhere, BlueprintReadWrite)
981 uint8 bServerAcceptClientAuthoritativePosition : 1;
982
987 UPROPERTY(Category="Character Movement: Jumping / Falling", VisibleAnywhere, BlueprintReadWrite)
988 uint8 bNotifyApex:1;
989
991 UPROPERTY()
992 uint8 bCheatFlying:1;
993
995 UPROPERTY(Category="Character Movement (General Settings)", VisibleInstanceOnly, BlueprintReadOnly)
996 uint8 bWantsToCrouch:1;
997
1003 UPROPERTY(Category="Character Movement (General Settings)", VisibleInstanceOnly, BlueprintReadWrite, AdvancedDisplay)
1004 uint8 bCrouchMaintainsBaseLocation:1;
1005
1011 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite)
1012 uint8 bIgnoreBaseRotation:1;
1013
1018 UPROPERTY()
1019 uint8 bFastAttachedMove:1;
1020
1026 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
1027 uint8 bAlwaysCheckFloor:1;
1028
1033 UPROPERTY(Category="Character Movement: Walking", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
1034 uint8 bUseFlatBaseForFloorChecks:1;
1035
1037 UPROPERTY()
1038 uint8 bPerformingJumpOff:1;
1039
1041 UPROPERTY()
1042 uint8 bWantsToLeaveNavWalking:1;
1043
1045 UPROPERTY(Category="Character Movement: Avoidance", EditAnywhere, BlueprintReadOnly)
1046 uint8 bUseRVOAvoidance:1;
1047
1053 UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay)
1054 uint8 bRequestedMoveUseAcceleration:1;
1055
1057 uint8 bIsNavWalkingOnServer : 1;
1058
1061 uint8 bWasSimulatingRootMotion:1;
1062
1063 UPROPERTY(Category = "RootMotion", EditAnywhere, BlueprintReadWrite)
1064 uint8 bAllowPhysicsRotationDuringAnimRootMotion : 1;
1065
1072 UPROPERTY(Category = "RootMotion", EditAnywhere, BlueprintReadWrite)
1073 float FormerBaseVelocityDecayHalfLife = 0.f;
1074
1075protected:
1076
1077 // AI PATH FOLLOWING
1078
1081 uint8 bHasRequestedVelocity:1;
1082
1085 uint8 bRequestedMoveWithMaxSpeed:1;
1086
1089 uint8 bWasAvoidanceUpdated : 1;
1090
1092 uint8 bUseRVOPostProcess : 1;
1093
1095 uint8 bDeferUpdateBasedMovement : 1;
1096
1098 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadOnly)
1099 uint8 bProjectNavMeshWalking : 1 = false;
1100
1102 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadWrite)
1103 uint8 bSlideAlongNavMeshEdge : 1 = false;
1104
1106 UPROPERTY(Category = "Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadOnly, AdvancedDisplay)
1107 uint8 bProjectNavMeshOnBothWorldChannels : 1;
1108
1110 FVector AvoidanceLockVelocity;
1111
1113 float AvoidanceLockTimer;
1114
1115public:
1116
1118 virtual bool ShouldCorrectRotation() const { return false; }
1119
1120 UPROPERTY(Category="Character Movement: Avoidance", EditAnywhere, BlueprintReadOnly, meta=(ForceUnits=cm))
1121 float AvoidanceConsiderationRadius;
1122
1128 FVector RequestedVelocity;
1129
1135 FVector LastUpdateRequestedVelocity;
1136
1138 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(Keywords="Velocity RequestedVelocity"))
1139 ENGINE_API FVector GetLastUpdateRequestedVelocity() const;
1140
1142 UPROPERTY(Category="Character Movement: Avoidance", VisibleAnywhere, BlueprintReadOnly, AdvancedDisplay)
1143 int32 AvoidanceUID;
1144
1146 UPROPERTY(Category="Character Movement: Avoidance", EditAnywhere, BlueprintReadOnly, AdvancedDisplay)
1147 FNavAvoidanceMask AvoidanceGroup;
1148
1149 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(DeprecatedFunction, DeprecationMessage="Please use SetAvoidanceGroupMask function instead."))
1150 ENGINE_API void SetAvoidanceGroup(int32 GroupFlags);
1151
1152 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
1153 ENGINE_API void SetAvoidanceGroupMask(const FNavAvoidanceMask& GroupMask);
1154
1156 UPROPERTY(Category="Character Movement: Avoidance", EditAnywhere, BlueprintReadOnly, AdvancedDisplay)
1157 FNavAvoidanceMask GroupsToAvoid;
1158
1159 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta = (DeprecatedFunction, DeprecationMessage = "Please use SetGroupsToAvoidMask function instead."))
1160 ENGINE_API void SetGroupsToAvoid(int32 GroupFlags);
1161
1162 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
1163 ENGINE_API void SetGroupsToAvoidMask(const FNavAvoidanceMask& GroupMask);
1164
1166 UPROPERTY(Category="Character Movement: Avoidance", EditAnywhere, BlueprintReadOnly, AdvancedDisplay)
1167 FNavAvoidanceMask GroupsToIgnore;
1168
1169 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta = (DeprecatedFunction, DeprecationMessage = "Please use SetGroupsToIgnoreMask function instead."))
1170 ENGINE_API void SetGroupsToIgnore(int32 GroupFlags);
1171
1172 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
1173 ENGINE_API void SetGroupsToIgnoreMask(const FNavAvoidanceMask& GroupMask);
1174
1176 UPROPERTY(Category="Character Movement: Avoidance", EditAnywhere, BlueprintReadOnly)
1177 float AvoidanceWeight;
1178
1180 UPROPERTY()
1181 FVector PendingLaunchVelocity;
1182
1184 FNavLocation CachedNavLocation;
1185
1187 FHitResult CachedProjectedNavMeshHitResult;
1188
1190 FName LastServerMovementBaseBoneName = NAME_None;
1191
1193 bool bLastClientIsFalling = false;
1194
1196 bool bLastServerIsFalling = false;
1197
1199 bool bLastServerIsWalking = false;
1200
1202 bool bTeleportedSinceLastUpdate = false;
1203
1205 bool bCanTrustClientOnLanding = false;
1206
1208 float MaxServerClientErrorWhileFalling = 0.f;
1209
1211 FVector DecayingFormerBaseVelocity = FVector::ZeroVector;
1212
1214 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bProjectNavMeshWalking"))
1215 float NavMeshProjectionInterval;
1216
1218 float NavMeshProjectionTimer;
1219
1221 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bProjectNavMeshWalking", ClampMin="0", UIMin="0"))
1222 float NavMeshProjectionInterpSpeed;
1223
1228 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bProjectNavMeshWalking", ClampMin="0", UIMin="0"))
1229 float NavMeshProjectionHeightScaleUp;
1230
1235 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadWrite, meta=(editcondition = "bProjectNavMeshWalking", ClampMin="0", UIMin="0"))
1236 float NavMeshProjectionHeightScaleDown;
1237
1239 UPROPERTY(Category="Character Movement: NavMesh Movement", EditAnywhere, BlueprintReadWrite)
1240 float NavWalkingFloorDistTolerance;
1241
1243 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta = (UnsafeDuringActorConstruction = "true"))
1244 ENGINE_API void SetAvoidanceEnabled(bool bEnable);
1245
1247 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1248 ACharacter* GetCharacterOwner() const;
1249
1256 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1258
1267 ENGINE_API void SetGroundMovementMode(EMovementMode NewGroundMovementMode);
1268
1274 EMovementMode GetGroundMovementMode() const { return GroundMovementMode; }
1275
1276protected:
1277
1279 ENGINE_API virtual void OnMovementModeChanged(EMovementMode PreviousMovementMode, uint8 PreviousCustomMode);
1280
1281public:
1282
1283 ENGINE_API virtual uint8 PackNetworkMovementMode() const;
1285 ENGINE_API virtual void ApplyNetworkMovementMode(const uint8 ReceivedMode);
1286
1287 // Begin UObject Interface
1288 ENGINE_API virtual void Serialize(FArchive& Archive) override;
1289 static ENGINE_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
1290 // End UObject Interface
1291
1292 //Begin UActorComponent Interface
1293 ENGINE_API virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;
1294 ENGINE_API virtual void OnRegister() override;
1295 ENGINE_API virtual void BeginDestroy() override;
1296 ENGINE_API virtual void BeginPlay() override;
1297 ENGINE_API virtual void PostLoad() override;
1298 ENGINE_API virtual void Deactivate() override;
1299 ENGINE_API virtual void RegisterComponentTickFunctions(bool bRegister) override;
1300 ENGINE_API virtual void ApplyWorldOffset(const FVector& InOffset, bool bWorldShift) override;
1301 //End UActorComponent Interface
1302
1303 //BEGIN UMovementComponent Interface
1304 ENGINE_API virtual float GetMaxSpeed() const override;
1305 ENGINE_API virtual void StopActiveMovement() override;
1306 ENGINE_API virtual bool IsCrouching() const override;
1307 ENGINE_API virtual bool IsFalling() const override;
1308 ENGINE_API virtual bool IsMovingOnGround() const override;
1309 ENGINE_API virtual bool IsSwimming() const override;
1310 ENGINE_API virtual bool IsFlying() const override;
1311 ENGINE_API virtual float GetGravityZ() const override;
1312 ENGINE_API virtual void AddRadialForce(const FVector& Origin, float Radius, float Strength, enum ERadialImpulseFalloff Falloff) override;
1313 ENGINE_API virtual void AddRadialImpulse(const FVector& Origin, float Radius, float Strength, enum ERadialImpulseFalloff Falloff, bool bVelChange) override;
1314 //END UMovementComponent Interface
1315
1317 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1318 bool IsWalking() const;
1319
1324 bool IsMovementInProgress() const { return bMovementInProgress; }
1325
1326 //BEGIN UNavMovementComponent Interface
1327 ENGINE_API virtual FVector GetActorFeetLocation() const override;
1328 ENGINE_API virtual void RequestDirectMove(const FVector& MoveVelocity, bool bForceMaxSpeed) override;
1329 ENGINE_API virtual void RequestPathMove(const FVector& MoveInput) override;
1330 ENGINE_API virtual bool CanStartPathFollowing() const override;
1331 ENGINE_API virtual bool CanStopPathFollowing() const override;
1332 ENGINE_API virtual float GetPathFollowingBrakingDistance(float MaxSpeed) const override;
1333 //END UNaVMovementComponent Interface
1334
1335 //Begin UPawnMovementComponent Interface
1336 ENGINE_API virtual void NotifyBumpedPawn(APawn* BumpedPawn) override;
1337 //End UPawnMovementComponent Interface
1338
1339#if WITH_EDITOR
1340 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
1341#endif // WITH_EDITOR
1342
1344 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1345 ENGINE_API virtual void DisableMovement();
1346
1348 ENGINE_API virtual bool HasValidData() const;
1349
1356 ENGINE_API virtual void PerformAirControlForPathFollowing(FVector Direction, float ZDiff);
1357
1362 ENGINE_API virtual bool ShouldPerformAirControlForPathFollowing() const;
1363
1365 ENGINE_API virtual void StartFalling(int32 Iterations, float remainingTime, float timeTick, const FVector& Delta, const FVector& subLoc);
1366
1372 ENGINE_API virtual bool ShouldCatchAir(const FFindFloorResult& OldFloor, const FFindFloorResult& NewFloor);
1373
1377 ENGINE_API virtual void HandleWalkingOffLedge(const FVector& PreviousFloorImpactNormal, const FVector& PreviousFloorContactNormal, const FVector& PreviousLocation, float TimeDelta);
1378
1380 ENGINE_API virtual void AdjustFloorHeight();
1381
1383 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1384 ENGINE_API UPrimitiveComponent* GetMovementBase() const;
1385
1387 ENGINE_API virtual void MaybeUpdateBasedMovement(float DeltaSeconds);
1388
1390 ENGINE_API virtual void UpdateBasedMovement(float DeltaSeconds);
1391
1393 ENGINE_API virtual void UpdateBasedRotation(FRotator& FinalRotation, const FRotator& ReducedRotation);
1394
1396 ENGINE_API virtual void MaybeSaveBaseLocation();
1397
1399 ENGINE_API virtual void SaveBaseLocation();
1400
1402 ENGINE_API virtual void ApplyImpartedMovementBaseVelocity();
1403
1405 UPROPERTY(Category = "Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite)
1406 bool bBasedMovementIgnorePhysicsBase = false;
1407
1409 UPROPERTY(Category = "Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite)
1410 bool bBaseOnAttachmentRoot = false;
1411
1413 UPROPERTY(Category = "Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite)
1414 bool bStayBasedInAir = false;
1415
1417 UPROPERTY(Category = "Character Movement: Jumping / Falling", EditAnywhere, BlueprintReadWrite, meta = (editcondition = "bStayBasedInAir"))
1418 float StayBasedInAirHeight = 1000.0f;
1419
1420
1422 ENGINE_API virtual void StartNewPhysics(float deltaTime, int32 Iterations);
1423
1427 UE_DEPRECATED_FORGAME(5.5, "This function has been deprecated. Please call DoJump(bool bReplayingMoves, float DeltaTime)")
1428 ENGINE_API virtual bool DoJump(bool bReplayingMoves);
1429
1437 ENGINE_API virtual bool DoJump(bool bReplayingMoves, float DeltaTime);
1438
1442 ENGINE_API virtual bool CanAttemptJump() const;
1443
1446
1448 ENGINE_API virtual bool HandlePendingLaunch();
1449
1454 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1455 ENGINE_API virtual FVector GetImpartedMovementBaseVelocity() const;
1456
1459
1461 ENGINE_API virtual FVector GetBestDirectionOffActor(AActor* BaseActor) const; // Calculates the best direction to go to "jump off" an actor.
1462
1468 ENGINE_API virtual bool ShouldJumpOutOfWater(FVector& JumpDir);
1469
1471 ENGINE_API virtual void JumpOutOfWater(FVector WallNormal);
1472
1474 ENGINE_API virtual FRotator GetDeltaRotation(float DeltaTime) const;
1475
1486 ENGINE_API virtual FRotator ComputeOrientToMovementRotation(const FRotator& CurrentRotation, float DeltaTime, FRotator& DeltaRotation) const;
1487
1502 ENGINE_API virtual bool ApplyRequestedMove(float DeltaTime, float MaxAccel, float MaxSpeed, float Friction, float BrakingDeceleration, FVector& OutAcceleration, float& OutRequestedSpeed);
1503
1505 ENGINE_API virtual void NotifyJumpApex();
1506
1510 ENGINE_API virtual FVector NewFallVelocity(const FVector& InitialVelocity, const FVector& Gravity, float DeltaTime) const;
1511
1512 /* Determine how deep in water the character is immersed.
1513 * @return float in range 0.0 = not in water, 1.0 = fully immersed
1514 */
1515 ENGINE_API virtual float ImmersionDepth() const;
1516
1526 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1527 ENGINE_API virtual void CalcVelocity(float DeltaTime, float Friction, bool bFluid, float BrakingDeceleration);
1528
1533 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1534 ENGINE_API virtual float GetMaxJumpHeight() const;
1535
1540 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1541 ENGINE_API virtual float GetMaxJumpHeightWithJumpTime() const;
1542
1544 UFUNCTION(BlueprintCallable, Category = "Pawn|Components|CharacterMovement")
1545 ENGINE_API virtual float GetMinAnalogSpeed() const;
1546
1548 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1549 ENGINE_API virtual float GetMaxAcceleration() const;
1550
1552 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1553 ENGINE_API virtual float GetMaxBrakingDeceleration() const;
1554
1556 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(Keywords="Acceleration GetAcceleration"))
1557 ENGINE_API FVector GetCurrentAcceleration() const;
1558
1560 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1561 ENGINE_API float GetAnalogInputModifier() const;
1562
1564 ENGINE_API virtual bool CanStepUp(const FHitResult& Hit) const;
1565
1575 ENGINE_API virtual bool StepUp(const FVector& GravDir, const FVector& Delta, const FHitResult &Hit, FStepDownResult* OutStepDownResult = NULL);
1576
1578 ENGINE_API virtual void SetBase(UPrimitiveComponent* NewBase, const FName BoneName = NAME_None, bool bNotifyActor=true);
1579
1583 ENGINE_API void SetBaseFromFloor(const FFindFloorResult& FloorResult);
1584
1589 ENGINE_API virtual void ApplyDownwardForce(float DeltaSeconds);
1590
1592 ENGINE_API virtual void ApplyRepulsionForce(float DeltaSeconds);
1593
1595 ENGINE_API virtual void ApplyAccumulatedForces(float DeltaSeconds);
1596
1598 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1599 ENGINE_API virtual void ClearAccumulatedForces();
1600
1602 ENGINE_API virtual void UpdateCharacterStateBeforeMovement(float DeltaSeconds);
1603
1605 ENGINE_API virtual void UpdateCharacterStateAfterMovement(float DeltaSeconds);
1606
1608 virtual void UpdateVelocityBeforeMovement(float DeltaSeconds) {}
1609
1618 ENGINE_API virtual void StartSwimming(FVector OldLocation, FVector OldVelocity, float timeTick, float remainingTime, int32 Iterations);
1619
1620 /* Swimming uses gravity - but scaled by (1.f - buoyancy) */
1621 ENGINE_API float Swim(FVector Delta, FHitResult& Hit);
1622
1624 ENGINE_API FVector FindWaterLine(FVector Start, FVector End);
1625
1627 ENGINE_API virtual void PhysFalling(float deltaTime, int32 Iterations);
1628
1629 // Helpers for PhysFalling
1630
1640 ENGINE_API virtual FVector GetFallingLateralAcceleration(float DeltaTime);
1641
1648 ENGINE_API virtual bool ShouldLimitAirControl(float DeltaTime, const FVector& FallAcceleration) const;
1649
1661 ENGINE_API virtual FVector GetAirControl(float DeltaTime, float TickAirControl, const FVector& FallAcceleration);
1662
1663 // Gravity Direction
1664
1674 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1675 ENGINE_API virtual void SetGravityDirection(const FVector& GravityDir);
1676
1678 UFUNCTION(BlueprintPure, Category="Pawn|Components|CharacterMovement")
1679 bool HasCustomGravity() const { return bHasCustomGravity; }
1680
1682 UFUNCTION(BlueprintPure, Category="Pawn|Components|CharacterMovement")
1683 FVector GetGravityDirection() const { return GravityDirection; }
1684
1686 FQuat GetWorldToGravityTransform() const { return WorldToGravityTransform; }
1687
1689 FQuat GetGravityToWorldTransform() const { return GravityToWorldTransform; }
1690
1692 FVector RotateGravityToWorld(const FVector& World) const { return WorldToGravityTransform.RotateVector(World); }
1693
1695 FVector RotateWorldToGravity(const FVector& Gravity) const { return GravityToWorldTransform.RotateVector(Gravity); }
1696
1698 FVector ProjectToGravityFloor(const FVector& Vector) const { return FVector::VectorPlaneProject(Vector, GetGravityDirection()); }
1699
1701 FVector::FReal GetGravitySpaceZ(const FVector& Vector) const { return Vector.Dot(-GetGravityDirection()); }
1702
1704 FVector GetGravitySpaceComponentZ(const FVector& Vector) const { return Vector.Dot(GetGravityDirection()) * GetGravityDirection(); }
1705
1707 void SetGravitySpaceZ(FVector& Vector, const FVector::FReal Z) const { Vector = ProjectToGravityFloor(Vector) - Z * GetGravityDirection(); }
1708
1709protected:
1710
1721 ENGINE_API virtual float BoostAirControl(float DeltaTime, float TickAirControl, const FVector& FallAcceleration);
1722
1734 ENGINE_API virtual FVector LimitAirControl(float DeltaTime, const FVector& FallAcceleration, const FHitResult& HitResult, bool bCheckForValidLandingSpot);
1735
1736
1738 ENGINE_API virtual void ProcessLanded(const FHitResult& Hit, float remainingTime, int32 Iterations);
1739
1741 ENGINE_API virtual void SetPostLandedPhysics(const FHitResult& Hit);
1742
1746 ENGINE_API virtual void ControlledCharacterMove(const FVector& InputVector, float DeltaSeconds);
1747
1749 ENGINE_API virtual void SetNavWalkingPhysics(bool bEnable);
1750
1752 ENGINE_API const class INavigationDataInterface* GetNavData() const;
1753
1760 ENGINE_API virtual bool TryToLeaveNavWalking();
1761
1767 ENGINE_API virtual FVector ProjectLocationFromNavMesh(float DeltaSeconds, const FVector& CurrentFeetLocation, const FVector& TargetNavLocation, float UpOffset, float DownOffset);
1768
1770 ENGINE_API virtual void FindBestNavMeshLocation(const FVector& TraceStart, const FVector& TraceEnd, const FVector& CurrentFeetLocation, const FVector& TargetNavLocation, FHitResult& OutHitResult) const;
1771
1776 ENGINE_API virtual bool ShouldComputeAccelerationToReachRequestedVelocity(const float RequestedSpeed) const;
1777public:
1778
1780 ENGINE_API virtual void OnTeleported() override;
1781
1787 ENGINE_API virtual void Crouch(bool bClientSimulation = false);
1788
1793 ENGINE_API virtual void UnCrouch(bool bClientSimulation = false);
1794
1796 ENGINE_API virtual bool CanCrouchInCurrentState() const;
1797
1799 UFUNCTION(BlueprintSetter)
1800 ENGINE_API void SetCrouchedHalfHeight(const float NewValue);
1801
1803 UFUNCTION(BlueprintGetter)
1804 ENGINE_API float GetCrouchedHalfHeight() const;
1805
1807 ENGINE_API virtual bool CheckLedgeDirection(const FVector& OldLocation, const FVector& SideStep, const FFindFloorResult& OldFloor) const;
1808
1813 ENGINE_API virtual FVector GetLedgeMove(const FVector& OldLocation, const FVector& Delta, const FFindFloorResult& OldFloor) const;
1814
1816 ENGINE_API virtual bool CheckFall(const FFindFloorResult& OldFloor, const FHitResult& Hit, const FVector& Delta, const FVector& OldLocation, float remainingTime, float timeTick, int32 Iterations, bool bMustJump);
1817
1822 ENGINE_API void RevertMove(const FVector& OldLocation, UPrimitiveComponent* OldBase, const FVector& InOldBaseLocation, const FFindFloorResult& OldFloor, bool bFailMove);
1823
1825 ENGINE_API virtual void PhysicsRotation(float DeltaTime);
1826
1828 ENGINE_API virtual bool ShouldRemainVertical() const;
1829
1831 ENGINE_API virtual void PhysicsVolumeChanged(class APhysicsVolume* NewVolume) override;
1832
1834 ENGINE_API virtual void SetDefaultMovementMode();
1835
1843 ENGINE_API virtual void MoveSmooth(const FVector& InVelocity, const float DeltaSeconds, FStepDownResult* OutStepDownResult = NULL );
1844
1850 ENGINE_API virtual void UpdateProxyAcceleration();
1851
1852 ENGINE_API virtual void SetUpdatedComponent(USceneComponent* NewUpdatedComponent) override;
1853
1855 ENGINE_API virtual FString GetMovementName() const;
1856
1867 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1868 ENGINE_API virtual void AddImpulse( FVector Impulse, bool bVelocityChange = false );
1869
1880 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1882
1891 ENGINE_API virtual void DisplayDebug(class UCanvas* Canvas, const FDebugDisplayInfo& DebugDisplay, float& YL, float& YPos);
1892
1896 ENGINE_API virtual float VisualizeMovement() const;
1897
1899 ENGINE_API virtual bool CheckWaterJump(FVector CheckPoint, FVector& WallNormal);
1900
1902 ENGINE_API virtual bool CanWalkOffLedges() const;
1903
1905 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1906 ENGINE_API float GetPerchRadiusThreshold() const;
1907
1912 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1913 ENGINE_API float GetValidPerchRadius() const;
1914
1916 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1917 ENGINE_API virtual bool IsWalkable(const FHitResult& Hit) const;
1918
1920 inline float GetWalkableFloorAngle() const { return WalkableFloorAngle; }
1921
1923 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(DisplayName = "GetWalkableFloorAngle", ScriptName = "GetWalkableFloorAngle"))
1924 ENGINE_API float K2_GetWalkableFloorAngle() const;
1925
1927 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1928 ENGINE_API void SetWalkableFloorAngle(float InWalkableFloorAngle);
1929
1931 inline float GetWalkableFloorZ() const { return WalkableFloorZ; }
1932
1934 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(DisplayName = "GetWalkableFloorZ", ScriptName = "GetWalkableFloorZ"))
1935 ENGINE_API float K2_GetWalkableFloorZ() const;
1936
1938 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement")
1939 ENGINE_API void SetWalkableFloorZ(float InWalkableFloorZ);
1940
1943
1945 ENGINE_API virtual void PrePhysicsTickComponent(float DeltaTime, FCharacterMovementComponentPrePhysicsTickFunction& ThisTickFunction);
1946
1948 UPROPERTY()
1950
1952 ENGINE_API virtual void PostPhysicsTickComponent(float DeltaTime, FCharacterMovementComponentPostPhysicsTickFunction& ThisTickFunction);
1953
1954protected:
1956 ENGINE_API virtual void PhysWalking(float deltaTime, int32 Iterations);
1957
1959 ENGINE_API virtual void PhysNavWalking(float deltaTime, int32 Iterations);
1960
1962 ENGINE_API virtual void PhysFlying(float deltaTime, int32 Iterations);
1963
1965 ENGINE_API virtual void PhysSwimming(float deltaTime, int32 Iterations);
1966
1968 ENGINE_API virtual void PhysCustom(float deltaTime, int32 Iterations);
1969
1970 /* Allow custom handling when character hits a wall while swimming. */
1971 ENGINE_API virtual void HandleSwimmingWallHit(const FHitResult& Hit, float DeltaTime);
1972
1983 ENGINE_API virtual FVector ComputeGroundMovementDelta(const FVector& Delta, const FHitResult& RampHit, const bool bHitFromLineTrace) const;
1984
1993 ENGINE_API virtual void MoveAlongFloor(const FVector& InVelocity, float DeltaSeconds, FStepDownResult* OutStepDownResult = NULL);
1994
1996 ENGINE_API virtual void OnCharacterStuckInGeometry(const FHitResult* Hit);
1997
2002 ENGINE_API virtual void MaintainHorizontalGroundVelocity();
2003
2005 ENGINE_API virtual FVector GetPenetrationAdjustment(const FHitResult& Hit) const override;
2006
2008 ENGINE_API virtual bool ResolvePenetrationImpl(const FVector& Adjustment, const FHitResult& Hit, const FQuat& NewRotation) override;
2009
2011 ENGINE_API virtual void HandleImpact(const FHitResult& Hit, float TimeSlice=0.f, const FVector& MoveDelta = FVector::ZeroVector) override;
2012
2019 ENGINE_API virtual void ApplyImpactPhysicsForces(const FHitResult& Impact, const FVector& ImpactAcceleration, const FVector& ImpactVelocity);
2020
2022 ENGINE_API virtual float SlideAlongSurface(const FVector& Delta, float Time, const FVector& Normal, FHitResult& Hit, bool bHandleImpact) override;
2023
2025 ENGINE_API virtual void TwoWallAdjust(FVector& WorldSpaceDelta, const FHitResult& Hit, const FVector& OldHitNormal) const override;
2026
2037 ENGINE_API virtual FVector ComputeSlideVector(const FVector& Delta, const float Time, const FVector& Normal, const FHitResult& Hit) const override;
2038
2048 ENGINE_API virtual FVector HandleSlopeBoosting(const FVector& SlideResult, const FVector& Delta, const float Time, const FVector& Normal, const FHitResult& Hit) const;
2049
2051 ENGINE_API virtual void ApplyVelocityBraking(float DeltaTime, float Friction, float BrakingDeceleration);
2052
2053
2054public:
2055
2060 ENGINE_API virtual bool IsWithinEdgeTolerance(const FVector& CapsuleLocation, const FVector& TestImpactPoint, const float CapsuleRadius) const;
2061
2072
2080 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(DisplayName="FindFloor", ScriptName="FindFloor"))
2081 ENGINE_API virtual void K2_FindFloor(FVector CapsuleLocation, FFindFloorResult& FloorResult) const;
2082
2097
2109 UFUNCTION(BlueprintCallable, Category="Pawn|Components|CharacterMovement", meta=(DisplayName="ComputeFloorDistance", ScriptName="ComputeFloorDistance"))
2110 ENGINE_API virtual void K2_ComputeFloorDist(FVector CapsuleLocation, float LineDistance, float SweepDistance, float SweepRadius, FFindFloorResult& FloorResult) const;
2111
2125 ENGINE_API virtual bool FloorSweepTest(
2127 const FVector& Start,
2128 const FVector& End,
2129 ECollisionChannel TraceChannel,
2130 const struct FCollisionShape& CollisionShape,
2131 const struct FCollisionQueryParams& Params,
2132 const struct FCollisionResponseParams& ResponseParam
2133 ) const;
2134
2136 ENGINE_API virtual bool IsValidLandingSpot(const FVector& CapsuleLocation, const FHitResult& Hit) const;
2137
2142 ENGINE_API virtual bool ShouldCheckForValidLandingSpot(float DeltaTime, const FVector& Delta, const FHitResult& Hit) const;
2143
2151 ENGINE_API virtual bool ShouldComputePerchResult(const FHitResult& InHit, bool bCheckRadius = true) const;
2152
2165 ENGINE_API virtual bool ComputePerchResult(const float TestRadius, const FHitResult& InHit, const float InMaxFloorDist, FFindFloorResult& OutPerchFloorResult) const;
2166
2167
2168protected:
2169
2171 UFUNCTION()
2172 ENGINE_API virtual void CapsuleTouched(UPrimitiveComponent* OverlappedComp, AActor* Other, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
2173
2174
2180 ENGINE_API FVector GetPawnCapsuleExtent(const EShrinkCapsuleExtent ShrinkMode, const float CustomShrinkAmount = 0.f) const;
2181
2187 ENGINE_API FCollisionShape GetPawnCapsuleCollisionShape(const EShrinkCapsuleExtent ShrinkMode, const float CustomShrinkAmount = 0.f) const;
2188
2192 ENGINE_API virtual void AdjustProxyCapsuleSize();
2193
2195 ENGINE_API virtual FVector ConstrainInputAcceleration(const FVector& InputAcceleration) const;
2196
2198 ENGINE_API virtual FVector ScaleInputAcceleration(const FVector& InputAcceleration) const;
2199
2204 ENGINE_API virtual void OnMovementUpdated(float DeltaSeconds, const FVector& OldLocation, const FVector& OldVelocity);
2205
2207 ENGINE_API virtual void CallMovementUpdateDelegate(float DeltaSeconds, const FVector& OldLocation, const FVector& OldVelocity);
2208
2216 ENGINE_API virtual void OnUnableToFollowBaseMove(const FVector& DeltaPosition, const FVector& OldLocation, const FHitResult& MoveOnBaseHit);
2217
2218
2219protected:
2220 /* Prepare root motion to be passed on to physics thread */
2221 ENGINE_API virtual void AccumulateRootMotionForAsync(float DeltaSeconds, FRootMotionAsyncData& RootMotion);
2222 /* Prepare inputs for asynchronous simulation on physics thread */
2223 ENGINE_API virtual void FillAsyncInput(const FVector& InputVector, FCharacterMovementComponentAsyncInput& AsyncInput);
2224 ENGINE_API virtual void BuildAsyncInput();
2225 ENGINE_API virtual void PostBuildAsyncInput();
2226 /* Apply outputs from async sim. */
2228 ENGINE_API virtual void ProcessAsyncOutput();
2229
2230 /* Register async callback with physics system. */
2231 ENGINE_API virtual void RegisterAsyncCallback();
2232 ENGINE_API virtual bool IsAsyncCallbackRegistered() const;
2233
2234public:
2235
2242 ENGINE_API virtual bool FindNavFloor(const FVector& TestLocation, FNavLocation& NavFloorLocation) const;
2243
2244protected:
2245
2246 // Movement functions broken out based on owner's network Role.
2247 // TickComponent calls the correct version based on the Role.
2248 // These may be called during move playback and correction during network updates.
2249 //
2250
2252 ENGINE_API virtual void PerformMovement(float DeltaTime);
2253
2255 ENGINE_API virtual void SimulatedTick(float DeltaSeconds);
2256
2258 ENGINE_API virtual void SimulateMovement(float DeltaTime);
2259
2264 virtual void ServerAutonomousProxyTick(float DeltaSeconds) { }
2265
2266public:
2267
2269 ENGINE_API virtual void ForceReplicationUpdate();
2270
2272 ENGINE_API void ForceClientAdjustment();
2273
2279 ENGINE_API virtual float GetNetworkSafeRandomAngleDegrees() const;
2280
2282 ENGINE_API virtual FVector RoundAcceleration(FVector InAccel) const;
2283
2284 //--------------------------------
2285 // INetworkPredictionInterface implementation
2286
2287 //--------------------------------
2288 // Server hook
2289 //--------------------------------
2290 ENGINE_API virtual void SendClientAdjustment() override;
2291 ENGINE_API virtual bool ForcePositionUpdate(float DeltaTime) override;
2292
2293 //--------------------------------
2294 // Client hook
2295 //--------------------------------
2296
2301 ENGINE_API virtual void SmoothCorrection(const FVector& OldLocation, const FQuat& OldRotation, const FVector& NewLocation, const FQuat& NewRotation) override;
2302
2304 ENGINE_API virtual class FNetworkPredictionData_Client* GetPredictionData_Client() const override;
2306 ENGINE_API virtual class FNetworkPredictionData_Server* GetPredictionData_Server() const override;
2307
2308 ENGINE_API class FNetworkPredictionData_Client_Character* GetPredictionData_Client_Character() const;
2309 ENGINE_API class FNetworkPredictionData_Server_Character* GetPredictionData_Server_Character() const;
2310
2311 ENGINE_API virtual bool HasPredictionData_Client() const override;
2312 ENGINE_API virtual bool HasPredictionData_Server() const override;
2313
2314 ENGINE_API virtual void ResetPredictionData_Client() override;
2315 ENGINE_API virtual void ResetPredictionData_Server() override;
2316
2317 static uint32 PackYawAndPitchTo32(const float Yaw, const float Pitch);
2318
2319protected:
2322
2324
2331 ENGINE_API virtual void SmoothClientPosition(float DeltaSeconds);
2332
2337 ENGINE_API void SmoothClientPosition_Interpolate(float DeltaSeconds);
2338
2340 ENGINE_API void SmoothClientPosition_UpdateVisuals();
2341
2342 /*
2343 ========================================================================
2344 Here's how player movement prediction, replication and correction works in network games:
2345
2346 Every tick, the TickComponent() function is called. It figures out the acceleration and rotation change for the frame,
2347 and then calls PerformMovement() (for locally controlled Characters), or ReplicateMoveToServer() (if it's a network client).
2348
2349 ReplicateMoveToServer() saves the move (in the PendingMove list), calls PerformMovement(), and then replicates the move
2350 to the server by calling the replicated function ServerMove() - passing the movement parameters, the client's
2351 resultant position, and a timestamp.
2352
2353 ServerMove() is executed on the server. It decodes the movement parameters and causes the appropriate movement
2354 to occur. It then looks at the resulting position and if enough time has passed since the last response, or the
2355 position error is significant enough, the server calls ClientAdjustPosition(), a replicated function.
2356
2357 ClientAdjustPosition() is executed on the client. The client sets its position to the servers version of position,
2358 and sets the bUpdatePosition flag to true.
2359
2360 When TickComponent() is called on the client again, if bUpdatePosition is true, the client will call
2361 ClientUpdatePosition() before calling PerformMovement(). ClientUpdatePosition() replays all the moves in the pending
2362 move list which occurred after the timestamp of the move the server was adjusting.
2363 */
2364
2366 ENGINE_API virtual void ReplicateMoveToServer(float DeltaTime, const FVector& NewAcceleration);
2367
2369 ENGINE_API virtual bool ClientUpdatePositionAfterServerUpdate();
2370
2372 DEPRECATED_CHARACTER_MOVEMENT_RPC(CallServerMove, CallServerMovePacked)
2373 ENGINE_API virtual void CallServerMove(const FSavedMove_Character* NewMove, const FSavedMove_Character* OldMove);
2374
2379 ENGINE_API virtual void CallServerMovePacked(const FSavedMove_Character* NewMove, const FSavedMove_Character* PendingMove, const FSavedMove_Character* OldMove);
2380
2387 ENGINE_API virtual void ServerMoveHandleClientError(float ClientTimeStamp, float DeltaTime, const FVector& Accel, const FVector& RelativeClientLocation, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode);
2388
2393 ENGINE_API virtual bool ServerCheckClientError(float ClientTimeStamp, float DeltaTime, const FVector& Accel, const FVector& ClientWorldLocation, const FVector& RelativeClientLocation, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode);
2394
2398 ENGINE_API virtual bool ServerExceedsAllowablePositionError(float ClientTimeStamp, float DeltaTime, const FVector& Accel, const FVector& ClientWorldLocation, const FVector& RelativeClientLocation, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode);
2399
2403 ENGINE_API virtual bool ServerShouldUseAuthoritativePosition(float ClientTimeStamp, float DeltaTime, const FVector& Accel, const FVector& ClientWorldLocation, const FVector& RelativeClientLocation, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode);
2404
2405 /* Process a move at the given time stamp, given the compressed flags representing various events that occurred (ie jump). */
2406 ENGINE_API virtual void MoveAutonomous( float ClientTimeStamp, float DeltaTime, uint8 CompressedFlags, const FVector& NewAccel);
2407
2409 ENGINE_API virtual void UpdateFromCompressedFlags(uint8 Flags);
2410
2412 ENGINE_API virtual bool CanDelaySendingMove(const FSavedMovePtr& NewMove);
2413
2415 ENGINE_API virtual float GetClientNetSendDeltaTime(const APlayerController* PC, const FNetworkPredictionData_Client_Character* ClientData, const FSavedMovePtr& NewMove) const;
2416
2418 ENGINE_API virtual void TickCharacterPose(float DeltaTime);
2419
2421 ENGINE_API virtual bool ShouldCancelAdaptiveReplication() const;
2422
2423public:
2424
2426 ENGINE_API virtual void UpdateFloorFromAdjustment();
2427
2433 UPROPERTY()
2434 float MinTimeBetweenTimeStampResets;
2435
2440 ENGINE_API virtual bool VerifyClientTimeStamp(float TimeStamp, FNetworkPredictionData_Server_Character & ServerData);
2441
2442protected:
2443
2445 float LastTimeStampResetServerTime;
2446
2449 ENGINE_API bool IsClientTimeStampValid(float TimeStamp, const FNetworkPredictionData_Server_Character& ServerData, bool& bTimeStampResetDetected) const;
2450
2452 ENGINE_API virtual void OnClientTimeStampResetDetected();
2453
2458 ENGINE_API virtual void ProcessClientTimeStampForTimeDiscrepancy(float ClientTimeStamp, FNetworkPredictionData_Server_Character& ServerData);
2459
2478 ENGINE_API virtual void OnTimeDiscrepancyDetected(float CurrentTimeDiscrepancy, float LifetimeRawTimeDiscrepancy, float Lifetime, float CurrentMoveError);
2479
2480public:
2481
2497 ENGINE_API void ServerMovePacked_ClientSend(const FCharacterServerMovePackedBits& PackedBits);
2498
2503 ENGINE_API void ServerMovePacked_ServerReceive(const FCharacterServerMovePackedBits& PackedBits);
2504
2509 ENGINE_API virtual bool ShouldUsePackedMovementRPCs() const;
2510
2511 /* Sends a move response from the server to the client (through character to avoid component RPC overhead), eventually calling MoveResponsePacked_ClientReceive() on the client. */
2512 ENGINE_API void MoveResponsePacked_ServerSend(const FCharacterMoveResponsePackedBits& PackedBits);
2513
2514 /* On the client, receives a packed move response from the server, unpacks it by serializing into the MoveResponseContainer from GetMoveResponseDataContainer(), and passes the data container to ClientHandleMoveResponse(). */
2515 ENGINE_API void MoveResponsePacked_ClientReceive(const FCharacterMoveResponsePackedBits& PackedBits);
2516
2517 /* If no client adjustment is needed after processing received ServerMove(), ack the good move so client can remove it from SavedMoves */
2518 ENGINE_API virtual void ClientAckGoodMove_Implementation(float TimeStamp);
2519
2520 /* Replicate position correction to client, associated with a timestamped servermove. Client will replay subsequent moves after applying adjustment. */
2521 ENGINE_API virtual void ClientAdjustPosition_Implementation(float TimeStamp, FVector NewLoc, FVector NewVel, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode, TOptional<FRotator> OptionalRotation = TOptional<FRotator>());
2522
2523 /* Bandwidth saving version, when velocity is zeroed */
2524 ENGINE_API virtual void ClientVeryShortAdjustPosition_Implementation(float TimeStamp, FVector NewLoc, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2525
2526 /* Replicate position correction to client when using root motion for movement. (animation root motion specific) */
2527 ENGINE_API virtual void ClientAdjustRootMotionPosition_Implementation(float TimeStamp, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent* ServerBase, FName ServerBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2528
2529 /* Replicate root motion source correction to client when using root motion for movement. */
2530 ENGINE_API virtual void ClientAdjustRootMotionSourcePosition_Implementation(float TimeStamp, FRootMotionSourceGroup ServerRootMotion, bool bHasAnimRootMotion, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent* ServerBase, FName ServerBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2531
2536 ENGINE_API virtual void ServerMove_HandleMoveData(const FCharacterNetworkMoveDataContainer& MoveDataContainer);
2537
2543 ENGINE_API virtual void ServerMove_PerformMovement(const FCharacterNetworkMoveData& MoveData);
2544
2549 ENGINE_API void ServerSendMoveResponse(const FClientAdjustment& PendingAdjustment);
2550
2557 ENGINE_API virtual void ClientHandleMoveResponse(const FCharacterMoveResponseDataContainer& MoveResponse);
2558
2559
2560public:
2561
2563 // BEGIN DEPRECATED movement RPCs. Use the Packed versions above instead.
2565
2570 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMove, ServerMovePacked_ClientSend)
2572 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMove_Implementation, ServerMove_PerformMovement)
2573 ENGINE_API virtual void ServerMove_Implementation(float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 CompressedMoveFlags, uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode);
2574 ENGINE_API virtual bool ServerMove_Validate(float TimeStamp, FVector_NetQuantize10 InAccel, FVector_NetQuantize100 ClientLoc, uint8 CompressedMoveFlags, uint8 ClientRoll, uint32 View, UPrimitiveComponent* ClientMovementBase, FName ClientBaseBoneName, uint8 ClientMovementMode);
2575
2580 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMoveDual, ServerMovePacked_ClientSend)
2582 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMoveDual_Implementation, ServerMove_PerformMovement)
2585
2587 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMoveDualHybridRootMotion, ServerMovePacked_ClientSend)
2589 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMoveDualHybridRootMotion_Implementation, ServerMove_PerformMovement)
2592
2593 /* Resending an (important) old move. Process it if not already processed. */
2594 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMoveOld, ServerMovePacked_ClientSend)
2596 DEPRECATED_CHARACTER_MOVEMENT_RPC(ServerMoveOld_Implementation, ServerMove_PerformMovement)
2597 ENGINE_API virtual void ServerMoveOld_Implementation(float OldTimeStamp, FVector_NetQuantize10 OldAccel, uint8 OldMoveFlags);
2598 ENGINE_API virtual bool ServerMoveOld_Validate(float OldTimeStamp, FVector_NetQuantize10 OldAccel, uint8 OldMoveFlags);
2599
2601 DEPRECATED_CHARACTER_MOVEMENT_RPC(ClientAckGoodMove, ClientHandleMoveResponse)
2602 ENGINE_API virtual void ClientAckGoodMove(float TimeStamp);
2603
2605 DEPRECATED_CHARACTER_MOVEMENT_RPC(ClientAdjustPosition, ClientHandleMoveResponse)
2606 ENGINE_API virtual void ClientAdjustPosition(float TimeStamp, FVector NewLoc, FVector NewVel, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2607
2608 /* Bandwidth saving version, when velocity is zeroed */
2609 DEPRECATED_CHARACTER_MOVEMENT_RPC(ClientVeryShortAdjustPosition, ClientHandleMoveResponse)
2610 ENGINE_API virtual void ClientVeryShortAdjustPosition(float TimeStamp, FVector NewLoc, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2611
2613 DEPRECATED_CHARACTER_MOVEMENT_RPC(ClientAdjustRootMotionPosition, ClientHandleMoveResponse)
2614 ENGINE_API virtual void ClientAdjustRootMotionPosition(float TimeStamp, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent* ServerBase, FName ServerBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2615
2617 DEPRECATED_CHARACTER_MOVEMENT_RPC(ClientAdjustRootMotionSourcePosition, ClientHandleMoveResponse)
2618 ENGINE_API virtual void ClientAdjustRootMotionSourcePosition(float TimeStamp, FRootMotionSourceGroup ServerRootMotion, bool bHasAnimRootMotion, float ServerMontageTrackPosition, FVector ServerLoc, FVector_NetQuantizeNormal ServerRotation, float ServerVelZ, UPrimitiveComponent* ServerBase, FName ServerBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode);
2619
2621 // END DEPRECATED movement RPCs
2623
2624protected:
2625
2627 ENGINE_API virtual void OnClientCorrectionReceived(class FNetworkPredictionData_Client_Character& ClientData, float TimeStamp, FVector NewLocation, FVector NewVelocity, UPrimitiveComponent* NewBase, FName NewBaseBoneName, bool bHasBase, bool bBaseRelativePosition, uint8 ServerMovementMode, FVector ServerGravityDirection);
2628
2634 void SetNetworkMoveDataContainer(FCharacterNetworkMoveDataContainer& PersistentDataStorage) { NetworkMoveDataContainerPtr = &PersistentDataStorage; }
2635
2640 FCharacterNetworkMoveDataContainer& GetNetworkMoveDataContainer() const { return *NetworkMoveDataContainerPtr; }
2641
2647 FCharacterNetworkMoveData* GetCurrentNetworkMoveData() const { return CurrentNetworkMoveData; }
2648
2653 void SetCurrentNetworkMoveData(FCharacterNetworkMoveData* CurrentData) { CurrentNetworkMoveData = CurrentData; }
2654
2661
2666 FCharacterMoveResponseDataContainer& GetMoveResponseDataContainer() const { return *MoveResponseDataContainerPtr; }
2667
2673
2674public:
2675
2680 const FSavedMove_Character* GetCurrentReplayedSavedMove() const { return CurrentReplayedSavedMove; }
2681
2682private:
2683
2685 FSavedMove_Character* CurrentReplayedSavedMove = nullptr;
2686
2688 // Server move data
2689
2691 FCharacterNetworkMoveDataContainer DefaultNetworkMoveDataContainer;
2692
2694 FCharacterNetworkMoveDataContainer* NetworkMoveDataContainerPtr;
2695
2697 FNetBitWriter ServerMoveBitWriter;
2698
2700 FNetBitReader ServerMoveBitReader;
2701
2703 FCharacterNetworkMoveData* CurrentNetworkMoveData;
2704
2706 // Server response data
2707
2709 FCharacterMoveResponseDataContainer DefaultMoveResponseDataContainer;
2710
2712 FCharacterMoveResponseDataContainer* MoveResponseDataContainerPtr;
2713
2715 FNetBitWriter MoveResponseBitWriter;
2716
2718 FNetBitReader MoveResponseBitReader;
2719
2720public:
2721
2723 // Root Motion
2724
2727 FRootMotionSourceGroup CurrentRootMotion;
2728
2730 FRootMotionSourceGroup ServerCorrectionRootMotion;
2731
2732 FRootMotionAsyncData AsyncRootMotion;
2733
2735 ENGINE_API bool HasRootMotionSources() const;
2736
2739 ENGINE_API uint16 ApplyRootMotionSource(TSharedPtr<FRootMotionSource> SourcePtr);
2740
2742 ENGINE_API virtual void OnRootMotionSourceBeingApplied(const FRootMotionSource* Source);
2743
2745 ENGINE_API TSharedPtr<FRootMotionSource> GetRootMotionSource(FName InstanceName);
2746
2749
2751 ENGINE_API void RemoveRootMotionSource(FName InstanceName);
2752
2754 ENGINE_API void RemoveRootMotionSourceByID(uint16 RootMotionSourceID);
2755
2757 ENGINE_API void ConvertRootMotionServerIDsToLocalIDs(const FRootMotionSourceGroup& LocalRootMotionToMatchWith, FRootMotionSourceGroup& InOutServerRootMotion, float TimeStamp);
2758
2760 enum class ERootMotionMapping : uint32 { MapSize = 16 };
2761 TArray<FRootMotionServerToLocalIDMapping, TInlineAllocator<(uint32)ERootMotionMapping::MapSize> > RootMotionIDMappings;
2762
2763protected:
2765 ENGINE_API virtual void RestorePreAdditiveRootMotionVelocity();
2766
2768 ENGINE_API virtual void ApplyRootMotionToVelocity(float deltaTime);
2769
2771 ENGINE_API void DecayFormerBaseVelocity(float deltaTime);
2772
2773public:
2774
2783
2786 FVector AnimRootMotionVelocity;
2787
2790 bool HasAnimRootMotion() const
2791 {
2792 return RootMotionParams.bHasRootMotion;
2793 }
2794
2795 // Takes component space root motion and converts it to world space
2796 ENGINE_API FTransform ConvertLocalRootMotionToWorld(const FTransform& InLocalRootMotion, float DeltaSeconds);
2797
2798 // Delegate for modifying root motion pre conversion from component space to world space.
2800
2801 // Delegate for modifying root motion post conversion from component space to world space.
2803
2805 ENGINE_API void SimulateRootMotion(float DeltaSeconds, const FTransform& LocalRootMotionTransform);
2806
2814 ENGINE_API virtual FVector CalcAnimRootMotionVelocity(const FVector& RootMotionDeltaMove, float DeltaSeconds, const FVector& CurrentVelocity) const;
2815
2819 ENGINE_API virtual FVector ConstrainAnimRootMotionVelocity(const FVector& RootMotionVelocity, const FVector& CurrentVelocity) const;
2820
2821 // RVO Avoidance
2822
2824 ENGINE_API virtual void CalcAvoidanceVelocity(float DeltaTime);
2825
2827 ENGINE_API virtual void PostProcessAvoidanceVelocity(FVector& NewVelocity);
2828
2829 ENGINE_API virtual void FlushServerMoves();
2830
2835 ENGINE_API ETeleportType GetTeleportType() const;
2836
2837protected:
2838
2840 ENGINE_API void UpdateDefaultAvoidance();
2841
2842public:
2844 ENGINE_API void SetAvoidanceVelocityLock(class UAvoidanceManager* Avoidance, float Duration);
2845
2847 ENGINE_API virtual void SetRVOAvoidanceUID(int32 UID) override;
2848 ENGINE_API virtual int32 GetRVOAvoidanceUID() override;
2849 ENGINE_API virtual void SetRVOAvoidanceWeight(float Weight) override;
2850 ENGINE_API virtual float GetRVOAvoidanceWeight() override;
2851 ENGINE_API virtual FVector GetRVOAvoidanceOrigin() override;
2852 ENGINE_API virtual float GetRVOAvoidanceRadius() override;
2853 ENGINE_API virtual float GetRVOAvoidanceHeight() override;
2854 ENGINE_API virtual float GetRVOAvoidanceConsiderationRadius() override;
2855 ENGINE_API virtual FVector GetVelocityForRVOConsideration() override;
2856 ENGINE_API virtual void SetAvoidanceGroupMask(int32 GroupFlags) override;
2857 ENGINE_API virtual int32 GetAvoidanceGroupMask() override;
2858 ENGINE_API virtual void SetGroupsToAvoidMask(int32 GroupFlags) override;
2859 ENGINE_API virtual int32 GetGroupsToAvoidMask() override;
2860 ENGINE_API virtual void SetGroupsToIgnoreMask(int32 GroupFlags) override;
2861 ENGINE_API virtual int32 GetGroupsToIgnoreMask() override;
2866 int32 GetRVOAvoidanceUIDFast() const { return AvoidanceUID; }
2867
2868public:
2869
2871 static ENGINE_API const float MIN_TICK_TIME;
2872
2874 static ENGINE_API const float MIN_FLOOR_DIST;
2875
2877 static ENGINE_API const float MAX_FLOOR_DIST;
2878
2881
2884};
2885
2886
2891
2893{
2894 return IsMovingOnGround();
2895}
2896
2898{
2901 const uint32 Rotation32 = (YawShort << 16) | PitchShort;
2902 return Rotation32;
2903}
2904
2906{
2907public:
2909};
2910
2913{
2914public:
2917
2918 // UE_DEPRECATED_FORGAME(4.20)
2923
2925
2929
2932
2935
2937
2938 UE_DEPRECATED_FORGAME(4.20, "This property is deprecated, use StartPackedMovementMode or EndPackedMovementMode instead.")
2940
2941 // Information at the start of the move
2944
2945 float TimeStamp; // Time of this move.
2946 float DeltaTime; // amount of time for this move
2952
2959 FQuat StartBaseRotation; // rotation of the base component (or bone), only saved if it can move.
2962 TWeakObjectPtr<UPrimitiveComponent> StartBase;
2970
2971 // Information after the move has been performed
2978 TWeakObjectPtr<UPrimitiveComponent> EndBase;
2986
2989
2990 // Cached to speed up iteration over IsImportantMove().
2993
2999
3001
3010
3012 ENGINE_API virtual void Clear();
3013
3016
3019
3021 ENGINE_API virtual bool IsImportantMove(const FSavedMovePtr& LastAckedMove) const;
3022
3025
3027 {
3028 PostUpdate_Record, // Record a move after having run the simulation
3029 PostUpdate_Replay, // Update after replaying a move for a client correction
3030 };
3031
3034
3036 ENGINE_API virtual bool CanCombineWith(const FSavedMovePtr& NewMove, ACharacter* InCharacter, float MaxDelta) const;
3037
3040
3042 ENGINE_API virtual void PrepMoveFor(ACharacter* C);
3043
3045 ENGINE_API virtual uint8 GetCompressedFlags() const;
3046
3049
3052
3054 ENGINE_API virtual void AddStructReferencedObjects(FReferenceCollector& Collector) const;
3055
3056 // Bit masks used by GetCompressedFlags() to encode movement information.
3058 {
3059 FLAG_JumpPressed = 0x01, // Jump pressed
3060 FLAG_WantsToCrouch = 0x02, // Wants to crouch
3061 FLAG_Reserved_1 = 0x04, // Reserved for future use
3062 FLAG_Reserved_2 = 0x08, // Reserved for future use
3063 // Remaining bit masks are available for custom flags.
3068 };
3069};
3070
3071//UE_DEPRECATED_FORGAME(4.20)
3078
3079
3081{
3083
3084public:
3085
3088
3090 ENGINE_API void AddStructReferencedObjects(FReferenceCollector& Collector) const override;
3091
3094
3097
3100
3101 TArray<FSavedMovePtr> SavedMoves; // Buffered moves pending position updates, orderd oldest to newest. Moves that have been acked by the server are removed.
3102 TArray<FSavedMovePtr> FreeMoves; // freed moves, available for buffering
3103 FSavedMovePtr PendingMove; // PendingMove already processed on client - waiting to combine with next movement to reduce client to server bandwidth
3104 FSavedMovePtr LastAckedMove; // Last acknowledged sent move.
3105
3106 int32 MaxFreeMoveCount; // Limit on size of free list
3107 int32 MaxSavedMoveCount; // Limit on the size of the saved move buffer
3108
3109 uint32 bUpdatePosition:1; // when true, update the position (via ClientUpdatePosition)
3110
3111 // Mesh smoothing variables (for network smoothing)
3112 //
3113
3116
3119
3122
3125
3128
3131
3134
3137
3140
3143
3149
3155
3158
3161
3172
3177
3179 ENGINE_API int32 GetSavedMoveIndex(float TimeStamp) const;
3180
3183
3186
3188 ENGINE_API virtual void FreeMove(const FSavedMovePtr& Move);
3189
3192
3198
3201};
3202
3203
3279
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
#define NULL
Definition oodle2base.h:134
@ Normal
Definition AndroidInputInterface.h:116
ERadialImpulseFalloff
Definition ChaosEngineInterface.h:91
EShrinkCapsuleExtent
Definition CharacterMovementComponentAsync.h:19
TSharedPtr< class FSavedMove_Character > FSavedMovePtr
Definition CharacterMovementComponent.h:117
#define DEPRECATED_CHARACTER_MOVEMENT_RPC(DeprecatedFunction, NewFunction)
Definition CharacterMovementReplication.h:29
#define UE_DEPRECATED_FORGAME
Definition CoreMiscDefines.h:377
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_RetVal_ThreeParams(ReturnValueType, DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:72
ELevelTick
Definition EngineBaseTypes.h:70
ETeleportType
Definition EngineTypes.h:2401
EMovementMode
Definition EngineTypes.h:1007
ECollisionChannel
Definition EngineTypes.h:1088
ENetworkSmoothingMode
Definition EngineTypes.h:1039
return true
Definition ExternalRpcRegistry.cpp:601
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
@ General
Definition MaterialExpressionFunctionInput.h:41
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
ESPMode
Definition SharedPointerFwd.h:12
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
void Move(T &A, typename TMoveSupportTraits< T >::Copy B)
Definition UnrealTemplate.h:24
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Character.h:242
Definition PhysicsVolume.h:17
Definition PlayerController.h:261
Definition Archive.h:1208
Definition CharacterMovementComponentAsync.h:624
Definition DisplayDebugHelpers.h:9
Definition NameTypes.h:617
Definition CoreNet.h:415
Definition CoreNet.h:384
Definition CharacterMovementComponent.h:3081
FVector OriginalMeshTranslationOffset
Definition CharacterMovementComponent.h:3115
float LastCorrectionTime
Definition CharacterMovementComponent.h:3133
virtual ENGINE_API FSavedMovePtr AllocateNewMove()
Definition CharacterMovementComponent.cpp:12245
float MaxSmoothNetUpdateDist
Definition CharacterMovementComponent.h:3148
FSavedMovePtr LastAckedMove
Definition CharacterMovementComponent.h:3104
virtual ENGINE_API void FreeMove(const FSavedMovePtr &Move)
Definition CharacterMovementComponent.cpp:12251
ENGINE_API float UpdateTimeStampAndDeltaTime(float DeltaTime, ACharacter &CharacterOwner, class UCharacterMovementComponent &CharacterMovementComponent)
Definition CharacterMovementComponent.cpp:8743
float CurrentTimeStamp
Definition CharacterMovementComponent.h:3096
ENGINE_API void AddStructReferencedObjects(FReferenceCollector &Collector) const override
Definition CharacterMovementComponent.cpp:12190
uint32 bUpdatePosition
Definition CharacterMovementComponent.h:3109
float SmoothNetUpdateRotationTime
Definition CharacterMovementComponent.h:3160
float SmoothNetUpdateTime
Definition CharacterMovementComponent.h:3157
float ClientUpdateRealTime
Definition CharacterMovementComponent.h:3093
float MaxClientSmoothingDeltaTime
Definition CharacterMovementComponent.h:3136
virtual ENGINE_API ~FNetworkPredictionData_Client_Character()
Definition CharacterMovementComponent.cpp:12182
FQuat MeshRotationOffset
Definition CharacterMovementComponent.h:3124
float SimulatedDebugDrawTime
Definition CharacterMovementComponent.h:3176
TArray< FSavedMovePtr > SavedMoves
Definition CharacterMovementComponent.h:3101
virtual ENGINE_API FSavedMovePtr CreateSavedMove()
Definition CharacterMovementComponent.cpp:12214
FVector LastSmoothLocation
Definition CharacterMovementComponent.h:3174
FVector MeshTranslationOffset
Definition CharacterMovementComponent.h:3118
float NoSmoothNetUpdateDist
Definition CharacterMovementComponent.h:3154
FQuat OriginalMeshRotationOffset
Definition CharacterMovementComponent.h:3121
int32 MaxSavedMoveCount
Definition CharacterMovementComponent.h:3107
FQuat MeshRotationTarget
Definition CharacterMovementComponent.h:3127
FSavedMovePtr PendingMove
Definition CharacterMovementComponent.h:3103
double SmoothingServerTimeStamp
Definition CharacterMovementComponent.h:3139
float DebugForcedPacketLossTimerStart
Definition CharacterMovementComponent.h:3200
int32 MaxFreeMoveCount
Definition CharacterMovementComponent.h:3106
float LastReceivedAckRealTime
Definition CharacterMovementComponent.h:3099
float MaxMoveDeltaTime
Definition CharacterMovementComponent.h:3171
double SmoothingClientTimeStamp
Definition CharacterMovementComponent.h:3142
FVector LastServerLocation
Definition CharacterMovementComponent.h:3175
float LastCorrectionDelta
Definition CharacterMovementComponent.h:3130
ENGINE_API void AckMove(int32 AckedMoveIndex, UCharacterMovementComponent &CharacterMovementComponent)
Definition CharacterMovementComponent.cpp:12297
TArray< FSavedMovePtr > FreeMoves
Definition CharacterMovementComponent.h:3102
ENGINE_API int32 GetSavedMoveIndex(float TimeStamp) const
Definition CharacterMovementComponent.cpp:12273
Definition NetworkPredictionInterface.h:68
FNetworkPredictionData_Client()
Definition NetworkPredictionInterface.h:71
Definition CharacterMovementComponent.h:3205
float LastUpdateTime
Definition CharacterMovementComponent.h:3223
ENGINE_API float GetServerMoveDeltaTime(float ClientTimeStamp, float ActorTimeDilation) const
Definition CharacterMovementComponent.cpp:12372
float CurrentClientTimeStamp
Definition CharacterMovementComponent.h:3214
float MaxMoveDeltaTime
Definition CharacterMovementComponent.h:3234
float LastReceivedClientTimeStamp
Definition CharacterMovementComponent.h:3217
float TimeDiscrepancy
Definition CharacterMovementComponent.h:3246
uint32 bForceClientUpdate
Definition CharacterMovementComponent.h:3237
double ServerAccumulatedClientTimeStamp
Definition CharacterMovementComponent.h:3220
float ServerTimeStampLastServerMove
Definition CharacterMovementComponent.h:3226
FClientAdjustment PendingAdjustment
Definition CharacterMovementComponent.h:3211
ENGINE_API float GetBaseServerMoveDeltaTime(float ClientTimeStamp, float ActorTimeDilation) const
Definition CharacterMovementComponent.cpp:12384
bool bResolvingTimeDiscrepancy
Definition CharacterMovementComponent.h:3249
float TimeDiscrepancyAccumulatedClientDeltasSinceLastServerTick
Definition CharacterMovementComponent.h:3265
float TimeDiscrepancyResolutionMoveDeltaOverride
Definition CharacterMovementComponent.h:3255
float LifetimeRawTimeDiscrepancy
Definition CharacterMovementComponent.h:3240
float WorldCreationTime
Definition CharacterMovementComponent.h:3268
virtual ENGINE_API ~FNetworkPredictionData_Server_Character()
Definition CharacterMovementComponent.cpp:12367
Definition NetworkPredictionInterface.h:84
Definition UnrealTemplate.h:321
Definition UObjectGlobals.h:1292
static COREUOBJECT_API FObjectInitializer & Get()
Definition UObjectGlobals.cpp:5001
Definition UnrealType.h:3087
Definition UObjectGlobals.h:2492
Definition CharacterMovementComponent.h:2906
virtual ~FSavedMove_Character_FixLayout()=default
Definition CharacterMovementComponent.h:2913
virtual ENGINE_API uint8 GetCompressedFlags() const
Definition CharacterMovementComponent.cpp:13114
uint32 EndComponentOverlapCounter
Definition CharacterMovementComponent.h:2981
FName EndBoneName
Definition CharacterMovementComponent.h:2979
virtual ENGINE_API void CombineWith(const FSavedMove_Character *OldMove, ACharacter *InCharacter, APlayerController *PC, const FVector &OldStartLocation)
Definition CharacterMovementComponent.cpp:13006
TWeakObjectPtr< USceneComponent > EndAttachParent
Definition CharacterMovementComponent.h:2982
FVector SavedRelativeAcceleration
Definition CharacterMovementComponent.h:2976
FRotator StartRotation
Definition CharacterMovementComponent.h:2957
FSavedMove_Character(const FSavedMove_Character &)
FSavedMove_Character & operator=(const FSavedMove_Character &)
FVector EndAttachRelativeLocation
Definition CharacterMovementComponent.h:2984
virtual ENGINE_API ~FSavedMove_Character()
Definition CharacterMovementComponent.cpp:12429
virtual ENGINE_API void AddStructReferencedObjects(FReferenceCollector &Collector) const
Definition CharacterMovementComponent.cpp:13132
TWeakObjectPtr< USceneComponent > StartAttachParent
Definition CharacterMovementComponent.h:2966
FVector SavedVelocity
Definition CharacterMovementComponent.h:2974
ACharacter * CharacterOwner
Definition CharacterMovementComponent.h:2924
FName EndAttachSocketName
Definition CharacterMovementComponent.h:2983
uint32 StartComponentOverlapCounter
Definition CharacterMovementComponent.h:2965
TWeakObjectPtr< UPrimitiveComponent > EndBase
Definition CharacterMovementComponent.h:2978
FRotator EndAttachRelativeRotation
Definition CharacterMovementComponent.h:2985
float RootMotionTrackPosition
Definition CharacterMovementComponent.h:2995
float MaxSpeedThresholdCombine
Definition CharacterMovementComponent.h:3009
float AccelDotThreshold
Definition CharacterMovementComponent.h:3003
float TimeStamp
Definition CharacterMovementComponent.h:2945
virtual ENGINE_API void SetInitialPosition(ACharacter *C)
Definition CharacterMovementComponent.cpp:12551
float DeltaTime
Definition CharacterMovementComponent.h:2946
FVector StartLocation
Definition CharacterMovementComponent.h:2953
FVector Acceleration
Definition CharacterMovementComponent.h:2987
virtual ENGINE_API bool IsImportantMove(const FSavedMovePtr &LastAckedMove) const
Definition CharacterMovementComponent.cpp:12712
uint8 bWantsToCrouch
Definition CharacterMovementComponent.h:2927
FRotator StartAttachRelativeRotation
Definition CharacterMovementComponent.h:2969
virtual ENGINE_API void PostUpdate(ACharacter *C, EPostUpdateMode PostUpdateMode)
Definition CharacterMovementComponent.cpp:12592
FName StartBoneName
Definition CharacterMovementComponent.h:2963
float JumpKeyHoldTime
Definition CharacterMovementComponent.h:2948
TWeakObjectPtr< class UAnimMontage > RootMotionMontage
Definition CharacterMovementComponent.h:2994
int32 JumpMaxCount
Definition CharacterMovementComponent.h:2950
uint8 bWasJumping
Definition CharacterMovementComponent.h:2936
FVector StartAttachRelativeLocation
Definition CharacterMovementComponent.h:2968
uint8 bOldTimeStampBeforeReset
Definition CharacterMovementComponent.h:2934
uint8 StartPackedMovementMode
Definition CharacterMovementComponent.h:2942
uint8 bForceMaxAccel
Definition CharacterMovementComponent.h:2928
float AccelMag
Definition CharacterMovementComponent.h:2992
virtual ENGINE_API FVector GetRevertedLocation() const
Definition CharacterMovementComponent.cpp:12744
TWeakObjectPtr< UPrimitiveComponent > StartBase
Definition CharacterMovementComponent.h:2962
FName StartAttachSocketName
Definition CharacterMovementComponent.h:2967
float AccelMagThreshold
Definition CharacterMovementComponent.h:3005
FQuat StartBaseRotation
Definition CharacterMovementComponent.h:2959
float MaxSpeed
Definition CharacterMovementComponent.h:2988
float CustomTimeDilation
Definition CharacterMovementComponent.h:2947
CompressedFlags
Definition CharacterMovementComponent.h:3058
@ FLAG_Custom_0
Definition CharacterMovementComponent.h:3064
@ FLAG_Reserved_1
Definition CharacterMovementComponent.h:3061
@ FLAG_JumpPressed
Definition CharacterMovementComponent.h:3059
@ FLAG_Custom_2
Definition CharacterMovementComponent.h:3066
@ FLAG_Reserved_2
Definition CharacterMovementComponent.h:3062
@ FLAG_Custom_3
Definition CharacterMovementComponent.h:3067
@ FLAG_WantsToCrouch
Definition CharacterMovementComponent.h:3060
@ FLAG_Custom_1
Definition CharacterMovementComponent.h:3065
uint8 EndPackedMovementMode
Definition CharacterMovementComponent.h:2943
virtual ENGINE_API bool CanCombineWith(const FSavedMovePtr &NewMove, ACharacter *InCharacter, float MaxDelta) const
Definition CharacterMovementComponent.cpp:12823
FRotator StartControlRotation
Definition CharacterMovementComponent.h:2958
uint32 EndActorOverlapCounter
Definition CharacterMovementComponent.h:2980
FVector AccelNormal
Definition CharacterMovementComponent.h:2991
float StartCapsuleRadius
Definition CharacterMovementComponent.h:2960
virtual ENGINE_API void GetPackedAngles(uint32 &YawAndPitchPack, uint8 &RollPack) const
Definition CharacterMovementComponent.cpp:12816
uint32 StartActorOverlapCounter
Definition CharacterMovementComponent.h:2964
uint8 bPressedJump
Definition CharacterMovementComponent.h:2926
virtual ENGINE_API void PrepMoveFor(ACharacter *C)
Definition CharacterMovementComponent.cpp:13037
FRotator SavedRotation
Definition CharacterMovementComponent.h:2973
virtual ENGINE_API bool IsMatchingStartControlRotation(const APlayerController *PC) const
Definition CharacterMovementComponent.cpp:12811
uint8 MovementMode
Definition CharacterMovementComponent.h:2939
float StartCapsuleHalfHeight
Definition CharacterMovementComponent.h:2961
FSavedMove_Character(FSavedMove_Character &&)
FRotator SavedControlRotation
Definition CharacterMovementComponent.h:2977
FRootMotionSourceGroup SavedRootMotion
Definition CharacterMovementComponent.h:3000
FRootMotionMovementParams RootMotionMovement
Definition CharacterMovementComponent.h:2998
virtual ENGINE_API void Clear()
Definition CharacterMovementComponent.cpp:12433
FSavedMove_Character & operator=(FSavedMove_Character &&)
uint8 bForceNoCombine
Definition CharacterMovementComponent.h:2931
FVector SavedRelativeLocation
Definition CharacterMovementComponent.h:2975
FFindFloorResult StartFloor
Definition CharacterMovementComponent.h:2956
float AccelDotThresholdCombine
Definition CharacterMovementComponent.h:3007
float RootMotionPreviousTrackPosition
Definition CharacterMovementComponent.h:2996
virtual ENGINE_API void SetMoveFor(ACharacter *C, float InDeltaTime, FVector const &NewAccel, class FNetworkPredictionData_Client_Character &ClientData)
Definition CharacterMovementComponent.cpp:12502
float JumpForceTimeRemaining
Definition CharacterMovementComponent.h:2949
float RootMotionPlayRateWithScale
Definition CharacterMovementComponent.h:2997
EPostUpdateMode
Definition CharacterMovementComponent.h:3027
@ PostUpdate_Record
Definition CharacterMovementComponent.h:3028
@ PostUpdate_Replay
Definition CharacterMovementComponent.h:3029
FVector StartRelativeLocation
Definition CharacterMovementComponent.h:2954
FVector StartVelocity
Definition CharacterMovementComponent.h:2955
int32 JumpCurrentCount
Definition CharacterMovementComponent.h:2951
ENGINE_API FSavedMove_Character()
Definition CharacterMovementComponent.cpp:12421
FVector SavedLocation
Definition CharacterMovementComponent.h:2972
Definition NavigationDataInterface.h:26
Definition NetworkPredictionInterface.h:22
Definition RVOAvoidanceInterface.h:23
Definition Launch.Build.cs:10
Definition Array.h:670
Definition EnumAsByte.h:22
Definition SharedPointer.h:692
Definition ContainerAllocationPolicies.h:894
Definition AvoidanceManager.h:91
Definition Canvas.h:159
Definition CharacterMovementComponent.h:136
bool IsWalking() const
Definition CharacterMovementComponent.h:2892
FVector RotateGravityToWorld(const FVector &World) const
Definition CharacterMovementComponent.h:1692
static ENGINE_API const float BRAKE_TO_STOP_VELOCITY
Definition CharacterMovementComponent.h:2883
ACharacter * GetCharacterOwner() const
Definition CharacterMovementComponent.h:2887
class FNetworkPredictionData_Server_Character * ServerPredictionData
Definition CharacterMovementComponent.h:2321
FVector::FReal GetGravitySpaceZ(const FVector &Vector) const
Definition CharacterMovementComponent.h:1701
FVector RotateWorldToGravity(const FVector &Gravity) const
Definition CharacterMovementComponent.h:1695
static ENGINE_API const float SWEEP_EDGE_REJECT_DISTANCE
Definition CharacterMovementComponent.h:2880
FQuat GetWorldToGravityTransform() const
Definition CharacterMovementComponent.h:1686
FVector GetGravitySpaceComponentZ(const FVector &Vector) const
Definition CharacterMovementComponent.h:1704
ERootMotionMapping
Definition CharacterMovementComponent.h:2760
static ENGINE_API const float MAX_FLOOR_DIST
Definition CharacterMovementComponent.h:2877
void SetCurrentReplayedSavedMove(FSavedMove_Character *SavedMove)
Definition CharacterMovementComponent.h:2672
class FNetworkPredictionData_Client_Character * ClientPredictionData
Definition CharacterMovementComponent.h:2320
FQuat GetGravityToWorldTransform() const
Definition CharacterMovementComponent.h:1689
FCharacterNetworkMoveData * GetCurrentNetworkMoveData() const
Definition CharacterMovementComponent.h:2647
FCharacterMoveResponseDataContainer & GetMoveResponseDataContainer() const
Definition CharacterMovementComponent.h:2666
virtual ENGINE_API bool IsMovingOnGround() const override
Definition CharacterMovementComponent.cpp:3766
int32 GetRVOAvoidanceUIDFast() const
Definition CharacterMovementComponent.h:2866
void SetGravitySpaceZ(FVector &Vector, const FVector::FReal Z) const
Definition CharacterMovementComponent.h:1707
static uint32 PackYawAndPitchTo32(const float Yaw, const float Pitch)
Definition CharacterMovementComponent.h:2897
const FSavedMove_Character * GetCurrentReplayedSavedMove() const
Definition CharacterMovementComponent.h:2680
TObjectPtr< ACharacter > CharacterOwner
Definition CharacterMovementComponent.h:149
void SetMoveResponseDataContainer(FCharacterMoveResponseDataContainer &PersistentDataStorage)
Definition CharacterMovementComponent.h:2660
static ENGINE_API const float MIN_TICK_TIME
Definition CharacterMovementComponent.h:2871
FVector ProjectToGravityFloor(const FVector &Vector) const
Definition CharacterMovementComponent.h:1698
UPROPERTY(Category="Character Movement (General Settings)", EditAnywhere, BlueprintReadWrite, AdvancedDisplay, meta=(ClampMin="0.0166", ClampMax="0.50", UIMin="0.0166", UIMax="0.50")) float MaxSimulationTimeStep
FCharacterNetworkMoveDataContainer & GetNetworkMoveDataContainer() const
Definition CharacterMovementComponent.h:2640
float GetServerLastTransformUpdateTimeStamp() const
Definition CharacterMovementComponent.h:725
void SetCurrentNetworkMoveData(FCharacterNetworkMoveData *CurrentData)
Definition CharacterMovementComponent.h:2653
FQuat GetLastUpdateQuat() const
Definition CharacterMovementComponent.h:718
FOnProcessRootMotion ProcessRootMotionPostConvertToWorld
Definition CharacterMovementComponent.h:2802
FRandomStream RandomStream
Definition CharacterMovementComponent.h:2323
static ENGINE_API const float MIN_FLOOR_DIST
Definition CharacterMovementComponent.h:2874
FOnProcessRootMotion ProcessRootMotionPreConvertToWorld
Definition CharacterMovementComponent.h:2799
Definition Object.h:95
Definition PawnMovementComponent.h:43
Definition CharacterMovementComponent.h:42
ENGINE_API int32 AsyncCharacterMovement
Definition CharacterMovementComponent.cpp:253
int32 ForceJumpPeakSubstep
Definition CharacterMovementComponent.cpp:239
Definition CharacterMovementComponent.cpp:80
const float VERTICAL_SLOPE_NORMAL_Z
Definition CharacterMovementComponent.cpp:84
const float MAX_STEP_SIDE_Z
Definition CharacterMovementComponent.cpp:82
Definition TaskGraph.cpp:63
@ false
Definition radaudio_common.h:23
Definition EngineBaseTypes.h:571
Definition CharacterMovementReplication.h:320
Definition CharacterMovementReplication.h:370
Definition CharacterMovementComponentAsync.h:398
Definition CharacterMovementComponentAsync.h:155
Definition CharacterMovementComponent.h:53
Definition CharacterMovementComponent.h:85
Definition CharacterMovementReplication.h:166
Definition CharacterMovementReplication.h:96
Definition CharacterMovementReplication.h:233
Definition CharacterMovementReplication.h:254
Definition CollisionQueryParams.h:43
Definition CollisionQueryParams.h:324
Definition CollisionShape.h:21
Definition CharacterMovementComponentAsync.h:29
Definition HitResult.h:21
Definition NavigationAvoidanceTypes.h:13
Definition NavigationTypes.h:252
Definition UnrealType.h:6865
Definition RandomStream.h:20
Definition CharacterMovementComponentAsync.h:270
Definition AnimationAsset.h:711
bool bHasRootMotion
Definition AnimationAsset.h:720
Definition RootMotionSource.h:83
Definition RootMotionSource.h:753
Definition RootMotionSource.h:227
Definition CharacterMovementComponentAsync.h:102
Definition EngineBaseTypes.h:173
Definition NetSerialization.h:500
Definition NetSerialization.h:455
Definition NetSerialization.h:541
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46
Definition WeakObjectPtrTemplates.h:25
static uint16 CompressAxisToShort(double Angle)
Definition Rotator.h:735
double FReal
Definition Vector.h:55
static TVector< double > VectorPlaneProject(const TVector< double > &V, const TVector< double > &PlaneNormal)
Definition Vector.h:1418
UE_FORCEINLINE_HINT T Dot(const TVector< T > &V) const
Definition Vector.h:1553