X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGraphic%2FModels.hpp;h=e6dbb50030994710872572c5334d60b10396cc10;hb=068650d41003dc0b7a945a54243fbb4239c07ab2;hp=e642f17d2da82c9dba2f2c5c39c2feb85f193945;hpb=33270590a498f404a091ddf032850de2e7e3d037;p=lugaru.git diff --git a/Source/Graphic/Models.hpp b/Source/Graphic/Models.hpp index e642f17..e6dbb50 100644 --- a/Source/Graphic/Models.hpp +++ b/Source/Graphic/Models.hpp @@ -1,6 +1,6 @@ /* Copyright (C) 2003, 2010 - Wolfire Games -Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file) +Copyright (C) 2010-2017 - Lugaru contributors (see AUTHORS file) This file is part of Lugaru. @@ -22,9 +22,9 @@ along with Lugaru. If not, see . #define _MODELS_HPP_ #include "Environment/Terrain.hpp" -#include "Graphic/gamegl.hpp" #include "Graphic/Texture.hpp" -#include "Math/Quaternions.hpp" +#include "Graphic/gamegl.hpp" +#include "Math/XYZ.hpp" #include "Utils/binio.h" #include @@ -35,9 +35,10 @@ along with Lugaru. If not, see . // // Textures List // -typedef struct { +typedef struct +{ long xsz, ysz; - GLubyte *txt; + GLubyte* txt; } ModelTexture; // @@ -54,28 +55,29 @@ public: #define max_model_decals 300 -#define nothing 0 -#define normaltype 4 -#define notextype 1 -#define rawtype 2 -#define decalstype 3 +enum ModelType +{ + nothing = 0, + notextype = 1, + rawtype = 2, + decalstype = 3, + normaltype = 4 +}; class Model { public: short vertexNum; - bool hastexture; - int type, oldtype; + ModelType type; - int* possible; int* owner; XYZ* vertex; XYZ* normals; 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]; @@ -83,7 +85,6 @@ public: Texture textureptr; ModelTexture modelTexture; - int numpossible; bool color; XYZ boundingspherecenter; @@ -93,15 +94,18 @@ public: bool flat; + Model(); + ~Model(); void DeleteDecal(int which); - 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 MakeDecal(decal_type atype, XYZ where, float size, float opacity, float rotation); + const XYZ& getTriangleVertex(unsigned triangleId, unsigned vertexId) const; 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 *move, float *rotate); + 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* move, float* rotate); void UpdateVertexArray(); void UpdateVertexArrayNoTex(); void UpdateVertexArrayNoTexNoNorm(); @@ -117,14 +121,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); void deleteDeadDecals(); - ~Model(); + +private: void deallocate(); - Model(); + /* indices of triangles that might collide */ + std::vector possible; }; #endif