#pragma once

#include "CoreMinimal.h"
#include "KillerProjectileAbilityProjectile.h"
#include "Engine/HitResult.h"
#include "LaunchInfo.h"
#include "K40Projectile.generated.h"

class USphereComponent;
class UPrimitiveComponent;
class AActor;

UCLASS(Blueprintable)
class AK40Projectile : public AKillerProjectileAbilityProjectile
{
	GENERATED_BODY()

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, Instanced, meta=(AllowPrivateAccess=true))
	USphereComponent* _nearMissDetector;

protected:
	UFUNCTION(BlueprintCallable)
	void NearMissOverlapEnd(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex);

	UFUNCTION()
	void NearMissOverlapBegin(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& sweepResult);

public:
	UFUNCTION(BlueprintPure)
	FLaunchInfo GetLastLaunchInfo() const;

protected:
	UFUNCTION(BlueprintCallable, BlueprintImplementableEvent, BlueprintCosmetic)
	void Cosmetic_OnTeleportedThroughDoor();

public:
	AK40Projectile();
};

FORCEINLINE uint32 GetTypeHash(const AK40Projectile) { return 0; }
