*p1 = *p1 - *move;
*p2 = *p2 - *move;
- if (*rotate)*p1 = DoRotation(*p1, 0, -*rotate, 0);
- if (*rotate)*p2 = DoRotation(*p2, 0, -*rotate, 0);
- if (!sphere_line_intersection(p1, p2, &boundingspherecenter,
- &boundingsphereradius))return -1;
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, -*rotate, 0);
+ if (*rotate)
+ *p2 = DoRotation(*p2, 0, -*rotate, 0);
+ if (!sphere_line_intersection(p1, p2, &boundingspherecenter, &boundingsphereradius))
+ return -1;
firstintersecting = -1;
for (j = 0; j < TriangleNum; j++) {
}
}
- if (*rotate)*p = DoRotation(*p, 0, *rotate, 0);
+ if (*rotate)
+ *p = DoRotation(*p, 0, *rotate, 0);
*p = *p + *move;
return firstintersecting;
}
*p1 = *p1 - *move;
*p2 = *p2 - *move;
- if (!sphere_line_intersection(p1, p2, &boundingspherecenter,
- &boundingsphereradius))return -1;
+ if (!sphere_line_intersection(p1, p2, &boundingspherecenter, &boundingsphereradius))
+ return -1;
firstintersecting = -1;
- if (*rotate)*p1 = DoRotation(*p1, 0, -*rotate, 0);
- if (*rotate)*p2 = DoRotation(*p2, 0, -*rotate, 0);
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, -*rotate, 0);
+ if (*rotate)
+ *p2 = DoRotation(*p2, 0, -*rotate, 0);
for (j = 0; j < TriangleNum; j++) {
intersecting = LineFacetd(p1, p2, &vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]], &facenormals[j], &point);
distance = abs((facenormals[firstintersecting].x * p2->x) + (facenormals[firstintersecting].y * p2->y) + (facenormals[firstintersecting].z * p2->z) - ((facenormals[firstintersecting].x * vertex[Triangles[firstintersecting].vertex[0]].x) + (facenormals[firstintersecting].y * vertex[Triangles[firstintersecting].vertex[0]].y) + (facenormals[firstintersecting].z * vertex[Triangles[firstintersecting].vertex[0]].z)));
*p2 -= facenormals[firstintersecting] * distance;
- if (*rotate)*p2 = DoRotation(*p2, 0, *rotate, 0);
+ if (*rotate)
+ *p2 = DoRotation(*p2, 0, *rotate, 0);
*p2 = *p2 + *move;
return firstintersecting;
}
*p1 = *p1 - *move;
*p2 = *p2 - *move;
- if (!sphere_line_intersection(p1, p2, &boundingspherecenter,
- &boundingsphereradius))return -1;
+ if (!sphere_line_intersection(p1, p2, &boundingspherecenter, &boundingsphereradius))
+ return -1;
firstintersecting = -1;
- if (*rotate)*p1 = DoRotation(*p1, 0, -*rotate, 0);
- if (*rotate)*p2 = DoRotation(*p2, 0, -*rotate, 0);
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, -*rotate, 0);
+ if (*rotate)
+ *p2 = DoRotation(*p2, 0, -*rotate, 0);
if (numpossible > 0 && numpossible < TriangleNum)
for (j = 0; j < numpossible; j++) {
}
}
- if (*rotate)*p = DoRotation(*p, 0, *rotate, 0);
+ if (*rotate)
+ *p = DoRotation(*p, 0, *rotate, 0);
*p = *p + *move;
return firstintersecting;
}
*p1 = *p1 - *move;
*p2 = *p2 - *move;
- if (!sphere_line_intersection(p1, p2, &boundingspherecenter,
- &boundingsphereradius))return -1;
+ if (!sphere_line_intersection(p1, p2, &boundingspherecenter, &boundingsphereradius))
+ return -1;
firstintersecting = -1;
- if (*rotate)*p1 = DoRotation(*p1, 0, -*rotate, 0);
- if (*rotate)*p2 = DoRotation(*p2, 0, -*rotate, 0);
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, -*rotate, 0);
+ if (*rotate)
+ *p2 = DoRotation(*p2, 0, -*rotate, 0);
if (numpossible)
for (j = 0; j < numpossible; j++) {
*p2 -= facenormals[firstintersecting] * distance;
}
- if (*rotate)*p2 = DoRotation(*p2, 0, *rotate, 0);
+ if (*rotate)
+ *p2 = DoRotation(*p2, 0, *rotate, 0);
*p2 = *p2 + *move;
return firstintersecting;
}
oldp1 = *p1;
*p1 = *p1 - *move;
- if (*rotate)*p1 = DoRotation(*p1, 0, -*rotate, 0);
- if (distsq(p1, &boundingspherecenter) > radius * radius + boundingsphereradius * boundingsphereradius)return -1;
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, -*rotate, 0);
+ if (distsq(p1, &boundingspherecenter) > radius * radius + boundingsphereradius * boundingsphereradius)
+ return -1;
for (i = 0; i < 4; i++) {
for (j = 0; j < TriangleNum; j++) {
distance = abs((facenormals[j].x * p1->x) + (facenormals[j].y * p1->y) + (facenormals[j].z * p1->z) - ((facenormals[j].x * vertex[Triangles[j].vertex[0]].x) + (facenormals[j].y * vertex[Triangles[j].vertex[0]].y) + (facenormals[j].z * vertex[Triangles[j].vertex[0]].z)));
if (distance < radius) {
point = *p1 - facenormals[j] * distance;
- if (PointInTriangle( &point, facenormals[j], &vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]]))intersecting = 1;
- if (!intersecting)intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]],
- &vertex[Triangles[j].vertex[1]],
- p1, &radius);
- if (!intersecting)intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[1]],
- &vertex[Triangles[j].vertex[2]],
- p1, &radius);
- if (!intersecting)intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]],
- &vertex[Triangles[j].vertex[2]],
- p1, &radius);
+ if (PointInTriangle( &point, facenormals[j], &vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]]))
+ intersecting = 1;
+ if (!intersecting)
+ intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], p1, &radius);
+ if (!intersecting)
+ intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]], p1, &radius);
+ if (!intersecting)
+ intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[2]], p1, &radius);
if (intersecting) {
*p1 += facenormals[j] * (distance - radius);
/*start=*p1;
}
}
}
- if (*rotate)*p = DoRotation(*p, 0, *rotate, 0);
+ if (*rotate)
+ *p = DoRotation(*p, 0, *rotate, 0);
*p = *p + *move;
- if (*rotate)*p1 = DoRotation(*p1, 0, *rotate, 0);
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, *rotate, 0);
*p1 += *move;
return firstintersecting;
}
numpossible = 0;
- if (*rotate)*p1 = DoRotation(*p1, 0, -*rotate, 0);
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, -*rotate, 0);
if (distsq(p1, &boundingspherecenter) > radius * radius + boundingsphereradius * boundingsphereradius) {
*p1 = oldp1;
return -1;
distance = abs((facenormals[j].x * p1->x) + (facenormals[j].y * p1->y) + (facenormals[j].z * p1->z) - ((facenormals[j].x * vertex[Triangles[j].vertex[0]].x) + (facenormals[j].y * vertex[Triangles[j].vertex[0]].y) + (facenormals[j].z * vertex[Triangles[j].vertex[0]].z)));
if (distance < radius) {
point = *p1 - facenormals[j] * distance;
- if (PointInTriangle( &point, facenormals[j], &vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]]))intersecting = 1;
- if (!intersecting)intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]],
- &vertex[Triangles[j].vertex[1]],
- p1, &radius);
- if (!intersecting)intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[1]],
- &vertex[Triangles[j].vertex[2]],
- p1, &radius);
- if (!intersecting)intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]],
- &vertex[Triangles[j].vertex[2]],
- p1, &radius);
+ if (PointInTriangle( &point, facenormals[j], &vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]]))
+ intersecting = 1;
+ if (!intersecting)
+ intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[1]], p1, &radius);
+ if (!intersecting)
+ intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[1]], &vertex[Triangles[j].vertex[2]], p1, &radius);
+ if (!intersecting)
+ intersecting = sphere_line_intersection(&vertex[Triangles[j].vertex[0]], &vertex[Triangles[j].vertex[2]], p1, &radius);
if (intersecting) {
//if(j>=0&&j<TriangleNum)
possible[numpossible] = j;
firstintersecting = j;
}
}
- if (*rotate)*p1 = DoRotation(*p1, 0, *rotate, 0);
+ if (*rotate)
+ *p1 = DoRotation(*p1, 0, *rotate, 0);
*p1 += *move;
return firstintersecting;
}
void Model::UpdateVertexArray()
{
- if (type != normaltype && type != decalstype)return;
+ if (type != normaltype && type != decalstype)
+ return;
static int i;
static int j;
if (!flat)
void Model::UpdateVertexArrayNoTex()
{
- if (type != normaltype && type != decalstype)return;
+ if (type != normaltype && type != decalstype)
+ return;
static int i;
static int j;
if (!flat)
void Model::UpdateVertexArrayNoTexNoNorm()
{
- if (type != normaltype && type != decalstype)return;
+ if (type != normaltype && type != decalstype)
+ return;
static int i;
static int j;
for (i = 0; i < TriangleNum; i++) {
bool Model::loadnotex(const char *filename )
{
- FILE *tfile;
- long i;
+ FILE *tfile;
+ long i;
- int oldvertexNum, oldTriangleNum;
- oldvertexNum = vertexNum;
- oldTriangleNum = TriangleNum;
+ //~ int oldvertexNum, oldTriangleNum;
+ //~ oldvertexNum = vertexNum;
+ //~ oldTriangleNum = TriangleNum;
type = notextype;
color = 0;
}
for (i = 0; i < TriangleNum; i++) {
- // funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
+ //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
bool Model::load(const char *filename, bool texture )
{
- FILE *tfile;
- long i;
+ FILE *tfile;
+ long i;
LOGFUNC;
if (visibleloading)
Game::LoadingScreen();
- int oldvertexNum, oldTriangleNum;
- oldvertexNum = vertexNum;
- oldTriangleNum = TriangleNum;
+ //~ int oldvertexNum, oldTriangleNum;
+ //~ oldvertexNum = vertexNum;
+ //~ oldTriangleNum = TriangleNum;
type = normaltype;
color = 0;
}
for (i = 0; i < TriangleNum; i++) {
- // funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
+ //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
bool Model::loaddecal(const char *filename, bool texture )
{
- FILE *tfile;
- long i, j;
+ FILE *tfile;
+ long i, j;
LOGFUNC;
LOG(std::string("Loading decal...") + FixedFN);
- int oldvertexNum, oldTriangleNum;
- oldvertexNum = vertexNum;
- oldTriangleNum = TriangleNum;
+ //~ int oldvertexNum, oldTriangleNum;
+ //~ oldvertexNum = vertexNum;
+ //~ oldTriangleNum = TriangleNum;
type = decalstype;
numdecals = 0;
}
for (i = 0; i < TriangleNum; i++) {
- // funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
+ //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
bool Model::loadraw(char *filename )
{
- FILE *tfile;
- long i;
+ FILE *tfile;
+ long i;
LOGFUNC;
LOG(std::string("Loading raw...") + filename);
- int oldvertexNum, oldTriangleNum;
- oldvertexNum = vertexNum;
- oldTriangleNum = TriangleNum;
+ //~ int oldvertexNum, oldTriangleNum;
+ //~ oldvertexNum = vertexNum;
+ //~ oldTriangleNum = TriangleNum;
type = rawtype;
color = 0;
}
for (i = 0; i < TriangleNum; i++) {
- // funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
+ //funpackf(tfile, "Bi Bi Bi", &Triangles[i].vertex[0], &Triangles[i].vertex[1], &Triangles[i].vertex[2]);
short vertex[ 6];
funpackf(tfile, "Bs Bs Bs Bs Bs Bs", &vertex[ 0], &vertex[ 1], &vertex[ 2], &vertex[ 3], &vertex[ 4], &vertex[ 5]);
Triangles[i].vertex[ 0] = vertex[ 0];
void Model::ScaleNormals(float xscale, float yscale, float zscale)
{
- if (type != normaltype && type != decalstype)return;
+ if (type != normaltype && type != decalstype)
+ return;
static int i;
for (i = 0; i < vertexNum; i++) {
normals[i].x *= xscale;
if (visibleloading)
Game::LoadingScreen();
static int i;
- if (type != normaltype && type != decalstype)return;
+ if (type != normaltype && type != decalstype)
+ return;
for (i = 0; i < vertexNum; i++) {
normals[i].x = 0;
normals[Triangles[i].vertex[2]].x += facenormals[i].x;
normals[Triangles[i].vertex[2]].y += facenormals[i].y;
normals[Triangles[i].vertex[2]].z += facenormals[i].z;
- if (facenormalise)Normalise(&facenormals[i]);
+ if (facenormalise)
+ Normalise(&facenormals[i]);
}
for (i = 0; i < vertexNum; i++) {
Normalise(&normals[i]);
&&isnormal(vertex[Triangles[i].vertex[2]].x)&&isnormal(vertex[Triangles[i].vertex[2]].y)&&isnormal(vertex[Triangles[i].vertex[2]].z)){
*/
glTexCoord2f(Triangles[i].gx[0], Triangles[i].gy[0]);
- if (color)glColor3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
- if (!color && !flat)glNormal3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
- if (!color && flat)glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
+ if (color)
+ glColor3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
+ if (!color && !flat)
+ glNormal3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
+ if (!color && flat)
+ glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
glVertex3f(vertex[Triangles[i].vertex[0]].x, vertex[Triangles[i].vertex[0]].y, vertex[Triangles[i].vertex[0]].z);
glTexCoord2f(Triangles[i].gx[1], Triangles[i].gy[1]);
- if (color)glColor3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
- if (!color && !flat)glNormal3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
- if (!color && flat)glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
+ if (color)
+ glColor3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
+ if (!color && !flat)
+ glNormal3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
+ if (!color && flat)
+ glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
glVertex3f(vertex[Triangles[i].vertex[1]].x, vertex[Triangles[i].vertex[1]].y, vertex[Triangles[i].vertex[1]].z);
glTexCoord2f(Triangles[i].gx[2], Triangles[i].gy[2]);
- if (color)glColor3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
- if (!color && !flat)glNormal3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
- if (!color && flat)glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
+ if (color)
+ glColor3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
+ if (!color && !flat)
+ glNormal3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
+ if (!color && flat)
+ glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
glVertex3f(vertex[Triangles[i].vertex[2]].x, vertex[Triangles[i].vertex[2]].y, vertex[Triangles[i].vertex[2]].z);
//}
//}
void Model::draw()
{
- if (type != normaltype && type != decalstype)return;
+ if (type != normaltype && type != decalstype)
+ return;
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- if (!color)glInterleavedArrays( GL_T2F_N3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
- if (color)glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
+ if (!color)
+ glInterleavedArrays( GL_T2F_N3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
+ if (color)
+ glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
textureptr.bind();
#if PLATFORM_MACOSX
#endif
- if (!color)glDisableClientState(GL_NORMAL_ARRAY);
- if (color)glDisableClientState(GL_COLOR_ARRAY);
+ if (!color)
+ glDisableClientState(GL_NORMAL_ARRAY);
+ if (color)
+ glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
//drawimmediate();
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- if (!color)glInterleavedArrays( GL_T2F_N3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
- if (color)glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
+ if (!color)
+ glInterleavedArrays( GL_T2F_N3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
+ if (color)
+ glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
glBindTexture(GL_TEXTURE_2D, (unsigned long)texture);
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
#endif
- if (!color)glDisableClientState(GL_NORMAL_ARRAY);
- if (color)glDisableClientState(GL_COLOR_ARRAY);
+ if (!color)
+ glDisableClientState(GL_NORMAL_ARRAY);
+ if (color)
+ glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
//drawdiffteximmediate(texture);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
- if (!color)glInterleavedArrays( GL_T2F_N3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
- if (color)glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
+ if (!color)
+ glInterleavedArrays( GL_T2F_N3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
+ if (color)
+ glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
texture.bind();
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
#endif
- if (!color)glDisableClientState(GL_NORMAL_ARRAY);
- if (color)glDisableClientState(GL_COLOR_ARRAY);
+ if (!color)
+ glDisableClientState(GL_NORMAL_ARRAY);
+ if (color)
+ glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
//drawdiffteximmediate(texture);
&&isnormal(vertex[Triangles[i].vertex[1]].x)&&isnormal(vertex[Triangles[i].vertex[1]].y)&&isnormal(vertex[Triangles[i].vertex[1]].z)
&&isnormal(vertex[Triangles[i].vertex[2]].x)&&isnormal(vertex[Triangles[i].vertex[2]].y)&&isnormal(vertex[Triangles[i].vertex[2]].z)){
*/glTexCoord2f(Triangles[i].gx[0], Triangles[i].gy[0]);
- if (color)glColor3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
- if (!color && !flat)glNormal3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
- if (!color && flat)glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
+ if (color)
+ glColor3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
+ if (!color && !flat)
+ glNormal3f(normals[Triangles[i].vertex[0]].x, normals[Triangles[i].vertex[0]].y, normals[Triangles[i].vertex[0]].z);
+ if (!color && flat)
+ glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
glVertex3f(vertex[Triangles[i].vertex[0]].x, vertex[Triangles[i].vertex[0]].y, vertex[Triangles[i].vertex[0]].z);
glTexCoord2f(Triangles[i].gx[1], Triangles[i].gy[1]);
- if (color)glColor3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
- if (!color && !flat)glNormal3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
- if (!color && flat)glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
+ if (color)
+ glColor3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
+ if (!color && !flat)
+ glNormal3f(normals[Triangles[i].vertex[1]].x, normals[Triangles[i].vertex[1]].y, normals[Triangles[i].vertex[1]].z);
+ if (!color && flat)
+ glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
glVertex3f(vertex[Triangles[i].vertex[1]].x, vertex[Triangles[i].vertex[1]].y, vertex[Triangles[i].vertex[1]].z);
glTexCoord2f(Triangles[i].gx[2], Triangles[i].gy[2]);
- if (color)glColor3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
- if (!color && !flat)glNormal3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
- if (!color && flat)glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
+ if (color)
+ glColor3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
+ if (!color && !flat)
+ glNormal3f(normals[Triangles[i].vertex[2]].x, normals[Triangles[i].vertex[2]].y, normals[Triangles[i].vertex[2]].z);
+ if (!color && flat)
+ glNormal3f(facenormals[i].x, facenormals[i].y, facenormals[i].y);
glVertex3f(vertex[Triangles[i].vertex[2]].x, vertex[Triangles[i].vertex[2]].y, vertex[Triangles[i].vertex[2]].z);
//}
//}
void Model::drawdecals(Texture shadowtexture, Texture bloodtexture, Texture bloodtexture2, Texture breaktexture)
{
if (decals) {
- if (type != decalstype)return;
- static int i, j;
- static float distancemult;
+ if (type != decalstype)
+ return;
+ static int i;
+ //~ static float distancemult;
static int lasttype;
- static float viewdistsquared;
+ //~ static float viewdistsquared;
static bool blend;
- viewdistsquared = viewdistance * viewdistance;
+ //~ viewdistsquared = viewdistance * viewdistance;
blend = 1;
lasttype = -1;
glDisable(GL_CULL_FACE);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthMask(0);
- if (numdecals > max_model_decals)numdecals = max_model_decals;
+ if (numdecals > max_model_decals)
+ numdecals = max_model_decals;
for (i = 0; i < numdecals; i++) {
- if (decaltype[i] == blooddecalfast && decalalivetime[i] < 2)decalalivetime[i] = 2;
+ if (decaltype[i] == blooddecalfast && decalalivetime[i] < 2)
+ decalalivetime[i] = 2;
if (decaltype[i] == shadowdecal && decaltype[i] != lasttype) {
shadowtexture.bind();
}
if (decaltype[i] == breakdecal) {
glColor4f(1, 1, 1, decalopacity[i]);
- if (decalalivetime[i] > 58)glColor4f(1, 1, 1, decalopacity[i] * (60 - decalalivetime[i]) / 2);
+ if (decalalivetime[i] > 58)
+ glColor4f(1, 1, 1, decalopacity[i] * (60 - decalalivetime[i]) / 2);
}
if ((decaltype[i] == blooddecal || decaltype[i] == blooddecalfast || decaltype[i] == blooddecalslow)) {
glColor4f(1, 1, 1, decalopacity[i]);
- if (decalalivetime[i] < 4)glColor4f(1, 1, 1, decalopacity[i]*decalalivetime[i]*.25);
- if (decalalivetime[i] > 58)glColor4f(1, 1, 1, decalopacity[i] * (60 - decalalivetime[i]) / 2);
+ if (decalalivetime[i] < 4)
+ glColor4f(1, 1, 1, decalopacity[i]*decalalivetime[i]*.25);
+ if (decalalivetime[i] > 58)
+ glColor4f(1, 1, 1, decalopacity[i] * (60 - decalalivetime[i]) / 2);
}
lasttype = decaltype[i];
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
- glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
+ glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glBegin(GL_TRIANGLES);
for (int j = 0; j < 3; j++) {
}
for (i = numdecals - 1; i >= 0; i--) {
decalalivetime[i] += multiplier;
- if (decaltype[i] == blooddecalslow)decalalivetime[i] -= multiplier * 2 / 3;
- if (decaltype[i] == blooddecalfast)decalalivetime[i] += multiplier * 4;
- if (decaltype[i] == shadowdecal)DeleteDecal(i);
- if ((decaltype[i] == blooddecal || decaltype[i] == blooddecalfast || decaltype[i] == blooddecalslow) && decalalivetime[i] >= 60)DeleteDecal(i);
+ if (decaltype[i] == blooddecalslow)
+ decalalivetime[i] -= multiplier * 2 / 3;
+ if (decaltype[i] == blooddecalfast)
+ decalalivetime[i] += multiplier * 4;
+ if (decaltype[i] == shadowdecal)
+ DeleteDecal(i);
+ if ((decaltype[i] == blooddecal || decaltype[i] == blooddecalfast || decaltype[i] == blooddecalslow) && decalalivetime[i] >= 60)
+ DeleteDecal(i);
}
glAlphaFunc(GL_GREATER, 0.0001);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
void Model::DeleteDecal(int which)
{
if (decals) {
- if (type != decalstype)return;
+ if (type != decalstype)
+ return;
decaltype[which] = decaltype[numdecals - 1];
decalposition[which] = decalposition[numdecals - 1];
for (int i = 0; i < 3; i++) {
void Model::MakeDecal(int atype, XYZ *where, float *size, float *opacity, float *rotation)
{
if (decals) {
- if (type != decalstype)return;
+ if (type != decalstype)
+ return;
static float placex, placez;
static XYZ rot;
decaltexcoords[numdecals][j][1] = rot.z + .5;
}
}
- if (numdecals < max_model_decals - 1)numdecals++;
+ if (numdecals < max_model_decals - 1)
+ numdecals++;
}
}
}
void Model::MakeDecal(int atype, XYZ where, float size, float opacity, float rotation)
{
if (decals) {
- if (type != decalstype)return;
+ if (type != decalstype)
+ return;
static float placex, placez;
static XYZ rot;
decaltexcoords[numdecals][j][1] = rot.z + .5;
}
}
- if (numdecals < max_model_decals - 1)numdecals++;
+ if (numdecals < max_model_decals - 1)
+ numdecals++;
}
}
} else if (distance < .02 && abs(facenormals[i].x) > abs(facenormals[i].y) && abs(facenormals[i].x) > abs(facenormals[i].z)) {
decaltexcoords[numdecals][j][1] = rot.z + .5;
}
}
- if (numdecals < max_model_decals - 1)numdecals++;
+ if (numdecals < max_model_decals - 1)
+ numdecals++;
}
}
} else if (distance < .02 && abs(facenormals[i].z) > abs(facenormals[i].y) && abs(facenormals[i].z) > abs(facenormals[i].x)) {
decaltexcoords[numdecals][j][1] = rot.z + .5;
}
}
- if (numdecals < max_model_decals - 1)numdecals++;
+ if (numdecals < max_model_decals - 1)
+ numdecals++;
}
}
}
{
int i = 0, j = 0;
- if (owner)free(owner);
+ if (owner)
+ free(owner);
owner = 0;
- if (possible)free(possible);
+ if (possible)
+ free(possible);
possible = 0;
- if (vertex)free(vertex);
+ if (vertex)
+ free(vertex);
vertex = 0;
- if (normals)free(normals);
+ if (normals)
+ free(normals);
normals = 0;
- if (facenormals)free(facenormals);
+ if (facenormals)
+ free(facenormals);
facenormals = 0;
- if (Triangles)free(Triangles);
+ if (Triangles)
+ free(Triangles);
Triangles = 0;
- if (vArray)free(vArray);
+ if (vArray)
+ free(vArray);
vArray = 0;