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