2 Copyright (C) 2003, 2010 - Wolfire Games
4 This file is part of Lugaru.
6 Lugaru is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 See the GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 /**> Model Loading <**/
37 #include "Quaternions.h"
51 class TexturedTriangle{
57 #define max_model_decals 300
67 short vertexNum,TriangleNum;
77 TexturedTriangle* Triangles;
80 /*int possible[max_model_vertex];
81 int owner[max_textured_triangle];
82 XYZ vertex[max_model_vertex];
83 XYZ normals[max_model_vertex];
84 XYZ facenormals[max_textured_triangle];
85 TexturedTriangle Triangles[max_textured_triangle];
86 GLfloat vArray[max_textured_triangle*24];*/
93 XYZ boundingspherecenter;
94 float boundingsphereradius;
96 float*** decaltexcoords;
100 float* decalrotation;
101 float* decalalivetime;
104 /*float decaltexcoords[max_model_decals][3][2];
105 XYZ decalvertex[max_model_decals][3];
106 int decaltype[max_model_decals];
107 float decalopacity[max_model_decals];
108 float decalrotation[max_model_decals];
109 float decalalivetime[max_model_decals];
110 XYZ decalposition[max_model_decals];*/
116 void DeleteDecal(int which);
117 void MakeDecal(int atype, XYZ *where, float *size, float *opacity, float *rotation);
118 void MakeDecal(int atype, XYZ where, float size, float opacity, float rotation);
119 void drawdecals(GLuint shadowtexture,GLuint bloodtexture,GLuint bloodtexture2,GLuint breaktexture);
120 int SphereCheck(XYZ *p1,float radius, XYZ *p, XYZ *move, float *rotate);
121 int SphereCheckPossible(XYZ *p1,float radius, XYZ *move, float *rotate);
122 int LineCheck(XYZ *p1,XYZ *p2, XYZ *p, XYZ *move, float *rotate);
123 int LineCheckSlide(XYZ *p1,XYZ *p2, XYZ *p, XYZ *move, float *rotate);
124 int LineCheckPossible(XYZ *p1,XYZ *p2, XYZ *p, XYZ *move, float *rotate);
125 int LineCheckSlidePossible(XYZ *p1,XYZ *p2, XYZ *p, XYZ *move, float *rotate);
126 void UpdateVertexArray();
127 void UpdateVertexArrayNoTex();
128 void UpdateVertexArrayNoTexNoNorm();
129 bool loadnotex(const char *filename);
130 bool loadraw(char *filename);
131 bool load(const char *filename,bool texture);
132 bool loaddecal(const char *filename,bool texture);
133 void Scale(float xscale,float yscale,float zscale);
134 void FlipTexCoords();
135 void UniformTexCoords();
136 void ScaleTexCoords(float howmuch);
137 void ScaleNormals(float xscale,float yscale,float zscale);
138 void Translate(float xtrans,float ytrans,float ztrans);
139 void CalculateNormals(bool facenormalise);
141 void drawdifftex(GLuint texture);
142 void drawimmediate();
143 void drawdiffteximmediate(GLuint texture);
144 void Rotate(float xang,float yang,float zang);