// Project Lab - NHTV Igad

#include "UnrealProject.h"
#include "NetworkCharacter.h"
#include "SpiralProjectile.h"

#define SPIRALTIMESTEP (0.02f)

void ASpiralProjectile::BeginPlay()
{
	Super::BeginPlay();
	if (Role != ROLE_Authority)
		return;
	// Set the rotation of the projectile so that it is facing away from the caster.
	SetActorRotation(FRotator((this->GetActorLocation() - character->GetActorLocation()).Rotation()));
	m_elapsedTime = 0;
}

void ASpiralProjectile::NativeMove(float DeltaTime)
{
	m_elapsedTime += DeltaTime;
	// Fixed update
	while (m_elapsedTime >= SPIRALTIMESTEP)
	{
		m_elapsedTime -= SPIRALTIMESTEP;
		float distance = speed * SPIRALTIMESTEP;
		// Rotate the projectile according to how far it has traveled.
		FRotator rotation = FRotator(0, distance * 0.25f, 0);
		AddActorWorldRotation(rotation);
		// Move the projectile forwards.
		AddActorWorldOffset(GetActorForwardVector() * (distance * 2), true);
	}
}

