All pastes #108868 Raw Edit

Unnamed

public text v1 · immutable
#108868 ·published 2006-07-31 18:49 UTC
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();
}