#include "K37FlamePillar.h"
#include "Engine/HitResult.h"
#include "EK37FlamePillarState.h"
#include "UObject/NoExportTypes.h"
#include "Net/UnrealNetwork.h"
#include "AkComponent.h"
#include "Components/CapsuleComponent.h"
#include "AuthoritativePoolableActorComponent.h"

class ASurvivor;
class UK37FlamePillarData;
class UPrimitiveComponent;
class AActor;

void AK37FlamePillar::OnRep_CurrentState()
{

}

void AK37FlamePillar::Multicast_HitSurvivor_Implementation(ASurvivor* survivor)
{

}

FHitResult AK37FlamePillar::GetPillarSpawnHitResult() const
{
	return FHitResult{};
}

float AK37FlamePillar::GetPillarRadius() const
{
	return 0.0f;
}

float AK37FlamePillar::GetPillarHeight() const
{
	return 0.0f;
}

float AK37FlamePillar::GetDurationForFlamePillarState(EK37FlamePillarState state)
{
	return 0.0f;
}

void AK37FlamePillar::Authority_StartVanishing()
{

}

void AK37FlamePillar::Authority_StartSpawning(const FTransform& spawnTransform, UK37FlamePillarData* flamePillarData)
{

}

void AK37FlamePillar::Authority_StartErupting()
{

}

void AK37FlamePillar::Authority_SetCurrentState(EK37FlamePillarState state)
{

}

void AK37FlamePillar::Authority_OnOverlap(UPrimitiveComponent* overlappedComponent, AActor* otherActor, UPrimitiveComponent* otherComp, int32 otherBodyIndex, bool bFromSweep, const FHitResult& sweepResult)
{

}

void AK37FlamePillar::Authority_Despawn()
{

}

void AK37FlamePillar::GetLifetimeReplicatedProps(TArray<FLifetimeProperty>& OutLifetimeProps) const
{
	Super::GetLifetimeReplicatedProps(OutLifetimeProps);

	DOREPLIFETIME(AK37FlamePillar, _currentState);
	DOREPLIFETIME(AK37FlamePillar, _flamePillarData);
	DOREPLIFETIME(AK37FlamePillar, _owningVampireAbility);
}

AK37FlamePillar::AK37FlamePillar()
{
	this->_audioComponent = CreateDefaultSubobject<UAkComponent>(TEXT("AudioComponent"));
	this->_currentState = EK37FlamePillarState::NotSpawned;
	this->_eruptionCapsuleHitbox = CreateDefaultSubobject<UCapsuleComponent>(TEXT("CollisionCylinder"));
	this->_authoritativePoolableActorComponent = CreateDefaultSubobject<UAuthoritativePoolableActorComponent>(TEXT("PoolableActorComponent"));
}
