X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FEnvironment%2FTerrain.hpp;h=884829c9409b90b57c2de1f76911eff573693c6a;hb=eae73ddd7a006ee6de9ffb01f3ec5f8e5fdc6d85;hp=3c30e3d6724f461d1144ed1fa2c5cbd36fb0e893;hpb=ed3662c0852c4312a612b4fc35bd03aba8d13db7;p=lugaru.git
diff --git a/Source/Environment/Terrain.hpp b/Source/Environment/Terrain.hpp
index 3c30e3d..884829c 100644
--- a/Source/Environment/Terrain.hpp
+++ b/Source/Environment/Terrain.hpp
@@ -22,10 +22,11 @@ along with Lugaru. If not, see .
#define _TERRAIN_HPP_
#include "Environment/Lights.hpp"
+#include "Graphic/Decal.hpp"
#include "Graphic/gamegl.hpp"
#include "Graphic/Texture.hpp"
#include "Math/Frustum.hpp"
-#include "Math/Quaternions.hpp"
+#include "Math/XYZ.hpp"
#include "Utils/ImageIO.hpp"
#define max_terrain_size 256
@@ -39,15 +40,6 @@ along with Lugaru. If not, see .
#define max_decals 1000
-#define shadowdecal 0
-#define footprintdecal 1
-#define blooddecal 2
-#define blooddecalfast 3
-#define shadowdecalpermanent 4
-#define breakdecal 5
-#define blooddecalslow 6
-#define bodyprintdecal 7
-
#define snowyenvironment 0
#define grassyenvironment 1
#define desertenvironment 2
@@ -68,7 +60,7 @@ public:
short size;
int patchobjectnum[subdivision][subdivision];
- int patchobjects[subdivision][subdivision][300];
+ unsigned int patchobjects[subdivision][subdivision][300];
float scale;
int type;
@@ -93,40 +85,34 @@ public:
int patch_elements;
- float decaltexcoords[max_decals][3][2];
- XYZ decalvertex[max_decals][3];
- int decaltype[max_decals];
- float decalopacity[max_decals];
- float decalrotation[max_decals];
- float decalalivetime[max_decals];
- float decalbrightness[max_decals];
- XYZ decalposition[max_decals];
- int numdecals;
+ std::vector decals;
void AddObject(XYZ where, float radius, int id);
void DeleteDecal(int which);
- void MakeDecal(int type, XYZ where, float size, float opacity, float rotation);
- void MakeDecalLock(int type, XYZ where, int whichx, int whichy, float size, float opacity, float rotation);
+ void MakeDecal(decal_type type, XYZ where, float size, float opacity, float rotation);
+ void MakeDecalLock(decal_type type, XYZ where, int whichx, int whichy, float size, float opacity, float rotation);
int lineTerrain(XYZ p1, XYZ p2, XYZ *p);
float getHeight(float pointx, float pointz);
float getOpacity(float pointx, float pointz);
XYZ getLighting(float pointx, float pointz);
XYZ getNormal(float pointx, float pointz);
void UpdateVertexArray(int whichx, int whichy);
- void UpdateTransparency(int whichx, int whichy);
- void UpdateTransparencyother(int whichx, int whichy);
- void UpdateTransparencyotherother(int whichx, int whichy);
bool load(const std::string& fileName);
void CalculateNormals();
void drawdecals();
void draw(int layer);
- void drawpatch(int whichx, int whichy, float opacity);
- void drawpatchother(int whichx, int whichy, float opacity);
- void drawpatchotherother(int whichx, int whichy, float opacity);
void DoShadows();
+ void deleteDeadDecals();
Terrain();
- ~Terrain();
+
+private:
+ void drawpatch(int whichx, int whichy, float opacity);
+ void drawpatchother(int whichx, int whichy, float opacity);
+ void drawpatchotherother(int whichx, int whichy);
+ void UpdateTransparency(int whichx, int whichy);
+ void UpdateTransparencyother(int whichx, int whichy);
+ void UpdateTransparencyotherother(int whichx, int whichy);
};
#endif