Unravel Engine C++ Reference
Loading...
Searching...
No Matches
scale_mesh.hpp
Go to the documentation of this file.
1#ifndef GENERATOR_SCALEMESH_HPP
2#define GENERATOR_SCALEMESH_HPP
3
4#include "transform_mesh.hpp"
5
6namespace generator
7{
8
10template<typename mesh_t>
12{
13private:
15 impl_t transform_mesh_;
16
17public:
20 scale_mesh_t(mesh_t mesh, const gml::dvec3& scale)
21 : transform_mesh_{std::move(mesh),
22 [scale](mesh_vertex_t& value)
23 {
24 value.position *= scale;
25 value.normal = normalize(scale * value.normal);
26 }}
27 {
28 }
29
31
32 triangles_t triangles() const noexcept
33 {
34 return transform_mesh_.triangles();
35 }
36
38
39 vertices_t vertices() const noexcept
40 {
41 return transform_mesh_.vertices();
42 }
43};
44
45template<typename mesh_t>
46scale_mesh_t<mesh_t> scale_mesh(mesh_t mesh, const gml::dvec3& delta)
47{
48 return scale_mesh_t<mesh_t>{std::move(mesh), delta};
49}
50} // namespace generator
51
52#endif
Scales a mesh (keeps normals unit length)
triangles_t triangles() const noexcept
scale_mesh_t(mesh_t mesh, const gml::dvec3 &scale)
typename impl_t::vertices_t vertices_t
vertices_t vertices() const noexcept
typename impl_t::triangles_t triangles_t
Apply a mutator function to each vertex.
typename impl_t::triangles_t triangles_t
float scale
Definition hub.cpp:25
scale_mesh_t< mesh_t > scale_mesh(mesh_t mesh, const gml::dvec3 &delta)