#pragma once

#include <cstdint>
#include "Maths.h"
#include "vector"

namespace dae
{
	struct Vertex
	{
        Vector4 position{};
        ColorRGB color{colors::White};
        Vector2 uv{};
        bool valid{ true };
        Vector3 normal{};
        Vector3 tangent{};
        Vector3 viewDir{};
    };

	struct Sample
	{
        Vector2 uv{};
        Vector3 normal{};
        Vector3 tangent{};
        Vector3 viewDirection{};
        float depth{};
        Vector3 weight{};
    };

	enum class PrimitiveTopology
	{
		TriangleList,
		TriangleStrip
	};

	struct Mesh
	{
		std::vector<Vertex> vertices{};
		std::vector<uint32_t> indices{};
		PrimitiveTopology primitiveTopology{ PrimitiveTopology::TriangleList };

		std::vector<Vertex> vertices_out{};
		Matrix worldMatrix{};
	};
}
