// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "Components/SphereComponent.h"
#include "GameFramework/Actor.h"
#include "GameFramework/ProjectileMovementComponent.h"
#include "ProjectileBase.generated.h"

UCLASS()
class OPENCONFLICT_API AProjectileBase : public AActor
{
	GENERATED_BODY()
	/*UPROPERTY and UFUNCTION declarations*/
private:
	/*Properties*/

	/*Functions*/

protected:
	/*Properties*/

	/*Functions*/

public:
	/*Properties*/
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Projectile")
	UStaticMeshComponent* projectileMesh;
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Projectile")
	USphereComponent* collision;
	UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Projectile")
	UProjectileMovementComponent* projectileMotion;

	/*Functions*/
	UFUNCTION()
	void OnHit(UPrimitiveComponent* HitComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, FVector NormalImpulse, const FHitResult& Hit);

	
	/*C++ only declarations*/
private:
	/*Properties*/

	/*Functions*/

protected:
	/*Properties*/

	/*Functions*/
	// Called when the game starts
	virtual void BeginPlay() override;

public:
	/*Properties*/

	/*Functions*/

	// Called every frame
	virtual void Tick(float DeltaTime) override;
	
	// Sets default values for this actor's properties
	AProjectileBase();

};
