summaryrefslogtreecommitdiff
path: root/thirdparty/thekla_atlas/nvmesh/MeshBuilder.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/thekla_atlas/nvmesh/MeshBuilder.h')
-rw-r--r--thirdparty/thekla_atlas/nvmesh/MeshBuilder.h119
1 files changed, 0 insertions, 119 deletions
diff --git a/thirdparty/thekla_atlas/nvmesh/MeshBuilder.h b/thirdparty/thekla_atlas/nvmesh/MeshBuilder.h
deleted file mode 100644
index 5b3af3fc1d..0000000000
--- a/thirdparty/thekla_atlas/nvmesh/MeshBuilder.h
+++ /dev/null
@@ -1,119 +0,0 @@
-// This code is in the public domain -- castanyo@yahoo.es
-
-#pragma once
-#ifndef NV_MESH_MESHBUILDER_H
-#define NV_MESH_MESHBUILDER_H
-
-#include "nvmesh.h"
-#include "nvcore/Array.h"
-#include "nvmath/Vector.h"
-
-namespace nv
-{
- class String;
- class TriMesh;
- class QuadTriMesh;
- namespace HalfEdge { class Mesh; }
-
-
- /// Mesh builder is a helper class for importers.
- /// Ideally it should handle any vertex data, but for now it only accepts positions,
- /// normals and texcoords.
- class MeshBuilder
- {
- NV_FORBID_COPY(MeshBuilder);
- NV_FORBID_HEAPALLOC();
- public:
- MeshBuilder();
- ~MeshBuilder();
-
- // Builder methods.
- uint addPosition(const Vector3 & v);
- uint addNormal(const Vector3 & v);
- uint addTexCoord(const Vector2 & v, uint set = 0);
- uint addColor(const Vector4 & v, uint set = 0);
-
- void beginGroup(uint id);
- void endGroup();
-
- uint addMaterial(const char * name);
- void beginMaterial(uint id);
- void endMaterial();
-
- void beginPolygon(uint id = 0);
- uint addVertex(uint p, uint n = NIL, uint t0 = NIL, uint t1 = NIL, uint c0 = NIL, uint c1 = NIL, uint c2 = NIL);
- uint addVertex(const Vector3 & p);
- //uint addVertex(const Vector3 & p, const Vector3 & n, const Vector2 & t0 = Vector2(0), const Vector2 & t1 = Vector2(0), const Vector4 & c0 = Vector4(0), const Vector4 & c1 = Vector4(0));
- bool endPolygon();
-
- uint weldPositions();
- uint weldNormals();
- uint weldTexCoords(uint set = 0);
- uint weldColors(uint set = 0);
- void weldVertices();
-
- void optimize(); // eliminate duplicate components and duplicate vertices.
- void removeUnusedMaterials(Array<uint> & newMaterialId);
- void sortFacesByGroup();
- void sortFacesByMaterial();
-
- void done();
- void reset();
-
- // Hints.
- void hintTriangleCount(uint count);
- void hintVertexCount(uint count);
- void hintPositionCount(uint count);
- void hintNormalCount(uint count);
- void hintTexCoordCount(uint count, uint set = 0);
- void hintColorCount(uint count, uint set = 0);
-
- // Helpers.
- void addTriangle(uint v0, uint v1, uint v2);
- void addQuad(uint v0, uint v1, uint v2, uint v3);
-
- // Get result.
- TriMesh * buildTriMesh() const;
- QuadTriMesh * buildQuadTriMesh() const;
-
- enum Error {
- Error_None,
- Error_NonManifoldEdge,
- Error_NonManifoldVertex,
- };
-
- HalfEdge::Mesh * buildHalfEdgeMesh(bool weldPositions, Error * error = NULL, Array<uint> * badFaces = NULL) const;
-
- bool buildPositions(Array<Vector3> & positionArray);
- bool buildNormals(Array<Vector3> & normalArray);
- bool buildTexCoords(Array<Vector2> & texCoordArray, uint set = 0);
- bool buildColors(Array<Vector4> & colorArray, uint set = 0);
- void buildVertexToPositionMap(Array<int> & map);
-
-
- // Expose attribute indices of the unified vertex array.
- uint vertexCount() const;
-
- uint positionCount() const;
- uint normalCount() const;
- uint texCoordCount(uint set = 0) const;
- uint colorCount(uint set = 0) const;
-
- uint materialCount() const;
- const char * material(uint i) const;
-
- uint positionIndex(uint vertex) const;
- uint normalIndex(uint vertex) const;
- uint texCoordIndex(uint vertex, uint set = 0) const;
- uint colorIndex(uint vertex, uint set = 0) const;
-
- private:
-
- struct PrivateData;
- PrivateData * d;
-
- };
-
-} // nv namespace
-
-#endif // NV_MESH_MESHBUILDER_H