mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-05-06 19:01:04 +03:00
Refactored CM_CheckTerrainTriSphere
This commit is contained in:
parent
dd8b3f607a
commit
c40d073d7a
1 changed files with 35 additions and 77 deletions
|
@ -595,22 +595,10 @@ float CM_CheckTerrainTriSphere(float x0, float y0, int iPlane)
|
||||||
|
|
||||||
switch (eMode) {
|
switch (eMode) {
|
||||||
case 3:
|
case 3:
|
||||||
if (d1 > 64) {
|
bFitsX = d1 <= 64;
|
||||||
bFitsX = qfalse;
|
bFitsY = d2 <= 64;
|
||||||
} else {
|
bFitsDiag = d1 >= 64 - d2;
|
||||||
bFitsX = qtrue;
|
|
||||||
}
|
|
||||||
if (d2 > 64) {
|
|
||||||
bFitsY = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsY = qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (d1 < 64 - d2) {
|
|
||||||
bFitsDiag = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsDiag = qtrue;
|
|
||||||
}
|
|
||||||
iX[0] = 1;
|
iX[0] = 1;
|
||||||
iX[1] = 0;
|
iX[1] = 0;
|
||||||
iX[2] = 1;
|
iX[2] = 1;
|
||||||
|
@ -619,22 +607,10 @@ float CM_CheckTerrainTriSphere(float x0, float y0, int iPlane)
|
||||||
iY[2] = 0;
|
iY[2] = 0;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
if (d1 < 0) {
|
bFitsX = d1 >= 0;
|
||||||
bFitsX = qfalse;
|
bFitsY = d2 <= 64;
|
||||||
} else {
|
bFitsDiag = d1 <= d2;
|
||||||
bFitsX = qtrue;
|
|
||||||
}
|
|
||||||
if (d2 > 64) {
|
|
||||||
bFitsY = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsY = qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (d1 > d2) {
|
|
||||||
bFitsDiag = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsDiag = qtrue;
|
|
||||||
}
|
|
||||||
iX[0] = 0;
|
iX[0] = 0;
|
||||||
iX[1] = 1;
|
iX[1] = 1;
|
||||||
iX[2] = 0;
|
iX[2] = 0;
|
||||||
|
@ -643,22 +619,10 @@ float CM_CheckTerrainTriSphere(float x0, float y0, int iPlane)
|
||||||
iY[2] = 0;
|
iY[2] = 0;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
if (d1 > 64) {
|
bFitsX = d1 <= 64;
|
||||||
bFitsX = qfalse;
|
bFitsY = d2 >= 0;
|
||||||
} else {
|
bFitsDiag = d1 >= d2;
|
||||||
bFitsX = qtrue;
|
|
||||||
}
|
|
||||||
if (d2 < 0) {
|
|
||||||
bFitsY = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsY = qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (d1 < d2) {
|
|
||||||
bFitsDiag = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsDiag = qtrue;
|
|
||||||
}
|
|
||||||
iX[0] = 1;
|
iX[0] = 1;
|
||||||
iX[1] = 0;
|
iX[1] = 0;
|
||||||
iX[2] = 1;
|
iX[2] = 1;
|
||||||
|
@ -667,22 +631,10 @@ float CM_CheckTerrainTriSphere(float x0, float y0, int iPlane)
|
||||||
iY[2] = 1;
|
iY[2] = 1;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
if (d1 < 0) {
|
bFitsX = d1 >= 0;
|
||||||
bFitsX = qfalse;
|
bFitsY = d2 >= 0;
|
||||||
} else {
|
bFitsDiag = d1 <= 64 - d2;
|
||||||
bFitsX = qtrue;
|
|
||||||
}
|
|
||||||
if (d2 < 0) {
|
|
||||||
bFitsY = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsY = qtrue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (d1 > 64 - d2) {
|
|
||||||
bFitsDiag = qfalse;
|
|
||||||
} else {
|
|
||||||
bFitsDiag = qtrue;
|
|
||||||
}
|
|
||||||
iX[0] = 0;
|
iX[0] = 0;
|
||||||
iX[1] = 1;
|
iX[1] = 1;
|
||||||
iX[2] = 0;
|
iX[2] = 0;
|
||||||
|
@ -694,31 +646,37 @@ float CM_CheckTerrainTriSphere(float x0, float y0, int iPlane)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bFitsX) {
|
if (bFitsX && bFitsY) {
|
||||||
if (bFitsY) {
|
if (bFitsDiag) {
|
||||||
if (bFitsDiag) {
|
return fSpherePlane;
|
||||||
return fSpherePlane;
|
|
||||||
} else {
|
|
||||||
return CM_CheckTerrainTriSphereEdge(plane, x0, y0, iX[1], iY[1], iX[2], iY[2]);
|
|
||||||
}
|
|
||||||
} else if (bFitsDiag) {
|
|
||||||
return CM_CheckTerrainTriSphereEdge(plane, x0, y0, iX[0], iY[0], iX[1], iY[1]);
|
|
||||||
} else {
|
|
||||||
return CM_CheckTerrainTriSphereCorner(plane, x0, y0, iX[1], iY[1]);
|
|
||||||
}
|
}
|
||||||
} else if (bFitsY) {
|
|
||||||
|
return CM_CheckTerrainTriSphereEdge(plane, x0, y0, iX[1], iY[1], iX[2], iY[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bFitsX && !bFitsY) {
|
||||||
|
if (bFitsDiag) {
|
||||||
|
return CM_CheckTerrainTriSphereEdge(plane, x0, y0, iX[0], iY[0], iX[1], iY[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return CM_CheckTerrainTriSphereCorner(plane, x0, y0, iX[1], iY[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bFitsX && bFitsY) {
|
||||||
if (bFitsDiag) {
|
if (bFitsDiag) {
|
||||||
return CM_CheckTerrainTriSphereEdge(plane, x0, y0, iX[0], iY[0], iX[2], iY[2]);
|
return CM_CheckTerrainTriSphereEdge(plane, x0, y0, iX[0], iY[0], iX[2], iY[2]);
|
||||||
} else {
|
|
||||||
return CM_CheckTerrainTriSphereCorner(plane, x0, y0, iX[2], iY[2]);
|
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
|
return CM_CheckTerrainTriSphereCorner(plane, x0, y0, iX[2], iY[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!bFitsX && !bFitsY) {
|
||||||
if (bFitsDiag) {
|
if (bFitsDiag) {
|
||||||
return CM_CheckTerrainTriSphereCorner(plane, x0, y0, iX[0], iY[0]);
|
return CM_CheckTerrainTriSphereCorner(plane, x0, y0, iX[0], iY[0]);
|
||||||
} else {
|
|
||||||
return g_trace.tw->trace.fraction;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return g_trace.tw->trace.fraction;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue