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"
52 class TexturedTriangle
59 #define max_model_decals 300
70 short vertexNum, TriangleNum;
80 TexturedTriangle* Triangles;
83 /*int possible[max_model_vertex];
84 int owner[max_textured_triangle];
85 XYZ vertex[max_model_vertex];
86 XYZ normals[max_model_vertex];
87 XYZ facenormals[max_textured_triangle];
88 TexturedTriangle Triangles[max_textured_triangle];
89 GLfloat vArray[max_textured_triangle*24];*/
92 ModelTexture modelTexture;
96 XYZ boundingspherecenter;
97 float boundingsphereradius;
99 float*** decaltexcoords;
103 float* decalrotation;
104 float* decalalivetime;
107 /*float decaltexcoords[max_model_decals][3][2];
108 XYZ decalvertex[max_model_decals][3];
109 int decaltype[max_model_decals];
110 float decalopacity[max_model_decals];
111 float decalrotation[max_model_decals];
112 float decalalivetime[max_model_decals];
113 XYZ decalposition[max_model_decals];*/
119 void DeleteDecal(int which);
120 void MakeDecal(int atype, XYZ *where, float *size, float *opacity, float *rotation);
121 void MakeDecal(int atype, XYZ where, float size, float opacity, float rotation);
122 void drawdecals(Texture shadowtexture, Texture bloodtexture, Texture bloodtexture2, Texture breaktexture);
123 int SphereCheck(XYZ *p1, float radius, XYZ *p, XYZ *move, float *rotate);
124 int SphereCheckPossible(XYZ *p1, float radius, XYZ *move, float *rotate);
125 int LineCheck(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
126 int LineCheckSlide(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
127 int LineCheckPossible(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
128 int LineCheckSlidePossible(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
129 void UpdateVertexArray();
130 void UpdateVertexArrayNoTex();
131 void UpdateVertexArrayNoTexNoNorm();
132 bool loadnotex(const char *filename);
133 bool loadraw(char *filename);
134 bool load(const char *filename, bool texture);
135 bool loaddecal(const char *filename, bool texture);
136 void Scale(float xscale, float yscale, float zscale);
137 void FlipTexCoords();
138 void UniformTexCoords();
139 void ScaleTexCoords(float howmuch);
140 void ScaleNormals(float xscale, float yscale, float zscale);
141 void Translate(float xtrans, float ytrans, float ztrans);
142 void CalculateNormals(bool facenormalise);
144 void drawdifftex(GLuint texture);
145 void drawdifftex(Texture texture);
146 void drawimmediate();
147 void drawdiffteximmediate(GLuint texture);
148 void Rotate(float xang, float yang, float zang);