LEAP Documentation 40220
Documentation for the LEAP project
OrbitalLaser.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 "OrbitalLaser.generated.h"
8
9UENUM(BlueprintType)
10enum class EOrbitalLaserState : uint8
11{
12 Charging = 0,
13 Firing = 1,
14 Finishing = 2,
15 NONE = 255,
16};
17
18UCLASS()
19class PROJECTX_API AOrbitalLaser : public AWeaponInstanceActor
20{
21 GENERATED_UCLASS_BODY()
22
23public:
24 UFUNCTION(BlueprintCallable, Category = OrbitalLaser)
25 float GetChargeTime() const { return ChargeTime; }
26 UFUNCTION(BlueprintCallable, Category = OrbitalLaser)
27 float GetFiringTime() const { return FiringTime; }
28 UFUNCTION(BlueprintCallable, Category = OrbitalLaser)
29 float GetFinishingTime() const { return FinishDuration; }
30 UFUNCTION(BlueprintCallable, Category = OrbitalLaser)
31 EOrbitalLaserState GetState() const { return State; }
32 UFUNCTION(BlueprintCallable, Category = OrbitalLaser)
33 float GetDamageRadius() const { return DamageRadius; }
34 UFUNCTION(BlueprintCallable,Category = OrbitalLaser)
35 float GetExplosionRadius() const { return DamageRadius; }
36 UFUNCTION(BlueprintCallable, Category = OrbitalLaser)
37 void SetExplosionRadius(float NewExplosionRadius) { DamageRadius = NewExplosionRadius; }
38
39protected:
40 virtual void BeginPlay() override;
41
42 void UpdateState(EOrbitalLaserState NewState);
43 void CleanUp();
44
45 void TraceOrbitalLaser();
46
47 UFUNCTION()
48 void OnRep_State();
49
50 UFUNCTION(BlueprintImplementableEvent)
51 void OnChargingStart();
52
53 UFUNCTION(BlueprintImplementableEvent)
54 void OnFiringStart();
55
56 UFUNCTION(BlueprintImplementableEvent)
57 void OnFinishingStart();
58
59 void Firing();
60 UFUNCTION(BlueprintCallable)
61 void Explosion();
62 void FiringComplete();
63 void Charging();
64 void Finishing();
65
66 FTimerHandle ChargingTimerHandle;
67 FTimerHandle FinishingTimerHandle;
68 FTimerHandle FiringTimerHandle;
69
70 TArray<FHitResult> CachedHits;
71
72 UPROPERTY(EditDefaultsOnly,Category = OrbitalLaser)
73 float FiringTime = 1.0f;
74 /*Time it takes to charge up*/
75 UPROPERTY(EditDefaultsOnly,Category = OrbitalLaser)
76 float ChargeTime = 1.0f;
77 /*Time it takes to clean up after firing*/
78 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
79 float FinishDuration = 1.0f;
80
81 /* Object types to target*/
82 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
83 TArray <TEnumAsByte<EObjectTypeQuery>> ObjectTypes;
84 /* The height of the laser for tracing purposes */
85 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
86 float LaserHeight = 1.0f;
88 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
89 float DamageRadius = 1.0f;
91 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
92 float BaseLaserDamage = 300.f;
94 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
95 float MinDamage = 1.0f;
97 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
98 float MaxDamageRadius = 200.0f;
100 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
101 float DamageFallOff = 0.7;
102
103 /*What Actor to spawn after the explosion*/
104 UPROPERTY(EditDefaultsOnly, Category = OrbitalLaser)
105 TSubclassOf<AActor> ActorToSpawnOnExplosion = NULL;
106
107 UPROPERTY(ReplicatedUsing = OnRep_State)
109};
EOrbitalLaserState
Definition: OrbitalLaser.h:11
Definition: OrbitalLaser.h:20
Definition: WeaponInstanceActor.h:16