44 UFUNCTION(BlueprintCallable, Category =
"ALS|Movement")
47 return MyCharacterMovementComponent;
49 virtual FVector GetLeftHandGoal()
const override;
50 virtual FVector GetRightHandGoal()
const override;
52 virtual bool GetIsMantling()
const override;
60 return Cast<IALSGravityMovementInterface>(MyCharacterMovementComponent);
63 UPROPERTY(EditAnywhere, Category=
"Debug|Gravity")
64 float GravityMultiplier = 9.8f;
66 virtual
void Ragdoll() override;
70 virtual
void Tick(
float DeltaTime) override;
72 virtual
void BeginPlay() override;
74 virtual
void PostInitializeComponents() override;
76 virtual
void GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const override;
81 UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "ALS|
Ragdoll System")
82 UAnimMontage* GetGetUpAnimation(
bool bRagdollFaceUpState);
85 virtual
void RagdollStart();
88 virtual
void RagdollEnd();
91 void Server_SetMeshLocationDuringRagdoll(FVector MeshLocation);
95 UFUNCTION(BlueprintCallable, Category = "ALS|
Character States")
98 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
101 UFUNCTION(BlueprintGetter, Category =
"ALS|Character States")
104 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
107 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
110 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
111 void SetStance(
EALSStance NewStance,
bool bForce = false);
113 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
116 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
117 void SetOverlayOverrideState(int32 NewState);
119 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
120 int32 GetOverlayOverrideState()
const {
return OverlayOverrideState; }
122 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
123 void SetGait(
EALSGait NewGait,
bool bForce = false);
125 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
128 UFUNCTION(BlueprintGetter, Category =
"ALS|CharacterStates")
129 EALSGait GetDesiredGait()
const {
return DesiredGait; }
131 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
134 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
137 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
140 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
141 virtual
void SetViewMode(
EALSViewMode NewViewMode,
bool bForce = false);
143 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
146 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
149 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
152 UFUNCTION(BlueprintCallable, Category = "ALS|
Character States")
155 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
158 UFUNCTION(BlueprintGetter, Category = "ALS|
Character States")
161 UFUNCTION(BlueprintGetter, Category =
"ALS|Character States")
166 UFUNCTION(BlueprintCallable, Category =
"ALS|Character States")
167 void EventOnLanded();
169 UFUNCTION(BlueprintCallable, NetMulticast, Reliable, Category = "ALS|
Character States")
170 void Multicast_OnLanded();
173 UFUNCTION(BlueprintCallable, Category = "ALS|
Character States")
174 void EventOnJumped();
176 UFUNCTION(BlueprintCallable, NetMulticast, Reliable, Category = "ALS|
Character States")
177 void Multicast_OnJumped();
180 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
181 void Server_PlayMontage(UAnimMontage* Montage,
float PlayRate);
183 UFUNCTION(BlueprintCallable, NetMulticast, Reliable, Category = "ALS|
Character States")
184 void Multicast_PlayMontage(UAnimMontage* Montage,
float PlayRate);
186 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
187 void Server_StopMontage(const
float InBlendOutTime, const UAnimMontage* Montage);
189 UFUNCTION(BlueprintCallable, NetMulticast, Reliable, Category = "ALS|
Character States")
190 void Multicast_StopMontage(const
float InBlendOutTime, const UAnimMontage* Montage);
193 UFUNCTION(BlueprintCallable, Category = "ALS|
Character States")
194 void ReplicatedRagdollStart();
196 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
197 void Server_RagdollStart();
199 UFUNCTION(BlueprintCallable, NetMulticast, Reliable, Category = "ALS|
Character States")
200 void Multicast_RagdollStart();
202 UFUNCTION(BlueprintCallable, Category = "ALS|
Character States")
203 void ReplicatedRagdollEnd();
205 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
206 void Server_RagdollEnd(FVector CharacterLocation);
208 UFUNCTION(BlueprintCallable, NetMulticast, Reliable, Category = "ALS|
Character States")
209 void Multicast_RagdollEnd(FVector CharacterLocation);
213 UPROPERTY(BlueprintAssignable, Category = "ALS|Input")
214 FJumpPressedSignature JumpPressedDelegate;
216 UPROPERTY(BlueprintAssignable, Category = "ALS|Input")
217 FOnJumpedSignature OnJumpedDelegate;
219 UPROPERTY(BlueprintAssignable, Category = "ALS|Input")
220 FRagdollStateChangedSignature RagdollStateChangedDelegate;
222 UFUNCTION(BlueprintGetter, Category = "ALS|Input")
223 EALSStance GetDesiredStance()
const {
return DesiredStance; }
225 UFUNCTION(BlueprintSetter, Category =
"ALS|Input")
228 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|Input")
231 UFUNCTION(BlueprintCallable, Category = "ALS|
Character States")
232 void SetDesiredGait(
EALSGait NewGait);
234 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
237 UFUNCTION(BlueprintGetter, Category = "ALS|Input")
240 UFUNCTION(BlueprintSetter, Category =
"ALS|Input")
243 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|
Character States")
248 UFUNCTION(BlueprintCallable, Category = "ALS|Rotation
System")
249 void SetActorLocationAndTargetRotation(FVector NewLocation, FRotator NewRotation);
253 UFUNCTION(BlueprintGetter, Category = "ALS|Movement
System")
254 bool HasMovementInput()
const {
return bHasMovementInput; }
256 UFUNCTION(BlueprintCallable, Category =
"ALS|Movement System")
260 UFUNCTION(BlueprintCallable, Category = "ALS|Movement
System")
261 virtual
EALSGait GetAllowedGait() const;
263 UFUNCTION(BlueprintCallable, Category = "ALS|Movement
System")
266 UFUNCTION(BlueprintCallable, Category = "ALS|Movement
System")
267 virtual
bool CanSprint() const;
270 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Movement
System")
272 virtual
void OnBreakfall_Implementation();
275 virtual
float PlayReplicatedMontage(UAnimMontage* MontageToPlay, const
float InPlayRate, const EMontagePlayReturnType ReturnValueType,
276 const
float InTimeToStartMontageAt, const
bool bStopAllMontages) override;
278 virtual
void StopReplicatedMontage(const
float InBlendOutTime, const UAnimMontage* Montage) override;
281 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Movement
System")
282 void Replicated_PlayMontage(UAnimMontage* Montage,
float PlayRate);
283 virtual
void Replicated_PlayMontage_Implementation(UAnimMontage* Montage,
float PlayRate);
286 UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, Category = "ALS|Movement
System")
287 UAnimMontage* GetRollAnimation();
291 UFUNCTION(BlueprintCallable, Category = "ALS|Utility")
292 float GetAnimCurveValue(FName CurveName) const;
294 UFUNCTION(BlueprintCallable, Category = "ALS|Utility")
295 void SetVisibleMesh(USkeletalMesh* NewSkeletalMesh);
297 UFUNCTION(BlueprintCallable,
Server, Reliable, Category = "ALS|Utility")
298 void Server_SetVisibleMesh(USkeletalMesh* NewSkeletalMesh);
302 UFUNCTION(BlueprintGetter, Category = "ALS|Camera
System")
305 UFUNCTION(BlueprintCallable, Category =
"ALS|Camera System")
306 void SetRightShoulder(const
bool bNewRightShoulder);
308 UFUNCTION(BlueprintGetter, Category = "ALS|Camera
System")
311 UFUNCTION(BlueprintGetter, Category =
"ALS|Camera System")
312 virtual
bool GetCanAimDownSights() const;
314 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
315 void SetAimDownSights(const
bool bNewAimDownSights);
317 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
318 virtual ECollisionChannel GetThirdPersonTraceParams(FVector& TraceOrigin,
float& TraceRadius);
320 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
321 virtual FTransform GetThirdPersonPivotTarget();
323 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
324 virtual FVector GetFirstPersonCameraTarget();
326 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
327 virtual FVector GetAimDownSightCameraTarget() const;
329 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
330 virtual
float GetAimDownSightFOV() const;
332 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
333 void GetCameraParameters(
float& TPFOVOut,
float& FPFOVOut,
bool& bRightShoulderOut) const;
335 UFUNCTION(BlueprintCallable, Category = "ALS|Camera
System")
340 UFUNCTION(BlueprintGetter, Category =
"ALS|Essential Information")
341 FVector GetAcceleration()
const {
return Acceleration; }
343 UFUNCTION(BlueprintGetter, Category =
"ALS|Essential Information")
344 bool IsMoving()
const {
return bIsMoving; }
346 UFUNCTION(BlueprintGetter, Category =
"ALS|Essential Information")
347 bool GetIsFlying()
const {
return bIsFlying; }
350 UFUNCTION(BlueprintCallable, Category =
"ALS|Essential Information")
351 FVector GetMovementInput() const;
353 UFUNCTION(BlueprintGetter, Category = "ALS|Essential Information")
354 float GetMovementInputAmount()
const {
return MovementInputAmount; }
356 UFUNCTION(BlueprintGetter, Category =
"ALS|Essential Information")
357 float GetSpeed()
const {
return Speed; }
359 UFUNCTION(BlueprintCallable, Category =
"ALS|Essential Information")
360 FRotator GetAimingRotation()
const {
return AimingRotation; }
362 UFUNCTION(BlueprintGetter, Category =
"ALS|Essential Information")
363 float GetAimYawRate()
const {
return AimYawRate; }
369 virtual void ForwardMovementAction(
float Value);
372 virtual void RightMovementAction(
float Value);
374 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category =
"ALS|Input")
375 void CameraUpAction(
float Value);
377 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Input")
378 void CameraRightAction(
float Value);
381 virtual
void JumpAction(
bool bValue);
384 virtual
void SprintAction(
bool bValue);
387 virtual
void AimAction(
bool bValue);
390 virtual
void CameraTapAction();
393 virtual
void CameraHeldAction();
396 virtual
void StanceAction();
398 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Input")
401 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Input")
402 void RagdollAction();
404 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Input")
405 void VelocityDirectionAction();
407 UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "ALS|Input")
408 void LookingDirectionAction();
412 UFUNCTION(BlueprintCallable, Category = "ALS|
Ragdoll System")
413 void RagdollUpdate(
float DeltaTime);
414 UFUNCTION(BlueprintCallable, Category = "ALS|
Ragdoll System")
415 void SetActorLocationDuringRagdoll(
float DeltaTime);
419 virtual
void OnMovementModeChanged(EMovementMode PrevMovementMode, uint8 PreviousCustomMode = 0) override;
425 virtual
void OnStanceChanged(
EALSStance PreviousStance);
429 virtual
void OnGaitChanged(
EALSGait PreviousGait);
431 virtual
void OnViewModeChanged(
EALSViewMode PreviousViewMode);
435 virtual
void OnVisibleMeshChanged(const USkeletalMesh* PreviousSkeletalMesh);
437 virtual
void OnStartCrouch(
float HalfHeightAdjust,
float ScaledHalfHeightAdjust) override;
439 virtual
void OnEndCrouch(
float HalfHeightAdjust,
float ScaledHalfHeightAdjust) override;
441 virtual
void OnJumped_Implementation() override;
443 virtual
void Landed(const FHitResult&
Hit) override;
445 void OnLandFrictionReset();
447 void SetEssentialValues(
float DeltaTime);
449 void UpdateCharacterMovement();
451 void UpdateGroundedRotation(
float DeltaTime);
453 void UpdateInAirRotation(
float DeltaTime);
458 void SmoothCharacterRotation(FRotator Target,
float TargetInterpSpeed,
float ActorInterpSpeed,
float DeltaTime);
460 float CalculateGroundedRotationRate() const;
462 void LimitRotation(
float AimYawMin,
float AimYawMax,
float InterpSpeed,
float DeltaTime);
464 void SetMovementModel();
466 void ForceUpdateCharacterState();
469 UFUNCTION(Category = "ALS|Replication")
472 UFUNCTION(Category = "ALS|Replication")
475 UFUNCTION(Category = "ALS|Replication")
478 UFUNCTION(Category = "ALS|Replication")
479 void OnRep_VisibleMesh(const USkeletalMesh* PreviousSkeletalMesh);
487 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "ALS|Optimization")
488 bool bOptimizeGroundRotation = true;
489 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "ALS|Optimization")
490 bool bOptimizeAnimValues = true;
492 void HandleNonMovingRotation(
float DeltaTime);
501 UPROPERTY(EditAnywhere, Replicated, BlueprintReadWrite, Category = "ALS|Input")
504 UPROPERTY(EditAnywhere, Replicated, BlueprintReadWrite, Category = "ALS|Input")
507 UPROPERTY(EditAnywhere, BlueprintReadWrite, Replicated, Category = "ALS|Input")
510 UPROPERTY(EditDefaultsOnly, Category = "ALS|Input", BlueprintReadOnly)
511 float LookUpDownRate = 1.25f;
513 UPROPERTY(EditDefaultsOnly, Category = "ALS|Input", BlueprintReadOnly)
514 float LookLeftRightRate = 1.25f;
516 UPROPERTY(EditDefaultsOnly, Category = "ALS|Input", BlueprintReadOnly)
517 float RollDoubleTapTimeout = 0.3f;
519 UPROPERTY(Category = "ALS|Input", BlueprintReadOnly)
520 bool bBreakFall = false;
522 UPROPERTY(Category = "ALS|Input", BlueprintReadOnly)
523 bool bSprintHeld = false;
527 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "ALS|Camera
System")
528 float ThirdPersonFOV = 90.0f;
530 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "ALS|Camera
System")
531 float FirstPersonFOV = 90.0f;
533 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "ALS|Camera
System")
536 UPROPERTY(EditDefaultsOnly, BlueprintReadWrite, Category = "ALS|Camera
System")
542 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "ALS|Movement
System")
543 FDataTableRowHandle MovementModel;
547 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
548 FVector Acceleration = FVector::ZeroVector;
550 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
551 bool bIsMoving = false;
553 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
554 bool bIsFlying = false;
556 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
557 bool bHasMovementInput = false;
559 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
560 FRotator LastVelocityRotation;
562 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
563 FRotator LastMovementInputRotation;
565 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
568 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
569 float MovementInputAmount = 0.0f;
571 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
572 float AimYawRate = 0.0f;
576 UPROPERTY(BlueprintReadOnly, Category = "ALS|Essential Information")
577 float EasedMaxAcceleration = 0.0f;
579 UPROPERTY(BlueprintReadOnly, Replicated, Category = "ALS|Essential Information")
580 FVector ReplicatedCurrentAcceleration = FVector::ZeroVector;
582 UPROPERTY(BlueprintReadOnly, Replicated, Category = "ALS|Essential Information")
583 FRotator ReplicatedControlRotation = FRotator::ZeroRotator;
586 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "ALS|Skeletal Mesh", ReplicatedUsing = OnRep_VisibleMesh)
587 TObjectPtr<USkeletalMesh> VisibleMesh =
nullptr;
591 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "ALS|State Values", ReplicatedUsing = OnRep_OverlayState)
594 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values")
597 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values")
600 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values")
603 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values")
606 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values", ReplicatedUsing = OnRep_RotationMode)
609 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values")
612 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "ALS|State Values")
615 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "ALS|State Values", ReplicatedUsing = OnRep_ViewMode)
618 UPROPERTY(BlueprintReadOnly, Category = "ALS|State Values")
619 int32 OverlayOverrideState = 0;
623 UPROPERTY(BlueprintReadOnly, Category = "ALS|Movement
System")
628 UPROPERTY(BlueprintReadOnly, Category = "ALS|Rotation
System")
629 FRotator TargetRotation = FRotator::ZeroRotator;
631 UPROPERTY(BlueprintReadOnly, Category = "ALS|Rotation
System")
632 FRotator InAirRotation = FRotator::ZeroRotator;
634 UPROPERTY(BlueprintReadOnly, Category = "ALS|Rotation
System")
635 float YawOffset = 0.0f;
640 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "ALS|Breakfall
System")
641 bool bBreakfallOnLand = true;
644 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "ALS|Breakfall
System", meta = (EditCondition ="bBreakfallOnLand"))
645 float BreakfallOnLandVelocity = 700.0f;
650 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "ALS|
Ragdoll System")
651 bool bReversedPelvis = false;
654 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "ALS|
Ragdoll System")
655 bool bRagdollOnLand = false;
658 UPROPERTY(BlueprintReadWrite, EditDefaultsOnly, Category = "ALS|
Ragdoll System", meta = (EditCondition ="bRagdollOnLand"))
659 float RagdollOnLandVelocity = 1000.0f;
661 UPROPERTY(BlueprintReadOnly, Category = "ALS|
Ragdoll System")
662 bool bRagdollOnGround = false;
664 UPROPERTY(BlueprintReadOnly, Category = "ALS|
Ragdoll System")
665 bool bRagdollFaceUp = false;
667 UPROPERTY(BlueprintReadOnly, Category = "ALS|
Ragdoll System")
668 FVector LastRagdollVelocity = FVector::ZeroVector;
670 UPROPERTY(BlueprintReadOnly, Replicated, Category = "ALS|
Ragdoll System")
671 FVector TargetRagdollLocation = FVector::ZeroVector;
674 float ServerRagdollPull = 0.0f;
677 EVisibilityBasedAnimTickOption DefVisBasedTickOp;
679 bool bPreRagdollURO = false;
683 FVector PreviousVelocity = FVector::ZeroVector;
685 float PreviousAimYaw = 0.0f;
687 UPROPERTY(BlueprintReadOnly, Category = "ALS|Camera")
691 float LastStanceInputTime = 0.0f;
694 FTimerHandle OnLandedFrictionResetTimer;
697 FRotator AimingRotation = FRotator::ZeroRotator;
700 bool bEnableNetworkOptimizations = false;
702 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "ALS|Camera")
703 bool bForceEnableNetworkOptimizationsOff = false;
711 void SetupCapsuleComponent() const;
712 void SetupMeshComponent() const;