rendered paste body#include "Crate.hh"
#include "Pathfinder.hh"
#include <stdexcept>
Crate::Crate(Pathfinder * pPathfinder) :
mpPathfinder(pPathfinder)
{
TextureManager * pTextureManager = pPathfinder->getTextureManager();
//pTextureManager->Cache(PKGPIXMAPDIR"/indiana-jones-crate.png", mTexture);
if(!pTextureManager->Cache("/home/earthworm/Projects/pathfinder/font.tga", mTexture))
throw std::runtime_error("Crate::Crate() : could not create texture");
// specify the vertices that make up a cube
marVertices[0][0] = -1.0f; marVertices[0][1] = -1.0f; marVertices[0][2] = -1.0f;
marVertices[1][0] = -1.0f; marVertices[1][1] = -1.0f; marVertices[1][2] = 1.0f;
marVertices[2][0] = -1.0f; marVertices[2][1] = 1.0f; marVertices[2][2] = -1.0f;
marVertices[3][0] = -1.0f; marVertices[3][1] = 1.0f; marVertices[3][2] = 1.0f;
marVertices[4][0] = 1.0f; marVertices[4][1] = -1.0f; marVertices[4][2] = -1.0f;
marVertices[5][0] = 1.0f; marVertices[5][1] = -1.0f; marVertices[5][2] = 1.0f;
marVertices[6][0] = 1.0f; marVertices[6][1] = 1.0f; marVertices[6][2] = -1.0f;
marVertices[7][0] = 1.0f; marVertices[7][1] = 1.0f; marVertices[7][2] = 1.0f;
// construct faces from those vertices using indices
arFaces[0][0] = 0; arFaces[0][1] = 2; arFaces[0][2] = 6; arFaces[0][3] = 4;
arFaces[1][0] = 1; arFaces[1][1] = 3; arFaces[1][2] = 2; arFaces[1][3] = 0;
arFaces[2][0] = 5; arFaces[2][1] = 7; arFaces[2][2] = 3; arFaces[2][3] = 1;
arFaces[3][0] = 4; arFaces[3][1] = 6; arFaces[3][2] = 7; arFaces[3][3] = 5;
arFaces[4][0] = 2; arFaces[4][1] = 3; arFaces[4][2] = 7; arFaces[4][3] = 6;
arFaces[5][0] = 1; arFaces[5][1] = 0; arFaces[5][2] = 4; arFaces[5][3] = 5;
}
Crate::~Crate()
{
}
void Crate::draw()
{
TextureManager * pTextureManager = mpPathfinder->getTextureManager();
if(pTextureManager->Bind(mTexture.mnCacheId))
{
std::cout << "Crate::draw() : bad texture" << std::endl;
}
glBegin(GL_QUADS);
for(std::size_t i = 0; i < 6; ++ i)
{
glTexCoord2d(0.0f, 0.0f);
glVertex3f(marVertices[arFaces[i][0]][0], marVertices[arFaces[i][0]][1], marVertices[arFaces[i][0]][2]);
glTexCoord2d(1.0f, 0.0f);
glVertex3f(marVertices[arFaces[i][1]][0], marVertices[arFaces[i][1]][1], marVertices[arFaces[i][1]][2]);
glTexCoord2d(1.0f, 1.0f);
glVertex3f(marVertices[arFaces[i][2]][0], marVertices[arFaces[i][2]][1], marVertices[arFaces[i][2]][2]);
glTexCoord2d(0.0f, 1.0f);
glVertex3f(marVertices[arFaces[i][3]][0], marVertices[arFaces[i][3]][1], marVertices[arFaces[i][3]][2]);
}
glEnd();
}