#include "Cube.h"
#include "PolyVertex.h"
const int fltsPerVert = sizeof(PolyVertex) / sizeof(GLfloat);
const int trisPerCube = 12;
const int vertsPerCube = 3*trisPerCube;
Cube::Cube()
{
m_baseCubeData.resize(fltsPerVert * vertsPerCube);
// A cube instance
// Probably don't need to do this every reset
for (int j = 0; j < 6; j++) {
for (int i = 0; i < 6; i++) {
int p = (j*6+i)*fltsPerVert;
for (int k = 0; k < fltsPerVert; k++)
m_baseCubeData[p+k] = 0.0f;
float vals1[6][6] = { { 0.5f, 0.5f, 0.5f, 0.5f, 0.5f, 0.5f }, { -0.5f,-0.5f,-0.5f,-0.5f,-0.5f,-0.5f }, { 0.5f,-0.5f, 0.5f, 0.5f,-0.5f,-0.5f },
{ -0.5f, 0.5f,-0.5f,-0.5f, 0.5f, 0.5f }, { -0.5f,-0.5f, 0.5f, 0.5f,-0.5f, 0.5f }, { 0.5f, 0.5f,-0.5f,-0.5f, 0.5f,-0.5f } };
float *valsx[6] = { vals1[0], vals1[2], vals1[1], vals1[3], vals1[2], vals1[2] };
float *valsy[6] = { vals1[3], vals1[0], vals1[2], vals1[1], vals1[5], vals1[4] };
float *valsz[6] = { vals1[4], vals1[4], vals1[4], vals1[4], vals1[0], vals1[1] };
m_baseCubeData[p+0] = valsx[j][i];
m_baseCubeData[p+1] = valsy[j][i];
m_baseCubeData[p+2] = valsz[j][i];
int nsi[6] = { 0, 1, 0, 1, 2, 2 };
int nsv[6] = { 1, 1, -1, -1, 1, -1 };
m_baseCubeData[p+8+nsi[j]] = float(nsv[j]);
m_baseCubeData[p+12] = 1.0;
m_baseCubeData[p+13] = 1.0;
m_baseCubeData[p+20] = ((i%3)==0) ? 1.0 : 0.0;
m_baseCubeData[p+21] = ((i%3)==1) ? 1.0 : 0.0;
m_baseCubeData[p+22] = ((i%3)==2) ? 1.0 : 0.0;
m_baseCubeData[p+23] = 1.0;
}
}
}