#include "Crate.hh" #include "Pathfinder.hh" #include 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(); }