5#include "CoreMinimal.h"
7#include "WeaponInstanceBeam.generated.h"
13class UAfflictionInstance;
21 GENERATED_UCLASS_BODY()
23 virtual void BeginPlay()
override;
24 virtual void EndPlay(
const EEndPlayReason::Type EndPlayReason)
override;
25 virtual bool Equip()
override;
26 virtual bool UnEquip(
bool bForce =
false)
override;
28 virtual bool Fire(uint8
Mode = 0,
float WorldTimeOverride = -1.f)
override;
29 virtual void FireComplete(uint8
Mode = 0)
override;
30 virtual void FireReleased(uint8
Mode = 0)
override;
31 virtual void OwnerDied()
override;
32 virtual bool IsValidTargetingActor(AActor* PotentialTarget)
const;
34 virtual void TickComponent(
float DeltaTime,
enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
override;
35 virtual void ToggleActorFinder(
bool bIsOn);
36 virtual void TickTargetAcquire();
37 virtual void TickTargetMaintain(uint8
Mode);
38 virtual void OnTargetTeamChange(uint8
Mode);
39 virtual void OnTargetHoverStart(AActor* HoveredTarget);
40 virtual void OnTargetHoverStop(
bool bForceStop =
false);
41 virtual void OnTargetHoverTeamChange(AActor* HoveredTarget);
42 virtual void BeamToTargetStart(uint8
Mode, AActor* Target, FHitResult TargetHitResult);
43 virtual void BeamToTargetStop(uint8
Mode);
46 UFUNCTION(BlueprintImplementableEvent)
47 void K2_SearchingForTarget();
49 UFUNCTION(BlueprintNativeEvent)
50 AActor* FindBeamHoveringActor();
52 TSubclassOf <UAfflictionInstance> GetAfflictionForTarget(TWeakObjectPtr<AActor> Target) const;
54 UFUNCTION(
Server, Reliable, WithValidation)
55 void Server_BeamToTargetStart(uint8
Mode, AActor* Target, FHitResult TargetHitResult);
56 UFUNCTION(
Server, Reliable, WithValidation)
57 void Server_BeamToTargetStop(uint8
Mode);
59 virtual
void OnRep_BeamTargetActor();
61 virtual
void OnRep_IsBeaming();
64 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
65 TSubclassOf <UAfflictionInstance> AfflictionToApplyFriendlies = NULL;
67 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
68 TSubclassOf <UAfflictionInstance> AfflictionToApplyNeutral = NULL;
70 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
71 TSubclassOf <UAfflictionInstance> AfflictionToApplyEnemies = NULL;
73 UPROPERTY(EditDefaultsOnly, Category="
Weapon|Beam")
74 bool bUsesTargetActor = false;
76 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
77 float MaxEnemyBeamAngle = 60.0f;
79 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
80 float MaxFriendlyBeamAngle = 360.0f;
82 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
83 bool bLineOfSightBreaksEnemyBeam = false;
85 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam")
86 bool bLineOfSightBreaksFriendlyBeam = false;
87 UPROPERTY(ReplicatedUsing = OnRep_IsBeaming)
88 bool bIsBeaming = false;
90 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam", meta = (EditCondition = "bUsesTargetActor"))
91 float TargetAcquireMaxRange = 300.f;
93 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam", meta = (EditCondition = "bUsesTargetActor"))
94 float EnemyTargetAcquireMaxRange = 150.f;
96 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam", meta = (EditCondition = "bUsesTargetActor"))
97 TArray<TSubclassOf<AActor>> ValidTargetingActors;
99 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam", meta = (EditCondition = "bUsesTargetActor"))
100 float TargetMaintainMaxRange = 3000.f;
102 UPROPERTY(EditDefaultsOnly, Category = "
Weapon|Beam", meta = (EditCondition = "bUsesTargetActor"))
103 float EnemyTargetMaintainMaxRange = 1500.f;
104 UPROPERTY(ReplicatedUsing = OnRep_BeamTargetActor, BlueprintReadOnly, Category = "
Weapon|Beam", meta = (EditCondition = "bUsesTargetActor"))
105 TWeakObjectPtr<AActor> BeamTargetActor = NULL;
106 TWeakObjectPtr<AActor> BeamHoveringActor = NULL;
107 TWeakObjectPtr<UAfflictionInstance> InstancedAffliction = NULL;
108 FHitResult TargetAcquiredHitResult;
109 int32 TargetActorTeam = INDEX_NONE;
110 int32 HoverActorTeam = INDEX_NONE;
112 UPROPERTY(BlueprintAssignable)
113 FBeamWeaponEventSignature OnBeamStart;
114 UPROPERTY(BlueprintAssignable)
115 FBeamWeaponEventSignature OnBeamEnd;
116 UPROPERTY(BlueprintAssignable)
117 FBeamTargetSignature OnBeamTargetInRange;
118 UPROPERTY(BlueprintAssignable)
119 FBeamTargetSignature OnBeamTargetInRangeLost;
120 UPROPERTY(BlueprintAssignable)
121 FBeamTargetSignature OnBeamTargetAcquired;
122 UPROPERTY(BlueprintAssignable)
123 FBeamTargetSignature OnBeamTargetTeamChanged;
126 float MaxEnemyBeamAngleCache = 0.0f;
127 float MaxFriendlyBeamAngleCache = 0.0f;
EWeaponError
Definition: WeaponComponent.h:15
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FBeamWeaponEventSignature, uint8, Mode)
Definition: WeaponInstanceBeam.h:20
Definition: WeaponInstanceRanged.h:27