New lighting, new spheres
This commit is contained in:
173
PartInstance.cpp
173
PartInstance.cpp
@@ -478,6 +478,9 @@ bool PartInstance::isUniqueVertex(Vector3 pos)
|
||||
//int rings = 15;
|
||||
//int sectors = 15;
|
||||
void PartInstance::render(RenderDevice* rd) {
|
||||
int sectorCount = 12;
|
||||
int stackCount = 12;
|
||||
float radius = 0.5F;
|
||||
//if(nameShown)
|
||||
//postRenderStack.push_back(this);
|
||||
if (changed)
|
||||
@@ -493,161 +496,17 @@ void PartInstance::render(RenderDevice* rd) {
|
||||
{
|
||||
case Enum::Shape::Ball:
|
||||
{
|
||||
/*float radius = renderSize.y / 2;
|
||||
float const R = 1./(float)(rings-1);
|
||||
float const S = 1./(float)(sectors-1);
|
||||
int r, s;
|
||||
double M_PI = pi();
|
||||
double M_PI_2 = M_PI/2;
|
||||
|
||||
_vertices.resize(rings * sectors * 3);
|
||||
_normals.resize(rings * sectors * 3);
|
||||
std::vector<GLfloat>::iterator v = _vertices.begin();
|
||||
std::vector<GLfloat>::iterator n = _normals.begin();
|
||||
//std::vector<GLfloat>::iterator t = texcoords.begin();
|
||||
for(r = 0; r < rings; r++) for(s = 0; s < sectors; s++) {
|
||||
float const y = sin( -M_PI_2 + M_PI * r * R );
|
||||
float const x = cos(2*M_PI * s * S) * sin( M_PI * r * R );
|
||||
float const z = sin(2*M_PI * s * S) * sin( M_PI * r * R );
|
||||
|
||||
|
||||
*v++ = x * radius;
|
||||
*v++ = y * radius;
|
||||
*v++ = z * radius;
|
||||
|
||||
*n++ = x;
|
||||
*n++ = y;
|
||||
*n++ = z;
|
||||
}
|
||||
|
||||
_indices.resize(rings * sectors * 4);
|
||||
std::vector<GLushort>::iterator i = _indices.begin();
|
||||
for(r = 0; r < rings; r++) for(s = 0; s < sectors; s++) {
|
||||
*i++ = r * sectors + s;
|
||||
*i++ = r * sectors + (s+1);
|
||||
*i++ = (r+1) * sectors + (s+1);
|
||||
*i++ = (r+1) * sectors + s;
|
||||
}
|
||||
//*/
|
||||
|
||||
|
||||
float sphFace = this->size.y / 3.14159F;
|
||||
// Front
|
||||
addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y-sphFace,renderSize.z),
|
||||
Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,renderSize.z),
|
||||
Vector3(renderSize.x-sphFace,-renderSize.y+sphFace,renderSize.z)
|
||||
);
|
||||
|
||||
addSmoothTriangle(Vector3(-renderSize.x+sphFace,renderSize.y-sphFace,renderSize.z),
|
||||
Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,renderSize.z),
|
||||
Vector3(renderSize.x-sphFace,renderSize.y-sphFace,renderSize.z)
|
||||
);
|
||||
|
||||
// Top
|
||||
addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y,renderSize.z-sphFace),
|
||||
Vector3(renderSize.x-sphFace,renderSize.y,-renderSize.z+sphFace),
|
||||
Vector3(-renderSize.x+sphFace,renderSize.y,renderSize.z-sphFace)
|
||||
);
|
||||
addSmoothTriangle(Vector3(-renderSize.x+sphFace,renderSize.y,renderSize.z-sphFace),
|
||||
Vector3(renderSize.x-sphFace,renderSize.y,-renderSize.z+sphFace),
|
||||
Vector3(-renderSize.x+sphFace,renderSize.y,-renderSize.z+sphFace)
|
||||
);
|
||||
|
||||
// Back
|
||||
addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y-sphFace,-renderSize.z),
|
||||
Vector3(renderSize.x-sphFace,-renderSize.y+sphFace,-renderSize.z),
|
||||
Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,-renderSize.z)
|
||||
);
|
||||
addSmoothTriangle(Vector3(renderSize.x-sphFace,renderSize.y-sphFace,-renderSize.z),
|
||||
Vector3(-renderSize.x+sphFace,-renderSize.y+sphFace,-renderSize.z),
|
||||
Vector3(-renderSize.x+sphFace,renderSize.y-sphFace,-renderSize.z)
|
||||
);
|
||||
|
||||
// Bottom
|
||||
addSmoothTriangle(Vector3(renderSize.x-sphFace,-renderSize.y,-renderSize.z+sphFace),
|
||||
Vector3(renderSize.x-sphFace,-renderSize.y,renderSize.z-sphFace),
|
||||
Vector3(-renderSize.x+sphFace,-renderSize.y,renderSize.z-sphFace)
|
||||
);
|
||||
addSmoothTriangle(Vector3(-renderSize.x+sphFace,-renderSize.y,renderSize.z-sphFace),
|
||||
Vector3(-renderSize.x+sphFace,-renderSize.y,-renderSize.z+sphFace),
|
||||
Vector3(renderSize.x-sphFace,-renderSize.y,-renderSize.z+sphFace)
|
||||
);
|
||||
// Left
|
||||
addSmoothTriangle(Vector3(-renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace),
|
||||
Vector3(-renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace),
|
||||
Vector3(-renderSize.x,renderSize.y-sphFace,renderSize.z-sphFace)
|
||||
);
|
||||
addSmoothTriangle(Vector3(-renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace),
|
||||
Vector3(-renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace),
|
||||
Vector3(-renderSize.x,-renderSize.y+sphFace,-renderSize.z+sphFace)
|
||||
);
|
||||
|
||||
// Right
|
||||
addSmoothTriangle(Vector3(renderSize.x,renderSize.y-sphFace,renderSize.z-sphFace),
|
||||
Vector3(renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace),
|
||||
Vector3(renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace)
|
||||
);
|
||||
addSmoothTriangle(Vector3(renderSize.x,-renderSize.y+sphFace,-renderSize.z+sphFace),
|
||||
Vector3(renderSize.x,renderSize.y-sphFace,-renderSize.z+sphFace),
|
||||
Vector3(renderSize.x,-renderSize.y+sphFace,renderSize.z-sphFace)
|
||||
);
|
||||
|
||||
|
||||
// Bevel Top Front
|
||||
makeSmoothFace(0,36,48);
|
||||
makeSmoothFace(48,18,0);
|
||||
// Bevel Left Front Corner
|
||||
makeSmoothFace(18,156,162);
|
||||
makeSmoothFace(24,18,162);
|
||||
// Bevel Left Front Top Corner
|
||||
makeSmoothFace(48,156,18);
|
||||
// Bevel Left Front Bottom Corner
|
||||
makeSmoothFace(120,6,150);
|
||||
// Bevel Left Top
|
||||
makeSmoothFace(48,66,156);
|
||||
makeSmoothFace(144,156,66);
|
||||
// Bevel Bottom
|
||||
makeSmoothFace(6,120,114);
|
||||
makeSmoothFace(114,12,6);
|
||||
// Left Bottom
|
||||
makeSmoothFace(120,150,174);
|
||||
makeSmoothFace(174,132,120);
|
||||
// Right Front Top Corner
|
||||
makeSmoothFace(36,0,180);
|
||||
// Right Front Corner
|
||||
makeSmoothFace(180,0,12);
|
||||
makeSmoothFace(186,180,12);
|
||||
// Right Front Bottom Corner
|
||||
makeSmoothFace(186,12,114);
|
||||
// Right Bottom
|
||||
makeSmoothFace(186,114,108);
|
||||
makeSmoothFace(108,198,186);
|
||||
// Right Top Corner
|
||||
makeSmoothFace(180,192,36);
|
||||
makeSmoothFace(192,42,36);
|
||||
// Right Back Top Corner
|
||||
makeSmoothFace(72,42,192);
|
||||
// Right Back Bottom Corner
|
||||
makeSmoothFace(78,198,108);
|
||||
// Right Back Corner
|
||||
makeSmoothFace(72,192,198);
|
||||
makeSmoothFace(198,78,72);
|
||||
// Back Bottom Corner
|
||||
makeSmoothFace(78,108,132);
|
||||
makeSmoothFace(132,84,78);
|
||||
// Back Top
|
||||
makeSmoothFace(42,72,102);
|
||||
makeSmoothFace(102,66,42);
|
||||
// Back Left Top Corner
|
||||
makeSmoothFace(144,66,102);
|
||||
// Back Left Corner
|
||||
makeSmoothFace(144,102,84);
|
||||
makeSmoothFace(84,174,144);
|
||||
// Back Left Bottom Corner
|
||||
makeSmoothFace(174,84,132);
|
||||
for (unsigned short i=0;i<_vertices.size()/6;i++) {
|
||||
_indices.push_back(i);
|
||||
}
|
||||
glNewList(glList, GL_COMPILE);
|
||||
glColor(this->color);
|
||||
glPushMatrix();
|
||||
glScalef(renderSize.x, renderSize.y, renderSize.z);
|
||||
gluSphere(gluNewQuadric(), 1, 20, 20);
|
||||
glPopMatrix();
|
||||
glEndList();
|
||||
rd->setObjectToWorldMatrix(cFrame);
|
||||
glCallList(glList);
|
||||
changed = false;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case Enum::Shape::Block:
|
||||
@@ -962,10 +821,10 @@ void PartInstance::render(RenderDevice* rd) {
|
||||
glVertexPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[0]);
|
||||
glColorPointer(3, GL_FLOAT,6 * sizeof(GLfloat), &_vertices[3]);
|
||||
glNormalPointer(GL_FLOAT,3 * sizeof(GLfloat), &_normals[0]);
|
||||
glPushMatrix();
|
||||
//glPushMatrix();
|
||||
//glTranslatef(2,7,0);
|
||||
glDrawElements(GL_TRIANGLES, _indices.size(), GL_UNSIGNED_SHORT, &_indices[0]);
|
||||
glPopMatrix();
|
||||
//glPopMatrix();
|
||||
glEndList();
|
||||
}
|
||||
rd->setObjectToWorldMatrix(cFrame);
|
||||
|
||||
Reference in New Issue
Block a user