44 lines
1.6 KiB
C++
44 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "assets/components/mesh_vertex_components.hpp"
|
|
#include "generic/component_array_set.hpp"
|
|
#include "assets/identifiers.hpp"
|
|
|
|
namespace assets
|
|
{
|
|
|
|
class mesh_data : detail::component_array_set<
|
|
mesh_vertex_components::flags,
|
|
mesh_vertex_components::all
|
|
> {
|
|
public:
|
|
|
|
[[nodiscard]] inline z3d::vector<mesh_vertex_components::position>& positions();
|
|
[[nodiscard]] inline z3d::vector<mesh_vertex_components::normal>& normals();
|
|
[[nodiscard]] inline z3d::vector<mesh_vertex_components::tex_coord>& tex_coords();
|
|
[[nodiscard]] inline z3d::vector<mesh_vertex_components::color>& colors();
|
|
[[nodiscard]] inline z3d::vector<mesh_vertex_components::reflectance>& reflectances();
|
|
[[nodiscard]] inline z3d::vector<z3d::index_triangle>& triangles();
|
|
[[nodiscard]] inline auto& material();
|
|
|
|
[[nodiscard]] inline const z3d::vector<mesh_vertex_components::position>& positions() const;
|
|
[[nodiscard]] inline const z3d::vector<mesh_vertex_components::normal>& normals() const;
|
|
[[nodiscard]] inline const z3d::vector<mesh_vertex_components::tex_coord>& tex_coords() const;
|
|
[[nodiscard]] inline const z3d::vector<mesh_vertex_components::color>& colors() const;
|
|
[[nodiscard]] inline const z3d::vector<mesh_vertex_components::reflectance>& reflectances() const;
|
|
[[nodiscard]] inline const z3d::vector<z3d::index_triangle>& triangles() const;
|
|
[[nodiscard]] inline const auto& material() const;
|
|
|
|
inline void clear();
|
|
|
|
private:
|
|
z3d::vector<z3d::index_triangle> m_triangles{};
|
|
material_id m_material_id{};
|
|
};
|
|
|
|
}
|
|
|
|
#define INCLUDE_DYNAMIC_MESH_DATA_IMPLEMENTATION
|
|
#include "assets/data/mesh_data.ipp"
|
|
#undef INCLUDE_DYNAMIC_MESH_DATA_IMPLEMENTATION
|