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(); } ////////////////////////////////////////////////////////////////////////////////