Files
Z3D/include/assets/components/point_cloud_vertex_components.hpp

39 lines
939 B
C++
Executable File

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