21 virtual void BeginPlay()
override;
22 virtual void OnLaunched(AActor* LauncherOwner,
const FVector& InStart,
const FVector& InDirectionOrTarget)
override;
23 virtual void OnFinished(FVector TerminatedPosition,
const AActor* Terminator,
EProjectileFinishReason FinishReason)
override;
24 virtual void OnSpawnFromPool_Implementation()
override;
25 virtual void OnReturnToPool_Implementation()
override;
27 UFUNCTION(BlueprintImplementableEvent, Category =
"Projectile|Explosion")
28 void PlayExplosionEffects(FVector ExplosionLocation);
32 void OnProjectileArrived();
34 void OnFlightTimeout();
35 void ClearFlightTimeout();
38 void StartLandingWarning(const FVector& TargetLocation) const;
42 void TriggerExplosion(const FVector& ExplosionLocation);
45 UPROPERTY(EditDefaultsOnly, Category = "Projectile|Explosion", meta = (ClampMin = "0.0", Units = "cm"))
46 float ExplosionRadius = 250.0f;
48 UPROPERTY(EditDefaultsOnly, Category = "Projectile|Explosion")
49 TEnumAsByte<ECollisionChannel> ExplosionTraceChannel;
51 UPROPERTY(EditDefaultsOnly, Category = "Projectile|Explosion|Warning")
54 UPROPERTY(EditDefaultsOnly, Category = "Projectile|Flight", meta = (ClampMin = "0.0", Units = "s"))
55 float MaxFlightDuration = 5.0f;
57 UPROPERTY(VisibleAnywhere, Category = "Projectile|Explosion|Warning")
58 TObjectPtr<UPatternWarningDecalComponent> WarningDecalComponent;
61 bool bExplosionTriggered = false;
62 FTimerHandle FlightTimeoutTimerHandle;