Added functions to get trimesh info

This commit is contained in:
Andrea Catania 2018-06-07 15:46:17 +02:00
parent b4c65093d7
commit 0b7c4db5ee
2 changed files with 24 additions and 0 deletions

View file

@ -88,6 +88,26 @@ int TriangleMesh::_create_bvh(BVH *p_bvh, BVH **p_bb, int p_from, int p_size, in
return index;
}
void TriangleMesh::get_indices(PoolVector<int> *r_triangles_indices) const {
if (!valid)
return;
const int triangles_num = triangles.size();
// Parse vertices indices
PoolVector<Triangle>::Read triangles_read = triangles.read();
r_triangles_indices->resize(triangles_num * 3);
PoolVector<int>::Write r_indices_write = r_triangles_indices->write();
for (int i = 0; i < triangles_num; ++i) {
r_indices_write[3 * i + 0] = triangles_read[i].indices[0];
r_indices_write[3 * i + 1] = triangles_read[i].indices[1];
r_indices_write[3 * i + 2] = triangles_read[i].indices[2];
}
}
void TriangleMesh::create(const PoolVector<Vector3> &p_faces) {
valid = false;

View file

@ -92,6 +92,10 @@ public:
Vector3 get_area_normal(const AABB &p_aabb) const;
PoolVector<Face3> get_faces() const;
PoolVector<Triangle> get_triangles() const { return triangles; }
PoolVector<Vector3> get_vertices() const { return vertices; }
void get_indices(PoolVector<int> *p_triangles_indices) const;
void create(const PoolVector<Vector3> &p_faces);
TriangleMesh();
};