LEAP Documentation 40220
Documentation for the LEAP project
WeaponInstanceMelee.h
Go to the documentation of this file.
1// Copyright Blue Isle Studios Inc 2018. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "WeaponInstanceMelee.generated.h"
8
9class UDamageType;
10
11UENUM(BlueprintType)
12enum class EHitBoxShape : uint8
13{
14 Box,
15 Sphere,
17};
18
19USTRUCT(Blueprintable)
21{
22 GENERATED_USTRUCT_BODY()
23
24 UPROPERTY()
25 FVector Location = FVector(0);
26 UPROPERTY()
27 FRotator Rotation = FRotator(0);
28
29 UPROPERTY()
31
32 UPROPERTY()
33 FVector Extent = FVector(0);
34
35 UPROPERTY()
36 float Percent = 0.f;
37};
38
39UCLASS()
40class PROJECTX_API UWeaponInstanceMelee : public UWeaponInstance
41{
42 GENERATED_UCLASS_BODY()
43
44public:
45 virtual void BeginPlay() override;
46
47 virtual bool HasEnoughAmmo(float Amount, uint8 Mode = 0) const override;
48 virtual bool ConsumeAmmo(float Amount, uint8 Mode = 0) override;
49 virtual void FireComplete(uint8 Mode = 0) override;
50 virtual bool CanReload(EWeaponError& ErrorMessage) const override;
51 virtual bool Reload(float WorldTimeOverride) override;
52 virtual void NotifyMeleeHitbox(const FHitBoxInfo& HitBox);
53
54 FORCEINLINE class UDataTable* GetImpactEffectTable() const { return ImpactEffectTable; }
55
56 UPROPERTY(EditDefaultsOnly, Category = "Melee Weapon")
57 float Range = 500.f;
58
59protected:
60 UFUNCTION(Server, Reliable, WithValidation)
61 virtual void Server_Reliable_NotifyHitActors(const TArray<FHitResult>& HitList);
62
63 UFUNCTION(Client, Unreliable)
64 virtual void Client_Unreliable_UpdateMagazineAmmo(float MagAmmo);
65
66 UFUNCTION(NetMulticast, Unreliable)
67 virtual void Multicast_Unreliable_SpawnImpactEffect(const FHitResult& Hit);
68
69 virtual void DamageActor(const FHitResult& HitResult);
70 virtual UPhysicalMaterial* GetPhysicalMaterial(const AActor* Actor) const;
71
72 UPROPERTY()
73 TArray<AActor*> ClientHitBoxIgnoreList;
74
75 UPROPERTY()
76 TArray<AActor*> ServerHitBoxIgnoreList;
77
78 UPROPERTY(EditDefaultsOnly, Category = "Melee Weapon")
79 float AmmoRegenRate = 100.f;
80
81 /* Impact effects table. */
82 UPROPERTY(EditDefaultsOnly, Category = "Melee Weapon")
83 class UDataTable* ImpactEffectTable = NULL;
84
85 /* Physics material used when hitting player pawns. */
86 UPROPERTY(EditDefaultsOnly, Category = "Melee Weapon")
87 class UPhysicalMaterial* PlayerPhysicalMaterial = NULL;
88
89 /* Physics material used when hitting deployables. */
90 UPROPERTY(EditDefaultsOnly, Category = "Melee Weapon")
91 class UPhysicalMaterial* DeployablePhysicalMaterial = NULL;
92
93 UPROPERTY()
94 bool bFireValidated = false;
95 UPROPERTY()
96 bool bDashValidated = false;
97
98 UPROPERTY()
99 int32 CachedFireMode = 0;
100};
EWeaponError
Definition: WeaponComponent.h:15
EHitBoxShape
Definition: WeaponInstanceMelee.h:13
Definition: WeaponInstance.h:220
Definition: WeaponInstanceMelee.h:41
FORCEINLINE class UDataTable * GetImpactEffectTable() const
Definition: WeaponInstanceMelee.h:54
Definition: WeaponInstanceMelee.h:21