summaryrefslogtreecommitdiffstats
path: root/src/BSPTree.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/BSPTree.cpp')
-rw-r--r--src/BSPTree.cpp42
1 files changed, 21 insertions, 21 deletions
diff --git a/src/BSPTree.cpp b/src/BSPTree.cpp
index 91efb6d..7b23e79 100644
--- a/src/BSPTree.cpp
+++ b/src/BSPTree.cpp
@@ -24,18 +24,18 @@ namespace Zoom {
void BSPTree::partition(const TriangleRecord &t, std::list<TriangleRecord> *front, std::list<TriangleRecord> *back) const {
for(int i = 0; i < 3; ++i) {
- if(plane.contains(t.triangle.getVertex(i))) {
- const vmml::vec3f *v[3] = {&t.triangle.getVertex(i), &t.triangle.getVertex((i+1)%3), &t.triangle.getVertex((i+2)%3)};
+ if(plane.contains(t.getTriangle().getVertex(i))) {
+ const vmml::vec3f *v[3] = {&t.getTriangle().getVertex(i), &t.getTriangle().getVertex((i+1)%3), &t.getTriangle().getVertex((i+2)%3)};
vmml::vec3f is = plane.intersection(*v[1], *v[2]-*v[1]);
if(plane.isInFront(*v[1])) {
- front->push_back(TriangleRecord(Triangle(*v[0], *v[1], is, t.triangle.getColor()), t.data));
- back->push_back(TriangleRecord(Triangle(*v[0], is, *v[2], t.triangle.getColor()), t.data));
+ front->push_back(TriangleRecord(Triangle(*v[0], *v[1], is, t.getTriangle().getColor()), t.getData()));
+ back->push_back(TriangleRecord(Triangle(*v[0], is, *v[2], t.getTriangle().getColor()), t.getData()));
}
else {
- back->push_back(TriangleRecord(Triangle(*v[0], *v[1], is, t.triangle.getColor()), t.data));
- front->push_back(TriangleRecord(Triangle(*v[0], is, *v[2], t.triangle.getColor()), t.data));
+ back->push_back(TriangleRecord(Triangle(*v[0], *v[1], is, t.getTriangle().getColor()), t.getData()));
+ front->push_back(TriangleRecord(Triangle(*v[0], is, *v[2], t.getTriangle().getColor()), t.getData()));
}
return;
@@ -43,7 +43,7 @@ void BSPTree::partition(const TriangleRecord &t, std::list<TriangleRecord> *fron
}
for(int i = 0; i < 3; ++i) {
- const vmml::vec3f *v[3] = {&t.triangle.getVertex(i), &t.triangle.getVertex((i+1)%3), &t.triangle.getVertex((i+2)%3)};
+ const vmml::vec3f *v[3] = {&t.getTriangle().getVertex(i), &t.getTriangle().getVertex((i+1)%3), &t.getTriangle().getVertex((i+2)%3)};
if((plane.isInFront(*v[0]) && plane.isBehind(*v[1]) && plane.isBehind(*v[2]))
|| (plane.isBehind(*v[0]) && plane.isInFront(*v[1]) && plane.isInFront(*v[2]))) {
@@ -51,14 +51,14 @@ void BSPTree::partition(const TriangleRecord &t, std::list<TriangleRecord> *fron
vmml::vec3f is2 = plane.intersection(*v[0], *v[2]-*v[0]);
if(plane.isInFront(*v[0])) {
- front->push_back(TriangleRecord(Triangle(*v[0], is1, is2, t.triangle.getColor()), t.data));
- back->push_back(TriangleRecord(Triangle(is1, *v[1], is2, t.triangle.getColor()), t.data));
- back->push_back(TriangleRecord(Triangle(*v[1], *v[2], is2, t.triangle.getColor()), t.data));
+ front->push_back(TriangleRecord(Triangle(*v[0], is1, is2, t.getTriangle().getColor()), t.getData()));
+ back->push_back(TriangleRecord(Triangle(is1, *v[1], is2, t.getTriangle().getColor()), t.getData()));
+ back->push_back(TriangleRecord(Triangle(*v[1], *v[2], is2, t.getTriangle().getColor()), t.getData()));
}
else {
- back->push_back(TriangleRecord(Triangle(*v[0], is1, is2, t.triangle.getColor()), t.data));
- front->push_back(TriangleRecord(Triangle(is1, *v[1], is2, t.triangle.getColor()), t.data));
- front->push_back(TriangleRecord(Triangle(*v[1], *v[2], is2, t.triangle.getColor()), t.data));
+ back->push_back(TriangleRecord(Triangle(*v[0], is1, is2, t.getTriangle().getColor()), t.getData()));
+ front->push_back(TriangleRecord(Triangle(is1, *v[1], is2, t.getTriangle().getColor()), t.getData()));
+ front->push_back(TriangleRecord(Triangle(*v[1], *v[2], is2, t.getTriangle().getColor()), t.getData()));
}
return;
@@ -78,18 +78,18 @@ BSPTree::BSPTree(const std::list<TriangleRecord> &triangles) : frontTree(0), bac
std::list<TriangleRecord> front, back;
for(std::list<TriangleRecord>::const_iterator t = triangles.begin(); t != triangles.end(); ++t) {
- if(t->triangle.isDegenerate())
+ if(t->getTriangle().isDegenerate())
continue;
- if(plane.contains(t->triangle)) {
+ if(plane.contains(t->getTriangle())) {
this->triangles.push_back(*t);
continue;
}
- else if(plane.isInFront(t->triangle)) {
+ else if(plane.isInFront(t->getTriangle())) {
front.push_back(*t);
continue;
}
- else if(plane.isBehind(t->triangle)) {
+ else if(plane.isBehind(t->getTriangle())) {
back.push_back(*t);
continue;
}
@@ -131,7 +131,7 @@ vmml::vec3f BSPTree::findCenter(const std::list<TriangleRecord> &triangles) {
vmml::vec3f v;
for(std::list<TriangleRecord>::const_iterator t = triangles.begin(); t != triangles.end(); ++t) {
- v += t->triangle.getCenter();
+ v += t->getTriangle().getCenter();
}
return v/triangles.size();
@@ -142,13 +142,13 @@ const Triangle* BSPTree::findNearestTriangle(const std::list<TriangleRecord> &tr
float distanceSq;
for(std::list<TriangleRecord>::const_iterator t = triangles.begin(); t != triangles.end(); ++t) {
- if(t->triangle.isDegenerate())
+ if(t->getTriangle().isDegenerate())
continue;
- float d = t->triangle.getCenter().squared_distance(v);
+ float d = t->getTriangle().getCenter().squared_distance(v);
if(!current || d < distanceSq) {
- current = &t->triangle;
+ current = &t->getTriangle();
distanceSq = d;
}
}