This repository has been archived on 2020-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
Files
IndoorMap/mapview/3D/misc/TriangleData.h
k-a-z-u 2f37baf497 re-added grid-rendering to the editor
rebuild grid/navMesh 3D data only if needed
2018-07-03 10:53:03 +02:00

88 lines
2.1 KiB
C++

#ifndef TRIANGLEDATA_H
#define TRIANGLEDATA_H
#include <vector>
#include <Indoor/geo/Point3.h>
class TriangleData {
std::vector<float> vertices;
std::vector<float> normals;
std::vector<float> rgba;
public:
void addTriangle(Point3 p1, Point3 p2, Point3 p3) {
vertices.insert(vertices.end(), {p1.x, p1.y, p1.z});
vertices.insert(vertices.end(), {p2.x, p2.y, p2.z});
vertices.insert(vertices.end(), {p3.x, p3.y, p3.z});
}
void addTriangle(Point3 p1, Point3 p2, Point3 p3, const Point3 n) {
vertices.insert(vertices.end(), {p1.x, p1.y, p1.z});
vertices.insert(vertices.end(), {p2.x, p2.y, p2.z});
vertices.insert(vertices.end(), {p3.x, p3.y, p3.z});
normals.insert(normals.end(), {n.x, n.y, n.z});
normals.insert(normals.end(), {n.x, n.y, n.z});
normals.insert(normals.end(), {n.x, n.y, n.z});
}
void addTriangle(Point3 p1, Point3 p2, Point3 p3, const Point3 n, const float r, const float g, const float b, const float a) {
vertices.insert(vertices.end(), {p1.x, p1.y, p1.z});
vertices.insert(vertices.end(), {p2.x, p2.y, p2.z});
vertices.insert(vertices.end(), {p3.x, p3.y, p3.z});
normals.insert(normals.end(), {n.x, n.y, n.z});
normals.insert(normals.end(), {n.x, n.y, n.z});
normals.insert(normals.end(), {n.x, n.y, n.z});
rgba.insert(rgba.end(), {r,g,b,a});
rgba.insert(rgba.end(), {r,g,b,a});
rgba.insert(rgba.end(), {r,g,b,a});
}
void addLine(Point3 p1, Point3 p2, const float r, const float g, const float b, const float a) {
vertices.insert(vertices.end(), {p1.x, p1.y, p1.z});
vertices.insert(vertices.end(), {p2.x, p2.y, p2.z});
rgba.insert(rgba.end(), {r,g,b,a});
rgba.insert(rgba.end(), {r,g,b,a});
}
void addPoint(Point3 p, const float r, const float g, const float b, const float a) {
vertices.insert(vertices.end(), {p.x, p.y, p.z});
rgba.insert(rgba.end(), {r,g,b,a});
}
bool empty() const {
return vertices.empty();
}
void clear() {
vertices.clear();
normals.clear();
rgba.clear();
}
const std::vector<float>& getVertices() {return vertices;}
const std::vector<float>& getNormals() {return normals;}
const std::vector<float>& getRGBA() {return rgba;}
};
#endif // TRIANGLEDATA_H