X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FModels.cpp;h=0b8105396bd4f00204e73440c319a0783707d65f;hb=2a9d19feea3589e45e3f6aa4e7b6052732b35f3f;hp=65d9ff8642ede49391f1883d9ac64fe3bf6c257e;hpb=87ff660bf58766ab705a749e72e04154ccf5a737;p=lugaru.git
diff --git a/Source/Models.cpp b/Source/Models.cpp
index 65d9ff8..0b81053 100644
--- a/Source/Models.cpp
+++ b/Source/Models.cpp
@@ -3,20 +3,18 @@ Copyright (C) 2003, 2010 - Wolfire Games
This file is part of Lugaru.
-Lugaru is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or (at your option) any later version.
+Lugaru is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
-This program is distributed in the hope that it will be useful,
+Lugaru is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-See the GNU General Public License for more details.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+along with Lugaru. If not, see .
*/
#include "Game.h"
@@ -66,43 +64,6 @@ int Model::LineCheck(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate)
return firstintersecting;
}
-int Model::LineCheckSlide(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate)
-{
- static int j;
- static float distance;
- static float olddistance;
- static int intersecting;
- static int firstintersecting;
- static XYZ point;
-
- *p1 = *p1 - *move;
- *p2 = *p2 - *move;
- 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);
-
- 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 = (point.x - p1->x) * (point.x - p1->x) + (point.y - p1->y) * (point.y - p1->y) + (point.z - p1->z) * (point.z - p1->z);
- if ((distance < olddistance || firstintersecting == -1) && intersecting) {
- olddistance = distance;
- firstintersecting = j;
- }
- }
-
- 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);
- *p2 = *p2 + *move;
- return firstintersecting;
-}
-
int Model::LineCheckPossible(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate)
{
static int j;
@@ -245,7 +206,7 @@ int Model::SphereCheck(XYZ *p1, float radius, XYZ *p, XYZ *move, float *rotate)
int Model::SphereCheckPossible(XYZ *p1, float radius, XYZ *move, float *rotate)
{
- static int i, j;
+ static int j;
static float distance;
static float olddistance;
static int intersecting;
@@ -448,12 +409,12 @@ void Model::UpdateVertexArrayNoTexNoNorm()
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;
@@ -480,7 +441,7 @@ bool Model::loadnotex(const char *filename )
}
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];
@@ -516,8 +477,8 @@ bool Model::loadnotex(const char *filename )
bool Model::load(const char *filename, bool texture )
{
- FILE *tfile;
- long i;
+ FILE *tfile;
+ long i;
LOGFUNC;
@@ -526,9 +487,9 @@ bool Model::load(const char *filename, bool texture )
if (visibleloading)
Game::LoadingScreen();
- int oldvertexNum, oldTriangleNum;
- oldvertexNum = vertexNum;
- oldTriangleNum = TriangleNum;
+ //~ int oldvertexNum, oldTriangleNum;
+ //~ oldvertexNum = vertexNum;
+ //~ oldTriangleNum = TriangleNum;
type = normaltype;
color = 0;
@@ -558,7 +519,7 @@ bool Model::load(const char *filename, bool texture )
}
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];
@@ -595,8 +556,8 @@ bool Model::load(const char *filename, bool texture )
bool Model::loaddecal(const char *filename, bool texture )
{
- FILE *tfile;
- long i, j;
+ FILE *tfile;
+ long i, j;
LOGFUNC;
@@ -605,9 +566,9 @@ bool Model::loaddecal(const char *filename, bool texture )
LOG(std::string("Loading decal...") + FixedFN);
- int oldvertexNum, oldTriangleNum;
- oldvertexNum = vertexNum;
- oldTriangleNum = TriangleNum;
+ //~ int oldvertexNum, oldTriangleNum;
+ //~ oldvertexNum = vertexNum;
+ //~ oldTriangleNum = TriangleNum;
type = decalstype;
numdecals = 0;
@@ -640,7 +601,7 @@ bool Model::loaddecal(const char *filename, bool texture )
}
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];
@@ -699,16 +660,16 @@ bool Model::loaddecal(const char *filename, bool texture )
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;
@@ -737,7 +698,7 @@ bool Model::loadraw(char *filename )
}
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];
@@ -1029,7 +990,6 @@ void Model::drawdifftex(GLuint texture)
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- //drawdiffteximmediate(texture);
}
void Model::drawdifftex(Texture texture)
@@ -1062,49 +1022,6 @@ void Model::drawdifftex(Texture texture)
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
- //drawdiffteximmediate(texture);
-}
-
-void Model::drawdiffteximmediate(GLuint texture)
-{
- glBindTexture(GL_TEXTURE_2D, (unsigned long)texture);
-
- glBegin(GL_TRIANGLES);
- for (int i = 0; i < TriangleNum; i++) {
- /*if(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(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);
- 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);
- glVertex3f(vertex[Triangles[i].vertex[2]].x, vertex[Triangles[i].vertex[2]].y, vertex[Triangles[i].vertex[2]].z);
- //}
- //}
- }
- glEnd();
}
void Model::drawdecals(Texture shadowtexture, Texture bloodtexture, Texture bloodtexture2, Texture breaktexture)
@@ -1112,13 +1029,13 @@ void Model::drawdecals(Texture shadowtexture, Texture bloodtexture, Texture bloo
if (decals) {
if (type != decalstype)
return;
- static int i, j;
- static float distancemult;
+ 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;
@@ -1184,7 +1101,7 @@ void Model::drawdecals(Texture shadowtexture, Texture bloodtexture, Texture bloo
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++) {