diff options
Diffstat (limited to 'src/GameDraw.cpp')
-rw-r--r-- | src/GameDraw.cpp | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/src/GameDraw.cpp b/src/GameDraw.cpp index 5a59856..94e7e3b 100644 --- a/src/GameDraw.cpp +++ b/src/GameDraw.cpp @@ -479,18 +479,12 @@ void Game::DrawGLScene(void) endz=(camera.position.z+viewdistance+block_spacing/2)/block_spacing+2; if(endz>num_blocks-1)endz=num_blocks-1; - bool draw; XYZ collpoint; - for(int i=beginx;i<=endx;i++){ - for(int j=beginz;j<=endz;j++){ - drawn[i][j]=1; - } - } - + bool drawn[num_blocks][num_blocks]{}; if(beginx<endx&&beginz<endz) for(int i=beginx;i<=endx;i++){ for(int j=beginz;j<=endz;j++){ - draw=1; + bool draw = true; //Only draw if visible distsquared=((i)*block_spacing-camera.position.x)*((i)*block_spacing-camera.position.x)+((j)*block_spacing-camera.position.z)*((j)*block_spacing-camera.position.z); if(distsquared>(viewdistance*viewdistance+block_spacing*block_spacing ))draw=0; @@ -502,20 +496,21 @@ void Game::DrawGLScene(void) blocks[citytype[i][j]].center.y, blocks[citytype[i][j]].center.z + j * block_spacing, blocks[citytype[i][j]].radius)) - draw = false; - if(draw){ + draw = false; + if (draw) { glPushMatrix(); glTranslatef(i*block_spacing,0,j*block_spacing); glRotatef(cityrotation[i][j]*90,0,1,0); drawModel(blocks + citytype[i][j], visions ? BLACK : NULL); glPopMatrix(); + drawn[i][j] = true; } else { move.y=0; move.x=i*block_spacing; move.z=j*block_spacing; - if (sqrlen(move - camera.position) < 300000) - drawn[i][j] = 0; + if (sqrlen(move - camera.position) > 300000) + drawn[i][j] = true; } } } @@ -552,7 +547,7 @@ void Game::DrawGLScene(void) glEnable(GL_COLOR_MATERIAL); glEnable(GL_BLEND); for(int i=0;i<numpeople;i++){ - draw = true; + bool draw = true; if (((!person[i].skeleton.free || !person[i].skeleton.broken) && !cubeInFrustum(frustum, |