X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGraphic%2FModels.hpp;h=eb4ef0909383af7d88045a987644504be07fc186;hb=d5f64d3689e1ce594e22ad0f6d372cee143872fd;hp=621a9afad39de9ac364c864f5e6c5c5c407af21a;hpb=ed3662c0852c4312a612b4fc35bd03aba8d13db7;p=lugaru.git
diff --git a/Source/Graphic/Models.hpp b/Source/Graphic/Models.hpp
index 621a9af..eb4ef09 100644
--- a/Source/Graphic/Models.hpp
+++ b/Source/Graphic/Models.hpp
@@ -24,12 +24,12 @@ along with Lugaru. If not, see .
#include "Environment/Terrain.hpp"
#include "Graphic/gamegl.hpp"
#include "Graphic/Texture.hpp"
-#include "Math/Quaternions.hpp"
+#include "Math/XYZ.hpp"
#include "Utils/binio.h"
-#include
-#include
-#include
+#include
+#include
+#include
#include
//
@@ -49,6 +49,7 @@ class TexturedTriangle
public:
short vertex[3];
float gx[3], gy[3];
+ XYZ facenormal;
};
#define max_model_decals 300
@@ -62,71 +63,51 @@ public:
class Model
{
public:
- short vertexNum, TriangleNum;
- bool hastexture;
+ short vertexNum;
- int type, oldtype;
+ int type;
- int* possible;
int* owner;
XYZ* vertex;
XYZ* normals;
- XYZ* facenormals;
- TexturedTriangle* Triangles;
+ std::vector Triangles;
GLfloat* vArray;
- /*int possible[max_model_vertex];
+ /*
int owner[max_textured_triangle];
XYZ vertex[max_model_vertex];
XYZ normals[max_model_vertex];
- XYZ facenormals[max_textured_triangle];
- TexturedTriangle Triangles[max_textured_triangle];
GLfloat vArray[max_textured_triangle*24];*/
Texture textureptr;
ModelTexture modelTexture;
- int numpossible;
bool color;
XYZ boundingspherecenter;
float boundingsphereradius;
- float*** decaltexcoords;
- XYZ** decalvertex;
- int* decaltype;
- float* decalopacity;
- float* decalrotation;
- float* decalalivetime;
- XYZ* decalposition;
-
- /*float decaltexcoords[max_model_decals][3][2];
- XYZ decalvertex[max_model_decals][3];
- int decaltype[max_model_decals];
- float decalopacity[max_model_decals];
- float decalrotation[max_model_decals];
- float decalalivetime[max_model_decals];
- XYZ decalposition[max_model_decals];*/
-
- int numdecals;
+ std::vector decals;
bool flat;
+ Model();
+ ~Model();
void DeleteDecal(int which);
- void MakeDecal(int atype, XYZ *where, float *size, float *opacity, float *rotation);
- void MakeDecal(int atype, XYZ where, float size, float opacity, float rotation);
+ void MakeDecal(decal_type atype, XYZ *where, float *size, float *opacity, float *rotation);
+ void MakeDecal(decal_type atype, XYZ where, float size, float opacity, float rotation);
void drawdecals(Texture shadowtexture, Texture bloodtexture, Texture bloodtexture2, Texture breaktexture);
int SphereCheck(XYZ *p1, float radius, XYZ *p, XYZ *move, float *rotate);
int SphereCheckPossible(XYZ *p1, float radius, XYZ *move, float *rotate);
int LineCheck(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
int LineCheckPossible(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
- int LineCheckSlidePossible(XYZ *p1, XYZ *p2, XYZ *p, XYZ *move, float *rotate);
+ int LineCheckSlidePossible(XYZ *p1, XYZ *p2, XYZ *move, float *rotate);
void UpdateVertexArray();
void UpdateVertexArrayNoTex();
void UpdateVertexArrayNoTexNoNorm();
bool loadnotex(const std::string& filename);
bool loadraw(const std::string& filename);
- bool load(const std::string& filename, bool texture);
- bool loaddecal(const std::string& filename, bool texture);
+ bool load(const std::string& filename);
+ bool loaddecal(const std::string& filename);
void Scale(float xscale, float yscale, float zscale);
void FlipTexCoords();
void UniformTexCoords();
@@ -135,13 +116,15 @@ public:
void Translate(float xtrans, float ytrans, float ztrans);
void CalculateNormals(bool facenormalise);
void draw();
- void drawdifftex(GLuint texture);
void drawdifftex(Texture texture);
void drawimmediate();
void Rotate(float xang, float yang, float zang);
- ~Model();
+ void deleteDeadDecals();
+
+private:
void deallocate();
- Model();
+ /* indices of triangles that might collide */
+ std::vector possible;
};
#endif