47 virtual void OnChargeBegin()
override;
48 virtual void OnChargeEnd()
override;
49 virtual void OnChargePhaseChanged(
float RotSpeedMul)
override;
50 virtual void CacheAttackContext()
override;
51 virtual UChargeStateComponent* GetChargeStateComponent()
const override;
55 UCameraZoomComponent* GetCameraDistanceComponent()
const;
56 UCameraTargetingComponent* GetPlayerTargetingComponent()
const;
59 UFUNCTION(BlueprintCallable, Category =
"Player|Respawn")
60 void RespawnAtTransform(
const FTransform& RespawnTransform);
65 return TargetingComponent;
70 return MotionWarpingComponent;
76 return GFrameCounter - RawMovementInputFrame <= 1 ? RawMovementInputDirection : FVector::ZeroVector;
81 return PlayerExtendedData ? PlayerExtendedData->DefaultMappingContext :
nullptr;
86 return PlayerMovementComponent;
91 return ProjectileLauncherComponent;
96 return WeaponLoadoutComponent;
101 return PlayerExtendedData->DefaultWeaponTag;
111 return Controller ? Cast<APlayerController>(Controller) :
nullptr;
116 return CharacterGhostEffectComponent;
120 virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
override;
121 virtual void PossessedBy(AController* NewController)
override;
122 virtual void PostInitializeComponents()
override;
123 virtual void BeginPlay()
override;
124 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
126 void InitializePlayerControllerDependencies(APlayerController* PlayerController);
127 void GASInputPressed(FGameplayTag InputTag);
128 void GASInputReleased(FGameplayTag InputTag);
130 FGameplayAbilitySpec* FindAbilitySpecByInputTag(
const FGameplayTag& InputTag)
const;
132 void RotateCamera(
const FInputActionValue& Value);
133 void OnMouseWheel(
const FInputActionValue& Value);
135 void Move(
const FInputActionValue& Value);
136 void OnMoveStarted(
const FInputActionValue& Value);
137 bool CanMove()
const;
140 void OnTargetingChanged(
bool bActive);
141 void ChangeAimState();
144 void BeginChargeFacingTurn();
145 void UpdateChargeFacingTurn();
149 virtual
void OnDeath();
150 virtual
void SetDead() override;
153 virtual
void InitializeAttributes() override;
159 virtual UAnimMontage* GetHitReactMontage() const override;
162 void ApplyDamageTakenEffect();
165 void OnAnyGameplayEffectApplied(UAbilitySystemComponent* SourceASC, const FGameplayEffectSpec& Spec, FActiveGameplayEffectHandle);
168 bool RecordHitStun();
169 void TriggerKnockDown(UAbilitySystemComponent* SourceASC, const FGameplayEffectSpec& Spec);
170 void ResetHitStunTimes();
172 void OnHitStunTagChanged(const FGameplayTag CallbackTag, int32 NewCount);
179 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "MotionWarping")
180 TObjectPtr<UPlayerMotionWarpingComponent> MotionWarpingComponent;
182 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Targeting")
183 TObjectPtr<UTargetingComponent> TargetingComponent;
185 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Movement")
186 TObjectPtr<UPlayerMovementComponent> PlayerMovementComponent;
188 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Charge")
189 TObjectPtr<UChargeStateComponent> ChargeStateComponent;
191 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Projectile")
192 TObjectPtr<UProjectileLauncherComponent> ProjectileLauncherComponent;
194 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapon")
195 TObjectPtr<UWeaponLoadoutComponent> WeaponLoadoutComponent;
197 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapon")
198 TObjectPtr<USkeletalMeshComponent> WeaponMesh;
200 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "Camera")
201 TObjectPtr<UCharacterGhostEffectComponent> CharacterGhostEffectComponent;
203 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Data)
207 bool bPlayerControllerDependenciesInitialized = false;
210 float LookSensitivity = 1.0f;
212 bool bIsCharging = false;
213 bool bIsLockedOn = false;
215 float ChargeFacingTargetYaw = 0.0f;
216 float ChargeFacingTurnTolerance = 1.0f;
217 FTimerHandle ChargeFacingTurnTimerHandle;
219 FVector RawMovementInputDirection = FVector::ZeroVector;
220 uint64 RawMovementInputFrame = 0;
221 TArray<
double> RecentHitStunTimes;
223 FDelegateHandle HitStunTagDelegateHandle;
224 FDelegateHandle GEAppliedDelegateHandle;
Definition MainPlayerCharacter.h:39
FORCEINLINE UPlayerMotionWarpingComponent * GetMotionWarpingComponent() const
Definition MainPlayerCharacter.h:68
FORCEINLINE USkeletalMeshComponent * GetWeaponMeshComponent() const
Definition MainPlayerCharacter.h:104
FORCEINLINE UTargetingComponent * GetTargetingComponent() const
Definition MainPlayerCharacter.h:63
FORCEINLINE UWeaponLoadoutComponent * GetWeaponLoadoutComponent() const
Definition MainPlayerCharacter.h:94
FORCEINLINE UCharacterGhostEffectComponent * GetCharacterGhostWarpEffectComponent() const
Definition MainPlayerCharacter.h:114
FORCEINLINE UPlayerMovementComponent * GetPlayerMovementComponent() const
Definition MainPlayerCharacter.h:84
FORCEINLINE FGameplayTag GetDefaultWeaponTag() const
Definition MainPlayerCharacter.h:99
FORCEINLINE UProjectileLauncherComponent * GetProjectileLauncherComponent() const
Definition MainPlayerCharacter.h:89
FORCEINLINE APlayerController * GetPlayerController() const
Definition MainPlayerCharacter.h:109
FORCEINLINE FVector GetRawMovementInputDirection() const
Definition MainPlayerCharacter.h:74
FORCEINLINE UInputMappingContext * GetDefaultMappingContext() const
Definition MainPlayerCharacter.h:79