21 template<
typename Head,
typename... Tail>
class MergeMesh<Head, Tail...> {
27 return mHead.generate();
29 Triangle triangle = mTail.generate();
30 triangle.
vertices += mHeadVertexCount;
34 [[nodiscard]]
bool done() const noexcept {
return mAllDone; }
42 mAllDone = mTail.done() && mHead.done();
53 : mHead{mesh.mHead.triangles()},
54 mTail(mesh.mTail.triangles()), mHeadVertexCount{
count(mesh.mHead.vertices())}, mAllDone{mTail.done() && mHead.done()} {}
63 return mHead.generate();
64 return mTail.generate();
67 [[nodiscard]]
bool done() const noexcept {
return mAllDone; }
75 mAllDone = mTail.done() && mHead.done();
84 Vertices(
const MergeMesh& mesh) : mHead{mesh.mHead.vertices()}, mTail(mesh.mTail.vertices()), mAllDone{mTail.done() && mHead.done()} {}
Empty Mesh with zero vertices and triangles.
Definition EmptyMesh.hpp:17
Triangle generate() const
Definition MergeMesh.hpp:25
int mHeadVertexCount
Definition MergeMesh.hpp:49
bool done() const noexcept
Definition MergeMesh.hpp:34
void next()
Definition MergeMesh.hpp:36
TriangleGeneratorType< MergeMesh< Tail... > >::Type mTail
Definition MergeMesh.hpp:47
bool mAllDone
Definition MergeMesh.hpp:50
TriangleGeneratorType< Head >::Type mHead
Definition MergeMesh.hpp:46
bool done() const noexcept
Definition MergeMesh.hpp:67
VertexGeneratorType< MergeMesh< Tail... > >::Type mTail
Definition MergeMesh.hpp:80
void next()
Definition MergeMesh.hpp:69
bool mAllDone
Definition MergeMesh.hpp:82
VertexGeneratorType< Head >::Type mHead
Definition MergeMesh.hpp:79
MeshVertex generate() const
Definition MergeMesh.hpp:61
Head mHead
Definition MergeMesh.hpp:96
Triangles triangles() const noexcept
Definition MergeMesh.hpp:91
MergeMesh< Tail... > mTail
Definition MergeMesh.hpp:97
Vertices vertices() const noexcept
Definition MergeMesh.hpp:93
MergeMesh(Head head, Tail... tail)
Definition MergeMesh.hpp:89
Merges (concatenates) multiple meshes to to together.
Definition MergeMesh.hpp:17
Definition MeshVertex.hpp:14
Will have a type named "Type" that has same type as value returned by method triangles() for type Pri...
Definition Utility.hpp:30
decltype(std::declval< const Primitive * >() ->triangles()) Type
Definition Utility.hpp:32
Definition Triangle.hpp:14
Vector3i vertices
Zero based indices of the triangle vertices in counterclockwise order.
Definition Triangle.hpp:17
Will have a type named "Type" that has same type as value returned by method vertices() for type Prim...
Definition Utility.hpp:37
decltype(std::declval< const Primitive * >() ->vertices()) Type
Definition Utility.hpp:39
A base class for all mesh implementations.
Definition Mesh.hpp:112
Definition AnyGenerator.hpp:12
MergeMesh< Mesh... > mergeMesh(Mesh... meshes)
Definition MergeMesh.hpp:100
auto move(Vector3 position)
Moves a entity to the given position.
Definition Helpers.hpp:22
constexpr CountAlgorithmFunctor count
Returns the number of elements matching an element.
Definition Count.hpp:82
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25