Files
Z3D/include/assets/components/point_cloud_vertex_components.hpp
2024-12-22 16:58:40 +01:00

37 lines
913 B
C++
Executable File

#pragma once
#include <array>
#include <tuple>
#include "util/enum_operators.hpp"
namespace components::point_cloud_vertex {
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 components::point_cloud_vertex
DEFINE_ENUM_FLAG_OPERATORS(components::point_cloud_vertex::flags)