#pragma once #include "config/primitives.hpp" #include "util/enum_bitfield_operators.hpp" #include #include namespace assets::mesh_shader_components { namespace indices { enum : z3d::size { face, line, point, luminance, color, alpha, color_texture, uniform_lighting, textured_lighting, uniform_color }; } enum class flags : std::uint16_t { none = 0, face = 1 << indices::face, line = 1 << indices::line, point = 1 << indices::point, luminance = 1 << indices::luminance, color = 1 << indices::color, alpha = 1 << indices::alpha, color_texture = 1 << indices::color_texture, uniform_lighting = 1 << indices::uniform_lighting, textured_lighting = 1 << indices::textured_lighting, uniform_color = 1 << indices::uniform_color }; constexpr inline auto names = std::array{ "face", "line", "point", "luminance", "color", "alpha", "color_texture", "uniform_lighting", "textured_lighting", "uniform_color" }; } DEFINE_ENUM_BITFIELD_OPERATORS(assets::mesh_shader_components::flags)