/*
Copyright (C) 2003, 2010 - Wolfire Games
+Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file)
This file is part of Lugaru.
static int firstintersecting;
static XYZ point;
static XYZ oldp1;
- static XYZ start, end;
firstintersecting = -1;
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;
- end=*p1;
- end.y-=radius;
- if(LineFacetd(&start,&end,&vertex[Triangles[j].vertex[0]],&vertex[Triangles[j].vertex[1]],&vertex[Triangles[j].vertex[2]],&facenormals[j],&point)){
- p1->y=point.y+radius;
- }*/
}
}
if ((distance < olddistance || firstintersecting == -1) && intersecting) {
static int firstintersecting;
static XYZ point;
static XYZ oldp1;
- static XYZ start, end;
firstintersecting = -1;
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;
numpossible++;
}
LOG(std::string("Loading decal...") + FixedFN);
- //~ int oldvertexNum, oldTriangleNum;
- //~ oldvertexNum = vertexNum;
- //~ oldTriangleNum = TriangleNum;
-
type = decalstype;
numdecals = 0;
color = 0;
decaltexcoords[i][j] = (float*)malloc(sizeof(float) * 2);
}
}
- //if(decalvertex)free(decalvertex);
decalvertex = (XYZ**)malloc(sizeof(XYZ*)*max_model_decals);
for (i = 0; i < max_model_decals; i++) {
decalvertex[i] = (XYZ*)malloc(sizeof(XYZ) * 3);
textureptr.bind();
glBegin(GL_TRIANGLES);
for (int i = 0; i < TriangleNum; i++) {
- /*if(Triangles[i].vertex[0]<vertexNum&&Triangles[i].vertex[1]<vertexNum&&Triangles[i].vertex[2]<vertexNum&&Triangles[i].vertex[0]>=0&&Triangles[i].vertex[1]>=0&&Triangles[i].vertex[2]>=0){
- if(isnormal(vertex[Triangles[i].vertex[0]].x)&&isnormal(vertex[Triangles[i].vertex[0]].y)&&isnormal(vertex[Triangles[i].vertex[0]].z)
- &&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(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);
- //}
- //}
}
glEnd();
}
glInterleavedArrays( GL_T2F_C3F_V3F, 8 * sizeof(GLfloat), &vArray[0]);
textureptr.bind();
-#if PLATFORM_MACOSX
- glLockArraysEXT( 0, TriangleNum * 3);
-#endif
glDrawArrays(GL_TRIANGLES, 0, TriangleNum * 3);
-#if PLATFORM_MACOSX
- glUnlockArraysEXT();
-#endif
-
if (!color)
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- //drawimmediate();
}
//TODO: phase out in favor of Texture
if (type != decalstype)
return;
static int i;
- //~ static float distancemult;
static int lasttype;
- //~ static float viewdistsquared;
static bool blend;
- //~ viewdistsquared = viewdistance * viewdistance;
blend = 1;
lasttype = -1;
static float placex, placez;
static XYZ rot;
- //static XYZ point,point1,point2;
static float distance;
static int i, j;
static float placex, placez;
static XYZ rot;
- //static XYZ point,point1,point2;
static float distance;
static int i, j;