about summary refs log tree commit diff
path: root/src/GameDraw.cpp
diff options
context:
space:
mode:
authorNguyễn Gia Phong <mcsinyx@disroot.org>2023-03-25 22:14:03 +0900
committerNguyễn Gia Phong <mcsinyx@disroot.org>2023-03-25 22:14:03 +0900
commit968d8a86f5a7e08f71bd449a466cc467efb11e3d (patch)
treebfd82936edd7439e48412a43892340ea25b5a672 /src/GameDraw.cpp
parentd7f9a74f75ba0ce2167fa0e529a009becdcee7e3 (diff)
downloadblackshades-968d8a86f5a7e08f71bd449a466cc467efb11e3d.tar.gz
Convert square of norm calculation to Zig
Diffstat (limited to 'src/GameDraw.cpp')
-rw-r--r--src/GameDraw.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/GameDraw.cpp b/src/GameDraw.cpp
index 010fbc0..1fbbca2 100644
--- a/src/GameDraw.cpp
+++ b/src/GameDraw.cpp
@@ -508,7 +508,8 @@ void Game::DrawGLScene(void)
 					move.y=0;
 					move.x=i*block_spacing;
 					move.z=j*block_spacing;
-					if(findDistancefast(move,camera.position)<300000)drawn[i][j]=0;
+					if (sqrlen(move - camera.position) < 300000)
+						drawn[i][j] = 0;
 				}
 			}
 		}
@@ -553,8 +554,8 @@ void Game::DrawGLScene(void)
 				}else draw=0;
 				if(draw)
 				if(!cubeInFrustum(frustum, person[i].playercoords.x,person[i].playercoords.y,person[i].playercoords.z,5))draw=0;
-				if(draw)
-				if(findDistancefast(person[i].playercoords,camera.position)>1000000)draw=0;
+				if (draw && sqrlen(person[i].playercoords - camera.position) > 1000000)
+					draw = 0;
 				if(draw)
 				for(int j=beginx;j<=endx;j++){
 					for(int k=beginz;k<=endz;k++){
@@ -562,7 +563,7 @@ void Game::DrawGLScene(void)
 							move.y=0;
 							move.x=j*block_spacing;
 							move.z=k*block_spacing;
-							if(findDistancefast(move,camera.position)<100000){
+							if (sqrlen(move - camera.position) < 100000) {
 								whichtri=blockocclude.LineCheck2(camera.position,person[i].playercoords,&collpoint,move,0);
 								if(whichtri!=-1)draw=0;
 							}
@@ -583,8 +584,8 @@ void Game::DrawGLScene(void)
 			if(person[i].skeleton.free==1){
 				if(draw)
 				if(!person[i].skeleton.broken&&!cubeInFrustum(frustum, person[i].averageloc.x,person[i].averageloc.y,person[i].averageloc.z,5))draw=0;
-				if(draw)
-				if(findDistancefast(person[i].averageloc,camera.position)>1000000)draw=0;
+				if (draw && sqrlen(person[i].averageloc - camera.position) > 1000000)
+					draw = 0;
 				if(draw)
 				if(person[i].skeleton.joints[0].position.y<-2)draw=0;
 
@@ -594,7 +595,7 @@ void Game::DrawGLScene(void)
 							move.y=0;
 							move.x=j*block_spacing;
 							move.z=k*block_spacing;
-							if(findDistancefast(move,camera.position)<100000){
+							if (sqrlen(move - camera.position) < 100000) {
 								whichtri=blockocclude.LineCheck2(camera.position,person[i].averageloc,&collpoint,move,0);
 								if(whichtri!=-1)draw=0;
 							}
@@ -612,7 +613,10 @@ void Game::DrawGLScene(void)
 			}
 
 			if(draw&&person[i].existing==1){
-				if((findDistancefast(person[i].playercoords,camera.position)<100000+zoom*3000000&&person[i].skeleton.free<1)||(findDistancefast(person[i].averageloc,camera.position)<100000+zoom*3000000&&person[i].skeleton.free>=1)){
+				if ((sqrlen(person[i].playercoords - camera.position) < 100000 + zoom * 3000000
+				     && !person[i].skeleton.free)
+				    || (sqrlen(person[i].averageloc - camera.position) < 100000 + zoom * 3000000
+					&& person[i].skeleton.free)) {
 					glPushMatrix();
 						if(person[i].skeleton.free==0){
 							glTranslatef(person[i].playercoords.x,person[i].playercoords.y,person[i].playercoords.z);
@@ -666,7 +670,8 @@ void Game::DrawGLScene(void)
 			}
 			if(person[i].skeleton.free<1&&!draw)person[i].DoAnimationslite(i);
 			if(!person[i].existing)
-				if(!draw||findDistancefast(person[i].playercoords,camera.position)>10000){person[i].existing=1;}
+				if (!draw || sqrlen(person[i].playercoords - camera.position) > 10000)
+					person[i].existing = 1;
 		}
 		glDisable(GL_COLOR_MATERIAL);
 		glDisable(GL_BLEND);