X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FTerrain.h;h=bc57ca061e52fbde0a4b4aa82e355f1dd7ef2067;hb=cd043e3f9e26c2b3406b40a354c2840941e9db7f;hp=051065617675b5e259580423a81c386c4b885cbc;hpb=35b5d8a643d2ff04614a8b9f57026b57d4a82667;p=lugaru.git diff --git a/Source/Terrain.h b/Source/Terrain.h index 0510656..bc57ca0 100644 --- a/Source/Terrain.h +++ b/Source/Terrain.h @@ -3,20 +3,18 @@ Copyright (C) 2003, 2010 - Wolfire Games This file is part of Lugaru. -Lugaru is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. +Lugaru is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. -This program is distributed in the hope that it will be useful, +Lugaru is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +along with Lugaru. If not, see . */ #ifndef _TERRAIN_H_ @@ -30,10 +28,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Quaternions.h" #include "Texture.h" -#define max_terrain_size 256 -#define curr_terrain_size size -#define subdivision 64 -#define max_patch_elements (max_terrain_size/subdivision)*(max_terrain_size/subdivision)*54 +#define max_terrain_size 256 +#define curr_terrain_size size +#define subdivision 64 +#define max_patch_elements (max_terrain_size/subdivision)*(max_terrain_size/subdivision)*54 #define allfirst 0 #define mixed 1 @@ -57,79 +55,80 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // Model Structures // -class Terrain{ +class Terrain +{ public: - Texture bloodtexture; - Texture bloodtexture2; - Texture shadowtexture; - Texture footprinttexture; - Texture bodyprinttexture; - Texture breaktexture; - Texture terraintexture; - short size; - - int patchobjectnum[subdivision][subdivision]; - int patchobjects[subdivision][subdivision][300]; - - float scale; - int type; - float heightmap[max_terrain_size+1][max_terrain_size+1]; - XYZ normals[max_terrain_size][max_terrain_size]; - XYZ facenormals[max_terrain_size][max_terrain_size]; - XYZ triangles[(max_terrain_size-1)*(max_terrain_size-1)*2][3]; - float colors[max_terrain_size][max_terrain_size][4]; - float opacityother[max_terrain_size][max_terrain_size]; - float texoffsetx[max_terrain_size][max_terrain_size]; - float texoffsety[max_terrain_size][max_terrain_size]; - int numtris[subdivision][subdivision]; - int textureness[subdivision][subdivision]; - - GLfloat vArray[(max_patch_elements)*subdivision*subdivision]; - - bool visible[subdivision][subdivision]; - float avgypatch[subdivision][subdivision]; - float maxypatch[subdivision][subdivision]; - float minypatch[subdivision][subdivision]; - float heightypatch[subdivision][subdivision]; - - 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; - - 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); - int lineTerrain(XYZ p1,XYZ p2, XYZ *p); - float getHeight(float pointx, float pointz); - float getHeightExtrude(float pointx, float pointz,float point2x, float point2z); - 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 char *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 DoLighting(); - void DoShadows(); - - Terrain(); - ~Terrain(); + Texture bloodtexture; + Texture bloodtexture2; + Texture shadowtexture; + Texture footprinttexture; + Texture bodyprinttexture; + Texture breaktexture; + Texture terraintexture; + short size; + + int patchobjectnum[subdivision][subdivision]; + int patchobjects[subdivision][subdivision][300]; + + float scale; + int type; + float heightmap[max_terrain_size + 1][max_terrain_size + 1]; + XYZ normals[max_terrain_size][max_terrain_size]; + XYZ facenormals[max_terrain_size][max_terrain_size]; + XYZ triangles[(max_terrain_size - 1) * (max_terrain_size - 1) * 2][3]; + float colors[max_terrain_size][max_terrain_size][4]; + float opacityother[max_terrain_size][max_terrain_size]; + float texoffsetx[max_terrain_size][max_terrain_size]; + float texoffsety[max_terrain_size][max_terrain_size]; + int numtris[subdivision][subdivision]; + int textureness[subdivision][subdivision]; + + GLfloat vArray[(max_patch_elements)*subdivision*subdivision]; + + bool visible[subdivision][subdivision]; + float avgypatch[subdivision][subdivision]; + float maxypatch[subdivision][subdivision]; + float minypatch[subdivision][subdivision]; + float heightypatch[subdivision][subdivision]; + + 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; + + 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); + int lineTerrain(XYZ p1, XYZ p2, XYZ *p); + float getHeight(float pointx, float pointz); + float getHeightExtrude(float pointx, float pointz, float point2x, float point2z); + 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 char *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 DoLighting(); + void DoShadows(); + + Terrain(); + ~Terrain(); }; #endif