5#include "CoreMinimal.h"
6#include "Components/StaticMeshComponent.h"
9#include "TurretComponent.generated.h"
12class UAdvancedWidgetComponent;
13class AStaticMeshActor;
22 GENERATED_UCLASS_BODY()
25 UFUNCTION(BlueprintPure)
26 FRotator GetTargetingRotation()
const;
27 UFUNCTION(BlueprintPure)
28 AActor* GetTarget()
const {
return Target.Get(); }
30 virtual void Deactivate()
override;
31 virtual void Activate(
bool bReset =
false)
override;
33 UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly)
34 virtual void FireProjectile(
const FTransform& TransformStart,
bool bRequiresValidTarget =
true);
37 UPROPERTY(EditDefaultsOnly)
38 FVector ProjectileOffset = FVector::ZeroVector;
40 virtual
void BeginPlay() override;
41 virtual
void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
43 UPROPERTY(BlueprintAssignable)
45 UPROPERTY(BlueprintAssignable)
46 FTargetFoundSignature OnTargetKilled;
47 UPROPERTY(BlueprintAssignable)
48 FFiredSignature OnFired;
51 virtual
void Targeting();
52 virtual
void SetTarget(AActor* NewTarget);
54 UFUNCTION(BlueprintPure, Category = Turret)
55 FTransform GetProjectileTransform() const;
57 TWeakObjectPtr<AActor> Target = NULL;
58 TWeakObjectPtr<AActor> PreviousTarget = NULL;
61 TArray<AActor*> PotentialTargets;
63 FTimerHandle FireDelayTimer;
64 FTimerHandle TargetingDelayTimer;
65 FTimerHandle FireRateTimer;
68 UPROPERTY(EditDefaultsOnly, Category = Turret)
72 UPROPERTY(EditDefaultsOnly, Category = Turret)
76 UPROPERTY(EditDefaultsOnly, Category = Turret)
77 float TargetAcquiredFireDelay = 1.0f;
80 UPROPERTY(EditDefaultsOnly, Category = Turret)
81 float Range = 15000.0f;
84 UPROPERTY(EditDefaultsOnly, Category = Turret)
85 float TargetingAngle = 45.0f;
88 UPROPERTY(EditDefaultsOnly, Category = Turret)
89 TArray <TEnumAsByte<EObjectTypeQuery>> ObjectTypes;
92 UPROPERTY(EditDefaultsOnly, Category = Turret)
93 FVector2D RandomTargetingRotationPitch = FVector2D(-45.0f, 45.0f);
96 UPROPERTY(EditDefaultsOnly, Category = Turret)
97 FVector2D RandomTargetingRotationYaw = FVector2D(0.0f, 360.0f);
100 UPROPERTY(EditDefaultsOnly, Category = Turret)
101 float RandomTargetingRotationDelay = 3.0f;
103 UFUNCTION(NetMulticast, Unreliable)
104 void Multicast_OnFired();
108 FRotator RandomRotation = FRotator::ZeroRotator;
109 float RandomRotationCounter = 0.0f;
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FTargetFoundSignature, AActor *, Target)
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FFiredSignature)
Definition: ProjectXCharacter.h:128
Definition: OwnedInterface.h:20
Definition: TurretComponent.h:21
Definition: WeaponInstanceProjectile.h:36