LEAP Documentation 40220
Documentation for the LEAP project
WeaponInstanceTrace.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"
6#include "CollisionQueryParams.h"
8#include "WeaponInstanceTrace.generated.h"
9
13UCLASS()
15{
16 GENERATED_UCLASS_BODY()
17
18public:
19 virtual void BeginPlay() override;
20
21 virtual TSubclassOf<class UDamageType> GetDamageType() const override;
22
23 virtual void PrimaryFire(uint8 RemainingBurstCount) override;
24
25 FORCEINLINE class UDataTable* GetImpactEffectTable() const { return ImpactEffectTable; }
26
27protected:
28 virtual FCollisionQueryParams GetCollisionQueryParams() const;
29
30 virtual void PerformWeaponTrace();
31
32 virtual void WeaponTraceSingle();
33 virtual void WeaponTraceMulti();
34
35 virtual bool TraceSingle(FHitResult& HitResult, const FVector& Start, FVector& End, const ECollisionChannel& TraceChannel, const FCollisionQueryParams& Params);
36 virtual bool TraceMulti(TArray<FHitResult>& HitResults, const FVector& Start, FVector& End, const ECollisionChannel& TraceChannel, const FCollisionQueryParams& Params);
37
38 virtual void SpawnTraceCosmetics(UPhysicalMaterial* PhysicalMaterial, const FVector& ImpactNormal, const FVector& EndLocation);
39
40 UFUNCTION(Server, Reliable, WithValidation)
41 virtual void Server_Reliabe_TraceHit(const TArray<FHitResult>& HitResults);
42
43 virtual bool ValidateTrace(const FHitResult& Impact) const;
44
45protected:
46 /* How far the weapon trace should be made. */
47 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon")
48 float TraceRange = 20000.0f;
49 /* The weapon will continue line checking past a target even if it has a hit. */
50 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon")
51 bool bPenetratingTrace = false;
52 /* How many traces the weapon makes and applies damage with. The number of traces will divide the total damage dealt. Every trace will have to hit to deal full damage. */
53 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon")
54 int32 TraceCount = 1;
55
56 /* Determines if this trace should have an extent (has a thickness) */
57 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon|Extent")
58 bool bExtentTrace = false;
59 /* How large should the extent of this trace be? */
60 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon|Extent", meta = (EditCondition = "bExtentTrace"))
61 float TraceExtent = 0.f;
62 /* If true will use a zero-extent trace to determine world collision. */
63 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon|Extent", meta = (EditCondition = "bExtentTrace"))
64 bool bUseZeroExtentForWorldCollision = false;
65
66 /* Emitter that should be used for the weapon's trace */
67 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon|Effects")
68 UParticleSystem* TraceEmitter;
69 /* Where on the weapon to attach the Weapon Trace Emitter */
70 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon|Effects")
71 FName TraceEmitterSocket = "Muzzle";
72 /* Impact effects table. */
73 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Trace Weapon|Effects")
74 class UDataTable* ImpactEffectTable = NULL;
75};
Definition: WeaponInstanceRanged.h:27
Definition: WeaponInstanceTrace.h:15
FORCEINLINE class UDataTable * GetImpactEffectTable() const
Definition: WeaponInstanceTrace.h:25