fix that was preventing full floor meshes being created

This commit is contained in:
Zachary Pavlov 2007-08-24 21:37:33 +00:00
parent 53e49d9751
commit d64c2e36c0
1 changed files with 21 additions and 6 deletions

View File

@ -3180,20 +3180,35 @@ create_collision_floor_mesh(CollisionNode *cnode,
for (ci = group->begin(); ci != group->end(); ++ci) {
EggPolygon *poly = DCAST(EggPolygon, *ci);
if (poly->get_num_vertices() == 3) {
EggPolygon::const_iterator vi;
EggVertex p1,p2,p3;
vi = poly->begin();
CollisionFloorMesh::TriangleIndices tri;
//generate a shared vertex triangle from the vertex pool
tri.p1=pool.create_unique_vertex(*poly->get_vertex(0))->get_index();
++vi;
tri.p2=pool.create_unique_vertex(*poly->get_vertex(1))->get_index();
++vi;
tri.p3=pool.create_unique_vertex(*poly->get_vertex(2))->get_index();
triangles.push_back(tri);
}
} else if (poly->get_num_vertices() == 4) {
//this is a case that really shouldn't happen, but appears to be required
//-split up the quad int 2 tris.
CollisionFloorMesh::TriangleIndices tri;
CollisionFloorMesh::TriangleIndices tri2;
//generate a shared vertex triangle from the vertex pool
tri.p1=pool.create_unique_vertex(*poly->get_vertex(0))->get_index();
tri.p2=pool.create_unique_vertex(*poly->get_vertex(1))->get_index();
tri.p3=pool.create_unique_vertex(*poly->get_vertex(2))->get_index();
triangles.push_back(tri);
//generate a shared vertex triangle from the vertex pool
tri2.p1=tri.p1;
tri2.p2=tri.p3;
tri2.p3=pool.create_unique_vertex(*poly->get_vertex(3))->get_index();
triangles.push_back(tri2);
}
}
//Now we have a set of triangles, and a pool