#pragma once #include "assets/components/mesh_vertex_components.hpp" #include "generic/component_array_set.hpp" #include "assets/identifiers.hpp" namespace assets { class mesh_data : public detail::component_array_set< mesh_vertex_components::flags, mesh_vertex_components::all > { public: [[nodiscard]] inline z3d::vector& positions(); [[nodiscard]] inline z3d::vector& normals(); [[nodiscard]] inline z3d::vector& tex_coords(); [[nodiscard]] inline z3d::vector& colors(); [[nodiscard]] inline z3d::vector& reflectances(); [[nodiscard]] inline z3d::vector& triangles(); [[nodiscard]] inline material_id& material(); [[nodiscard]] inline const z3d::vector& positions() const; [[nodiscard]] inline const z3d::vector& normals() const; [[nodiscard]] inline const z3d::vector& tex_coords() const; [[nodiscard]] inline const z3d::vector& colors() const; [[nodiscard]] inline const z3d::vector& reflectances() const; [[nodiscard]] inline const z3d::vector& triangles() const; [[nodiscard]] inline const material_id& material() const; inline void clear(); private: z3d::vector 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