Space Plunder
Loading...
Searching...
No Matches
ACustomPlayerCharacter Class Reference

#include <CustomPlayerCharacter.h>

Inheritance diagram for ACustomPlayerCharacter:
ACustomCharacterBase IHitMarkerInterface AALSCharacter ICharacterWeaponPickups ICharacterInterface IBaseInterface IBaseServer AALSBaseCharacter AInteractableCharacter IALSCharacterInterface ACharacterBase ICharacterBaseInterface ISaveLoad IBaseInterface ACampaignPlayerCharacter AMultiplayerPlayerCharacter

Public Member Functions

 ACustomPlayerCharacter (const FObjectInitializer &ObjectInitializer)
 
virtual void Tick (float DeltaTime) override
 
virtual void SetupPlayerInputComponent (class UInputComponent *PlayerInputComponent) override
 
virtual void SetupComponents (AController *ControllerReference=nullptr, AActor *HUDReference=nullptr, const bool bIsLocallyControlled=false) override
 
virtual void OnPawnSpawned () override
 
void UseAction (const bool bValue)
 
void GrabAction (const bool bValue) const
 
void ShootAction (const bool bValue)
 
void ReloadAction (const bool bValue) const
 
void AutoModeAction (const bool bValue) const
 
void ThrowAction (const bool bValue) const
 
void SwapWeaponAction (const bool bValue) const
 
void HolsterAction (const bool bValue) const
 
void MeleeAction (const bool bValue) const
 
void QuickSaveAction (const bool bValue)
 
void QuickLoadAction (const bool bValue)
 
void PingAction (const bool bValue) const
 
void PingMenuAction () const
 
void SelectionUpAction (const bool bValue) const
 
virtual void AimAction (const bool bValue) override
 
virtual void HitMarker (const AActor *ActorHit, const float Damage, const UDamageType *DamageType, const FName HitBone, const FVector HitLocation, const bool bKillingHit=false, const bool bInjuredPart=false) override
 
virtual void Client_HitMarker (const AActor *ActorHit, const float Damage, const UDamageType *DamageType, const FName HitBone, const FVector HitLocation, const bool bKillingHit=false, const bool bInjuredPart=false)
 
virtual void StartThreatIndication (AActor *PawnThreat) override
 
virtual void UpdateThreatIndication (const FVector &Location, const float DetectionAmount) override
 
virtual void StopThreatIndication () override
 
virtual void OnCapsuleBeginOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
 
virtual void OnCapsuleEndOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex)
 
virtual void InteractionTraceEventHit (const FHitResult &HitResult)
 Old Method !REMOVE.
 
virtual void CameraUpAction_Implementation (float Value) override
 
virtual void CameraRightAction_Implementation (float Value) override
 
virtual EALSGait GetAllowedGait () const override
 
virtual FVector GetAimDownSightCameraTarget () const override
 
virtual float GetAimDownSightFOV () const override
 
virtual bool GetCanAimDownSights () const override
 
void CameraInputStopped ()
 
virtual void SlideStart ()
 
virtual void SlideStop ()
 
void CalculateFloorInfluence ()
 
float GetSlideTime () const
 
void SetDebugging (const FString &Component="", const bool bOn=true)
 
- Public Member Functions inherited from ACustomCharacterBase
 ACustomCharacterBase (const FObjectInitializer &ObjectInitializer)
 
bool IsCrouching () const
 
virtual void NotifyHit (UPrimitiveComponent *MyComp, AActor *Other, UPrimitiveComponent *OtherComp, bool bSelfMoved, FVector HitLocation, FVector HitNormal, FVector NormalImpulse, const FHitResult &Hit) override
 
virtual ECharacterType GetCharacterType () const override
 
virtual EFactionType GetCharacterFaction () const override
 
virtual bool GetIsDead () const override
 
void OnStartThreatIndication (AActor *PawnThreat)
 
void OnStopThreatIndication ()
 
void OnUpdateThreatIndication (const FVector &Location, const float DetectionAmount)
 
virtual USkeletalMeshComponent * GetCharacterSecondaryMesh () const override
 
virtual void SetCharacterVehicleMode (const EVehicleMode Mode) override
 
virtual bool GetCharacterHealth (float &Health, float &MaxHealth) const override
 
void OnCharacterVehicleModeChanged (const EVehicleMode Mode)
 
virtual void ForceWakeUp ()
 
virtual void ReceiveStartFocus_Implementation (AActor *Caller) override
 
virtual void ReceiveEndFocus_Implementation (AActor *Caller) override
 
virtual void SetGravityEnabled (const bool bValue) override
 
virtual FString GetObjectDisplayName () const override
 
virtual void DestroyActor (AActor *ActorToDestroy) override
 
virtual void DestroyActorOnClient (AActor *ActorToDestroy) override
 
virtual bool GetIsCharacter () const override
 
void SetPlayerName (FString Username)
 
virtual void WeaponStateChanged (const struct FPlayerWeaponState &PlayerWeaponState)
 
virtual void ForwardMovementAction (float Value) override
 
virtual void RightMovementAction (float Value) override
 
virtual void RagdollStart () override
 
virtual void RagdollEnd () override
 
virtual void Landed (const FHitResult &Hit) override
 
virtual bool CanSprint () const override
 
virtual void SprintAction (bool bValue) override
 
virtual void JumpAction (bool bValue) override
 
virtual void OnJumped_Implementation () override
 
void FlyUp ()
 
void FlyDown ()
 
void Server_OnPawnSpawn ()
 
void ReceiveOnPawnSpawn ()
 
- Public Member Functions inherited from AALSCharacter
 AALSCharacter (const FObjectInitializer &ObjectInitializer)
 
void UpdateHeldObject ()
 
void ClearHeldObject ()
 
void AttachToHand (UStaticMesh *NewStaticMesh, USkeletalMesh *NewSkeletalMesh, class UClass *NewAnimClass, bool bLeftHand, FVector Offset)
 
virtual ECollisionChannel GetThirdPersonTraceParams (FVector &TraceOrigin, float &TraceRadius) override
 
virtual FTransform GetThirdPersonPivotTarget () override
 
virtual FVector GetFirstPersonCameraTarget () override
 
- Public Member Functions inherited from AALSBaseCharacter
 AALSBaseCharacter (const FObjectInitializer &ObjectInitializer)
 
FORCEINLINE class UALSCharacterMovementComponentGetALSMovementComponent () const
 
virtual FVector GetLeftHandGoal () const override
 
virtual FVector GetRightHandGoal () const override
 
virtual EALSOverlayState GetCurrentOverlayState () const override
 
virtual bool GetIsMantling () const override
 
virtual FORCEINLINE IALSGravityMovementInterfaceGetALSGravityMovementInterface () const override
 
virtual void Ragdoll () override
 
virtual void PostInitializeComponents () override
 
virtual void GetLifetimeReplicatedProps (TArray< FLifetimeProperty > &OutLifetimeProps) const override
 
UAnimMontage * GetGetUpAnimation (bool bRagdollFaceUpState)
 
void Server_SetMeshLocationDuringRagdoll (FVector MeshLocation)
 
void SetMovementState (EALSMovementState NewState, bool bForce=false)
 
EALSMovementState GetMovementState () const
 
EALSMovementState GetPrevMovementState () const
 
void SetMovementAction (EALSMovementAction NewAction, bool bForce=false)
 
EALSMovementAction GetMovementAction () const
 
void SetStance (EALSStance NewStance, bool bForce=false)
 
EALSStance GetStance () const
 
void SetOverlayOverrideState (int32 NewState)
 
int32 GetOverlayOverrideState () const
 
void SetGait (EALSGait NewGait, bool bForce=false)
 
EALSGait GetGait () const
 
EALSGait GetDesiredGait () const
 
virtual void SetRotationMode (EALSRotationMode NewRotationMode, bool bForce=false)
 
void Server_SetRotationMode (EALSRotationMode NewRotationMode, bool bForce)
 
EALSRotationMode GetRotationMode () const
 
virtual void SetViewMode (EALSViewMode NewViewMode, bool bForce=false)
 
void Server_SetViewMode (EALSViewMode NewViewMode, bool bForce)
 
EALSViewMode GetViewMode () const
 
void SetOverlayState (EALSOverlayState NewState, bool bForce=false)
 
void SetGroundedEntryState (EALSGroundedEntryState NewState)
 
void Server_SetOverlayState (EALSOverlayState NewState, bool bForce)
 
EALSOverlayState GetOverlayState () const
 
EALSGroundedEntryState GetGroundedEntryState () const
 
void EventOnLanded ()
 
void Multicast_OnLanded ()
 
void EventOnJumped ()
 
void Multicast_OnJumped ()
 
void Server_PlayMontage (UAnimMontage *Montage, float PlayRate)
 
void Multicast_PlayMontage (UAnimMontage *Montage, float PlayRate)
 
void Server_StopMontage (const float InBlendOutTime, const UAnimMontage *Montage)
 
void Multicast_StopMontage (const float InBlendOutTime, const UAnimMontage *Montage)
 
void ReplicatedRagdollStart ()
 
void Server_RagdollStart ()
 
void Multicast_RagdollStart ()
 
void ReplicatedRagdollEnd ()
 
void Server_RagdollEnd (FVector CharacterLocation)
 
void Multicast_RagdollEnd (FVector CharacterLocation)
 
EALSStance GetDesiredStance () const
 
void SetDesiredStance (EALSStance NewStance)
 
void Server_SetDesiredStance (EALSStance NewStance)
 
void SetDesiredGait (EALSGait NewGait)
 
void Server_SetDesiredGait (EALSGait NewGait)
 
EALSRotationMode GetDesiredRotationMode () const
 
virtual void SetDesiredRotationMode (EALSRotationMode NewRotMode)
 
void Server_SetDesiredRotationMode (EALSRotationMode NewRotMode)
 
void SetActorLocationAndTargetRotation (FVector NewLocation, FRotator NewRotation)
 
bool HasMovementInput () const
 
FALSMovementSettings GetTargetMovementSettings () const
 
EALSGait GetActualGait (EALSGait AllowedGait) const
 
void OnBreakfall ()
 
virtual void OnBreakfall_Implementation ()
 
virtual float PlayReplicatedMontage (UAnimMontage *MontageToPlay, const float InPlayRate, const EMontagePlayReturnType ReturnValueType, const float InTimeToStartMontageAt, const bool bStopAllMontages) override
 
virtual void StopReplicatedMontage (const float InBlendOutTime, const UAnimMontage *Montage) override
 
void Replicated_PlayMontage (UAnimMontage *Montage, float PlayRate)
 
virtual void Replicated_PlayMontage_Implementation (UAnimMontage *Montage, float PlayRate)
 
UAnimMontage * GetRollAnimation ()
 
float GetAnimCurveValue (FName CurveName) const
 
void SetVisibleMesh (USkeletalMesh *NewSkeletalMesh)
 
void Server_SetVisibleMesh (USkeletalMesh *NewSkeletalMesh)
 
bool IsRightShoulder () const
 
void SetRightShoulder (const bool bNewRightShoulder)
 
bool IsAimingDownSights () const
 
void SetAimDownSights (const bool bNewAimDownSights)
 
void GetCameraParameters (float &TPFOVOut, float &FPFOVOut, bool &bRightShoulderOut) const
 
void SetCameraBehavior (UALSPlayerCameraBehavior *CamBeh)
 
FVector GetAcceleration () const
 
bool IsMoving () const
 
bool GetIsFlying () const
 
FVector GetMovementInput () const
 
float GetMovementInputAmount () const
 
float GetSpeed () const
 
FRotator GetAimingRotation () const
 
float GetAimYawRate () const
 
void CameraUpAction (float Value)
 
void CameraRightAction (float Value)
 
virtual void CameraTapAction ()
 
virtual void CameraHeldAction ()
 
void WalkAction ()
 
void RagdollAction ()
 
void VelocityDirectionAction ()
 
void LookingDirectionAction ()
 
- Public Member Functions inherited from AInteractableCharacter
 AInteractableCharacter (const FObjectInitializer &ObjectInitializer)
 
virtual USceneComponent * GetThrowPoint () const override
 
virtual void ReceiveStartFocus (AActor *Caller)
 
virtual void ReceiveEndFocus (AActor *Caller)
 
virtual void ReceiveOnInteract (AActor *Caller, const EInteractionType InteractionType)
 
virtual void ReceiveOnEndInteract (AActor *Caller)
 
virtual void ReceiveOnOverlap (AActor *Caller)
 
virtual void ReceiveOnEndOverlap (AActor *Caller)
 
virtual void ReceiveToggleSwitch (AActor *Caller, const bool bOn)
 
- Public Member Functions inherited from ACharacterBase
 ACharacterBase (const FObjectInitializer &ObjectInitializer)
 
virtual bool SaveGame () override
 
virtual bool LoadGame () override
 
virtual USkeletalMeshComponent * GetCharacterMesh () const override
 
virtual UPrimitiveComponent * GetPrimitiveComponent () override
 
virtual void RagdollStop () override
 
virtual FCharacterBaseSkillsGetCharacterSkills () override
 
virtual bool GetAudioSocketLocation (const FName &AudioSocket, FVector &Location) const override
 
virtual FCharacterInfo GetCharacterInfo () const override
 
virtual void GetThrowStats (FTransform &OutTransform, FVector &OutThrowForce) const override
 
virtual void CharacterModeChanged (const FGameplayTag &NewMode) override
 
virtual int32 GetStrength () const
 
virtual int32 GetPerception () const
 
virtual int32 GetEndurance () const
 
virtual int32 GetCharisma () const
 
virtual int32 GetIntelligence () const
 
virtual int32 GetAgility () const
 
virtual int32 GetWeaponSkill () const
 
virtual int32 GetStealth () const
 
virtual int32 GetLuck () const
 
virtual int32 GetSkillPoints () const
 

Public Attributes

bool bMovingAxis = false
 
float CurrentCameraUp = 0.0f
 
float CurrentCameraRight = 0.0f
 
FTimerHandle CameraTimerHandle
 
- Public Attributes inherited from AALSBaseCharacter
float GravityMultiplier = 9.8f
 
FJumpPressedSignature JumpPressedDelegate
 
FOnJumpedSignature OnJumpedDelegate
 
FRagdollStateChangedSignature RagdollStateChangedDelegate
 
- Public Attributes inherited from ACharacterBase
FOnCharacterDeath OnCharacterDeath
 

Protected Member Functions

void ServerSetFiring (const bool bFiring)
 
void Multicast_SetFiring (const bool bFiring)
 
virtual void BeginPlay () override
 
virtual void SaveGameData () override
 
virtual void LoadGameData () override
 
virtual bool SaveCharacterData () override
 
virtual bool LoadCharacterData () override
 
virtual void LoadComponentsSaveData () override
 
virtual void SaveComponentsData () override
 
virtual void OnRotationModeChanged (EALSRotationMode PreviousRotationMode) override
 
virtual bool CanJumpInternal_Implementation () const override
 
virtual bool CanCrouch () const override
 
virtual void StanceAction () override
 
virtual void FirePressedAction () override
 
virtual void InteractionDataUpdated () const override
 
virtual int32 PickupGunEvent (const FWeaponData_T In_WeaponData) override
 
virtual bool PickupGunCheck (const FWeaponData_T &In_WeaponData) override
 
virtual bool PickupAttachmentCheck (const FWeaponAttachment &In_WeaponAttachmentData) override
 
virtual void PickupAttachmentEvent (const FString &WeaponAttachmentID) override
 
virtual void WeaponEquipped (const TArray< FWeaponData_T > &Weapons, const int32 CurrentWeaponIndex) override
 
virtual void OnFullDamageHit (AController *InstigatedBy, const float TotalDamage, const UDamageType *DamageType, const FName &HitBone, const FVector &HitLocation, const bool bKillingHit, const bool bInjuredPart) override
 
virtual void OnDeath (AActor *OwningActor, const EDeathType DeathType, AActor *DeathCauser, AController *DeathInstigator) override
 
void TakeAnyDamage (AActor *DamagedActor, float Damage, const UDamageType *DamageType, AController *InstigatedBy, AActor *DamageCauser)
 
virtual void UpdateStaminaHUD () override
 
void OnStealthTakedown (const AActor *Victim, const bool bLethal=true)
 
- Protected Member Functions inherited from ACustomCharacterBase
bool GetHandsTied () const
 
virtual void SetHandsTied (const bool bValue=true)
 
virtual void AimAssistOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, const int32 OtherBodyIndex, const bool bFromSweep, const FHitResult &SweepResult)
 
void OnAimAssistOverlap (UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, const int32 OtherBodyIndex, const bool bFromSweep, const FHitResult &SweepResult)
 
virtual void AimAssistRevertSize ()
 
virtual void OnHealthAndShieldChanged (float Health, float MaxHealth, float ShieldHealth, float MaxShieldHealth, const class UDamageType *DamageType)
 
virtual void OnInjuredBodyPart (const EBodyPartName InjuredBodyPart, const FVector &HitLocation, const TArray< FBodyPart > &AllBodyParts)
 
virtual void OnShieldBreak ()
 
virtual void OnKnockedOut (const class UDamageType *DamageType, const float WaitTime)
 
virtual void OnWakeUp ()
 
FPlayerDeath GetPlayerDeathInfo (const EDeathType DeathType, AActor *DeathCauser, const AController *DeathInstigator) const
 
USkeletalMeshComponent * GetCustomMesh () const
 
virtual void OnDeathReplicated ()
 
virtual void Sprinting ()
 
virtual void StopSprinting ()
 
virtual void RechargeStamina ()
 
virtual void SetMaxStamina (const float AmountToAdd)
 
void OnCharacterReadyReplicated ()
 
- Protected Member Functions inherited from AALSCharacter
virtual void OnOverlayStateChanged (EALSOverlayState PreviousState) override
 
void UpdateHeldObjectAnimations ()
 
- Protected Member Functions inherited from AALSBaseCharacter
void RagdollUpdate (float DeltaTime)
 
void SetActorLocationDuringRagdoll (float DeltaTime)
 
virtual void OnMovementModeChanged (EMovementMode PrevMovementMode, uint8 PreviousCustomMode=0) override
 
virtual void OnMovementStateChanged (EALSMovementState PreviousState)
 
virtual void OnMovementActionChanged (EALSMovementAction PreviousAction)
 
virtual void OnStanceChanged (EALSStance PreviousStance)
 
virtual void OnGaitChanged (EALSGait PreviousGait)
 
virtual void OnViewModeChanged (EALSViewMode PreviousViewMode)
 
virtual void OnVisibleMeshChanged (const USkeletalMesh *PreviousSkeletalMesh)
 
virtual void OnStartCrouch (float HalfHeightAdjust, float ScaledHalfHeightAdjust) override
 
virtual void OnEndCrouch (float HalfHeightAdjust, float ScaledHalfHeightAdjust) override
 
void OnLandFrictionReset ()
 
void SetEssentialValues (float DeltaTime)
 
void UpdateCharacterMovement ()
 
void UpdateGroundedRotation (float DeltaTime)
 
void UpdateInAirRotation (float DeltaTime)
 
void SmoothCharacterRotation (FRotator Target, float TargetInterpSpeed, float ActorInterpSpeed, float DeltaTime)
 
float CalculateGroundedRotationRate () const
 
void LimitRotation (float AimYawMin, float AimYawMax, float InterpSpeed, float DeltaTime)
 
void SetMovementModel ()
 
void ForceUpdateCharacterState ()
 
void OnRep_RotationMode (EALSRotationMode PrevRotMode)
 
void OnRep_ViewMode (EALSViewMode PrevViewMode)
 
void OnRep_OverlayState (EALSOverlayState PrevOverlayState)
 
void OnRep_VisibleMesh (const USkeletalMesh *PreviousSkeletalMesh)
 
void HandleNonMovingRotation (float DeltaTime)
 
- Protected Member Functions inherited from AInteractableCharacter
virtual void InteractionDataUpdated ()
 
- Protected Member Functions inherited from ACharacterBase
virtual void FallOver (const float WaitTime)
 
void OnFallOver (const float WaitTime)
 
virtual void GetUpFromFall ()
 
void OnGetUpFromFall ()
 
void OnRep_CharacterDeath ()
 
IPlayerControllerInterfaceGetPlayerControllerInterface ()
 
IPlayerStateInterfaceGetPlayerStateInterface ()
 
void LogDebugError (const FString &Message) const
 
void LogDebugError (const FString &Message, const int32 Value) const
 
void LogDebugError (const FString &Message, const float Value) const
 
void LogDebugWarning (const FString &Message) const
 
void LogDebugWarning (const FString &Message, const int32 Value) const
 
void LogDebugWarning (const FString &Message, const float Value) const
 
void LogDebugMessage (const FString &Message, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const int32 Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const float Value, const bool bWarning=false, const bool bError=false) const
 
void LogDebugMessage (const FString &Message, const bool bValue, const bool bWarning, const bool bError) const
 
void LogOnScreenMessage (const int32 Key, const FString &Message, FColor Color=FColor::Green) const
 
void SetCategoryName (const FLogCategoryBase &Category)
 

Protected Attributes

bool bFiringWeapon = false
 
float FiringWeaponAimDownDelay = 5.0f
 
bool bUseGunAimDownSight = true
 
FAimAssist CurrentAimAssist
 
AActor * CurrentAimAssistTarget = nullptr
 
int32 CurrentAimAssistTargetHits = 0
 
float GrabberThrowMultiplier = 2.0f
 
float SlideTime = 2.0f
 
class UPlayerCharacterShootingComponent * PlayerShootingComponent
 
class UCompanionMasterComponent * CompanionMasterComponent
 
class UCharacterGrabberComponent * GrabberComponent
 
class UPhysicsHandleComponent * PhysicsHandleComponent
 
FStealthData StealthData
 
bool bStealthAttachToCustomMesh = true
 
bool bStealthAttachToCapsule = false
 
bool bStealthAttachToCharacterMesh = false
 
bool bStealthWeldBodies = false
 
EAttachmentRule StealthLocationRule = EAttachmentRule::KeepWorld
 
EAttachmentRule StealthRotationRule = EAttachmentRule::KeepWorld
 
bool bStealthAttach = false
 
TArray< UAnimMontage * > StealthTakedownAnims
 
- Protected Attributes inherited from ACustomCharacterBase
class UCharacterHealthComponent * CharacterHealthComponent
 
class UHealthBarWidgetComponent * HealthBarComponent
 
class UPhysicalAnimationComponent * PhysicalAnimationComponent
 
class UPhysicalHitReactionsComponentPhysicalHitReactionComponent
 
class UMeleeComponent * MeleeComponent
 
class UFootstepFXHandler * FootstepsComponent
 
class USphereComponent * AimAssistSphereComponent
 Remove? use sphere trace instead //.
 
class URecoilAnimationComponent * RecoilAnimationComponent
 
class UALSMantleComponentMantleComponentReference
 
USkeletalMeshComponent * CustomSkeletalMesh
 
float MultiplayerStartDelay = 0.5f
 
float FallDamageOffset = 550.0f
 
float FallDamageDivisor = 5.0f
 
ECharacterType CharacterType = ECharacterType::Human
 
FString DisplayName = "Default Name"
 
bool bForceWalkWhileAiming = true
 
bool bToggleSprint = true
 
bool bSprinting = true
 
float SprintDeadZone = 0.5f
 
float FlyingScaleValue = 1.0f
 
bool bIsFlyingUp = false
 
bool bIsFlyingDown = false
 
float Stamina = 100.0f
 
float MinRequiredStamina = 0.2f
 
float MaxStamina = 60.0f
 
float MaxStaminaDefault = 60.0f
 
float MaxPossibleStamina = 150.0f
 
float MinStamina = 10.0f
 
float StaminaDepletionRate = 0.05f
 
float StaminaDepletionIncrement = 0.5f
 
float StaminaRechargeRate = 0.05f
 
float StaminaRechargeIncrement = 0.5f
 
float StaminaRechargeDelayTime = 2.0f
 
float StaminaJumpAmount = 10.0f
 
float ThrowStrength = 500.0f
 
bool bHandsTied = false
 
float AimAssistRadius = 160.0f
 
float AimAssistShrinkTime = 3.0f
 
bool bIsNPC = false
 
bool bIsDead = false
 
bool bCharacterReady = false
 
- Protected Attributes inherited from AALSCharacter
TObjectPtr< USceneComponent > HeldObjectRoot = nullptr
 
TObjectPtr< USkeletalMeshComponent > SkeletalMesh = nullptr
 
TObjectPtr< UStaticMeshComponent > StaticMesh = nullptr
 
- Protected Attributes inherited from AALSBaseCharacter
TObjectPtr< UALSCharacterMovementComponentMyCharacterMovementComponent
 
bool bOptimizeGroundRotation = true
 
bool bOptimizeAnimValues = true
 
FALSAnimValues AnimValues
 
IALSAnimInterfaceAnimInstanceInterface
 
EALSRotationMode DesiredRotationMode = EALSRotationMode::LookingDirection
 
EALSGait DesiredGait = EALSGait::Running
 
EALSStance DesiredStance = EALSStance::Standing
 
float LookUpDownRate = 1.25f
 
float LookLeftRightRate = 1.25f
 
float RollDoubleTapTimeout = 0.3f
 
bool bBreakFall = false
 
bool bSprintHeld = false
 
float ThirdPersonFOV = 90.0f
 
float FirstPersonFOV = 90.0f
 
bool bRightShoulder = false
 
bool bAimDownSights = false
 
FDataTableRowHandle MovementModel
 
FVector Acceleration = FVector::ZeroVector
 
bool bIsMoving = false
 
bool bIsFlying = false
 
bool bHasMovementInput = false
 
FRotator LastVelocityRotation
 
FRotator LastMovementInputRotation
 
float Speed = 0.0f
 
float MovementInputAmount = 0.0f
 
float AimYawRate = 0.0f
 
float EasedMaxAcceleration = 0.0f
 
FVector ReplicatedCurrentAcceleration = FVector::ZeroVector
 
FRotator ReplicatedControlRotation = FRotator::ZeroRotator
 
TObjectPtr< USkeletalMesh > VisibleMesh = nullptr
 
EALSOverlayState OverlayState = EALSOverlayState::Default
 
EALSGroundedEntryState GroundedEntryState
 
EALSMovementState MovementState = EALSMovementState::None
 
EALSMovementState PrevMovementState = EALSMovementState::None
 
EALSMovementAction MovementAction = EALSMovementAction::None
 
EALSRotationMode RotationMode = EALSRotationMode::LookingDirection
 
EALSGait Gait = EALSGait::Walking
 
EALSStance Stance = EALSStance::Standing
 
EALSViewMode ViewMode = EALSViewMode::ThirdPerson
 
int32 OverlayOverrideState = 0
 
FALSMovementStateSettings MovementData
 
FRotator TargetRotation = FRotator::ZeroRotator
 
FRotator InAirRotation = FRotator::ZeroRotator
 
float YawOffset = 0.0f
 
bool bBreakfallOnLand = true
 
float BreakfallOnLandVelocity = 700.0f
 
bool bReversedPelvis = false
 
bool bRagdollOnLand = false
 
float RagdollOnLandVelocity = 1000.0f
 
bool bRagdollOnGround = false
 
bool bRagdollFaceUp = false
 
FVector LastRagdollVelocity = FVector::ZeroVector
 
FVector TargetRagdollLocation = FVector::ZeroVector
 
float ServerRagdollPull = 0.0f
 
EVisibilityBasedAnimTickOption DefVisBasedTickOp
 
bool bPreRagdollURO = false
 
FVector PreviousVelocity = FVector::ZeroVector
 
float PreviousAimYaw = 0.0f
 
TObjectPtr< UALSPlayerCameraBehaviorCameraBehavior
 
float LastStanceInputTime = 0.0f
 
FTimerHandle OnLandedFrictionResetTimer
 
FRotator AimingRotation = FRotator::ZeroRotator
 
bool bEnableNetworkOptimizations = false
 
bool bForceEnableNetworkOptimizationsOff = false
 
- Protected Attributes inherited from AInteractableCharacter
USceneComponent * ThrowPoint
 
class UInteractionComponent * InteractionComponent
 
class UInteractableActorComponent * InteractableActorComponent
 
class USphereComponent * InteractionSphere
 
class UInventoryComponent * InventoryComponent
 
class UAudioReactionComponent * AudioReactionComponent
 
bool bAlwaysShowOutline = false
 
- Protected Attributes inherited from ACharacterBase
bool bDebuggingMode = false
 
FCharacterBaseSkills CharacterSkills
 
FCharacterInfo CharacterInfo
 
bool bDead = false
 
float PickupThrowIntensity = 500.0f
 
bool bCanBePushed = false
 
float HitVelocityThreshold = 50.0f
 
float HitVelocityMultiplier = 5.0f
 
float HitReactionMultiplier = 0.01f
 
bool bPushHitReaction = true
 
bool bAddMovementInput = true
 
bool bAddCharacterMovement = true
 
float PushFallVelocityThreshold = 200.0f
 
float PushedFallVelocityThreshold = 500.0f
 
float PushedFallOverWaitTime = 2.0f
 

Private Member Functions

void StealthTakedown (const bool bLethal=true)
 
void StealthTakedownComplete ()
 
void StealthKnockoutComplete ()
 
void FiringWeaponAimDown ()
 

Private Attributes

AActor * StealthActor = nullptr
 
class IStealthInterfaceStealthActorInterface = nullptr
 
bool bStealthTakedownAvailable = false
 
bool bPerformingStealthTakedown = false
 
FTimerHandle StealthTakedownTimerHandle
 
FTimerHandle FiringWeaponTimerHandle
 
FTimerHandle CompanionContextTimerHandle
 
FTimerHandle SlideTimerHandle
 
AActor * HUD
 

Constructor & Destructor Documentation

◆ ACustomPlayerCharacter()

ACustomPlayerCharacter::ACustomPlayerCharacter ( const FObjectInitializer & ObjectInitializer)
47 : ACustomCharacterBase(ObjectInitializer)
48{
49 PlayerShootingComponent = CreateDefaultSubobject<UPlayerCharacterShootingComponent>(TEXT("PlayerShootingComponent"));
50
51 CompanionMasterComponent = CreateDefaultSubobject<UCompanionMasterComponent>(TEXT("CompanionMasterComponent"));
52 //- Bind the interaction function of Traceforward and hitting an object to updating the Companion widget //
53 // InteractionComponent->OnTraceEventHit.AddDynamic(CompanionMasterComponent, &UCompanionMasterComponent::UpdateInteractionTarget);
54 //@TODO check both dynamics are bound ^^ VV
55 // InteractionComponent->OnTraceEventHit.AddDynamic(this, &ACustomPlayerCharacter::InteractionTraceEventHit);
56 GrabberComponent = CreateDefaultSubobject<UCharacterGrabberComponent>(TEXT("Grabber"));
57 PhysicsHandleComponent = CreateDefaultSubobject<UPhysicsHandleComponent>(TEXT("Physics Handle"));
58 PhysicsHandleComponent->SetIsReplicated(true);
59
60 // MotionWarping = CreateDefaultSubobject<UMotionWarpingComponent>(TEXT("Motion Warping"));
61
62 if(InteractionComponent != nullptr)
63 {
64 InteractionComponent->bBindOverlap = true;
65 InteractionComponent->TraceTickRate = 0.01f;
66 }
67 if(CharacterHealthComponent != nullptr)
68 {
69 CharacterHealthComponent->bHasShield = true;
70 }
71 if(AudioReactionComponent != nullptr)
72 {
73 AudioReactionComponent->bAutoActivate = true;
74 }
75
76 OnTakeAnyDamage.AddUniqueDynamic(this, &ACustomPlayerCharacter::TakeAnyDamage);
77 // AimAssistInfluence = 0.1f;
78 bCanBePushed = false;
79 bAlwaysShowOutline = true;
80 //- Create the ProximityVoiceComponent instance //
81 // ProximityVoiceComponent = CreateDefaultSubobject<UPlayerVoiceComponent>(TEXT("ProximityVoiceComponent"));
82}
bool bCanBePushed
Definition CharacterBase.h:161
ACustomCharacterBase(const FObjectInitializer &ObjectInitializer)
Definition CustomCharacterBase.cpp:40
class UCharacterHealthComponent * CharacterHealthComponent
Definition CustomCharacterBase.h:190
class UPlayerCharacterShootingComponent * PlayerShootingComponent
Definition CustomPlayerCharacter.h:153
class UCompanionMasterComponent * CompanionMasterComponent
Definition CustomPlayerCharacter.h:160
void TakeAnyDamage(AActor *DamagedActor, float Damage, const UDamageType *DamageType, AController *InstigatedBy, AActor *DamageCauser)
Definition CustomPlayerCharacter.cpp:899
class UPhysicsHandleComponent * PhysicsHandleComponent
Definition CustomPlayerCharacter.h:164
class UCharacterGrabberComponent * GrabberComponent
Definition CustomPlayerCharacter.h:162
class UAudioReactionComponent * AudioReactionComponent
Definition InteractableCharacter.h:65
bool bAlwaysShowOutline
Definition InteractableCharacter.h:68
class UInteractionComponent * InteractionComponent
Definition InteractableCharacter.h:56

Member Function Documentation

◆ AimAction()

void ACustomPlayerCharacter::AimAction ( const bool bValue)
overridevirtual

Reimplemented from AALSBaseCharacter.

Reimplemented in AMultiplayerPlayerCharacter.

1250{
1251 Super::AimAction(bValue);
1252 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Shooting Component"));}
1253 if(bValue)
1254 {
1255 if(PlayerShootingComponent != nullptr)
1256 {
1257 PlayerShootingComponent->AimPressedAction();
1258 }
1259 }
1260 else
1261 {
1262 if(PlayerShootingComponent != nullptr)
1263 {
1264 PlayerShootingComponent->AimReleasedAction();
1265 }
1266 }
1267}

◆ AutoModeAction()

void ACustomPlayerCharacter::AutoModeAction ( const bool bValue) const
1169{
1170 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Shooting Component"));return;}
1171 if(bValue)
1172 {
1173 PlayerShootingComponent->SwitchAutoMode();
1174 }
1175}

◆ BeginPlay()

void ACustomPlayerCharacter::BeginPlay ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

Reimplemented in ACampaignPlayerCharacter, and AMultiplayerPlayerCharacter.

85{
86 Super::BeginPlay();
87 if(HealthBarComponent != nullptr && IsLocallyViewed())
88 {
89 HealthBarComponent->SetCollapsed(true);
90 }
91}
class UHealthBarWidgetComponent * HealthBarComponent
Definition CustomCharacterBase.h:192

◆ CalculateFloorInfluence()

void ACustomPlayerCharacter::CalculateFloorInfluence ( )
650{
651
652}

◆ CameraInputStopped()

void ACustomPlayerCharacter::CameraInputStopped ( )

REMOVE in Aim Assist Comp

626{
628 CurrentCameraUp = 0.0f;
629 CurrentCameraRight = 0.0f;
630 GetWorld()->GetTimerManager().ClearTimer(CameraTimerHandle);
631}
float CurrentCameraUp
Definition CustomPlayerCharacter.h:110
float CurrentCameraRight
Definition CustomPlayerCharacter.h:111
FTimerHandle CameraTimerHandle
Definition CustomPlayerCharacter.h:112

◆ CameraRightAction_Implementation()

void ACustomPlayerCharacter::CameraRightAction_Implementation ( float Value)
overridevirtual
561{
562 Super::CameraRightAction_Implementation(Value);
563}

◆ CameraUpAction_Implementation()

void ACustomPlayerCharacter::CameraUpAction_Implementation ( float Value)
overridevirtual
556{
557 Super::CameraUpAction_Implementation(Value);
558}

◆ CanCrouch()

bool ACustomPlayerCharacter::CanCrouch ( ) const
overrideprotectedvirtual
721{
722 if(bPerformingStealthTakedown){return false;}
723 return Super::CanCrouch();
724}
bool bPerformingStealthTakedown
Definition CustomPlayerCharacter.h:269

◆ CanJumpInternal_Implementation()

bool ACustomPlayerCharacter::CanJumpInternal_Implementation ( ) const
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

715{
716 if(bPerformingStealthTakedown){return false;}
717 return Super::CanJumpInternal_Implementation();
718}

◆ Client_HitMarker()

virtual void ACustomPlayerCharacter::Client_HitMarker ( const AActor * ActorHit,
const float Damage,
const UDamageType * DamageType,
const FName HitBone,
const FVector HitLocation,
const bool bKillingHit = false,
const bool bInjuredPart = false )
virtual

◆ FirePressedAction()

void ACustomPlayerCharacter::FirePressedAction ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

765{
766 if(GetIsDead()){return;}
767 if(MantleComponentReference != nullptr)
768 {
769 if(bDebuggingMode){UE_LOG(LogTemp,Warning,TEXT("ACustomPlayerCharacter::FirePressedAction MantleComponentReference"));}
771 }
773 {
774 if(bDebuggingMode){UE_LOG(LogTemp,Warning,TEXT("ACustomPlayerCharacter::FirePressedAction Change Rotation Mode"));}
776 }
777 if(GrabberComponent != nullptr && GrabberComponent->GetIsHoldingActor())
778 {
779 GrabberComponent->Server_ThrowActor(GrabberThrowMultiplier);
780 return;
781 }
782 if(PlayerShootingComponent != nullptr)
783 {
784 if(!PlayerShootingComponent->GetPlayerWeaponState().bIsHolstered && PlayerShootingComponent->GetPlayerWeaponState().bHasGun)
785 {
786 GetWorldTimerManager().ClearTimer(FiringWeaponTimerHandle);
787 PlayerShootingComponent->ShootGun();
788 ServerSetFiring(true);
789 return;
790 }
791 }
793 {
795 }
796 if(MeleeComponent != nullptr)
797 {
798 MeleeComponent->MeleeAttack();
799 }
800}
void SetOverlayState(EALSOverlayState NewState, bool bForce=false)
Definition ALSBaseCharacter.cpp:587
EALSOverlayState GetOverlayState() const
Definition ALSBaseCharacter.h:159
virtual void SetRotationMode(EALSRotationMode NewRotationMode, bool bForce=false)
Definition ALSBaseCharacter.cpp:522
EALSRotationMode RotationMode
Definition ALSBaseCharacter.h:607
bool bDebuggingMode
Definition CharacterBase.h:145
class UALSMantleComponent * MantleComponentReference
Definition CustomCharacterBase.h:220
class UMeleeComponent * MeleeComponent
Definition CustomCharacterBase.h:204
virtual bool GetIsDead() const override
Definition CustomCharacterBase.h:54
float GrabberThrowMultiplier
Definition CustomPlayerCharacter.h:145
void ServerSetFiring(const bool bFiring)
FTimerHandle FiringWeaponTimerHandle
Definition CustomPlayerCharacter.h:283
bool IsMantlePlaying()
Definition ALSMantleComponent.h:53

◆ FiringWeaponAimDown()

void ACustomPlayerCharacter::FiringWeaponAimDown ( )
private
847{
848 GetWorldTimerManager().ClearTimer(FiringWeaponTimerHandle);
850 {
852 }
853 ServerSetFiring(false);
854}

◆ GetAimDownSightCameraTarget()

FVector ACustomPlayerCharacter::GetAimDownSightCameraTarget ( ) const
overridevirtual

Reimplemented from AALSBaseCharacter.

579{
580 if(bUseGunAimDownSight && PlayerShootingComponent != nullptr && PlayerShootingComponent->GetPlayerWeaponState().bHasGun)
581 {
582 if(PlayerShootingComponent->GetAimDownSightSocket().GetLocation() != FVector::ZeroVector)
583 {
584 return PlayerShootingComponent->GetAimDownSightSocket().GetLocation();
585 }
586 }
587 return Super::GetAimDownSightCameraTarget();
588}
bool bUseGunAimDownSight
Definition CustomPlayerCharacter.h:134

◆ GetAimDownSightFOV()

float ACustomPlayerCharacter::GetAimDownSightFOV ( ) const
overridevirtual

Reimplemented from AALSBaseCharacter.

591{
592 if(bUseGunAimDownSight && PlayerShootingComponent != nullptr && PlayerShootingComponent->GetPlayerWeaponState().bHasGun)
593 {
594 if(PlayerShootingComponent->GetWeaponFOV() > 0.0f)
595 {
596 return PlayerShootingComponent->GetWeaponFOV();
597 }
598 }
599 return Super::GetAimDownSightFOV();
600}

◆ GetAllowedGait()

EALSGait ACustomPlayerCharacter::GetAllowedGait ( ) const
overridevirtual

Reimplemented from ACustomCharacterBase.

Reimplemented in AMultiplayerPlayerCharacter.

566{
567 if(GrabberComponent != nullptr && GrabberComponent->GetIsHoldingActor())
568 {
569 return EALSGait::Walking;
570 }
572 {
573 return EALSGait::Walking;
574 }
575 return Super::GetAllowedGait();
576}

◆ GetCanAimDownSights()

bool ACustomPlayerCharacter::GetCanAimDownSights ( ) const
overridevirtual

Reimplemented from AALSBaseCharacter.

603{
604 if(PlayerShootingComponent != nullptr)
605 {
606 if(PlayerShootingComponent->GetPlayerWeaponState().bHasGun == false)
607 {
608 return false;
609 }
610 if(PlayerShootingComponent->GetPlayerWeaponState().bIsReloading)
611 {
612 return false;
613 }
614 }
615 if(MantleComponentReference != nullptr)
616 {
618 {
619 return false;
620 }
621 }
622 return Super::GetCanAimDownSights();
623}

◆ GetSlideTime()

float ACustomPlayerCharacter::GetSlideTime ( ) const
inline
106{return SlideTime;};
float SlideTime
Definition CustomPlayerCharacter.h:147

◆ GrabAction()

void ACustomPlayerCharacter::GrabAction ( const bool bValue) const
1071{
1072 if(GrabberComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing GrabberComponent Player Character"));return;}
1073 if(bValue)
1074 {
1075 if(InteractionComponent == nullptr){return;}
1076 const FHitResult CurrentHit = InteractionComponent->GetHitResult();
1077 GrabberComponent->GrabActor(CurrentHit);
1078 }
1079 else
1080 {
1081 GrabberComponent->Server_DropActor();
1082 // if(InteractionComponent == nullptr){return;}
1083 // InteractionComponent->T
1084 // InteractionComponent->StopInteract();
1085 }
1086}

◆ HitMarker()

void ACustomPlayerCharacter::HitMarker ( const AActor * ActorHit,
const float Damage,
const UDamageType * DamageType,
const FName HitBone,
const FVector HitLocation,
const bool bKillingHit = false,
const bool bInjuredPart = false )
overridevirtual

Implements IHitMarkerInterface.

230{
231 if(IsLocallyControlled())
232 {
233 if(PlayerShootingComponent != nullptr)
234 {
235 PlayerShootingComponent->HitMarker(ActorHit, Damage, DamageType, HitBone, HitLocation, bKillingHit, bInjuredPart);
236 }
237 }
238 else
239 {
240 Client_HitMarker(ActorHit, Damage, DamageType, HitBone, HitLocation, bKillingHit, bInjuredPart);
241 }
242}
virtual void Client_HitMarker(const AActor *ActorHit, const float Damage, const UDamageType *DamageType, const FName HitBone, const FVector HitLocation, const bool bKillingHit=false, const bool bInjuredPart=false)

◆ HolsterAction()

void ACustomPlayerCharacter::HolsterAction ( const bool bValue) const
1200{
1201 if(PlayerShootingComponent == nullptr){UE_LOG(LogCustomCharacters,Error,TEXT("Missing Shooting Component"));return;}
1202 if(bValue)
1203 {
1204 PlayerShootingComponent->HolsterWeapon();
1205 }
1206}

◆ InteractionDataUpdated()

void ACustomPlayerCharacter::InteractionDataUpdated ( ) const
overrideprotectedvirtual
756{
757 if(InteractionComponent != nullptr)
758 {
759 InteractionComponent->UpdateInteractionData();
760 }
761}

◆ InteractionTraceEventHit()

void ACustomPlayerCharacter::InteractionTraceEventHit ( const FHitResult & HitResult)
virtual

Old Method !REMOVE.

552{
553}

◆ LoadCharacterData()

bool ACustomPlayerCharacter::LoadCharacterData ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

109{
110 return Super::LoadCharacterData();
111}

◆ LoadComponentsSaveData()

void ACustomPlayerCharacter::LoadComponentsSaveData ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

114{
115 Super::LoadComponentsSaveData();
116 IMenuSystem* MenuSystem = Cast<IMenuSystem>(GetGameInstance());
117 if(MenuSystem != nullptr)
118 {
119 FString CurrentSaveSlotName;
120 const int32 CurrentSaveSlot = MenuSystem->GetCurrentSaveSlot();
121 const FString CharacterSlotName = CurrentSaveSlotName.Append((FString::FromInt(CurrentSaveSlot) + " Character " + DisplayName));
122 bool bWeaponLoaded = false;
123 if(PlayerShootingComponent != nullptr)
124 {
125 bWeaponLoaded = PlayerShootingComponent->LoadComponentData(CurrentSaveSlotName);
126 // PlayerShootingComponent->SetupComponent(GetMesh(), GetMesh()->GetAnimInstance(), Controller, bIsNPC, bIsDead);
127 PlayerShootingComponent->SetThrowPoint(ThrowPoint);
128 }
129 if(!bWeaponLoaded)
130 {
131
132 }
133 }
134}
FString DisplayName
Definition CustomCharacterBase.h:248
USceneComponent * ThrowPoint
Definition InteractableCharacter.h:54
Definition MenuSystem.h:19
Definition MenuSystem.Build.cs:6

◆ LoadGameData()

void ACustomPlayerCharacter::LoadGameData ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

99{
100 Super::LoadGameData();
101}

◆ MeleeAction()

void ACustomPlayerCharacter::MeleeAction ( const bool bValue) const
1209{
1210 if(MeleeComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Melee Component in Melee Action CusPlayChar"));return;}
1211 if(bValue)
1212 {
1213 if(PlayerShootingComponent != nullptr && PlayerShootingComponent->GetPlayerWeaponState().bHasGun)
1214 {
1215 if(PlayerShootingComponent->GetCurrentWeaponActor() != nullptr && PlayerShootingComponent->GetCurrentWeaponActor()->GetRootComponent() != nullptr)
1216 {
1217 MeleeComponent->MeleeAttack(true, FVector::ZeroVector, PlayerShootingComponent->GetCurrentWeaponActor()->GetRootComponent());
1218 }
1219 }
1220 else
1221 {
1222 MeleeComponent->MeleeAttack();
1223 }
1224 }
1225}

◆ Multicast_SetFiring()

void ACustomPlayerCharacter::Multicast_SetFiring ( const bool bFiring)
protected

◆ OnCapsuleBeginOverlap()

void ACustomPlayerCharacter::OnCapsuleBeginOverlap ( UPrimitiveComponent * OverlappedComponent,
AActor * OtherActor,
UPrimitiveComponent * OtherComp,
int32 OtherBodyIndex,
bool bFromSweep,
const FHitResult & SweepResult )
virtual
294{
295 if(OtherComp != nullptr && OtherActor != nullptr)
296 {
297 if(bPerformingStealthTakedown){return;}
298 //- Inside The Stealth Collision //
299 const IStealthInterface* StealthBox = Cast<IStealthInterface>(OtherComp);
300 //- And Other Actor has Interface //
301 IStealthInterface* OtherStealthActor = Cast<IStealthInterface>(OtherActor);
302
303 if(StealthBox != nullptr && OtherStealthActor != nullptr)
304 {
306 {
307 UE_LOG(LogTemp, Warning, TEXT("Stealth Takedown Avail, SHOW PROMPT"));
308 OtherStealthActor->ShowStealthPrompt();
309 //@TODO Show Prompt
310 StealthActor = OtherActor;
311 StealthActorInterface = OtherStealthActor;
313 if(InteractionComponent != nullptr)
314 {
315 InteractionComponent->UpdateInteractionData();
316 }
317 }
318 }
319 }
320}
class IStealthInterface * StealthActorInterface
Definition CustomPlayerCharacter.h:266
AActor * StealthActor
Definition CustomPlayerCharacter.h:265
FStealthData StealthData
Definition CustomPlayerCharacter.h:232
bool bStealthTakedownAvailable
Definition CustomPlayerCharacter.h:268
Definition StealthInterface.h:17
virtual void ShowStealthPrompt(const bool bShow=true)=0
virtual bool GetCanPerformTakedown(const float Damage) const =0
float StealthTakedownDamage
Definition AIDataTypes.h:232

◆ OnCapsuleEndOverlap()

void ACustomPlayerCharacter::OnCapsuleEndOverlap ( UPrimitiveComponent * OverlappedComponent,
AActor * OtherActor,
UPrimitiveComponent * OtherComp,
int32 OtherBodyIndex )
virtual
324{
325 if(bPerformingStealthTakedown){return;}
326 if(OtherComp != nullptr && OtherActor != nullptr)
327 {
328 IStealthInterface* OtherStealthActor = Cast<IStealthInterface>(OtherActor);
329 if(OtherActor == StealthActor || OtherStealthActor == StealthActorInterface)
330 {
331 if(OtherStealthActor != nullptr)
332 {
333 OtherStealthActor->ShowStealthPrompt(false);
334 }
336 StealthActor = nullptr;
337 StealthActorInterface = nullptr;
338 if(InteractionComponent != nullptr)
339 {
340 InteractionComponent->UpdateInteractionData();
341 }
342 }
343 const IStealthInterface* StealthBox = Cast<IStealthInterface>(OtherComp);
344 if(StealthBox != nullptr)
345 {
346 // UE_LOG(LogTemp, Warning, TEXT("Stealth Takedown Lost"));
347 // if(InteractionComponent != nullptr)
348 // {
349 // InteractionComponent->HideCustomPrompt();
350 // }
352 StealthActor = nullptr;
353 StealthActorInterface = nullptr;
354 if(InteractionComponent != nullptr)
355 {
356 InteractionComponent->UpdateInteractionData();
357 }
358 }
359 }
360}

◆ OnDeath()

void ACustomPlayerCharacter::OnDeath ( AActor * OwningActor,
const EDeathType DeathType,
AActor * DeathCauser,
AController * DeathInstigator )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

Reimplemented in ACampaignPlayerCharacter.

1323{
1324 Super::OnDeath(OwningActor, DeathType, DeathCauser, DeathInstigator);
1325 if(PlayerShootingComponent != nullptr)
1326 {
1327 PlayerShootingComponent->SetIsDead(bIsDead);
1328 PlayerShootingComponent->OwnerDeath();
1329 }
1330 if(HUD != nullptr && IsLocallyControlled())
1331 {
1332 IStaminaHUD* StaminaHUD = Cast<IStaminaHUD>(HUD);
1333 if(StaminaHUD == nullptr){return;}
1334 StaminaHUD->OwnerDeath(GetPlayerDeathInfo(DeathType, DeathCauser, DeathInstigator));
1335 }
1336}
FPlayerDeath GetPlayerDeathInfo(const EDeathType DeathType, AActor *DeathCauser, const AController *DeathInstigator) const
Definition CustomCharacterBase.cpp:1446
bool bIsDead
Definition CustomCharacterBase.h:385
AActor * HUD
Definition CustomPlayerCharacter.h:289
Definition StaminaHUD.h:18
virtual void OwnerDeath(const struct FPlayerDeath &PlayerDeathData)=0

◆ OnFullDamageHit()

void ACustomPlayerCharacter::OnFullDamageHit ( AController * InstigatedBy,
const float TotalDamage,
const UDamageType * DamageType,
const FName & HitBone,
const FVector & HitLocation,
const bool bKillingHit,
const bool bInjuredPart )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

886{
887 Super::OnFullDamageHit(InstigatedBy, TotalDamage, DamageType, HitBone, HitLocation, bKillingHit, bInjuredPart);
888 //@TODO Add Injured Notification
889 // //! Need it for all Damage //
890 // if(HitLocation.IsNearlyZero()){return;}
891 // if(HUD != nullptr && IsLocallyControlled())
892 // {
893 // IStaminaHUD* StaminaHUD = Cast<IStaminaHUD>(HUD);
894 // if(StaminaHUD == nullptr){return;}
895 // StaminaHUD->DamageIndicator(HitLocation, TotalDamage, DamageType);
896 // }
897}

◆ OnPawnSpawned()

void ACustomPlayerCharacter::OnPawnSpawned ( )
overridevirtual

Reimplemented from ACustomCharacterBase.

Reimplemented in ACampaignPlayerCharacter.

220{
221 Super::OnPawnSpawned();
222 if(IsLocallyControlled() == false && bAlwaysShowOutline)
223 {
224 ShowMeshOutline(true);
225 }
226}

◆ OnRotationModeChanged()

void ACustomPlayerCharacter::OnRotationModeChanged ( EALSRotationMode PreviousRotationMode)
overrideprotectedvirtual

Reimplemented from AALSBaseCharacter.

680{
681 Super::OnRotationModeChanged(PreviousRotationMode);
682 if(GetIsDead()){return;}
683 if(IsLocallyControlled() && InteractionComponent != nullptr)
684 {
685 switch (GetRotationMode()) {
688 // @TODO Check if this actually works? When Clicking different view mode stops crosshair functions
689 // @TODO Change this so that it's always tracing, but not StopTrace - instead StopInteracting
690 if(InteractionComponent->bInteractOnAim)
691 {
692 InteractionComponent->StopTraceInteractForward();
693 }
694 if(InteractionComponent->bDoesTraceTick)
695 {
696 InteractionComponent->StartTraceInteractForward();
697 }
698 break;
700 if(InteractionComponent->bInteractOnAim)
701 {
702 InteractionComponent->StartTraceInteractForward();
703 }
704 //@TEST Change to just not interact on Aim
705 // if(InteractionComponent->bDoesTraceTick)
706 // {
707 // InteractionComponent->StopTraceInteractForward();
708 // }
709 break;
710 }
711 }
712}
EALSRotationMode GetRotationMode() const
Definition ALSBaseCharacter.h:138

◆ OnStealthTakedown()

void ACustomPlayerCharacter::OnStealthTakedown ( const AActor * Victim,
const bool bLethal = true )
protected

◆ PickupAttachmentCheck()

bool ACustomPlayerCharacter::PickupAttachmentCheck ( const FWeaponAttachment & In_WeaponAttachmentData)
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

939{
940 if(!In_WeaponAttachmentData.IsValid()){return false;}
941 if(PlayerShootingComponent != nullptr)
942 {
943 return PlayerShootingComponent->CanPickupAttachment(In_WeaponAttachmentData);
944 }
945 return false;
946}
bool IsValid() const
Definition WeaponStructs.h:531

◆ PickupAttachmentEvent()

void ACustomPlayerCharacter::PickupAttachmentEvent ( const FString & WeaponAttachmentID)
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

949{
950 if(PlayerShootingComponent != nullptr)
951 {
952 PlayerShootingComponent->PickupAttachment(WeaponAttachmentID);
953 }
954}

◆ PickupGunCheck()

bool ACustomPlayerCharacter::PickupGunCheck ( const FWeaponData_T & In_WeaponData)
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

926{
927 if(bDebuggingMode){UE_LOG(LogCustomCharacters, Warning, TEXT("ACustomPlayerCharacter::PickupGunCheck"));}
928 if(!In_WeaponData.IsValid() || (In_WeaponData.CurrentAmmo <= 0 && In_WeaponData.TotalAmmoCount <= 0)){return false;}
929 if(bDebuggingMode){UE_LOG(LogCustomCharacters, Warning, TEXT("ACustomPlayerCharacter::PickupGunCheck In_WeaponData.IsValid || In_WeaponData.CurrentAmmo <= 0 && In_WeaponData.TotalAmmoCount <= 0"));}
930 if(PlayerShootingComponent != nullptr)
931 {
932 if(bDebuggingMode){UE_LOG(LogCustomCharacters, Warning, TEXT("ACustomPlayerCharacter::PickupGunCheck PlayerShootingComponent"));}
933 return PlayerShootingComponent->CanPickupWeapon(In_WeaponData);
934 }
935 return false;
936}
int32 CurrentAmmo
Definition WeaponStructs.h:880
int32 TotalAmmoCount
Definition WeaponStructs.h:883
bool IsValid() const
Definition WeaponStructs.h:896

◆ PickupGunEvent()

int32 ACustomPlayerCharacter::PickupGunEvent ( const FWeaponData_T In_WeaponData)
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

916{
917 int32 RemainingAmmo = 0;
918 if(PlayerShootingComponent != nullptr)
919 {
920 PlayerShootingComponent->PickupWeapon(In_WeaponData, RemainingAmmo);
921 }
922 return RemainingAmmo;
923}

◆ PingAction()

void ACustomPlayerCharacter::PingAction ( const bool bValue) const
1089{
1090 if(GetIsDead()){return;}
1091 if(InteractionComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Interaction Component"));return;}
1092 if(bValue == false)
1093 {
1094 FInteractionData PingInteractionData;
1095 FVector PingLocation;
1096 const bool bPingHit = InteractionComponent->PingItem(PingInteractionData, PingLocation);
1097 if(bPingHit)
1098 {
1099
1100 if(bDebuggingMode){UE_LOG(LogCustomCharacters, Warning, TEXT("Ping Sent"));}
1101 }
1102 else
1103 {
1104 if(bDebuggingMode){UE_LOG(LogCustomCharacters, Warning, TEXT("Ping failed"));}
1105 }
1106 }
1107}
Definition BaseData.h:420

◆ PingMenuAction()

void ACustomPlayerCharacter::PingMenuAction ( ) const
1110{
1111 if(GetIsDead()){return;}
1112 if(InteractionComponent == nullptr){LogMissingPointer("Interaction: PingMenuAction");return;}
1113 InteractionComponent->OpenPingMenu();
1114}

◆ QuickLoadAction()

void ACustomPlayerCharacter::QuickLoadAction ( const bool bValue)
1238{
1239 if(bValue)
1240 {
1242 LoadGameData();
1244 if(bDebuggingMode){UE_LOG(LogTemp,Warning,TEXT("QUICK LOAD"));}
1245 }
1246}
virtual void LoadGameData() override
Definition CustomPlayerCharacter.cpp:98
virtual bool LoadCharacterData() override
Definition CustomPlayerCharacter.cpp:108
virtual void LoadComponentsSaveData() override
Definition CustomPlayerCharacter.cpp:113

◆ QuickSaveAction()

void ACustomPlayerCharacter::QuickSaveAction ( const bool bValue)
1228{
1229 if(bValue)
1230 {
1233 if(bDebuggingMode){UE_LOG(LogTemp,Warning,TEXT("QUICK SAVE"));}
1234 }
1235}
virtual void SaveComponentsData() override
Definition CustomPlayerCharacter.cpp:136
virtual bool SaveCharacterData() override
Definition CustomPlayerCharacter.cpp:103

◆ ReloadAction()

void ACustomPlayerCharacter::ReloadAction ( const bool bValue) const
1143{
1144 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Shooting Component"));}
1145 if(bValue)
1146 {
1147 if(!PlayerShootingComponent->GetPlayerWeaponState().bIsHolstered && PlayerShootingComponent->GetPlayerWeaponState().bHasGun)
1148 {
1149 PlayerShootingComponent->Reload();
1150 }
1151 else
1152 {
1153 if(MeleeComponent != nullptr)
1154 {
1155 MeleeComponent->MeleeBlockStart();
1156 }
1157 }
1158 }
1159 else
1160 {
1161 if(MeleeComponent != nullptr && MeleeComponent->GetIsBlocking())
1162 {
1163 MeleeComponent->MeleeBlockStop();
1164 }
1165 }
1166}

◆ SaveCharacterData()

bool ACustomPlayerCharacter::SaveCharacterData ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

104{
105 return Super::SaveCharacterData();
106}

◆ SaveComponentsData()

void ACustomPlayerCharacter::SaveComponentsData ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

137{
138 Super::SaveComponentsData();
139 IMenuSystem* MenuSystem = Cast<IMenuSystem>(GetGameInstance());
140 if(MenuSystem != nullptr)
141 {
142 FString CurrentSaveSlotName;
143 const int32 CurrentSaveSlot = MenuSystem->GetCurrentSaveSlot();
144 const FString CharacterSlotName = CurrentSaveSlotName.Append((FString::FromInt(CurrentSaveSlot) + " Character " + DisplayName));
145 bool bWeaponSaved = false;
146 if(PlayerShootingComponent != nullptr)
147 {
148 bWeaponSaved = PlayerShootingComponent->SaveComponentData(CurrentSaveSlotName);
149 }
150 if(!bWeaponSaved)
151 {
152
153 }
154 }
155}

◆ SaveGameData()

void ACustomPlayerCharacter::SaveGameData ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

94{
95 Super::SaveGameData();
96}

◆ SelectionUpAction()

void ACustomPlayerCharacter::SelectionUpAction ( const bool bValue) const
1126{
1127 if(CompanionMasterComponent != nullptr)
1128 {
1129 if(CompanionMasterComponent->GetIsCommandingCompanion())
1130 {
1131 CompanionMasterComponent->ChangeInteractionSelection(bValue);
1132 return;
1133 }
1134 }
1135 if(InteractionComponent != nullptr)
1136 {
1137 InteractionComponent->ChangeInteractionSelection(bValue);
1138 }
1139}

◆ ServerSetFiring()

void ACustomPlayerCharacter::ServerSetFiring ( const bool bFiring)
protected

◆ SetDebugging()

void ACustomPlayerCharacter::SetDebugging ( const FString & Component = "",
const bool bOn = true )
656{
657 if(Component == "")
658 {
659 bDebuggingMode = bOn;
660 }
661 if(Component == "Shooting")
662 {
663 //@TEST
664 // PlayerShootingComponent->
665 }
666}

◆ SetupComponents()

void ACustomPlayerCharacter::SetupComponents ( AController * ControllerReference = nullptr,
AActor * HUDReference = nullptr,
const bool bIsLocallyControlled = false )
overridevirtual

Reimplemented from ACustomCharacterBase.

Reimplemented in ACampaignPlayerCharacter.

158{
159 AController* ControllerToPass = Controller;
160 if(ControllerReference != nullptr){ControllerToPass = ControllerReference;}
161 Super::SetupComponents(ControllerToPass, HUDReference);
162 if(bIsLocallyControlled){HUD = HUDReference;}
163 if(PlayerShootingComponent != nullptr)
164 {
165 PlayerShootingComponent->Server_SetThrowPoint(ThrowPoint);
166 PlayerShootingComponent->SetIsLocallyControlled(IsLocallyControlled());
167 PlayerShootingComponent->SetupComponent(GetMesh(), GetMesh()->GetAnimInstance(), ControllerToPass, HUDReference, bIsNPC, bIsDead);
168 PlayerShootingComponent->SetThrowStrength(ThrowStrength);
169 PlayerShootingComponent->OnWeaponEquipped.AddUniqueDynamic(this, &ACustomCharacterBase::WeaponEquipped);
170 PlayerShootingComponent->OnWeaponStateChanged.AddUniqueDynamic(this, &ACustomCharacterBase::WeaponStateChanged);
171 //@TODO TEMP!
172 PlayerShootingComponent->SetActive(true);
173 }
174 if(InteractionComponent != nullptr)
175 {
176 InteractionComponent->OnTraceEventHit.AddUniqueDynamic(this, &ACustomPlayerCharacter::InteractionTraceEventHit);
177 }
178 if(CompanionMasterComponent != nullptr)
179 {
180 CompanionMasterComponent->SetIsLocallyControlled(IsLocallyControlled());
181 CompanionMasterComponent->SetupComponent(GetCustomMesh(), GetMesh()->GetAnimInstance(), ControllerToPass, HUDReference, bIsNPC, bIsDead);
182 if(InteractionComponent != nullptr)
183 {
184 InteractionComponent->OnTraceEventAny.AddUniqueDynamic(CompanionMasterComponent, &UCompanionMasterComponent::UpdateInteractionTarget);
185 }
186 if(IsLocallyControlled())
187 {
188 CompanionMasterComponent->SetupCompanionWidget();
189 }
190 }
191 if(GrabberComponent != nullptr)
192 {
193 GrabberComponent->SetIsLocallyControlled(IsLocallyControlled());
194 GrabberComponent->SetupComponent(GetCustomMesh(), GetMesh()->GetAnimInstance(), ControllerToPass, HUDReference, bIsNPC, bIsDead);
195 if(PhysicsHandleComponent != nullptr)
196 {
197 GrabberComponent->SetPhysicsHandle(PhysicsHandleComponent);
198 }
199 if(ThrowPoint != nullptr)
200 {
201 GrabberComponent->SetAttachPoint(ThrowPoint);
202 }
203 GrabberComponent->SetThrowStrength(ThrowStrength);
204 if(InteractionComponent != nullptr)
205 {
206 // InteractionComponent->OnTraceEventHit.AddUniqueDynamic(GrabberComponent, &UCharacterGrabberComponent::InteractionTraceEventHit);
207 GrabberComponent->SetGrabDistance(InteractionComponent->GetUseLength());
208 }
209 }
210 if(GetCapsuleComponent() != nullptr)
211 {
212 GetCapsuleComponent()->OnComponentBeginOverlap.AddUniqueDynamic(this, &ACustomPlayerCharacter::OnCapsuleBeginOverlap);
213 GetCapsuleComponent()->OnComponentEndOverlap.AddUniqueDynamic(this, &ACustomPlayerCharacter::OnCapsuleEndOverlap);
214 GetCapsuleComponent()->SetGenerateOverlapEvents(true);
215 }
217}
float ThrowStrength
Definition CustomCharacterBase.h:326
bool bIsNPC
Definition CustomCharacterBase.h:383
virtual void WeaponEquipped(const TArray< FWeaponData_T > &Weapons, const int32 CurrentWeaponIndex)
Definition CustomCharacterBase.cpp:764
USkeletalMeshComponent * GetCustomMesh() const
Definition CustomCharacterBase.h:381
virtual void WeaponStateChanged(const struct FPlayerWeaponState &PlayerWeaponState)
Definition CustomCharacterBase.cpp:777
virtual void UpdateStaminaHUD() override
Definition CustomPlayerCharacter.cpp:1312
virtual void OnCapsuleEndOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex)
Definition CustomPlayerCharacter.cpp:322
virtual void InteractionTraceEventHit(const FHitResult &HitResult)
Old Method !REMOVE.
Definition CustomPlayerCharacter.cpp:551
virtual void OnCapsuleBeginOverlap(UPrimitiveComponent *OverlappedComponent, AActor *OtherActor, UPrimitiveComponent *OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult &SweepResult)
Definition CustomPlayerCharacter.cpp:292

◆ SetupPlayerInputComponent()

void ACustomPlayerCharacter::SetupPlayerInputComponent ( class UInputComponent * PlayerInputComponent)
overridevirtual

Enhanced Input now used

Reimplemented from ACustomCharacterBase.

674{
675 Super::SetupPlayerInputComponent(PlayerInputComponent);
677}

◆ ShootAction()

void ACustomPlayerCharacter::ShootAction ( const bool bValue)
803{
804 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Shooting Component"));return;}
805 //- Don't shoot if we're doing a Melee Attack //
806 //@todo BUG Get IS Attacking is never reset on Clients //
807 // if(MeleeComponent != nullptr && MeleeComponent->GetIsAttacking())
808 // {
809 // return;
810 // }
811 if(bValue)
812 {
814 UE_LOG(LogCustomCharacters,Warning,TEXT("ACustomPlayerCharacter::ShootAction"));
815 }
816 else
817 {
818 //- Timer for placing weapon down if shooting blind //
820 PlayerShootingComponent->StopShootGun();
821 }
822}
void FiringWeaponAimDown()
Definition CustomPlayerCharacter.cpp:846
virtual void FirePressedAction() override
Definition CustomPlayerCharacter.cpp:764
float FiringWeaponAimDownDelay
Definition CustomPlayerCharacter.h:132

◆ SlideStart()

void ACustomPlayerCharacter::SlideStart ( )
virtual
634{
635 GetWorld()->GetTimerManager().SetTimer(SlideTimerHandle, this, &ACustomPlayerCharacter::SlideStop, GetSlideTime());
636 UE_LOG(LogTemp, Warning, TEXT("Sliding"));
638 // Crouch();
639}
void SetDesiredGait(EALSGait NewGait)
Definition ALSBaseCharacter.cpp:474
FTimerHandle SlideTimerHandle
Definition CustomPlayerCharacter.h:285
float GetSlideTime() const
Definition CustomPlayerCharacter.h:106
virtual void SlideStop()
Definition CustomPlayerCharacter.cpp:641

◆ SlideStop()

void ACustomPlayerCharacter::SlideStop ( )
virtual
642{
643 GetWorld()->GetTimerManager().ClearTimer(SlideTimerHandle);
646 Crouch();
647}
void SetDesiredStance(EALSStance NewStance)
Definition ALSBaseCharacter.cpp:449

◆ StanceAction()

void ACustomPlayerCharacter::StanceAction ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

727{
730 {
731 SlideStart();
733 return;
734 }
735
736 Super::StanceAction();
737 if(PlayerShootingComponent != nullptr)
738 {
739 FPlayerWeaponState CurrentState = PlayerShootingComponent->GetPlayerWeaponState();
741 PlayerShootingComponent->ServerSetPlayerWeaponState(CurrentState);
743 {
744
745 }
746 }
747 //- When we Crouch/stand we should tell all companions to do the same //
748 if(CompanionMasterComponent != nullptr)
749 {
751 }
752}
EALSStance GetDesiredStance() const
Definition ALSBaseCharacter.h:223
EALSMovementAction MovementAction
Definition ALSBaseCharacter.h:604
EALSGait Gait
Definition ALSBaseCharacter.h:610
virtual void SlideStart()
Definition CustomPlayerCharacter.cpp:633
A struct that represents the state of a player's weapon.
Definition WeaponStructs.h:118
bool bIsCrouching
Definition WeaponStructs.h:141

◆ StartThreatIndication()

void ACustomPlayerCharacter::StartThreatIndication ( AActor * PawnThreat)
overridevirtual

Reimplemented from ACustomCharacterBase.

255{
256 Super::StartThreatIndication(PawnThreat);
257 if(HUD == nullptr || !IsLocallyControlled()){return;}
258 const FVector ThreatLocation = PawnThreat->GetActorLocation();
259 if(ThreatLocation.IsNearlyZero()){return;}
260 IStaminaHUD* StaminaHUD = Cast<IStaminaHUD>(HUD);
261 if(StaminaHUD == nullptr){return;}
262 StaminaHUD->StealthIndicator(PawnThreat);
263}
virtual void StealthIndicator(AActor *ThreatActor, const float Amount=0.0f)=0

◆ StealthKnockoutComplete()

void ACustomPlayerCharacter::StealthKnockoutComplete ( )
private
533{
534 if(StealthActor != nullptr)
535 {
536 const FDetachmentTransformRules DetachmentTransformRules = FDetachmentTransformRules(EDetachmentRule::KeepWorld, EDetachmentRule::KeepWorld, EDetachmentRule::KeepWorld, false);
537 StealthActor->DetachFromActor(DetachmentTransformRules);
538 if(StealthActorInterface != nullptr)
539 {
541 }
542 UGameplayStatics::ApplyDamage(StealthActor, StealthData.StealthTakedownDamage, GetController(), this, UNonLethalMeleeDamage::StaticClass());
543 }
544 StealthActor = nullptr;
545 StealthActorInterface = nullptr;
547 GetWorldTimerManager().ClearTimer(StealthTakedownTimerHandle);
548}
FTimerHandle StealthTakedownTimerHandle
Definition CustomPlayerCharacter.h:271
virtual void StealthTakedownComplete()=0

◆ StealthTakedown()

void ACustomPlayerCharacter::StealthTakedown ( const bool bLethal = true)
private
363{
364 //+ Debug Camera Location? //
365 if(StealthActor != nullptr && StealthActorInterface != nullptr)
366 {
367 if(bLethal)
368 {
369 if(!StealthTakedownAnims.IsEmpty())
370 {
371 const int32 RandIndex = FMath::RandRange(0, (StealthTakedownAnims.Num() - 1));
372 if(StealthTakedownAnims.IsValidIndex(RandIndex))
373 {
374 if(bIsCrouched)
375 {
376 UnCrouch();
377 }
379 // if(MotionWarping != nullptr)
380 // {
381 // FVector ForwardVectorMultiply = StealthActor->GetActorRotation().Vector() * StealthActorForward;
382 // ForwardVectorMultiply.Z = StealthActorZ;
383 // const FVector RightVectorMultiply = (UKismetMathLibrary::GetRightVector(StealthActor->GetActorRotation()) * StealthActorRight);
384 //
385 // FVector TargetLocation = (StealthActor->GetActorLocation() - ForwardVectorMultiply) - RightVectorMultiply;
386 //
387 // MotionWarping->AddOrUpdateWarpTargetFromLocationAndRotation(StealthData.StealthTakedownName, TargetLocation, StealthActor->GetActorRotation());
388 // }
389 const float BlendOutTime = StealthTakedownAnims[RandIndex]->GetDefaultBlendOutTime();
390 const float AnimationTime = PlayAnimMontage(StealthTakedownAnims[RandIndex]);
391 GetWorldTimerManager().SetTimer(StealthTakedownTimerHandle, this, &ACustomPlayerCharacter::StealthTakedownComplete, (AnimationTime - BlendOutTime)); //- End Before Blend out
392 }
393 StealthActorInterface->StealthTakedown(this, RandIndex);
394
395 //- Attach Victim to Player //
396 if(GetCapsuleComponent() != nullptr)
397 {
398 const ACharacter* StealthCharacter = Cast<ACharacter>(StealthActor);
399 if(StealthCharacter != nullptr && bStealthAttach)
400 {
401 // const FVector TargetForward = StealthCharacter->GetCapsuleComponent()->GetForwardVector() * StealthActorDistance;
402
403 // const FVector TargetForward = StealthActor->GetActorForwardVector() * StealthActorDistance;
404 // const FTransform LocationBehindTarget = FTransform(StealthActor->GetActorRotation(), (GetActorLocation() + TargetForward), FVector(1));
405
406 //? Testing Warpnig
407 // const FTransform LocationBehindTarget = FTransform(StealthCharacter->GetCapsuleComponent()->GetComponentRotation(), (StealthCharacter->GetCapsuleComponent()->GetComponentLocation() + TargetForward), FVector(1));
408 // SetActorTransform(LocationBehindTarget, false, nullptr, ETeleportType::ResetPhysics);
409
410 // StealthActor->SetActorTransform(GetCapsuleComponent()->GetComponentRotation());
411 const FAttachmentTransformRules AttachmentTransformRules = FAttachmentTransformRules(StealthLocationRule, StealthRotationRule, EAttachmentRule::KeepRelative, bStealthWeldBodies);
412 // StealthActor->AttachToActor(this, AttachmentTransformRules);
413 // StealthActor->AttachToComponent(GetCapsuleComponent(), AttachmentTransformRules);
414 if(GetCustomMesh() != nullptr && bStealthAttachToCustomMesh)
415 {
416 StealthActor->AttachToComponent(GetCustomMesh(), AttachmentTransformRules);
417 }
418 else if(GetMesh() != nullptr && bStealthAttachToCharacterMesh)
419 {
420 StealthActor->AttachToComponent(GetMesh(), AttachmentTransformRules);
421 }
422 else if(GetCapsuleComponent() != nullptr && bStealthAttachToCapsule)
423 {
424 StealthActor->AttachToComponent(GetCapsuleComponent(), AttachmentTransformRules);
425 }
426 }
427
428 }
429 }
430 }
431 else
432 {
433 if(!StealthTakedownAnims.IsEmpty())
434 {
435 const int32 RandIndex = FMath::RandRange(0, (StealthTakedownAnims.Num() - 1));
436 if(StealthTakedownAnims.IsValidIndex(RandIndex))
437 {
438 if(bIsCrouched)
439 {
440 UnCrouch();
441 }
443 // if(MotionWarping != nullptr)
444 // {
445 // FVector ForwardVectorMultiply = StealthActor->GetActorRotation().Vector() * StealthActorForward;
446 // ForwardVectorMultiply.Z = StealthActorZ;
447 // const FVector RightVectorMultiply = (UKismetMathLibrary::GetRightVector(StealthActor->GetActorRotation()) * StealthActorRight);
448 //
449 // FVector TargetLocation = (StealthActor->GetActorLocation() - ForwardVectorMultiply) - RightVectorMultiply;
450 //
451 // MotionWarping->AddOrUpdateWarpTargetFromLocationAndRotation(StealthData.StealthTakedownName, TargetLocation, StealthActor->GetActorRotation());
452 // }
453
454 const float BlendOutTime = StealthTakedownAnims[RandIndex]->GetDefaultBlendOutTime();
455 const float AnimationTime = PlayAnimMontage(StealthTakedownAnims[RandIndex]);
456 GetWorldTimerManager().SetTimer(StealthTakedownTimerHandle, this, &ACustomPlayerCharacter::StealthKnockoutComplete, (AnimationTime - BlendOutTime)); //- End Before Blend out
457
458 //- Attach Victim to Player //
459 }
460 StealthActorInterface->StealthTakedown(this, RandIndex);
461
462 if(GetCapsuleComponent() != nullptr)
463 {
464 const ACharacter* StealthCharacter = Cast<ACharacter>(StealthActor);
465 if(StealthCharacter != nullptr && bStealthAttach)
466 {
467 // const FVector TargetForward = StealthCharacter->GetCapsuleComponent()->GetForwardVector() * StealthActorDistance;
468
469 // const FVector TargetForward = StealthActor->GetActorForwardVector() * StealthActorDistance;
470 // const FTransform LocationBehindTarget = FTransform(StealthActor->GetActorRotation(), (GetActorLocation() + TargetForward), FVector(1));
471
472 //? Testing Warpnig
473 // const FTransform LocationBehindTarget = FTransform(StealthCharacter->GetCapsuleComponent()->GetComponentRotation(), (StealthCharacter->GetCapsuleComponent()->GetComponentLocation() + TargetForward), FVector(1));
474 // SetActorTransform(LocationBehindTarget, false, nullptr, ETeleportType::ResetPhysics);
475
476 // StealthActor->SetActorTransform(GetCapsuleComponent()->GetComponentRotation());
477 // const FAttachmentTransformRules AttachmentTransformRules = FAttachmentTransformRules(EAttachmentRule::KeepWorld, EAttachmentRule::KeepWorld, EAttachmentRule::KeepRelative, false);
478 // StealthActor->AttachToActor(this, AttachmentTransformRules);
479 // StealthActor->AttachToComponent(GetCapsuleComponent(), AttachmentTransformRules);
480 const FAttachmentTransformRules AttachmentTransformRules = FAttachmentTransformRules(StealthLocationRule, StealthRotationRule, EAttachmentRule::KeepRelative, bStealthWeldBodies);
481
482 if(GetCustomMesh() != nullptr && bStealthAttachToCustomMesh)
483 {
484 StealthActor->AttachToComponent(GetCustomMesh(), AttachmentTransformRules);
485 }
486 else if(GetMesh() != nullptr && bStealthAttachToCharacterMesh)
487 {
488 StealthActor->AttachToComponent(GetMesh(), AttachmentTransformRules);
489 }
490 else if(GetCapsuleComponent() != nullptr && bStealthAttachToCapsule)
491 {
492 StealthActor->AttachToComponent(GetCapsuleComponent(), AttachmentTransformRules);
493 }
494 }
495 // if(GetCapsuleComponent() != nullptr)
496 // {
497 // const FAttachmentTransformRules AttachmentTransformRules = FAttachmentTransformRules(EAttachmentRule::KeepWorld, EAttachmentRule::KeepWorld, EAttachmentRule::KeepRelative, false);
498 // StealthActor->AttachToComponent(GetCapsuleComponent(), AttachmentTransformRules);
499 // }
500 // const float BlendOutTime = StealthTakedownAnims[RandIndex]->GetDefaultBlendOutTime();
501 // const float AnimationTime = PlayAnimMontage(StealthTakedownAnims[RandIndex]);
502 // GetWorldTimerManager().SetTimer(StealthTakedownTimerHandle, this, &ACustomPlayerCharacter::StealthKnockoutComplete, (AnimationTime - BlendOutTime)); //- End Before Blend out
503 }
504 }
505 }
507 if(InteractionComponent != nullptr)
508 {
509 InteractionComponent->HideCustomPrompt();
510 }
511 }
512}
bool bStealthAttachToCustomMesh
Definition CustomPlayerCharacter.h:234
bool bStealthAttachToCharacterMesh
Definition CustomPlayerCharacter.h:238
bool bStealthWeldBodies
Definition CustomPlayerCharacter.h:241
void StealthTakedownComplete()
Definition CustomPlayerCharacter.cpp:514
EAttachmentRule StealthLocationRule
Definition CustomPlayerCharacter.h:243
bool bStealthAttach
Definition CustomPlayerCharacter.h:256
void StealthKnockoutComplete()
Definition CustomPlayerCharacter.cpp:532
TArray< UAnimMontage * > StealthTakedownAnims
Definition CustomPlayerCharacter.h:260
EAttachmentRule StealthRotationRule
Definition CustomPlayerCharacter.h:245
void OnStealthTakedown(const AActor *Victim, const bool bLethal=true)
bool bStealthAttachToCapsule
Definition CustomPlayerCharacter.h:236
virtual void StealthTakedown(AActor *Attacker, const int32 AnimationIndex)=0

◆ StealthTakedownComplete()

void ACustomPlayerCharacter::StealthTakedownComplete ( )
private
515{
516 if(StealthActor != nullptr)
517 {
518 const FDetachmentTransformRules DetachmentTransformRules = FDetachmentTransformRules(EDetachmentRule::KeepWorld, EDetachmentRule::KeepWorld, EDetachmentRule::KeepWorld, false);
519 StealthActor->DetachFromActor(DetachmentTransformRules);
520 if(StealthActorInterface != nullptr)
521 {
523 }
524 UGameplayStatics::ApplyDamage(StealthActor, StealthData.StealthTakedownDamage, GetController(), this, UMeleeDamage::StaticClass());
525 }
526 StealthActor = nullptr;
527 StealthActorInterface = nullptr;
529 GetWorldTimerManager().ClearTimer(StealthTakedownTimerHandle);
530}

◆ StopThreatIndication()

void ACustomPlayerCharacter::StopThreatIndication ( )
overridevirtual

Reimplemented from ACustomCharacterBase.

287{
288 Super::StopThreatIndication();
289}

◆ SwapWeaponAction()

void ACustomPlayerCharacter::SwapWeaponAction ( const bool bValue) const
1187{
1188 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Shooting Component"));return;}
1189 if(bValue)
1190 {
1191 PlayerShootingComponent->SwapWeaponPressed();
1192 }
1193 else
1194 {
1195 PlayerShootingComponent->SwapWeaponReleased();
1196 }
1197}

◆ TakeAnyDamage()

void ACustomPlayerCharacter::TakeAnyDamage ( AActor * DamagedActor,
float Damage,
const UDamageType * DamageType,
AController * InstigatedBy,
AActor * DamageCauser )
protected
901{
902 if(DamageCauser != nullptr)
903 {
904 const FVector HitLocation = DamageCauser->GetActorLocation();
905 if(HitLocation.IsNearlyZero()){return;}
906 if(HUD != nullptr && IsLocallyControlled())
907 {
908 IStaminaHUD* StaminaHUD = Cast<IStaminaHUD>(HUD);
909 if(StaminaHUD == nullptr){return;}
910 StaminaHUD->DamageIndicator(HitLocation, Damage, DamageType);
911 }
912 }
913}
virtual void DamageIndicator(const FVector &HitLocation, const float Damage=-1.0f, const UDamageType *DamageType=nullptr)=0

◆ ThrowAction()

void ACustomPlayerCharacter::ThrowAction ( const bool bValue) const
1178{
1179 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Shooting Component"));return;}
1180 if(bValue)
1181 {
1182 PlayerShootingComponent->ThrowWeaponAction();
1183 }
1184}

◆ Tick()

void ACustomPlayerCharacter::Tick ( float DeltaTime)
overridevirtual

Reimplemented from ACustomCharacterBase.

669{
670 Super::Tick(DeltaTime);
671}

◆ UpdateStaminaHUD()

void ACustomPlayerCharacter::UpdateStaminaHUD ( )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

1313{
1314 if(HUD != nullptr && IsLocallyControlled())
1315 {
1316 IStaminaHUD* StaminaHUD = Cast<IStaminaHUD>(HUD);
1317 if(StaminaHUD == nullptr){return;}
1318 StaminaHUD->UpdateStamina(Stamina, MaxStamina);
1319 }
1320}
float Stamina
Definition CustomCharacterBase.h:274
float MaxStamina
Definition CustomCharacterBase.h:279
virtual void UpdateStamina(const float CurrentStamina, const float MaxStamina)=0

◆ UpdateThreatIndication()

void ACustomPlayerCharacter::UpdateThreatIndication ( const FVector & Location,
const float DetectionAmount )
overridevirtual

Reimplemented from ACustomCharacterBase.

266{
267 // if(HUD == nullptr || !IsLocallyControlled()){return;}
268 // const FVector ThreatLocation = PawnThreat->GetActorLocation();
269 // if(ThreatLocation.IsNearlyZero()){return;}
270 // IStaminaHUD* StaminaHUD = Cast<IStaminaHUD>(HUD);
271 // if(StaminaHUD == nullptr){return;}
272 // StaminaHUD->StealthIndicator(PawnThreat);
273
274 //@TODO Detection Meter
275 // if(DetectionMeterWidget)
276 // DetectionMeter->SetPercent(DetectionAmount);
277 //DetectionMeter->SetLocation(GetActionLocation, GetControlRotation, Location);
278 //DetectionMeter->SetVisibility(ESlateVisibility::Visible);
279 if(DetectionAmount <= 0)
280 {
281 //DetectionMeter->Setvisibility(ESlateVisibility::Collapsed);
282 }
283 Super::UpdateThreatIndication(Location, DetectionAmount);
284}

◆ UseAction()

void ACustomPlayerCharacter::UseAction ( const bool bValue)
957{
958 if(GetIsDead()){return;}
959 if(InteractionComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Interaction Component"));return;}
960 if(GetPlayerControllerInterface() != nullptr)
961 {
962 if(GetPlayerControllerInterface()->GetCharacterMode() == FGameplayTag(CharacterModeTags::Command))
963 {
964 if(CompanionMasterComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Companion Component"));return;}
965 if(CompanionMasterComponent->GetIsCommandingCompanion())
966 {
967 if(bValue)
968 {
969 CompanionMasterComponent->OpenCompanionOrderMenu();
970 }
971 else
972 {
973 CompanionMasterComponent->CloseCompanionOrderMenu();
974 // CompanionMasterComponent->CommandCompanion(InteractionComponent->GetHitResult());
975 }
976 // InteractionActor = InteractionComponent->Use();
977 // if(InteractionActor != nullptr)
978 // {
979 // const ICompanionInterface* Companion = Cast<ICompanionInterface>(InteractionActor);
980 // if(Companion == nullptr){return;}
981 // if(Companion->GetIsReadyToCommand())
982 // {
983 // CompanionMasterComponent->SetCompanionToCommand(InteractionActor);
984 // CompanionMasterComponent->SetCompanionToCrouching(bIsCrouched);
985 // CompanionMasterComponent->UpdateHUDSelection();
986 // CompanionMasterComponent->ToggleHUDPrompts(true);
987 // //- open Context Menu, and ask player what i'd like to do //
988 // //- If i have clicked Command //
989 // }
990 }
991 else
992 {
993 AActor* InteractionActor = InteractionComponent->Use();
994 if(InteractionActor != nullptr)
995 {
996 const ICompanionInterface* Companion = Cast<ICompanionInterface>(InteractionActor);
997 if(Companion == nullptr){return;}
998 if(Companion->GetIsReadyToCommand())
999 {
1000 CompanionMasterComponent->SetCompanionToCommand(InteractionActor);
1001 CompanionMasterComponent->SetCompanionToCrouching(bIsCrouched);
1002 CompanionMasterComponent->UpdateHUDSelection();
1003 CompanionMasterComponent->ToggleHUDPrompts(true);
1004 //- open Context Menu, and ask player what i'd like to do //
1005 //- If i have clicked Command //
1006 }
1007 }
1008 }
1009 return;
1010 }
1011 }
1012 if(bValue)
1013 {
1014 //@TODO Temp Stealth Takedown
1015 if(StealthActor != nullptr && bStealthTakedownAvailable)
1016 {
1017 if(InteractionComponent->GetSelectedInteractionType() == EInteractionType::Takedown)
1018 {
1020 return;
1021 }
1022 if(InteractionComponent->GetSelectedInteractionType() == EInteractionType::KnockOut)
1023 {
1024 StealthTakedown(false);
1025 return;
1026 }
1027 }
1028 AActor* InteractionActor = InteractionComponent->Use();
1029 // if(CompanionMasterComponent == nullptr){UE_LOG(LogTemp,Error,TEXT("Missing Companion Component"));return;}
1030 // AActor* InteractionActor;
1031 // InteractionActor = InteractionComponent->Use();
1032
1033
1034 //@TODO Temp Demo
1035 // if(CompanionMasterComponent->GetIsCommandingCompanion() == false)
1036 // {
1037 // InteractionActor = InteractionComponent->Use();
1038 // if(InteractionActor != nullptr)
1039 // {
1040 // const ICompanionInterface* Companion = Cast<ICompanionInterface>(InteractionActor);
1041 // if(Companion == nullptr){return;}
1042 // if(Companion->GetIsReadyToCommand())
1043 // {
1044 // CompanionMasterComponent->SetCompanionToCommand(InteractionActor);
1045 // CompanionMasterComponent->SetCompanionToCrouching(bIsCrouched);
1046 // CompanionMasterComponent->UpdateHUDSelection();
1047 // CompanionMasterComponent->ToggleHUDPrompts(true);
1048 // //- open Context Menu, and ask player what i'd like to do //
1049 // //- If i have clicked Command //
1050 // }
1051 // }
1052 // }
1053 // else
1054 // {
1055 // //? Temp, will need multiple context menus
1056 // CompanionMasterComponent->CommandCompanion(InteractionComponent->GetHitResult());
1057 //
1058 // }
1059 }
1060 else
1061 {
1062 InteractionComponent->StopInteract();
1063 // if(GetRotationMode() != EALSRotationMode::Aiming)
1064 // {
1065 // InteractionComponent->StopTraceForward();
1066 // }
1067 }
1068}
IPlayerControllerInterface * GetPlayerControllerInterface()
Definition CharacterBase.cpp:314
void StealthTakedown(const bool bLethal=true)
Definition CustomPlayerCharacter.cpp:362
Definition CompanionInterface.h:18
virtual bool GetIsReadyToCommand() const =0

◆ WeaponEquipped()

void ACustomPlayerCharacter::WeaponEquipped ( const TArray< FWeaponData_T > & Weapons,
const int32 CurrentWeaponIndex )
overrideprotectedvirtual

Reimplemented from ACustomCharacterBase.

858{
859 Super::WeaponEquipped(Weapons, CurrentWeaponIndex);
860 if(PlayerShootingComponent == nullptr){UE_LOG(LogTemp, Warning, TEXT("Weapon Equipped PLayer Character"));return;}
861 if(PlayerShootingComponent->GetPlayerWeaponState().bIsHolstered){return;}
862 if(Weapons.IsValidIndex(CurrentWeaponIndex))
863 {
864 bool bSuccess = false;
865 const FWeaponStats_T WeaponStats = UWeaponBPLib::GetWeaponStats(this, Weapons[CurrentWeaponIndex].WeaponID, bSuccess);
866 if(!bSuccess){UE_LOG(LogTemp,Error,TEXT("Get Weapon Stats Failed"));return;}
867
868 const EALSOverlayState WeaponOverlayState = UCharacterBPLib::WeaponStateToOverlayState(WeaponStats.WeaponOverlay);
869 if(!HasAuthority())
870 {
871
872 }
873 if(IsLocallyControlled())
874 {
875 SetOverlayState(WeaponOverlayState);
876
877 }
878 // Server_SetOverlayState(WeaponOverlayState, true);
879 //? No owning connection (Server changed weapons, other clients can't do server function)
880 }
881}
EALSOverlayState
Definition ALSCharacterEnumLibrary.h:68
static EALSOverlayState WeaponStateToOverlayState(EWeaponOverlay WeaponOverlay)
Definition CharacterBPLib.cpp:8
static FWeaponStats_T GetWeaponStats(const UObject *WorldContextObject, const FString &WeaponID, bool &bSuccess, UDataTable *DataTable=nullptr)
Definition WeaponBPLib.cpp:176
Represents statistics for a weapon.
Definition WeaponStructs.h:622
EWeaponOverlay WeaponOverlay
Definition WeaponStructs.h:633

Member Data Documentation

◆ bFiringWeapon

bool ACustomPlayerCharacter::bFiringWeapon = false
protected

◆ bMovingAxis

bool ACustomPlayerCharacter::bMovingAxis = false

◆ bPerformingStealthTakedown

bool ACustomPlayerCharacter::bPerformingStealthTakedown = false
private

◆ bStealthAttach

bool ACustomPlayerCharacter::bStealthAttach = false
protected

◆ bStealthAttachToCapsule

bool ACustomPlayerCharacter::bStealthAttachToCapsule = false
protected

◆ bStealthAttachToCharacterMesh

bool ACustomPlayerCharacter::bStealthAttachToCharacterMesh = false
protected

◆ bStealthAttachToCustomMesh

bool ACustomPlayerCharacter::bStealthAttachToCustomMesh = true
protected

◆ bStealthTakedownAvailable

bool ACustomPlayerCharacter::bStealthTakedownAvailable = false
private

◆ bStealthWeldBodies

bool ACustomPlayerCharacter::bStealthWeldBodies = false
protected

◆ bUseGunAimDownSight

bool ACustomPlayerCharacter::bUseGunAimDownSight = true
protected

◆ CameraTimerHandle

FTimerHandle ACustomPlayerCharacter::CameraTimerHandle

◆ CompanionContextTimerHandle

FTimerHandle ACustomPlayerCharacter::CompanionContextTimerHandle
private

◆ CompanionMasterComponent

class UCompanionMasterComponent* ACustomPlayerCharacter::CompanionMasterComponent
protected

◆ CurrentAimAssist

FAimAssist ACustomPlayerCharacter::CurrentAimAssist
protected

◆ CurrentAimAssistTarget

AActor* ACustomPlayerCharacter::CurrentAimAssistTarget = nullptr
protected

◆ CurrentAimAssistTargetHits

int32 ACustomPlayerCharacter::CurrentAimAssistTargetHits = 0
protected

◆ CurrentCameraRight

float ACustomPlayerCharacter::CurrentCameraRight = 0.0f

◆ CurrentCameraUp

float ACustomPlayerCharacter::CurrentCameraUp = 0.0f

◆ FiringWeaponAimDownDelay

float ACustomPlayerCharacter::FiringWeaponAimDownDelay = 5.0f
protected

◆ FiringWeaponTimerHandle

FTimerHandle ACustomPlayerCharacter::FiringWeaponTimerHandle
private

◆ GrabberComponent

class UCharacterGrabberComponent* ACustomPlayerCharacter::GrabberComponent
protected

◆ GrabberThrowMultiplier

float ACustomPlayerCharacter::GrabberThrowMultiplier = 2.0f
protected

◆ HUD

AActor* ACustomPlayerCharacter::HUD
private

◆ PhysicsHandleComponent

class UPhysicsHandleComponent* ACustomPlayerCharacter::PhysicsHandleComponent
protected

◆ PlayerShootingComponent

class UPlayerCharacterShootingComponent* ACustomPlayerCharacter::PlayerShootingComponent
protected

◆ SlideTime

float ACustomPlayerCharacter::SlideTime = 2.0f
protected

◆ SlideTimerHandle

FTimerHandle ACustomPlayerCharacter::SlideTimerHandle
private

◆ StealthActor

AActor* ACustomPlayerCharacter::StealthActor = nullptr
private

◆ StealthActorInterface

class IStealthInterface* ACustomPlayerCharacter::StealthActorInterface = nullptr
private

◆ StealthData

FStealthData ACustomPlayerCharacter::StealthData
protected

◆ StealthLocationRule

EAttachmentRule ACustomPlayerCharacter::StealthLocationRule = EAttachmentRule::KeepWorld
protected

◆ StealthRotationRule

EAttachmentRule ACustomPlayerCharacter::StealthRotationRule = EAttachmentRule::KeepWorld
protected

◆ StealthTakedownAnims

TArray<UAnimMontage*> ACustomPlayerCharacter::StealthTakedownAnims
protected

◆ StealthTakedownTimerHandle

FTimerHandle ACustomPlayerCharacter::StealthTakedownTimerHandle
private

The documentation for this class was generated from the following files: