#pragma once #include #include #include "util/enum_bitfield_operators.hpp" namespace assets::mesh_vertex_components { using position = std::array; using normal = std::array; using tex_coord = std::array; using color = std::array; using reflectance = std::array; namespace indices { using type = std::size_t; inline constexpr type position = 0; inline constexpr type normal = 1; inline constexpr type tex_coord = 2; inline constexpr type color = 3; inline constexpr type reflectance = 4; } enum class flags : std::uint8_t { none = 0, position = 1 << indices::position, normal = 1 << indices::normal, tex_coord = 1 << indices::tex_coord, color = 1 << indices::color, reflectance = 1 << indices::reflectance }; using all = std::tuple; constexpr inline auto count = std::tuple_size_v; } // namespace mesh_vertex_components DEFINE_ENUM_BITFIELD_OPERATORS(assets::mesh_vertex_components::flags)