LEAP Documentation 40220
Documentation for the LEAP project
ProjectileExplosive.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 "Projectile.h"
7#include "ProjectileExplosive.generated.h"
8
9UCLASS()
10class PROJECTX_API AProjectileExplosive : public AProjectile
11{
12 GENERATED_UCLASS_BODY()
13
14public:
15 virtual void OnSpawnedFromObjectPool() override;
16 virtual void OnReleasedToObjectPool() override;
17 void DelayedTimedExplosionExpired();
18 virtual int32 GetTicketUsageCount() const override;
19 virtual float ApplyRadialDamage(UObject* WorldContextObject, const FHitResult& HitInfo, const FVector& TargetLocation, TArray<AActor*>& HitActors, ECollisionChannel DamagePreventionChannel = ECC_Visibility, AController* InstigatorController = NULL,const UWeaponInstance* Weapon = NULL) const;
20
21 UFUNCTION(BlueprintCallable,BlueprintPure)
22 FORCEINLINE float GetExplosiveDamage() const { return ExplosiveDamage; }
23
24protected:
25 virtual void OnHit(AActor* SelfActor, AActor* OtherActor, FVector NormalImpulse, const FHitResult& Hit) override;
26 virtual void GenerateHitRequest(AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit, const FRotator& CustomRotator = FRotator::ZeroRotator, const TArray<AActor*> DamagedActors = TArray<AActor*>()) override;
27
28protected:
29 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true, DisplayName = "Base Damage"))
30 float ExplosiveDamage = 0.f;
31
32 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true, DisplayName = "Minimum Damage"))
33 float ExplosiveMinDamage = 0.f;
34
35 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true, DisplayName = "Inner Radius"))
36 float ExplosiveInnerRadius = 0.f;
37
38 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true, DisplayName = "Outer Radius"))
39 float ExplosiveOuterRadius = 0.f;
40
41 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true, DisplayName = "Falloff Exponent"))
42 float ExplosiveFalloffExponent = 0.f;
43
44 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true, DisplayName = "Damage Type"))
45 TSubclassOf<UDamageType> ExplosiveDamageType = NULL;
46
47 //If true will only explode on final bounce.
48 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true))
49 bool bFinalBounceOnly = true;
50
51 //If true will only explode on final bounce.
52 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true))
53 bool bCanBounceOffPawn = false;
54
55 /* Don't explode on hit, instead explode after a certain amount of time has passed */
56 UPROPERTY(EditDefaultsOnly, Category = "Explosive Damage", meta = (AllowPrivateAccess = true))
57 float DelayedExplosionTime = 0.0f;
58
59 FHitResult LastHit;
60 FTimerHandle DelayedExplosionTimerHandle;
61};
Definition: ProjectileExplosive.h:11
Definition: Projectile.h:18
Definition: WeaponInstance.h:220