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

This class represents a melee weapon. More...

#include <MeleeWeaponFramework.h>

Inheritance diagram for AMeleeWeaponFramework:
AWeaponFramework IWeapon

Public Member Functions

 AMeleeWeaponFramework ()
 
virtual void ServerShoot () override
 
- Public Member Functions inherited from AWeaponFramework
 AWeaponFramework ()
 

Public Attributes

float AttackRadius = 100.f
 
float AttackRange = 100.f
 
- Public Attributes inherited from AWeaponFramework
bool bDebuggingMode = false
 
bool bInfiniteAmmo = false
 
bool bBottomlessClip = false
 
float DrawDebugTime = 2.0f
 
float DrawDebugColorDarkMultiplier = 0.1f
 
float DrawDebugColorLightMultiplier = 2.0f
 
float DrawDebugPointSize = 16.0f
 
FLinearColor MainTraceColor = FLinearColor(0.9f, 0.1f, 0.1f)
 
FLinearColor BlindFireTraceColor = FLinearColor(0.1f, 0.9f, 0.1f)
 
bool bTraceComplex = false
 
bool bReturnPhysicalMaterial = false
 
float TraceDistanceTooClose = 0.075f
 

Protected Attributes

float ComboTime = 2.0f
 
- Protected Attributes inherited from AWeaponFramework
UHitscanWeaponComponent * HitscanWeaponComponent
 
UProjectileWeaponComponent * ProjectileWeaponComponent
 
FVector TraceLocation
 
FRotator TraceRotation
 
const AActor * TraceActorToIgnore
 
TArray< AActor * > ActorsToIgnore
 
APawn * OwnerPawn
 
FWeaponData_T WeaponData
 
EWeaponType WeaponType = EWeaponType::Default
 
USceneComponent * SceneRoot
 
USkeletalMeshComponent * GunMeshComponent
 
USceneComponent * Muzzle
 
USceneComponent * RecoilPivotPoint
 
TArray< UStaticMeshComponent * > AttachmentComponents
 
class UWeaponEffectsComponent * WeaponEffects
 
USkeletalMesh * WeaponMesh
 
TSubclassOf< class AActor > ProjectileClass
 

Private Member Functions

void ComboReset ()
 

Private Attributes

int32 ComboHits = 0
 
FHitResult HitResult
 
FTimerHandle ComboTimerHandle
 
float Damage = 0.0f
 
FName NotifyName
 

Additional Inherited Members

- Protected Member Functions inherited from AWeaponFramework
virtual void BeginPlay () override
 
virtual void SetupWeaponEffects ()
 
void LogDebugMessage (const FString &Message, const bool bError=false) const
 
void Server_InitWeapon ()
 
virtual void InitWeapon () override
 
virtual void Fire (const FVector Location, const FRotator Rotation, const AActor *ActorToIgnore, const float Accuracy) override
 
virtual void Reload (const float ReloadTime) override
 
virtual void CancelReload () override
 
virtual void SwitchAutoMode () override
 
virtual void BlindFireWeapon (const FVector Location, const FRotator Rotation, const AActor *ActorToIgnore, const float Accuracy) override
 
virtual void AddAttachment (const FString &AttachmentID) override
 
virtual void ToggleAttachment (const EAttachmentType &AttachmentType) override
 
virtual void MoveUMG (bool bIsRightShoulder) override
 
virtual void Aiming (bool bIsAiming) override
 
virtual FWeaponData_T GetWeaponData () const override
 
virtual FWeaponStats_T GetWeaponStats () const override
 
virtual EWeaponType GetWeaponType () const override
 
virtual EWeaponFireMode GetFireMode () const override
 
virtual FTransform GetPivotPoint () const override
 
virtual FTransform GetAimDownSightSocket () const override
 
virtual float GetWeaponFOV () const override
 
virtual bool IsClipEmpty () const override
 
virtual void SetWeaponData (const FWeaponData_T NewWeaponData) override
 
virtual void SetWeaponShouldAutoReload (const bool bValue) override
 
virtual void SetWeaponMesh (USkeletalMesh *SkeletalMesh) override
 
virtual void SetMuzzleOffset (const FVector &Location, const FRotator &Rotation) override
 
virtual void SetRecoilPivotPoint (const FVector &Location, const FRotator &Rotation) override
 
virtual void SetWeaponMeshHidden (const bool bValue) override
 
void Multicast_SetWeaponMeshHidden (const bool bValue)
 
virtual void SetDebuggingStats (const bool bDebug, const bool bInfinite, const bool bBottomless) override
 
virtual void ToggleLaser (const bool bForceOff=false)
 
void ReceiveFire (FHitResult Hit, APawn *InstigatorPawn)
 
TArray< FWeaponModifiersGetAllWeaponAttachmentModifiers () const
 
TArray< FWeaponAttachmentGetAllWeaponAttachments () const
 
FWeaponAttachment GetWeaponAttachment (const FString &AttachmentID) const
 
bool RemoveAttachment (const FString AttachmentID, const EAttachmentType AttachmentType)
 
void RemoveAllAttachments ()
 
bool CanShoot () const
 
float GetAccuracyMultiplier () const
 
void ApplyDamageToActor (const FHitResult &Hit, FVector ShotDirection, float Multiplier=1.0f)
 
void ServerFire (const FVector Location, const FRotator Rotation, const AActor *ActorToIgnore, const float Accuracy)
 
void ServerSetReloading (const bool bReloading)
 
void ServerReload ()
 
virtual void Server_SetWeaponShouldAutoReload (const bool bValue)
 
void CalculateBulletSpread (FVector &NewBulletSpread) const
 
virtual float CalculateDistanceDamage (const float Distance) const
 
virtual FHitResult BlindFireWeaponTrace (const float Accuracy, const AActor *ActorToIgnore=nullptr)
 
virtual bool LineTrace (FHitResult &Hit, FVector &ShotDirection, const FLinearColor &Color=FLinearColor::Green, const FVector &CustomLineEnd=FVector::ZeroVector) const
 
void OnMeshReplicated ()
 
void OnRep_WeaponStats ()
 

Detailed Description

This class represents a melee weapon.

AMeleeWeaponFramework is a subclass of AWeaponFramework and provides functionality for melee weapons.

See also
MeleeWeaponFramework
AWeaponFramework

Constructor & Destructor Documentation

◆ AMeleeWeaponFramework()

AMeleeWeaponFramework::AMeleeWeaponFramework ( )
10{
12}
EWeaponType WeaponType
Definition WeaponFramework.h:178

Member Function Documentation

◆ ComboReset()

void AMeleeWeaponFramework::ComboReset ( )
private
90{
91 ComboHits = 0;
92 GetWorld()->GetTimerManager().ClearTimer(ComboTimerHandle);
93}
int32 ComboHits
Definition MeleeWeaponFramework.h:50
FTimerHandle ComboTimerHandle
Definition MeleeWeaponFramework.h:54

◆ ServerShoot()

void AMeleeWeaponFramework::ServerShoot ( )
overridevirtual

Reimplemented from AWeaponFramework.

15{
16 FVector StartLocation = Muzzle->GetComponentLocation();
17 // if(bLeftHand){StartLocation = GetOwnerMesh()->GetSocketLocation(LeftHandName);}
18
19
20
21 const FVector EndLocation = StartLocation + (TraceRotation.Vector() * AttackRange);
22 ActorsToIgnore.Add(GetOwner());
23 UBaseHelpersBPLib::PrintToLog(this, "Melee Attack", true, true);
24
25 FVector ShotDirection = -TraceRotation.Vector();
26 const bool bHit = UKismetSystemLibrary::SphereTraceSingle(GetWorld(), StartLocation, EndLocation,
27 AttackRadius, UEngineTypes::ConvertToTraceType(ECC_GameTraceChannel4),
29 FLinearColor::Yellow, FLinearColor::Red, DrawDebugTime);
30
31 // if(!CanShoot()) {return;}
32
33 // if(ComboHits > 2)
34 // {
35 // CurrentWeaponMontage = GetMeleeAnimation(EWeaponOverlay::Knife, EMeleeWeaponAttack::Combo);
36 // }
37
38 if(!bHit){return;}
39
40 const APawn* HitPawn = Cast<APawn>(HitResult.GetActor());
41 if(HitPawn != nullptr)
42 {
43 GetWorld()->GetTimerManager().ClearTimer(ComboTimerHandle);
44 ComboHits++;
45 GetWorld()->GetTimerManager().SetTimer(ComboTimerHandle,this, &AMeleeWeaponFramework::ComboReset, ComboTime);
46 }
47 UE_LOG(LogTemp,Warning,TEXT("COMBO %i"), ComboHits);
48 if(!GetWeaponStats().IsValid()){return;}
49
51
52 // //- Play Feedback Effects //
53 // PlayFeedbackEffects();
54
55 // const FRotator LookAtRotation = UKismetMathLibrary::FindLookAtRotation(UBaseHelpersBPLib::GetTraceStartLocation(GetOwnerPlayerController()),HitResult.Location);
56 // const FVector HitDirection = LookAtRotation.Vector();
57 if(HitResult.GetActor() != nullptr)
58 {
59 // if(GetOwnerController() != nullptr)
60 {
61 if(GetWeaponStats().bNonLethal)
62 {
63 // ApplyDamageToActor(HitResult, )
64 // UGameplayStatics::ApplyPointDamage(HitResult.GetActor(), Damage, HitDirection, HitResult,GetOwnerController(), GetOwner(), UNonLethalMeleeDamage::StaticClass());
65 }
66 else
67 {
68 ApplyDamageToActor(HitResult, ShotDirection, ComboHits);
69 // UGameplayStatics::ApplyPointDamage(HitResult.GetActor(), Damage, HitDirection, HitResult,GetOwnerController(), GetOwner(), UMeleeDamage::StaticClass());
70 }
71 // UAISense_Hearing::ReportNoiseEvent(GetOwnerController(), HitResult.ImpactPoint, 1.0, GetOwnerController(), 0.0f, FName("Melee"));
72 }
73 // UGameplayStatics::PlaySoundAtLocation(GetOwner(), MeleeImpactSound, HitResult.ImpactPoint);
74 // OnMeleeHit.Broadcast(HitResult.GetActor());
75
76 }
77 if(HitResult.Component != nullptr)
78 {
79 if(HitResult.Component->IsSimulatingPhysics())
80 {
81 // const FVector ImpulseVector = HitDirection * AttackImpulse;
82 // HitResult.Component->AddImpulse(ImpulseVector);
83 }
84 }
85}
void ComboReset()
Definition MeleeWeaponFramework.cpp:89
FHitResult HitResult
Definition MeleeWeaponFramework.h:52
float ComboTime
Definition MeleeWeaponFramework.h:45
float AttackRadius
Definition MeleeWeaponFramework.h:36
float Damage
Definition MeleeWeaponFramework.h:55
float AttackRange
Definition MeleeWeaponFramework.h:38
bool bDebuggingMode
Definition WeaponFramework.h:35
float DrawDebugTime
Definition WeaponFramework.h:41
virtual FWeaponStats_T GetWeaponStats() const override
Definition WeaponFramework.cpp:900
FRotator TraceRotation
Definition WeaponFramework.h:165
TArray< AActor * > ActorsToIgnore
Definition WeaponFramework.h:170
void ApplyDamageToActor(const FHitResult &Hit, FVector ShotDirection, float Multiplier=1.0f)
Definition WeaponFramework.cpp:703
USceneComponent * Muzzle
Definition WeaponFramework.h:187
static void PrintToLog(const UObject *WorldContextObject, const FString &Message, const bool bWarning=false, const bool bError=false)
Definition BaseHelpersBPLib.cpp:98
static EDrawDebugTrace::Type GetDrawDebugType(const bool bDebuggingMode)
Definition BaseHelpersBPLib.cpp:910
float DefaultDamage
Definition WeaponStructs.h:695

Member Data Documentation

◆ AttackRadius

float AMeleeWeaponFramework::AttackRadius = 100.f

◆ AttackRange

float AMeleeWeaponFramework::AttackRange = 100.f

◆ ComboHits

int32 AMeleeWeaponFramework::ComboHits = 0
private

◆ ComboTime

float AMeleeWeaponFramework::ComboTime = 2.0f
protected

◆ ComboTimerHandle

FTimerHandle AMeleeWeaponFramework::ComboTimerHandle
private

◆ Damage

float AMeleeWeaponFramework::Damage = 0.0f
private

◆ HitResult

FHitResult AMeleeWeaponFramework::HitResult
private

◆ NotifyName

FName AMeleeWeaponFramework::NotifyName
private

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