www.pudn.com > Gimcrack-v0.0051-Source.zip > cube.cpp


#include  
#include  
#include "cube.h" 
 
//////////////////////////////////////////////////////////////////////////////// 
 
GcCube::GcCube(): 
size(1), 
posX(0), 
posY(0), 
posZ(0), 
velX(2.5f), 
velY(-2.5f), 
velZ(2.5f) 
{ 
	// Default size is 1 unit per side and pos is 0,0,0 
} 
 
//////////////////////////////////////////////////////////////////////////////// 
 
GcCube::~GcCube() 
{ 
} 
 
//////////////////////////////////////////////////////////////////////////////// 
 
void GcCube::SetSize(float sSize) 
{ 
	size = sSize / 2; 
} 
 
//////////////////////////////////////////////////////////////////////////////// 
 
void GcCube::SetPosition(float x, float y, float z) 
{ 
	posX = x; 
	posY = y; 
	posZ = z; 
} 
 
//////////////////////////////////////////////////////////////////////////////// 
 
void GcCube::Move(float xMove, float yMove, float zMove, float height, bool old) 
{ 
	// Check to see so that the cube doesn't move thorught the terrain 
	if(posY > height + size + 10) 
	{ 
		 
		posY += yMove; 
	} 
	else 
	{ 
		posY = height + size + 10; 
	} 
 
	posZ += zMove; 
	posX += xMove; 
} 
 
//////////////////////////////////////////////////////////////////////////////// 
 
void GcCube::Move(float xAcel, float yAcel, float zAcel, float height) 
{ 
	// Set the new speed 
	velX += xAcel; 
	velY += yAcel; 
	velZ += zAcel; 
 
	// Check to see so that the cube doesn't move thorught the terrain 
	if(posY > height + size + 10) 
	{ 
		 
		posY += velY; 
	} 
	else 
	{ 
		posY = height + size + 10; 
		velY = -2.5f; 
	} 
 
	posZ += velZ; 
	posX += velX; 
} 
 
 
//////////////////////////////////////////////////////////////////////////////// 
 
void GcCube::Draw() 
{	 
	glPushMatrix(); 
		glTranslatef(posX, posY, posZ); 
 
		glColor3f(1.0f, 1.0f, 1.0f); 
		 
		// Top face 
		glBegin(GL_QUADS); 
			glVertex3f(size, size, size); 
			glVertex3f(size, size, -size); 
			glVertex3f(-size, size, -size); 
			glVertex3f(-size, size, size); 
		glEnd(); 
 
		// Front face 
		glBegin(GL_QUADS); 
			glVertex3f(size, size, size); 
			glVertex3f(-size, size, size); 
			glVertex3f(-size, -size, size); 
			glVertex3f(size, -size, size); 
		glEnd(); 
 
		// Right face 
		glBegin(GL_QUADS); 
			glVertex3f(size, size, size); 
			glVertex3f(size, -size, size); 
			glVertex3f(size, -size, -size); 
			glVertex3f(size, size, -size); 
		glEnd(); 
 
		// Left face 
		glBegin(GL_QUADS); 
			glVertex3f(-size, size, size); 
			glVertex3f(-size, size, -size); 
			glVertex3f(-size, -size, -size); 
			glVertex3f(-size, -size, size); 
		glEnd(); 
 
		// Bottom face 
		glBegin(GL_QUADS); 
			glVertex3f(-size, -size, size); 
			glVertex3f(-size, -size, -size); 
			glVertex3f(size, -size, -size); 
			glVertex3f(size, -size, size); 
		glEnd(); 
 
		// Back face 
		glBegin(GL_QUADS); 
			glVertex3f(size, -size, -size); 
			glVertex3f(-size, -size, -size); 
			glVertex3f(-size, size, -size); 
			glVertex3f(size, size, -size); 
		glEnd(); 
 
	glPopMatrix(); 
} 
 
////////////////////////////////////////////////////////////////////////////////