]> git.jsancho.org Git - lugaru.git/blobdiff - Source/Terrain.cpp
add include guard to Texture.h
[lugaru.git] / Source / Terrain.cpp
index 649d3f390fc1cb2b0ea51a2851d17b5a9942e0b5..4c4ff7429afa3a3da34684225c29f776e6fa006b 100644 (file)
@@ -38,7 +38,6 @@ extern float blurness;
 extern float targetblurness;
 extern Objects objects;
 extern TGAImageRec texture;
-extern Game * pgame;
 extern bool visibleloading;
 extern bool skyboxtexture;
 extern int tutoriallevel;
@@ -401,7 +400,7 @@ bool Terrain::load(const char *fileName)
                }
        }
        texture.bpp=24;
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
        texdetail=temptexdetail;
 
@@ -433,7 +432,7 @@ bool Terrain::load(const char *fileName)
                }
 
        }
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
        float slopeness;
 
@@ -442,7 +441,7 @@ bool Terrain::load(const char *fileName)
                        textureness[i][j]=-1;
                }
        }
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
 
        for(i=0;i<size;i++){
@@ -476,7 +475,7 @@ bool Terrain::load(const char *fileName)
                        }
                }
        }
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
        for(i=0;i<size;i++){
                for(j=0;j<size;j++){
@@ -488,7 +487,7 @@ bool Terrain::load(const char *fileName)
                        }
                }
        }
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
        /*float total;
        int todivide;
@@ -598,7 +597,7 @@ bool Terrain::load(const char *fileName)
                        }
                }
        }
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
        patch_size=size/subdivision;
        patch_elements=(patch_size)*(patch_size)*54;
@@ -978,7 +977,7 @@ void Terrain::draw(int layer)
        endz=(viewer.z+viewdistance)/(patch_size)+1;
        if(endz>subdivision)endz=subdivision;
 
-       if(!layer)
+       if(!layer) {
                for(i=beginx;i<endx;i++){       
                        for(j=beginz;j<endz;j++){       
                                terrainpoint.x=i*patch_size+(patch_size)/2;
@@ -987,35 +986,48 @@ void Terrain::draw(int layer)
                                distance[i][j]=findDistancefast(&viewer,&terrainpoint);
                        }
                }
-
-               for(i=beginx;i<endx;i++){       
-                       for(j=beginz;j<endz;j++){       
-                               if(distance[i][j]<(viewdistance+patch_size)*(viewdistance+patch_size)){
-                                       opacity=1;
-                                       if(distance[i][j]>viewdistsquared*fadestart-viewdistsquared)opacity=0;
-                                       if(opacity==1&&i!=subdivision)if(distance[i+1][j]>viewdistsquared*fadestart-viewdistsquared)opacity=0;
-                                       if(opacity==1&&j!=subdivision)if(distance[i][j+1]>viewdistsquared*fadestart-viewdistsquared)opacity=0;
-                                       if(opacity==1&&j!=subdivision&&i!=subdivision)if(distance[i+1][j+1]>viewdistsquared*fadestart-viewdistsquared)opacity=0;
-                                       glMatrixMode(GL_MODELVIEW);                                                     // Select The Modelview Matrix
-                                       glPushMatrix();
-                                               if(frustum.CubeInFrustum(i*patch_size+patch_size*.5,avgypatch[i][j],j*patch_size+patch_size*.5,heightypatch[i][j]/2))
-                                               {   
-                                                       if(environment==desertenvironment&&distance[i][j]>viewdistsquared/4)glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, blurness);
-                                                       else if(environment==desertenvironment)glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0 );
-                                                       if(!layer&&textureness[i][j]!=allsecond)drawpatch(i,j,opacity);
-                                                       if(layer==1&&textureness[i][j]!=allfirst)drawpatchother(i,j,opacity);
-                                                       if(layer==2&&textureness[i][j]!=allfirst)drawpatchotherother(i,j,opacity);
-                                               }
-                                       glPopMatrix();
-                               }
+       }
+       for(i=beginx;i<endx;i++){
+               for(j=beginz;j<endz;j++){       
+                       if(distance[i][j]<(viewdistance+patch_size)*(viewdistance+patch_size)){
+                               opacity=1;
+                               if(distance[i][j]>viewdistsquared*fadestart-viewdistsquared)
+                                       opacity=0;
+                               if(opacity==1&&i!=subdivision)
+                                       if(distance[i+1][j]>viewdistsquared*fadestart-viewdistsquared)
+                                               opacity=0;
+                               if(opacity==1&&j!=subdivision)
+                                       if(distance[i][j+1]>viewdistsquared*fadestart-viewdistsquared)
+                                               opacity=0;
+                               if(opacity==1&&j!=subdivision&&i!=subdivision)
+                                       if(distance[i+1][j+1]>viewdistsquared*fadestart-viewdistsquared)
+                                               opacity=0;
+                               glMatrixMode(GL_MODELVIEW);                                                     // Select The Modelview Matrix
+                               glPushMatrix();
+                                       if(frustum.CubeInFrustum(i*patch_size+patch_size*.5,avgypatch[i][j],j*patch_size+patch_size*.5,heightypatch[i][j]/2))
+                                       {   
+                                               if(environment==desertenvironment&&distance[i][j]>viewdistsquared/4)
+                                                       glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, blurness);
+                                               else if(environment==desertenvironment)
+                                                       glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0 );
+                                               if(!layer&&textureness[i][j]!=allsecond)
+                                                       drawpatch(i,j,opacity);
+                                               if(layer==1&&textureness[i][j]!=allfirst)
+                                                       drawpatchother(i,j,opacity);
+                                               if(layer==2&&textureness[i][j]!=allfirst)
+                                                       drawpatchotherother(i,j,opacity);
+                                       }
+                               glPopMatrix();
                        }
                }
-               if(environment==desertenvironment)glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0 );
+       }
+       if(environment==desertenvironment)
+               glTexEnvf( GL_TEXTURE_FILTER_CONTROL_EXT, GL_TEXTURE_LOD_BIAS_EXT, 0 );
 }
 
 void Terrain::drawdecals()
 {
-       if(decals){
+       if(decals) {
                static int i,j;
                static float distancemult;
                static int lasttype;
@@ -1186,8 +1198,8 @@ void Terrain::DeleteDecal(int which)
 }
 
 void Terrain::MakeDecal(int type, XYZ where, float size, float opacity, float rotation){
-       if(decals){
-               if(opacity>0&&size>0){
+       if(decals) {
+               if(opacity>0&&size>0) {
                        static int patchx[4];
                        static int patchy[4];
 
@@ -1237,11 +1249,9 @@ void Terrain::MakeDecalLock(int type, XYZ where,int whichx, int whichy, float si
                decalbrightness[numdecals]=(rot.x+rot.y+rot.z)/3;
                if(decalbrightness[numdecals]<.4)decalbrightness[numdecals]=.4;
 
-               //if(type==blooddecal||type==blooddecalfast||type==blooddecalslow){
                if(environment==grassyenvironment){
                        decalbrightness[numdecals]*=.6;
                }
-               //}
 
                if(decalbrightness[numdecals]>1)decalbrightness[numdecals]=1;
                decalbright=decalbrightness[numdecals];
@@ -1454,7 +1464,7 @@ void Terrain::DoShadows()
                                                }
                                        }
                                }
-                               if(visibleloading)pgame->LoadingScreen();
+                               if(visibleloading) Game::LoadingScreen();
                        }
                        brightness=dotproduct(&lightloc,&normals[i][j]);
                        if(shadowed)brightness*=1-shadowed;
@@ -1475,7 +1485,7 @@ void Terrain::DoShadows()
                }
        }
 
-       if(visibleloading)pgame->LoadingScreen();
+       if(visibleloading) Game::LoadingScreen();
 
        //Smooth shadows
        for(i=0;i<size;i++){