18#include <initializer_list>
26namespace osc {
struct AABB; }
27namespace osc {
class SubMeshDescriptor; }
28namespace osc {
struct Transform; }
29namespace osc {
class VertexFormat; }
119 const std::optional<AABB>&
bounds()
const;
141 template<std::ranges::input_range Range>
142 requires std::constructible_from<SubMeshDescriptor, std::ranges::range_value_t<Range>>
162 template<std::ranges::contiguous_range Range>
189 friend struct std::hash<
Mesh>;
199struct std::hash<
osc::Mesh> final {
202 return std::hash<const osc::Mesh::Impl*>{}(mesh.impl_.get());
Definition copy_on_upd_shared_value.h:16
Definition mesh_indices_view.h:22
void for_each_indexed_vertex(const std::function< void(Vector3)> &) const
std::vector< Vector4 > tangents() const
MeshIndicesView indices() const
void recalculate_tangents()
const VertexFormat & vertex_format() const
void set_normals(std::span< const Vector3 >)
MeshTopology topology() const
friend class GraphicsBackend
Definition mesh.h:188
void set_colors(std::span< const Color >)
void set_tex_coords(std::initializer_list< Vector2 > il)
Definition mesh.h:72
void set_topology(MeshTopology)
const SubMeshDescriptor & submesh_descriptor_at(size_t) const
void transform_vertices(const Matrix4x4 &)
std::vector< Vector3 > indexed_vertices() const
size_t num_vertices() const
bool has_tex_coords() const
void transform_vertices(const std::function< Vector3(Vector3)> &)
void set_vertices(std::initializer_list< Vector3 > il)
Definition mesh.h:48
friend bool operator==(const Mesh &, const Mesh &)=default
void set_tangents(std::span< const Vector4 >)
void set_tex_coords(std::span< const Vector2 >)
void transform_vertices(const Transform &)
void set_tangents(std::initializer_list< Vector4 > il)
Definition mesh.h:91
void set_vertex_buffer_data(const Range &range, MeshUpdateFlags flags=MeshUpdateFlag::Default)
Definition mesh.h:164
size_t num_vertex_attributes() const
void set_submesh_descriptors(const Range &submesh_descriptors)
Definition mesh.h:143
void set_indices(MeshIndicesView, MeshUpdateFlags=MeshUpdateFlag::Default)
std::vector< Color > colors() const
Triangle get_triangle_at(size_t first_index_offset) const
void set_vertex_buffer_params(size_t num_vertices, const VertexFormat &)
std::vector< Vector2 > tex_coords() const
void set_indices(std::initializer_list< uint32_t > il)
Definition mesh.h:103
const std::optional< AABB > & bounds() const
void set_normals(std::initializer_list< Vector3 > il)
Definition mesh.h:61
size_t vertex_buffer_stride() const
void set_vertex_buffer_data(std::span< const uint8_t >, MeshUpdateFlags=MeshUpdateFlag::Default)
void set_vertices(std::span< const Vector3 >)
size_t num_indices() const
void transform_normals(const std::function< Vector3(Vector3)> &)
std::optional< Vector3 > centroid() const
void recalculate_normals()
bool has_vertices() const
void for_each_indexed_triangle(const std::function< void(Triangle)> &) const
void set_colors(std::initializer_list< Color > il)
Definition mesh.h:82
void push_submesh_descriptor(const SubMeshDescriptor &)
friend std::ostream & operator<<(std::ostream &, const Mesh &)
size_t num_submesh_descriptors() const
void clear_submesh_descriptors()
std::vector< Vector3 > normals() const
std::vector< Vector3 > vertices() const
void transform_tex_coords(const std::function< Vector2(Vector2)> &)
Definition sub_mesh_descriptor.h:9
Definition bit_castable.h:13
Definition custom_decoration_generator.h:5
std::ostream & operator<<(std::ostream &, const Object &)
Vector< float, 2 > Vector2
Definition vector.h:636
MeshTopology
Definition mesh_topology.h:8
Vector< float, 3 > Vector3
Definition vector.h:644
constexpr U to(T &&value)
Definition conversion.h:56
size_t operator()(const osc::Mesh &mesh) const noexcept
Definition mesh.h:200