#ifndef SVERTEX_HPP
#define SVERTEX_HPP

#include <glm/glm.hpp>

/**
 * @file SVertex.hpp
 * @brief File for the vertex struct.
 */

/**
 * @brief the struct Vertex, use to represent vertex and vertex attribute.
 */
typedef struct {
    /**
     * @brief Position attribute.
     * 3D vector.
     */
    glm::vec3 m_position;

    /**
     * @brief Normal attribute.
     * 3D vector.
     */
    glm::vec3 m_normal;

    /**
     * @brief Texture coordinates attribute.
     * 2D vector.
     */
    glm::vec2 m_texCoords;

    /**
     * @brief Tangent attribute.
     * 3D vector.
     */
    glm::vec3 m_tangent;

    /**
     * @brief Bitangent attribute.
     * 3D vector (perpendicular to m_tangent vector).
     */
    glm::vec3 m_bitangent;

    // m_normal, m_tangent, m_bitangent are supposed to create a vector base to compute normal map.
} SVertex;

#endif