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 modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 Lugaru 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. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with Lugaru. If not, see <http://www.gnu.org/licenses/>.
23 /**> Model Loading <**/
35 #include "Quaternions.h"
50 class TexturedTriangle
57 #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 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 drawdifftex(Texture texture);
143 void drawimmediate();
144 void Rotate(float xang, float yang, float zang);