#pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "GameplayEffectTypes.h" #include "AuraProjectile.generated.h" class UNiagaraSystem; class USphereComponent; class UProjectileMovementComponent; UCLASS() class AURA_API AAuraProjectile : public AActor { GENERATED_BODY() public: AAuraProjectile(); UPROPERTY(VisibleAnywhere) TObjectPtr ProjectileMovement; UPROPERTY(BlueprintReadWrite, meta = (ExposeOnSpawn = true)) FGameplayEffectSpecHandle DamageEffectSpecHandle; protected: virtual void BeginPlay() override; virtual void Destroyed() override; UFUNCTION() void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); private: UPROPERTY(EditDefaultsOnly) float LifeSpan = 15.f; bool bHit = false; UPROPERTY(VisibleAnywhere) TObjectPtr Sphere; UPROPERTY(EditAnywhere) TObjectPtr ImpactEffect; UPROPERTY(EditAnywhere) TObjectPtr ImpactSound; UPROPERTY(EditAnywhere) TObjectPtr LoopingSound; UPROPERTY() TObjectPtr LoopingSoundComponent; };